func (s *BootstrapSuite) TestImageMetadata(c *gc.C) {
metadataDir := c.MkDir()
expected := []struct{ path, content string }{{
path: "images/streams/v1/index.json",
content: "abc",
}, {
path: "images/streams/v1/products.json",
content: "def",
}, {
path: "wayward/file.txt",
content: "ghi",
}}
for _, pair := range expected {
path := filepath.Join(metadataDir, pair.path)
err := os.MkdirAll(filepath.Dir(path), 0755)
c.Assert(err, jc.ErrorIsNil)
err = ioutil.WriteFile(path, []byte(pair.content), 0644)
c.Assert(err, jc.ErrorIsNil)
}
var stor statetesting.MapStorage
s.PatchValue(&newStateStorage, func(string, *mgo.Session) statestorage.Storage {
return &stor
})
_, cmd, err := s.initBootstrapCommand(
c, nil,
"--env-config", s.b64yamlEnvcfg, "--instance-id", string(s.instanceId),
"--image-metadata", metadataDir,
)
c.Assert(err, jc.ErrorIsNil)
err = cmd.Run(nil)
c.Assert(err, jc.ErrorIsNil)
// The contents of the directory should have been added to
// environment storage.
for _, pair := range expected {
r, length, err := stor.Get(pair.path)
c.Assert(err, jc.ErrorIsNil)
data, err := ioutil.ReadAll(r)
r.Close()
c.Assert(err, jc.ErrorIsNil)
c.Assert(length, gc.Equals, int64(len(pair.content)))
c.Assert(data, gc.HasLen, int(length))
c.Assert(string(data), gc.Equals, pair.content)
}
}
请发表评论