mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
39bcaee47b
* additional * ambiguous * anonymous * anything * application * because * before * building * capabilities * circumstances * commit * committer * compresses * concatenated * config * container * container's * current * definition * delimiter * disassociates * discovery * distributed * doesnotexist * downloads * duplicates * either * enhancing * enumerate * escapable * exactly * expect * expectations * expected * explicitly * false * filesystem * following * forbidden * git with * healthcheck * ignore * independent * inheritance * investigating * irrelevant * it * logging * looking * membership * mimic * minimum * modify * mountpoint * multiline * notifier * outputting * outside * overridden * override * parsable * plugins * precedence * propagation * provided * provides * registries * repositories * returning * settings * should * signals * someone * something * specifically * successfully * synchronize * they've * thinking * uninitialized * unintentionally * unmarshaling * unnamed * unreferenced * verify Signed-off-by: Josh Soref <jsoref@gmail.com> Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
123 lines
3.4 KiB
Go
123 lines
3.4 KiB
Go
package testutils
|
|
|
|
import (
|
|
"fmt"
|
|
"time"
|
|
|
|
"github.com/docker/docker/volume"
|
|
)
|
|
|
|
// NoopVolume is a volume that doesn't perform any operation
|
|
type NoopVolume struct{}
|
|
|
|
// Name is the name of the volume
|
|
func (NoopVolume) Name() string { return "noop" }
|
|
|
|
// DriverName is the name of the driver
|
|
func (NoopVolume) DriverName() string { return "noop" }
|
|
|
|
// Path is the filesystem path to the volume
|
|
func (NoopVolume) Path() string { return "noop" }
|
|
|
|
// Mount mounts the volume in the container
|
|
func (NoopVolume) Mount(_ string) (string, error) { return "noop", nil }
|
|
|
|
// Unmount unmounts the volume from the container
|
|
func (NoopVolume) Unmount(_ string) error { return nil }
|
|
|
|
// Status provides low-level details about the volume
|
|
func (NoopVolume) Status() map[string]interface{} { return nil }
|
|
|
|
// CreatedAt provides the time the volume (directory) was created at
|
|
func (NoopVolume) CreatedAt() (time.Time, error) { return time.Now(), nil }
|
|
|
|
// FakeVolume is a fake volume with a random name
|
|
type FakeVolume struct {
|
|
name string
|
|
driverName string
|
|
}
|
|
|
|
// NewFakeVolume creates a new fake volume for testing
|
|
func NewFakeVolume(name string, driverName string) volume.Volume {
|
|
return FakeVolume{name: name, driverName: driverName}
|
|
}
|
|
|
|
// Name is the name of the volume
|
|
func (f FakeVolume) Name() string { return f.name }
|
|
|
|
// DriverName is the name of the driver
|
|
func (f FakeVolume) DriverName() string { return f.driverName }
|
|
|
|
// Path is the filesystem path to the volume
|
|
func (FakeVolume) Path() string { return "fake" }
|
|
|
|
// Mount mounts the volume in the container
|
|
func (FakeVolume) Mount(_ string) (string, error) { return "fake", nil }
|
|
|
|
// Unmount unmounts the volume from the container
|
|
func (FakeVolume) Unmount(_ string) error { return nil }
|
|
|
|
// Status provides low-level details about the volume
|
|
func (FakeVolume) Status() map[string]interface{} { return nil }
|
|
|
|
// CreatedAt provides the time the volume (directory) was created at
|
|
func (FakeVolume) CreatedAt() (time.Time, error) { return time.Now(), nil }
|
|
|
|
// FakeDriver is a driver that generates fake volumes
|
|
type FakeDriver struct {
|
|
name string
|
|
vols map[string]volume.Volume
|
|
}
|
|
|
|
// NewFakeDriver creates a new FakeDriver with the specified name
|
|
func NewFakeDriver(name string) volume.Driver {
|
|
return &FakeDriver{
|
|
name: name,
|
|
vols: make(map[string]volume.Volume),
|
|
}
|
|
}
|
|
|
|
// Name is the name of the driver
|
|
func (d *FakeDriver) Name() string { return d.name }
|
|
|
|
// Create initializes a fake volume.
|
|
// It returns an error if the options include an "error" key with a message
|
|
func (d *FakeDriver) Create(name string, opts map[string]string) (volume.Volume, error) {
|
|
if opts != nil && opts["error"] != "" {
|
|
return nil, fmt.Errorf(opts["error"])
|
|
}
|
|
v := NewFakeVolume(name, d.name)
|
|
d.vols[name] = v
|
|
return v, nil
|
|
}
|
|
|
|
// Remove deletes a volume.
|
|
func (d *FakeDriver) Remove(v volume.Volume) error {
|
|
if _, exists := d.vols[v.Name()]; !exists {
|
|
return fmt.Errorf("no such volume")
|
|
}
|
|
delete(d.vols, v.Name())
|
|
return nil
|
|
}
|
|
|
|
// List lists the volumes
|
|
func (d *FakeDriver) List() ([]volume.Volume, error) {
|
|
var vols []volume.Volume
|
|
for _, v := range d.vols {
|
|
vols = append(vols, v)
|
|
}
|
|
return vols, nil
|
|
}
|
|
|
|
// Get gets the volume
|
|
func (d *FakeDriver) Get(name string) (volume.Volume, error) {
|
|
if v, exists := d.vols[name]; exists {
|
|
return v, nil
|
|
}
|
|
return nil, fmt.Errorf("no such volume")
|
|
}
|
|
|
|
// Scope returns the local scope
|
|
func (*FakeDriver) Scope() string {
|
|
return "local"
|
|
}
|