test: add unit test for new FS storage driver

add more unit tests.

Signed-off-by: Wei Zhang <zhangwei555@huawei.com>
This commit is contained in:
Wei Zhang 2019-02-17 22:53:41 +08:00
parent 02f21228dd
commit 0f52c8b56d
2 changed files with 128 additions and 0 deletions

View File

@ -0,0 +1,106 @@
// Copyright (c) 2019 Huawei Corporation
//
// SPDX-License-Identifier: Apache-2.0
//
package fs
import (
"fmt"
"os"
"testing"
persistapi "github.com/kata-containers/runtime/virtcontainers/persist/api"
"github.com/stretchr/testify/assert"
)
func getFsDriver() (*FS, error) {
driver, err := Init()
if err != nil {
return nil, fmt.Errorf("failed to init fs driver")
}
fs, ok := driver.(*FS)
if !ok {
return nil, fmt.Errorf("failed to convert driver to *FS")
}
return fs, nil
}
func TestFsLock(t *testing.T) {
fs, err := getFsDriver()
assert.Nil(t, err)
assert.NotNil(t, fs)
fs.sandboxState.SandboxContainer = "test-fs-driver"
sandboxDir, err := fs.sandboxDir()
assert.Nil(t, err)
err = os.MkdirAll(sandboxDir, dirMode)
assert.Nil(t, err)
assert.Nil(t, fs.lock())
assert.NotNil(t, fs.lock())
assert.Nil(t, fs.unlock())
assert.Nil(t, fs.unlock())
}
func TestFsDriver(t *testing.T) {
fs, err := getFsDriver()
assert.Nil(t, err)
assert.NotNil(t, fs)
fs.AddSaveCallback("test", func(ss *persistapi.SandboxState, cs map[string]persistapi.ContainerState) error {
return nil
})
// missing sandbox container id
assert.NotNil(t, fs.ToDisk())
id := "test-fs-driver"
// missing sandbox container id
fs.AddSaveCallback("test", func(ss *persistapi.SandboxState, cs map[string]persistapi.ContainerState) error {
ss.SandboxContainer = id
return nil
})
assert.Nil(t, fs.ToDisk())
fs.AddSaveCallback("test1", func(ss *persistapi.SandboxState, cs map[string]persistapi.ContainerState) error {
ss.State = "running"
return nil
})
// try non-existent dir
assert.NotNil(t, fs.Restore("test-fs"))
// since we didn't call ToDisk, Callbacks are not invoked, and state is still empty in disk file
assert.Nil(t, fs.Restore(id))
ss, cs, err := fs.GetStates()
assert.Nil(t, err)
assert.NotNil(t, ss)
assert.Equal(t, len(cs), 0)
assert.Equal(t, ss.SandboxContainer, id)
assert.Equal(t, ss.State, "")
// flush all to disk
assert.Nil(t, fs.ToDisk())
assert.Nil(t, fs.Restore(id))
ss, cs, err = fs.GetStates()
assert.Nil(t, err)
assert.NotNil(t, ss)
assert.Equal(t, len(cs), 0)
assert.Equal(t, ss.SandboxContainer, id)
assert.Equal(t, ss.State, "running")
assert.Nil(t, fs.Destroy())
dir, err := fs.sandboxDir()
assert.Nil(t, err)
assert.NotEqual(t, len(dir), 0)
_, err = os.Stat(dir)
assert.NotNil(t, err)
assert.True(t, os.IsNotExist(err))
}

View File

@ -0,0 +1,22 @@
// Copyright (c) 2019 Huawei Corporation
//
// SPDX-License-Identifier: Apache-2.0
//
package persist
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestGetDriver(t *testing.T) {
nonexist, err := GetDriver("non-exist")
assert.NotNil(t, err)
assert.Nil(t, nonexist)
fsDriver, err := GetDriver("fs")
assert.Nil(t, err)
assert.NotNil(t, fsDriver)
}