virtcontainers/persist: introduce mock fs driver

Mock FS driver can be used in unit testing to allow

Mock fs driver inherits from FS and may overwrite its methods. All files
and directories created by this driver are under a path accessible for all
users, this path is created under the system temporal directory.

Signed-off-by: Julio Montes <julio.montes@intel.com>
This commit is contained in:
Julio Montes 2020-01-31 19:42:47 +00:00
parent ea8fb96c3e
commit dd2762fdad

View File

@ -0,0 +1,52 @@
// Copyright (c) 2020 Intel Corporation
//
// SPDX-License-Identifier: Apache-2.0
//
package fs
import (
"fmt"
"os"
"path/filepath"
persistapi "github.com/kata-containers/runtime/virtcontainers/persist/api"
)
type MockFS struct {
// inherit from FS. Overwrite if needed.
*FS
}
func MockStorageRootPath() string {
return filepath.Join(os.TempDir(), "vc", "mockfs")
}
func MockRunStoragePath() string {
return filepath.Join(MockStorageRootPath(), sandboxPathSuffix)
}
func MockRunVMStoragePath() string {
return filepath.Join(MockStorageRootPath(), vmPathSuffix)
}
func MockStorageDestroy() {
os.RemoveAll(MockStorageRootPath())
}
func MockFSInit() (persistapi.PersistDriver, error) {
driver, err := Init()
if err != nil {
return nil, fmt.Errorf("Could not create Mock FS driver: %v", err)
}
fsDriver, ok := driver.(*FS)
if !ok {
return nil, fmt.Errorf("Could not create Mock FS driver")
}
fsDriver.storageRootPath = MockStorageRootPath()
fsDriver.driverName = "mockfs"
return &MockFS{fsDriver}, nil
}