// TestPersistence tests the adding, reading, listing and removing // of files from the local storage. func (s *storageSuite) TestPersistence(c *C) { listener, _, _ := startServer(c) defer listener.Close() storage := localstorage.Client(listener.Addr().String()) names := []string{ "aa", "zzz/aa", "zzz/bb", } for _, name := range names { checkFileDoesNotExist(c, storage, name) checkPutFile(c, storage, name, []byte(name)) } checkList(c, storage, "", names) checkList(c, storage, "a", []string{"aa"}) checkList(c, storage, "zzz/", []string{"zzz/aa", "zzz/bb"}) storage2 := localstorage.Client(listener.Addr().String()) for _, name := range names { checkFileHasContents(c, storage2, name, []byte(name)) } // remove the first file and check that the others remain. err := storage2.Remove(names[0]) c.Check(err, IsNil) // check that it's ok to remove a file twice. err = storage2.Remove(names[0]) c.Check(err, IsNil) // ... and check it's been removed in the other environment checkFileDoesNotExist(c, storage, names[0]) // ... and that the rest of the files are still around checkList(c, storage2, "", names[1:]) for _, name := range names[1:] { err := storage2.Remove(name) c.Assert(err, IsNil) } // check they've all gone checkList(c, storage2, "", nil) // Check that RemoveAll works. checkRemoveAll(c, storage2) }
// makeDummyStorage creates a local storage. // Returns a cleanup function that must be called when done with the storage. func makeDummyStorage(c *C) (environs.Storage, func()) { listener, err := localstorage.Serve("127.0.0.1:0", c.MkDir()) c.Assert(err, IsNil) storage := localstorage.Client(listener.Addr().String()) cleanup := func() { listener.Close() } return storage, cleanup }
// CreateLocalTestStorage returns the listener, which needs to be closed, and // the storage that is backed by a directory created in the running tests temp // directory. func CreateLocalTestStorage(c *gc.C) (closer io.Closer, storage environs.Storage, dataDir string) { dataDir = c.MkDir() listener, err := localstorage.Serve("localhost:0", dataDir) c.Assert(err, gc.IsNil) storage = localstorage.Client(listener.Addr().String()) closer = listener return }
// PublicStorage is specified in the Environ interface. func (env *localEnviron) PublicStorage() environs.StorageReader { return localstorage.Client(env.config.sharedStorageAddr()) }
// Storage is specified in the Environ interface. func (env *localEnviron) Storage() environs.Storage { return localstorage.Client(env.config.storageAddr()) }
// setDummyStorage injects the local provider's fake storage implementation // into the given environment, so that tests can manipulate storage as if it // were real. // Returns a cleanup function that must be called when done with the storage. func setDummyStorage(c *C, env *azureEnviron) func() { listener, err := localstorage.Serve("127.0.0.1:0", c.MkDir()) c.Assert(err, IsNil) env.storage = localstorage.Client(listener.Addr().String()) return func() { listener.Close() } }