mirror of
https://github.com/aljazceru/kata-containers.git
synced 2026-01-01 13:34:20 +01:00
Change io/ioutil to io/os packages because io/ioutil package is deprecated from 1.16: Discard => io.Discard NopCloser => io.NopCloser ReadAll => io.ReadAll ReadDir => os.ReadDir ReadFile => os.ReadFile TempDir => os.MkdirTemp TempFile => os.CreateTemp WriteFile => os.WriteFile Details: https://go.dev/doc/go1.16#ioutil Fixes: #3265 Signed-off-by: bin <bin@hyper.sh>
135 lines
2.8 KiB
Go
135 lines
2.8 KiB
Go
// Copyright (c) 2018 HyperHQ Inc.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package virtcontainers
|
|
|
|
import (
|
|
"context"
|
|
"os"
|
|
"path/filepath"
|
|
"testing"
|
|
|
|
"github.com/kata-containers/kata-containers/src/runtime/virtcontainers/utils"
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestNewVM(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
testDir, err := os.MkdirTemp("", "vmfactory-tmp-")
|
|
assert.Nil(err)
|
|
defer os.RemoveAll(testDir)
|
|
|
|
config := VMConfig{
|
|
HypervisorType: MockHypervisor,
|
|
}
|
|
hyperConfig := HypervisorConfig{
|
|
KernelPath: testDir,
|
|
ImagePath: testDir,
|
|
}
|
|
|
|
ctx := WithNewAgentFunc(context.Background(), newMockAgent)
|
|
|
|
var vm *VM
|
|
_, err = NewVM(ctx, config)
|
|
assert.Error(err)
|
|
|
|
config.HypervisorConfig = hyperConfig
|
|
vm, err = NewVM(ctx, config)
|
|
assert.Nil(err)
|
|
|
|
// VM operations
|
|
err = vm.Pause(context.Background())
|
|
assert.Nil(err)
|
|
err = vm.Resume(context.Background())
|
|
assert.Nil(err)
|
|
err = vm.Start(context.Background())
|
|
assert.Nil(err)
|
|
err = vm.Disconnect(context.Background())
|
|
assert.Nil(err)
|
|
err = vm.Save()
|
|
assert.Nil(err)
|
|
err = vm.Stop(context.Background())
|
|
assert.Nil(err)
|
|
err = vm.AddCPUs(context.Background(), 2)
|
|
assert.Nil(err)
|
|
err = vm.AddMemory(context.Background(), 128)
|
|
assert.Nil(err)
|
|
err = vm.OnlineCPUMemory(context.Background())
|
|
assert.Nil(err)
|
|
|
|
// mock urandom device
|
|
savedUrandomDev := urandomDev
|
|
defer func() {
|
|
urandomDev = savedUrandomDev
|
|
}()
|
|
tmpdir, err := os.MkdirTemp("", "")
|
|
assert.NoError(err)
|
|
defer os.RemoveAll(tmpdir)
|
|
urandomDev = filepath.Join(tmpdir, "urandom")
|
|
data := make([]byte, 512)
|
|
err = os.WriteFile(urandomDev, data, os.FileMode(0640))
|
|
assert.NoError(err)
|
|
|
|
err = vm.ReseedRNG(context.Background())
|
|
assert.Nil(err)
|
|
|
|
// template VM
|
|
config.HypervisorConfig.BootFromTemplate = true
|
|
_, err = NewVM(ctx, config)
|
|
assert.Error(err)
|
|
|
|
config.HypervisorConfig.MemoryPath = testDir
|
|
_, err = NewVM(ctx, config)
|
|
assert.Error(err)
|
|
|
|
config.HypervisorConfig.DevicesStatePath = testDir
|
|
_, err = NewVM(ctx, config)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestVMConfigValid(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
config := VMConfig{}
|
|
|
|
err := config.Valid()
|
|
assert.Error(err)
|
|
|
|
testDir, err := os.MkdirTemp("", "vmfactory-tmp-")
|
|
assert.Nil(err)
|
|
defer os.RemoveAll(testDir)
|
|
|
|
config.HypervisorConfig = HypervisorConfig{
|
|
KernelPath: testDir,
|
|
InitrdPath: testDir,
|
|
}
|
|
err = config.Valid()
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestVMConfigGrpc(t *testing.T) {
|
|
assert := assert.New(t)
|
|
config := VMConfig{
|
|
HypervisorType: QemuHypervisor,
|
|
HypervisorConfig: newQemuConfig(),
|
|
AgentConfig: KataAgentConfig{
|
|
LongLiveConn: true,
|
|
Debug: false,
|
|
Trace: false,
|
|
EnableDebugConsole: false,
|
|
ContainerPipeSize: 0,
|
|
KernelModules: []string{}},
|
|
}
|
|
|
|
p, err := config.ToGrpc()
|
|
assert.Nil(err)
|
|
|
|
config2, err := GrpcToVMConfig(p)
|
|
assert.Nil(err)
|
|
|
|
assert.True(utils.DeepCompare(config, *config2))
|
|
}
|