func (s *interruptibleStorageSuite) TestInterruptStorageConcurrently(c *gc.C) { closer, stor, _ := envtesting.CreateLocalTestStorage(c) s.AddCleanup(func(c *gc.C) { closer.Close() }) reader := &errorReader{ close: make(chan struct{}), wait: make(chan struct{}), err: fmt.Errorf("read failed"), } istor := bootstrap.NewInterruptibleStorage(stor, reader.close) err := istor.Put("name", reader, 3) c.Assert(err, gc.ErrorMatches, ".*: interrupted") c.Assert(reader.called, gc.Equals, 0) // reader is blocked close(reader.wait) }
func (suite *StateSuite) TestDeleteStateFile(c *gc.C) { closer, stor, dataDir := envtesting.CreateLocalTestStorage(c) defer closer.Close() err := bootstrap.DeleteStateFile(stor) c.Assert(err, gc.IsNil) // doesn't exist, juju don't care _, err = bootstrap.CreateStateFile(stor) c.Assert(err, gc.IsNil) _, err = os.Stat(filepath.Join(dataDir, bootstrap.StateFile)) c.Assert(err, gc.IsNil) err = bootstrap.DeleteStateFile(stor) c.Assert(err, gc.IsNil) _, err = os.Stat(filepath.Join(dataDir, bootstrap.StateFile)) c.Assert(err, jc.Satisfies, os.IsNotExist) }
func (s *interruptibleStorageSuite) TestInterruptStorage(c *gc.C) { closer, stor, _ := envtesting.CreateLocalTestStorage(c) s.AddCleanup(func(c *gc.C) { closer.Close() }) reader := &errorReader{ err: fmt.Errorf("read failed"), } interrupted := make(chan struct{}) istor := bootstrap.NewInterruptibleStorage(stor, interrupted) err := istor.Put("name", reader, 3) c.Assert(err, gc.ErrorMatches, ".*: read failed") c.Assert(reader.called, gc.Equals, 1) // If the channel is already closed, then the // underlying reader is never deferred to. close(interrupted) err = istor.Put("name", reader, 3) c.Assert(err, gc.ErrorMatches, ".*: interrupted") c.Assert(reader.called, gc.Equals, 1) }
func (suite *StateSuite) newStorageWithDataDir(c *gc.C) (storage.Storage, string) { closer, stor, dataDir := envtesting.CreateLocalTestStorage(c) suite.AddCleanup(func(*gc.C) { closer.Close() }) envtesting.UploadFakeTools(c, stor) return stor, dataDir }
// setDummyStorage injects the local provider's fake storage implementation // into the given environment, so that tests can manipulate storage as if it // were real. func (s *instanceTypeSuite) setDummyStorage(c *gc.C, env *azureEnviron) { closer, storage, _ := testing.CreateLocalTestStorage(c) env.storage = storage s.AddCleanup(func(c *gc.C) { closer.Close() }) }