9491: Fix keepproxy support for X-Keep-Desired-Replicas header.
authorTom Clegg <tom@curoverse.com>
Sat, 25 Jun 2016 01:57:30 +0000 (21:57 -0400)
committerTom Clegg <tom@curoverse.com>
Mon, 27 Jun 2016 19:13:19 +0000 (15:13 -0400)
services/keepproxy/keepproxy.go
services/keepproxy/keepproxy_test.go

index 4cd931037ef830dfd8a6b25022126c84c13d7036..df7528ed426c3bab94f76fdc039a671b2594704f 100644 (file)
@@ -424,7 +424,7 @@ func (this PutBlockHandler) ServeHTTP(resp http.ResponseWriter, req *http.Reques
        if req.Header.Get("X-Keep-Desired-Replicas") != "" {
                var r int
                _, err := fmt.Sscanf(req.Header.Get(keepclient.X_Keep_Desired_Replicas), "%d", &r)
-               if err != nil {
+               if err == nil {
                        kc.Want_replicas = r
                }
        }
index 4a1d58f86d822b2508f681c122c51261e2df37fc..a3ca5f115639bca25b344bc478aaf5606619ce56 100644 (file)
@@ -109,6 +109,23 @@ func runProxy(c *C, args []string, bogusClientToken bool) *keepclient.KeepClient
        return kc
 }
 
+func (s *ServerRequiredSuite) TestDesiredReplicas(c *C) {
+       kc := runProxy(c, nil, false)
+       defer closeListener()
+
+       content := []byte("TestDesiredReplicas")
+       hash := fmt.Sprintf("%x", md5.Sum(content))
+
+       for _, kc.Want_replicas = range []int{0, 1, 2} {
+               locator, rep, err := kc.PutB(content)
+               c.Check(err, Equals, nil)
+               c.Check(rep, Equals, kc.Want_replicas)
+               if rep > 0 {
+                       c.Check(locator, Matches, fmt.Sprintf(`^%s\+%d(\+.+)?$`, hash, len(content)))
+               }
+       }
+}
+
 func (s *ServerRequiredSuite) TestPutAskGet(c *C) {
        kc := runProxy(c, nil, false)
        defer closeListener()