Skip to content
This repository has been archived by the owner on May 12, 2021. It is now read-only.

Commit

Permalink
test: add a generic function for CLI kata-check command
Browse files Browse the repository at this point in the history
Add a generic function to run CLI kata-check tests, shared by all the
args.

Signed-off-by: Marco Vedovati <[email protected]>
  • Loading branch information
marcov committed Aug 22, 2019
1 parent 7019ce5 commit 24fcd1b
Show file tree
Hide file tree
Showing 5 changed files with 102 additions and 319 deletions.
78 changes: 1 addition & 77 deletions cli/kata-check_amd64_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,15 +10,12 @@ import (
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
"regexp"
"strings"
"testing"

"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/urfave/cli"
)

func setupCheckHostIsVMContainerCapable(assert *assert.Assertions, cpuInfoFile string, cpuData []testCPUData, moduleData []testModuleData) {
Expand Down Expand Up @@ -47,36 +44,6 @@ func setupCheckHostIsVMContainerCapable(assert *assert.Assertions, cpuInfoFile s
}

func TestCCCheckCLIFunction(t *testing.T) {
assert := assert.New(t)

dir, err := ioutil.TempDir("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)

_, config, err := makeRuntimeConfig(dir)
assert.NoError(err)

savedSysModuleDir := sysModuleDir
savedProcCPUInfo := procCPUInfo

cpuInfoFile := filepath.Join(dir, "cpuinfo")

// XXX: override
sysModuleDir = filepath.Join(dir, "sys/module")
procCPUInfo = cpuInfoFile

defer func() {
sysModuleDir = savedSysModuleDir
procCPUInfo = savedProcCPUInfo
}()

err = os.MkdirAll(sysModuleDir, testDirMode)
if err != nil {
t.Fatal(err)
}

var cpuData []testCPUData
var moduleData []testModuleData

Expand All @@ -94,50 +61,7 @@ func TestCCCheckCLIFunction(t *testing.T) {
moduleData = []testModuleData{}
}

devNull, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0666)
assert.NoError(err)
defer devNull.Close()

savedLogOutput := kataLog.Logger.Out

// discard normal output
kataLog.Logger.Out = devNull

defer func() {
kataLog.Logger.Out = savedLogOutput
}()

setupCheckHostIsVMContainerCapable(assert, cpuInfoFile, cpuData, moduleData)

ctx := createCLIContext(nil)
ctx.App.Name = "foo"
ctx.App.Metadata["runtimeConfig"] = config

// create buffer to save logger output
buf := &bytes.Buffer{}

// capture output this time
kataLog.Logger.Out = buf

fn, ok := kataCheckCLICommand.Action.(func(context *cli.Context) error)
assert.True(ok)

err = fn(ctx)
assert.NoError(err)

output := buf.String()

for _, c := range cpuData {
assert.True(findAnchoredString(output, c.vendorID))
for _, flag := range strings.Fields(c.flags) {
assert.True(findAnchoredString(output, flag))
}
}

for _, m := range moduleData {
name := path.Base(m.path)
assert.True(findAnchoredString(output, name))
}
genericCheckCLIFunction(t, cpuData, moduleData)
}

func TestCheckCheckKernelModulesNoNesting(t *testing.T) {
Expand Down
104 changes: 5 additions & 99 deletions cli/kata-check_arm64_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,128 +6,34 @@
package main

import (
"bytes"
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
"testing"

"github.com/stretchr/testify/assert"
"github.com/urfave/cli"
)

func setupCheckHostIsVMContainerCapable(assert *assert.Assertions, cpuInfoFile string, moduleData []testModuleData) {
func setupCheckHostIsVMContainerCapable(assert *assert.Assertions, cpuInfoFile string, cpuData []testCPUData, moduleData []testModuleData) {
//For now, Arm64 only deal with module check
_ = cpuData

createModules(assert, cpuInfoFile, moduleData)

err := makeCPUInfoFile(cpuInfoFile, "", "")
assert.NoError(err)

}

func TestCCCheckCLIFunction(t *testing.T) {
assert := assert.New(t)

dir, err := ioutil.TempDir("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)

_, config, err := makeRuntimeConfig(dir)
assert.NoError(err)

savedSysModuleDir := sysModuleDir
savedProcCPUInfo := procCPUInfo

cpuInfoFile := filepath.Join(dir, "cpuinfo")

// XXX: override
sysModuleDir = filepath.Join(dir, "sys/module")
procCPUInfo = cpuInfoFile

defer func() {
sysModuleDir = savedSysModuleDir
procCPUInfo = savedProcCPUInfo
}()

err = os.MkdirAll(sysModuleDir, testDirMode)
if err != nil {
t.Fatal(err)
}

var cpuData []testCPUData
moduleData := []testModuleData{
{filepath.Join(sysModuleDir, "kvm"), true, ""},
{filepath.Join(sysModuleDir, "vhost"), true, ""},
{filepath.Join(sysModuleDir, "vhost_net"), true, ""},
}

devNull, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0666)
assert.NoError(err)
defer devNull.Close()

savedLogOutput := kataLog.Logger.Out

// discard normal output
kataLog.Logger.Out = devNull

defer func() {
kataLog.Logger.Out = savedLogOutput
}()

setupCheckHostIsVMContainerCapable(assert, cpuInfoFile, moduleData)

ctx := createCLIContext(nil)
ctx.App.Name = "foo"
ctx.App.Metadata["runtimeConfig"] = config

// create buffer to save logger output
buf := &bytes.Buffer{}

// capture output this time
kataLog.Logger.Out = buf

fn, ok := kataCheckCLICommand.Action.(func(context *cli.Context) error)
assert.True(ok)

err = fn(ctx)
assert.NoError(err)

output := buf.String()

for _, m := range moduleData {
name := path.Base(m.path)
assert.True(findAnchoredString(output, name))
}
}

func TestKvmIsUsable(t *testing.T) {
assert := assert.New(t)

dir, err := ioutil.TempDir("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)

savedKvmDevice := kvmDevice
fakeKVMDevice := filepath.Join(dir, "kvm")
kvmDevice = fakeKVMDevice

defer func() {
kvmDevice = savedKvmDevice
}()

err = kvmIsUsable()
assert.Error(err)

err = createEmptyFile(fakeKVMDevice)
assert.NoError(err)

err = kvmIsUsable()
assert.Error(err)
genericCheckCLIFunction(t, cpuData, moduleData)
}

func TestGetCPUDetails(t *testing.T) {
Expand Down
73 changes: 2 additions & 71 deletions cli/kata-check_ppc64le_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,17 +6,14 @@
package main

import (
"bytes"
"fmt"
"io/ioutil"
"os"
"path"
"path/filepath"
"testing"

"github.com/sirupsen/logrus"
"github.com/stretchr/testify/assert"
"github.com/urfave/cli"
)

func setupCheckHostIsVMContainerCapable(assert *assert.Assertions, cpuInfoFile string, cpuData []testCPUData, moduleData []testModuleData) {
Expand Down Expand Up @@ -45,82 +42,16 @@ func setupCheckHostIsVMContainerCapable(assert *assert.Assertions, cpuInfoFile s
}

func TestCCCheckCLIFunction(t *testing.T) {
assert := assert.New(t)

dir, err := ioutil.TempDir("", "")
if err != nil {
t.Fatal(err)
}
defer os.RemoveAll(dir)

_, config, err := makeRuntimeConfig(dir)
assert.NoError(err)

savedSysModuleDir := sysModuleDir
savedProcCPUInfo := procCPUInfo

cpuInfoFile := filepath.Join(dir, "cpuinfo")

// XXX: override
sysModuleDir = filepath.Join(dir, "sys/module")
procCPUInfo = cpuInfoFile

defer func() {
sysModuleDir = savedSysModuleDir
procCPUInfo = savedProcCPUInfo
}()

err = os.MkdirAll(sysModuleDir, testDirMode)
if err != nil {
t.Fatal(err)
}

cpuData := []testCPUData{
{"", "", false},
fakeCPUData,
}

moduleData := []testModuleData{
{filepath.Join(sysModuleDir, "kvm"), false, "Y"},
{filepath.Join(sysModuleDir, "kvm_hv"), false, "Y"},
}

devNull, err := os.OpenFile(os.DevNull, os.O_WRONLY, 0666)
assert.NoError(err)
defer devNull.Close()

savedLogOutput := kataLog.Logger.Out

// discard normal output
kataLog.Logger.Out = devNull

defer func() {
kataLog.Logger.Out = savedLogOutput
}()

setupCheckHostIsVMContainerCapable(assert, cpuInfoFile, cpuData, moduleData)

ctx := createCLIContext(nil)
ctx.App.Name = "foo"
ctx.App.Metadata["runtimeConfig"] = config

// create buffer to save logger output
buf := &bytes.Buffer{}

// capture output this time
kataLog.Logger.Out = buf

fn, ok := kataCheckCLICommand.Action.(func(context *cli.Context) error)
assert.True(ok)

err = fn(ctx)
assert.NoError(err)

output := buf.String()

for _, m := range moduleData {
name := path.Base(m.path)
assert.True(findAnchoredString(output, name))
}
genericCheckCLIFunction(t, cpuData, moduleData)
}

func TestArchKernelParamHandler(t *testing.T) {
Expand Down
Loading

0 comments on commit 24fcd1b

Please sign in to comment.