func (s *BootstrapSuite) TestImageMetadata(c *gc.C) { metadataDir, _, expected := createImageMetadata(c) var stor statetesting.MapStorage s.PatchValue(&newStateStorage, func(string, *mgo.Session) statestorage.Storage { return &stor }) _, cmd, err := s.initBootstrapCommand( c, nil, "--model-config", s.b64yamlControllerModelConfig, "--hosted-model-config", s.b64yamlHostedModelConfig, "--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) } }
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) } }