[ARVADOS] updated: 9c4c0fd4015865e8f2f9f9c9867c7d847cd34aeb

git at public.curoverse.com git at public.curoverse.com
Tue May 27 10:23:16 EDT 2014


Summary of changes:
 .../keep/src/arvados.org/keepproxy/keepproxy.go    |  28 +++---
 .../src/arvados.org/keepproxy/keepproxy_test.go    | 112 +++++++++++++++++----
 2 files changed, 106 insertions(+), 34 deletions(-)

       via  9c4c0fd4015865e8f2f9f9c9867c7d847cd34aeb (commit)
       via  f4b7ce1ad093bd4c131ee603d053a329f003b754 (commit)
      from  8633979010e2f15b3b88cab2a610019a336745c7 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 9c4c0fd4015865e8f2f9f9c9867c7d847cd34aeb
Merge: f4b7ce1 8633979
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Tue May 27 10:23:12 2014 -0400

    Merge branch 'master' of git.curoverse.com:arvados refs #1885


commit f4b7ce1ad093bd4c131ee603d053a329f003b754
Author: Peter Amstutz <peter.amstutz at curoverse.com>
Date:   Tue May 27 10:22:38 2014 -0400

    1885: Tests and bugfixes for -no-get and -no-put options.

diff --git a/services/keep/src/arvados.org/keepproxy/keepproxy.go b/services/keep/src/arvados.org/keepproxy/keepproxy.go
index 2d7e276..38e14fd 100644
--- a/services/keep/src/arvados.org/keepproxy/keepproxy.go
+++ b/services/keep/src/arvados.org/keepproxy/keepproxy.go
@@ -29,7 +29,9 @@ func main() {
 		pidfile          string
 	)
 
-	flag.StringVar(
+	flagset := flag.NewFlagSet("default", flag.ExitOnError)
+
+	flagset.StringVar(
 		&listen,
 		"listen",
 		DEFAULT_ADDR,
@@ -37,31 +39,31 @@ func main() {
 			"ipaddr:port. e.g. -listen=10.0.1.24:8000. Use -listen=:port "+
 			"to listen on all network interfaces.")
 
-	flag.BoolVar(
+	flagset.BoolVar(
 		&no_get,
 		"no-get",
 		false,
 		"If set, disable GET operations")
 
-	flag.BoolVar(
-		&no_get,
+	flagset.BoolVar(
+		&no_put,
 		"no-put",
 		false,
 		"If set, disable PUT operations")
 
-	flag.IntVar(
+	flagset.IntVar(
 		&default_replicas,
 		"default-replicas",
 		2,
 		"Default number of replicas to write if not specified by the client.")
 
-	flag.StringVar(
+	flagset.StringVar(
 		&pidfile,
 		"pid",
 		"",
 		"Path to write pid file")
 
-	flag.Parse()
+	flagset.Parse(os.Args[1:])
 
 	kc, err := keepclient.MakeKeepClient()
 	if err != nil {
@@ -229,19 +231,19 @@ func MakeRESTRouter(
 	t := &ApiTokenCache{tokens: make(map[string]int64), expireTime: 300}
 
 	rest := mux.NewRouter()
-	gh := rest.Handle(`/{hash:[0-9a-f]{32}}`, GetBlockHandler{kc, t})
-	ghsig := rest.Handle(
-		`/{hash:[0-9a-f]{32}}+A{signature:[0-9a-f]+}@{timestamp:[0-9a-f]+}`,
-		GetBlockHandler{kc, t})
-	ph := rest.Handle(`/{hash:[0-9a-f]{32}}`, PutBlockHandler{kc, t})
 
 	if enable_get {
+		gh := rest.Handle(`/{hash:[0-9a-f]{32}}`, GetBlockHandler{kc, t})
+		ghsig := rest.Handle(
+			`/{hash:[0-9a-f]{32}}+A{signature:[0-9a-f]+}@{timestamp:[0-9a-f]+}`,
+			GetBlockHandler{kc, t})
+
 		gh.Methods("GET", "HEAD")
 		ghsig.Methods("GET", "HEAD")
 	}
 
 	if enable_put {
-		ph.Methods("PUT")
+		rest.Handle(`/{hash:[0-9a-f]{32}}`, PutBlockHandler{kc, t}).Methods("PUT")
 	}
 
 	rest.NotFoundHandler = InvalidPathHandler{}
diff --git a/services/keep/src/arvados.org/keepproxy/keepproxy_test.go b/services/keep/src/arvados.org/keepproxy/keepproxy_test.go
index f03c94f..cedc61f 100644
--- a/services/keep/src/arvados.org/keepproxy/keepproxy_test.go
+++ b/services/keep/src/arvados.org/keepproxy/keepproxy_test.go
@@ -50,17 +50,9 @@ func (s *ServerRequiredSuite) SetUpSuite(c *C) {
 	os.Setenv("ARVADOS_API_HOST", "localhost:3001")
 	os.Setenv("ARVADOS_API_TOKEN", "4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h")
 	os.Setenv("ARVADOS_API_HOST_INSECURE", "true")
-
-	SetupProxyService()
-
-	os.Args = []string{"keepproxy", "-listen=:29950"}
-	go main()
-	time.Sleep(100 * time.Millisecond)
 }
 
 func (s *ServerRequiredSuite) TearDownSuite(c *C) {
-	listener.Close()
-
 	cwd, _ := os.Getwd()
 	defer os.Chdir(cwd)
 
@@ -69,7 +61,7 @@ func (s *ServerRequiredSuite) TearDownSuite(c *C) {
 	exec.Command("python", "run_test_server.py", "stop").Run()
 }
 
-func SetupProxyService() {
+func setupProxyService() {
 
 	client := &http.Client{Transport: &http.Transport{
 		TLSClientConfig: &tls.Config{InsecureSkipVerify: true}}}
@@ -107,9 +99,35 @@ func SetupProxyService() {
 	}
 }
 
+func runProxy(c *C, args []string, token string, port int) keepclient.KeepClient {
+	os.Args = append(args, fmt.Sprintf("-listen=:%v", port))
+	os.Setenv("ARVADOS_API_TOKEN", "4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h")
+
+	go main()
+	time.Sleep(100 * time.Millisecond)
+
+	os.Setenv("ARVADOS_KEEP_PROXY", fmt.Sprintf("http://localhost:%v", port))
+	os.Setenv("ARVADOS_API_TOKEN", token)
+	kc, err := keepclient.MakeKeepClient()
+	c.Check(kc.Using_proxy, Equals, true)
+	c.Check(len(kc.ServiceRoots()), Equals, 1)
+	c.Check(kc.ServiceRoots()[0], Equals, fmt.Sprintf("http://localhost:%v", port))
+	c.Check(err, Equals, nil)
+	os.Setenv("ARVADOS_KEEP_PROXY", "")
+	log.Print("keepclient created")
+	return kc
+}
+
 func (s *ServerRequiredSuite) TestPutAskGet(c *C) {
 	log.Print("TestPutAndGet start")
 
+	os.Args = []string{"keepproxy", "-listen=:29950"}
+	os.Setenv("ARVADOS_API_TOKEN", "4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h")
+	go main()
+	time.Sleep(100 * time.Millisecond)
+
+	setupProxyService()
+
 	os.Setenv("ARVADOS_EXTERNAL_CLIENT", "true")
 	kc, err := keepclient.MakeKeepClient()
 	c.Check(kc.External, Equals, true)
@@ -118,9 +136,10 @@ func (s *ServerRequiredSuite) TestPutAskGet(c *C) {
 	c.Check(kc.ServiceRoots()[0], Equals, "http://localhost:29950")
 	c.Check(err, Equals, nil)
 	os.Setenv("ARVADOS_EXTERNAL_CLIENT", "")
-
 	log.Print("keepclient created")
 
+	defer listener.Close()
+
 	hash := fmt.Sprintf("%x", md5.Sum([]byte("foo")))
 
 	{
@@ -159,19 +178,12 @@ func (s *ServerRequiredSuite) TestPutAskGet(c *C) {
 func (s *ServerRequiredSuite) TestPutAskGetForbidden(c *C) {
 	log.Print("TestPutAndGet start")
 
-	os.Setenv("ARVADOS_EXTERNAL_CLIENT", "true")
-	kc, err := keepclient.MakeKeepClient()
-	kc.ApiToken = "123xyz"
-	c.Check(kc.External, Equals, true)
-	c.Check(kc.Using_proxy, Equals, true)
-	c.Check(len(kc.ServiceRoots()), Equals, 1)
-	c.Check(kc.ServiceRoots()[0], Equals, "http://localhost:29950")
-	c.Check(err, Equals, nil)
-	os.Setenv("ARVADOS_EXTERNAL_CLIENT", "")
+	kc := runProxy(c, []string{"keepproxy"}, "123abc", 29951)
+	defer listener.Close()
 
 	log.Print("keepclient created")
 
-	hash := fmt.Sprintf("%x", md5.Sum([]byte("foo")))
+	hash := fmt.Sprintf("%x", md5.Sum([]byte("bar")))
 
 	{
 		_, _, err := kc.Ask(hash)
@@ -180,7 +192,7 @@ func (s *ServerRequiredSuite) TestPutAskGetForbidden(c *C) {
 	}
 
 	{
-		hash2, rep, err := kc.PutB([]byte("foo"))
+		hash2, rep, err := kc.PutB([]byte("bar"))
 		c.Check(hash2, Equals, hash)
 		c.Check(rep, Equals, 0)
 		c.Check(err, Equals, keepclient.InsufficientReplicasError)
@@ -203,3 +215,61 @@ func (s *ServerRequiredSuite) TestPutAskGetForbidden(c *C) {
 
 	log.Print("TestPutAndGetForbidden done")
 }
+
+func (s *ServerRequiredSuite) TestGetDisabled(c *C) {
+	log.Print("TestGetDisabled start")
+
+	kc := runProxy(c, []string{"keepproxy", "-no-get"}, "4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h", 29952)
+	defer listener.Close()
+
+	hash := fmt.Sprintf("%x", md5.Sum([]byte("baz")))
+
+	{
+		_, _, err := kc.Ask(hash)
+		c.Check(err, Equals, keepclient.BlockNotFound)
+		log.Print("Ask 1")
+	}
+
+	{
+		hash2, rep, err := kc.PutB([]byte("baz"))
+		c.Check(hash2, Equals, hash)
+		c.Check(rep, Equals, 2)
+		c.Check(err, Equals, nil)
+		log.Print("PutB")
+	}
+
+	{
+		blocklen, _, err := kc.Ask(hash)
+		c.Assert(err, Equals, keepclient.BlockNotFound)
+		c.Check(blocklen, Equals, int64(0))
+		log.Print("Ask 2")
+	}
+
+	{
+		_, blocklen, _, err := kc.Get(hash)
+		c.Assert(err, Equals, keepclient.BlockNotFound)
+		c.Check(blocklen, Equals, int64(0))
+		log.Print("Get")
+	}
+
+	log.Print("TestGetDisabled done")
+}
+
+func (s *ServerRequiredSuite) TestPutDisabled(c *C) {
+	log.Print("TestPutDisabled start")
+
+	kc := runProxy(c, []string{"keepproxy", "-no-put"}, "4axaw8zxe0qm22wa6urpp5nskcne8z88cvbupv653y1njyi05h", 29953)
+	defer listener.Close()
+
+	hash := fmt.Sprintf("%x", md5.Sum([]byte("quux")))
+
+	{
+		hash2, rep, err := kc.PutB([]byte("quux"))
+		c.Check(hash2, Equals, hash)
+		c.Check(rep, Equals, 0)
+		c.Check(err, Equals, keepclient.InsufficientReplicasError)
+		log.Print("PutB")
+	}
+
+	log.Print("TestPutDisabled done")
+}

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list