cadvisor/storage/storage_test.go
2014-06-16 14:51:35 -07:00

82 lines
1.4 KiB
Go

package storage
import (
"sync"
"testing"
"github.com/google/cadvisor/info"
"github.com/stretchr/testify/mock"
)
type mockStorageDriver struct {
storageName string
mock.Mock
}
func (self *mockStorageDriver) WriteStats(
ref info.ContainerReference,
stats *info.ContainerStats,
) error {
args := self.Called(ref, stats)
return args.Error(0)
}
type mockStorageFactory struct {
name string
}
func (self *mockStorageFactory) String() string {
return self.name
}
func (self *mockStorageFactory) New(
config *Config,
) (StorageDriver, error) {
mockWriter := &mockStorageDriver{
storageName: self.name,
}
return mockWriter, nil
}
func TestContainerStatsWriterFactoryManager(t *testing.T) {
factoryNames := []string{
"abc",
"bcd",
}
wg := sync.WaitGroup{}
for _, name := range factoryNames {
wg.Add(1)
go func(n string) {
defer wg.Done()
factory := &mockStorageFactory{
name: n,
}
RegisterStorage(factory)
}(name)
}
wg.Wait()
for _, name := range factoryNames {
wg.Add(1)
config := &Config{
Engine: name,
}
go func(n string) {
defer wg.Done()
writer, err := NewStorage(config)
if err != nil {
t.Error(err)
}
if mw, ok := writer.(*mockStorageDriver); ok {
if mw.storageName != n {
t.Errorf("wrong writer. should be %v, got %v", n, mw.storageName)
}
} else {
t.Errorf("wrong writer: unknown type")
}
}(name)
}
wg.Wait()
}