github.com/rogpeppe/juju@v0.0.0-20140613142852-6337964b789e/environs/testing/storage.go (about)

     1  // Copyright 2013 Canonical Ltd.
     2  // Licensed under the AGPLv3, see LICENCE file for details.
     3  
     4  package testing
     5  
     6  import (
     7  	"io"
     8  
     9  	gc "launchpad.net/gocheck"
    10  
    11  	"github.com/juju/juju/environs/filestorage"
    12  	"github.com/juju/juju/environs/httpstorage"
    13  	"github.com/juju/juju/environs/storage"
    14  )
    15  
    16  // CreateLocalTestStorage returns the listener, which needs to be closed, and
    17  // the storage that is backed by a directory created in the running test's temp
    18  // directory.
    19  func CreateLocalTestStorage(c *gc.C) (closer io.Closer, stor storage.Storage, dataDir string) {
    20  	dataDir = c.MkDir()
    21  	underlying, err := filestorage.NewFileStorageWriter(dataDir)
    22  	c.Assert(err, gc.IsNil)
    23  	listener, err := httpstorage.Serve("localhost:0", underlying)
    24  	c.Assert(err, gc.IsNil)
    25  	stor = httpstorage.Client(listener.Addr().String())
    26  	closer = listener
    27  	return
    28  }