mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-26 18:44:47 +01:00
This is basically a Store dispatcher, for storing items into their right Store (either configuration or state). There's very little logic here, except for finding out which store an item belongs to in the virtcontainers context. vc.go also provides virtcontainers specific utilities. Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>
131 lines
3.4 KiB
Go
131 lines
3.4 KiB
Go
// Copyright (c) 2019 Intel Corporation
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package store
|
|
|
|
import (
|
|
"context"
|
|
"io/ioutil"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
const testSandboxID = "7f49d00d-1995-4156-8c79-5f5ab24ce138"
|
|
|
|
var sandboxDirConfig = ""
|
|
var sandboxFileConfig = ""
|
|
var sandboxDirState = ""
|
|
var sandboxDirLock = ""
|
|
var sandboxFileState = ""
|
|
var sandboxFileLock = ""
|
|
var storeRoot = "file:///tmp/root1/"
|
|
|
|
func TestNewStore(t *testing.T) {
|
|
s, err := New(context.Background(), storeRoot)
|
|
assert.Nil(t, err)
|
|
assert.Equal(t, s.scheme, "file")
|
|
assert.Equal(t, s.host, "")
|
|
assert.Equal(t, s.path, "/tmp/root1/")
|
|
}
|
|
|
|
func TestDeleteStore(t *testing.T) {
|
|
s, err := New(context.Background(), storeRoot)
|
|
assert.Nil(t, err)
|
|
|
|
err = s.Delete()
|
|
assert.Nil(t, err)
|
|
|
|
// We should no longer find storeRoot
|
|
newStore := stores.findStore(storeRoot)
|
|
assert.Nil(t, newStore, "findStore should not have found %s", storeRoot)
|
|
}
|
|
|
|
func TestManagerAddStore(t *testing.T) {
|
|
s, err := New(context.Background(), storeRoot)
|
|
assert.Nil(t, err)
|
|
defer stores.removeStore(storeRoot)
|
|
|
|
// Positive find
|
|
newStore := stores.findStore(storeRoot)
|
|
assert.NotNil(t, newStore, "findStore failed")
|
|
|
|
// Duplicate, should fail
|
|
err = stores.addStore(s)
|
|
assert.NotNil(t, err, "addStore should have failed")
|
|
|
|
// Try with an empty URL
|
|
sEmpty, err := New(context.Background(), storeRoot)
|
|
assert.Nil(t, err)
|
|
sEmpty.url = ""
|
|
err = stores.addStore(sEmpty)
|
|
assert.NotNil(t, err, "addStore should have failed on an empty store URL")
|
|
|
|
}
|
|
|
|
func TestManagerRemoveStore(t *testing.T) {
|
|
_, err := New(context.Background(), storeRoot)
|
|
assert.Nil(t, err)
|
|
|
|
// Positive find
|
|
newStore := stores.findStore(storeRoot)
|
|
assert.NotNil(t, newStore, "findStore failed")
|
|
|
|
// Negative removal
|
|
stores.removeStore(storeRoot + "foobar")
|
|
|
|
// We should still find storeRoot
|
|
newStore = stores.findStore(storeRoot)
|
|
assert.NotNil(t, newStore, "findStore failed")
|
|
|
|
// Positive removal
|
|
stores.removeStore(storeRoot)
|
|
|
|
// We should no longer find storeRoot
|
|
newStore = stores.findStore(storeRoot)
|
|
assert.Nil(t, newStore, "findStore should not have found %s", storeRoot)
|
|
}
|
|
|
|
func TestManagerFindStore(t *testing.T) {
|
|
_, err := New(context.Background(), storeRoot)
|
|
assert.Nil(t, err)
|
|
defer stores.removeStore(storeRoot)
|
|
|
|
// Positive find
|
|
newStore := stores.findStore(storeRoot)
|
|
assert.NotNil(t, newStore, "findStore failed")
|
|
|
|
// Negative find
|
|
newStore = stores.findStore(storeRoot + "foobar")
|
|
assert.Nil(t, newStore, "findStore should not have found a new store")
|
|
}
|
|
|
|
// TestMain is the common main function used by ALL the test functions
|
|
// for the store.
|
|
func TestMain(m *testing.M) {
|
|
testDir, err := ioutil.TempDir("", "store-tmp-")
|
|
if err != nil {
|
|
panic(err)
|
|
}
|
|
|
|
// allow the tests to run without affecting the host system.
|
|
ConfigStoragePath = filepath.Join(testDir, StoragePathSuffix, "config")
|
|
RunStoragePath = filepath.Join(testDir, StoragePathSuffix, "run")
|
|
|
|
// set now that ConfigStoragePath has been overridden.
|
|
sandboxDirConfig = filepath.Join(ConfigStoragePath, testSandboxID)
|
|
sandboxFileConfig = filepath.Join(ConfigStoragePath, testSandboxID, ConfigurationFile)
|
|
sandboxDirState = filepath.Join(RunStoragePath, testSandboxID)
|
|
sandboxDirLock = filepath.Join(RunStoragePath, testSandboxID)
|
|
sandboxFileState = filepath.Join(RunStoragePath, testSandboxID, StateFile)
|
|
sandboxFileLock = filepath.Join(RunStoragePath, testSandboxID, LockFile)
|
|
|
|
ret := m.Run()
|
|
|
|
os.Exit(ret)
|
|
}
|