mirror of
https://github.com/aljazceru/kata-containers.git
synced 2025-12-26 18:44:47 +01:00
Now, function NewFactory will return nil even create template does't complete. As for this, it will tell user that factory has been initialized no matter whether the template is created or not. This patch correct it by adding another return value of error in NewFactory. Testing initFactoryCommand when enable template will need root privilege to mount tmpfs. So skip it for no-root user. Testing initFactoryCommand func will create template, but no proxy type assigned to VMconfig which will using katabuiltinProxy instead. this will lead to failure for this type of proxy will check proxyparams which contains many null value. This commit fix it by substitute katabuiltinProxy as noopProxy when for test purpose. Fixes: #1333 Signed-off-by: Jianyong Wu <jianyong.wu@arm.com>
151 lines
3.5 KiB
Go
151 lines
3.5 KiB
Go
// Copyright (c) 2018 HyperHQ Inc.
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
//
|
|
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/urfave/cli"
|
|
|
|
vc "github.com/kata-containers/runtime/virtcontainers"
|
|
)
|
|
|
|
const testDisabledAsNonRoot = "Test disabled as requires root privileges"
|
|
|
|
func TestFactoryCLIFunctionNoRuntimeConfig(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
ctx := createCLIContext(nil)
|
|
ctx.App.Name = "foo"
|
|
ctx.App.Metadata["foo"] = "bar"
|
|
|
|
fn, ok := initFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err := fn(ctx)
|
|
// no runtime config in the Metadata
|
|
assert.Error(err)
|
|
|
|
fn, ok = destroyFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err = fn(ctx)
|
|
// no runtime config in the Metadata
|
|
assert.Error(err)
|
|
}
|
|
|
|
func TestFactoryCLIFunctionInit(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
tmpdir, err := ioutil.TempDir("", "")
|
|
assert.NoError(err)
|
|
defer os.RemoveAll(tmpdir)
|
|
|
|
runtimeConfig, err := newTestRuntimeConfig(tmpdir, testConsole, true)
|
|
assert.NoError(err)
|
|
|
|
set := flag.NewFlagSet("", 0)
|
|
|
|
set.String("console-socket", "", "")
|
|
|
|
ctx := createCLIContext(set)
|
|
ctx.App.Name = "foo"
|
|
|
|
// No template
|
|
ctx.App.Metadata["runtimeConfig"] = runtimeConfig
|
|
|
|
fn, ok := initFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err = fn(ctx)
|
|
assert.Nil(err)
|
|
|
|
// With template
|
|
if os.Geteuid() != 0 {
|
|
t.Skip(testDisabledAsNonRoot)
|
|
}
|
|
|
|
runtimeConfig.FactoryConfig.Template = true
|
|
runtimeConfig.HypervisorType = vc.MockHypervisor
|
|
runtimeConfig.AgentType = vc.NoopAgentType
|
|
runtimeConfig.ProxyType = vc.NoopProxyType
|
|
ctx.App.Metadata["runtimeConfig"] = runtimeConfig
|
|
fn, ok = initFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err = fn(ctx)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestFactoryCLIFunctionDestroy(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
tmpdir, err := ioutil.TempDir("", "")
|
|
assert.NoError(err)
|
|
defer os.RemoveAll(tmpdir)
|
|
|
|
runtimeConfig, err := newTestRuntimeConfig(tmpdir, testConsole, true)
|
|
assert.NoError(err)
|
|
|
|
set := flag.NewFlagSet("", 0)
|
|
|
|
set.String("console-socket", "", "")
|
|
|
|
ctx := createCLIContext(set)
|
|
ctx.App.Name = "foo"
|
|
|
|
// No template
|
|
ctx.App.Metadata["runtimeConfig"] = runtimeConfig
|
|
fn, ok := destroyFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err = fn(ctx)
|
|
assert.Nil(err)
|
|
|
|
// With template
|
|
runtimeConfig.FactoryConfig.Template = true
|
|
runtimeConfig.HypervisorType = vc.MockHypervisor
|
|
runtimeConfig.AgentType = vc.NoopAgentType
|
|
ctx.App.Metadata["runtimeConfig"] = runtimeConfig
|
|
fn, ok = destroyFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err = fn(ctx)
|
|
assert.Nil(err)
|
|
}
|
|
|
|
func TestFactoryCLIFunctionStatus(t *testing.T) {
|
|
assert := assert.New(t)
|
|
|
|
tmpdir, err := ioutil.TempDir("", "")
|
|
assert.NoError(err)
|
|
defer os.RemoveAll(tmpdir)
|
|
|
|
runtimeConfig, err := newTestRuntimeConfig(tmpdir, testConsole, true)
|
|
assert.NoError(err)
|
|
|
|
set := flag.NewFlagSet("", 0)
|
|
|
|
set.String("console-socket", "", "")
|
|
|
|
ctx := createCLIContext(set)
|
|
ctx.App.Name = "foo"
|
|
|
|
// No template
|
|
ctx.App.Metadata["runtimeConfig"] = runtimeConfig
|
|
|
|
fn, ok := statusFactoryCommand.Action.(func(context *cli.Context) error)
|
|
assert.True(ok)
|
|
err = fn(ctx)
|
|
assert.Nil(err)
|
|
|
|
// With template
|
|
runtimeConfig.FactoryConfig.Template = true
|
|
runtimeConfig.HypervisorType = vc.MockHypervisor
|
|
runtimeConfig.AgentType = vc.NoopAgentType
|
|
ctx.App.Metadata["runtimeConfig"] = runtimeConfig
|
|
err = fn(ctx)
|
|
assert.Nil(err)
|
|
}
|