-
- foundIt := false
- for k := range localRoots {
- if k == "zzzzz-bi6l4-123456789012340" {
- foundIt = true
- }
- }
- c.Check(foundIt, Equals, true)
-
- foundIt = false
- for k := range localRoots {
- if k == "zzzzz-bi6l4-123456789012341" {
- foundIt = true
- }
- }
- c.Check(foundIt, Equals, true)
-}
-
-// Test keep-rsync initialization, with src and dst keep servers with blobSigningKey.
-// Do a Put and Get in src, both of which should succeed.
-// Do a Put and Get in dst, both of which should succeed.
-// Do a Get in dst for the src hash, which should raise block not found error.
-// Do a Get in src for the dst hash, which should raise block not found error.
-func (s *ServerRequiredSuite) TestRsyncWithBlobSigning_PutInOne_GetFromOtherShouldFail(c *C) {
- setupRsync(c, true, true, 1)
-
- // Put a block in src using kcSrc and Get it
- srcData := []byte("test-data1")
- locatorInSrc := fmt.Sprintf("%x", md5.Sum(srcData))
-
- hash, rep, err := kcSrc.PutB(srcData)
- c.Check(hash, Matches, fmt.Sprintf(`^%s\+10(\+.+)?$`, locatorInSrc))
- c.Check(rep, Equals, 2)
- c.Check(err, Equals, nil)
-
- tomorrow := time.Now().AddDate(0, 0, 1)
- signedLocator := keepclient.SignLocator(locatorInSrc, kcSrc.Arvados.ApiToken, tomorrow, []byte(blobSigningKey))
-
- reader, blocklen, _, err := kcSrc.Get(signedLocator)
- c.Check(err, IsNil)
- c.Check(blocklen, Equals, int64(10))
- all, err := ioutil.ReadAll(reader)
- c.Check(all, DeepEquals, srcData)
-
- // Put a different block in src using kcSrc and Get it
- dstData := []byte("test-data2")
- locatorInDst := fmt.Sprintf("%x", md5.Sum(dstData))
-
- hash, rep, err = kcDst.PutB(dstData)
- c.Check(hash, Matches, fmt.Sprintf(`^%s\+10(\+.+)?$`, locatorInDst))
- c.Check(rep, Equals, 1)
- c.Check(err, Equals, nil)
-
- signedLocator = keepclient.SignLocator(locatorInDst, kcDst.Arvados.ApiToken, tomorrow, []byte(blobSigningKey))
-
- reader, blocklen, _, err = kcDst.Get(signedLocator)
- c.Check(err, IsNil)
- c.Check(blocklen, Equals, int64(10))
- all, err = ioutil.ReadAll(reader)
- c.Check(all, DeepEquals, dstData)
-
- // Get srcLocator using kcDst should fail with Not Found error
- signedLocator = keepclient.SignLocator(locatorInSrc, kcDst.Arvados.ApiToken, tomorrow, []byte(blobSigningKey))
- _, _, _, err = kcDst.Get(locatorInSrc)
- c.Assert(err.Error(), Equals, "Block not found")
-
- // Get dstLocator using kcSrc should fail with Not Found error
- signedLocator = keepclient.SignLocator(locatorInDst, kcSrc.Arvados.ApiToken, tomorrow, []byte(blobSigningKey))
- _, _, _, err = kcSrc.Get(locatorInDst)
- c.Assert(err.Error(), Equals, "Block not found")