mirror of
https://github.com/kata-containers/kata-containers.git
synced 2025-07-03 02:26:37 +00:00
kata-env: Fix amd64 VM container capable check
Fix nasty bug which resulted in `kata-env` showing `VMContainerCapable = true` even on amd64 systems without virtualisation support (thankfully `kata-check` still showed the correct results). Added arch-specific tests to avoid any possibility of regression. Fixes #660. Signed-off-by: James O. D. Hunt <james.o.hunt@intel.com>
This commit is contained in:
parent
f14660f82c
commit
35d7672d73
@ -491,3 +491,32 @@ func TestKvmIsUsable(t *testing.T) {
|
||||
func TestGetCPUDetails(t *testing.T) {
|
||||
genericTestGetCPUDetails(t)
|
||||
}
|
||||
|
||||
func TestSetCPUtype(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
savedArchRequiredCPUFlags := archRequiredCPUFlags
|
||||
savedArchRequiredCPUAttribs := archRequiredCPUAttribs
|
||||
savedArchRequiredKernelModules := archRequiredKernelModules
|
||||
|
||||
defer func() {
|
||||
archRequiredCPUFlags = savedArchRequiredCPUFlags
|
||||
archRequiredCPUAttribs = savedArchRequiredCPUAttribs
|
||||
archRequiredKernelModules = savedArchRequiredKernelModules
|
||||
}()
|
||||
|
||||
archRequiredCPUFlags = map[string]string{}
|
||||
archRequiredCPUAttribs = map[string]string{}
|
||||
archRequiredKernelModules = map[string]kernelModule{}
|
||||
|
||||
setCPUtype()
|
||||
|
||||
assert.NotEmpty(archRequiredCPUFlags)
|
||||
assert.NotEmpty(archRequiredCPUAttribs)
|
||||
assert.NotEmpty(archRequiredKernelModules)
|
||||
|
||||
assert.Equal(archRequiredCPUFlags["vmx"], "Virtualization support")
|
||||
|
||||
_, ok := archRequiredKernelModules["kvm"]
|
||||
assert.True(ok)
|
||||
}
|
||||
|
@ -198,3 +198,7 @@ foo : bar
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestSetCPUtype(t *testing.T) {
|
||||
testSetCPUTypeGeneric(t)
|
||||
}
|
||||
|
38
cli/kata-check_generic_test.go
Normal file
38
cli/kata-check_generic_test.go
Normal file
@ -0,0 +1,38 @@
|
||||
// Copyright (c) 2018 Intel Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
// +build arm64 ppc64le
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func testSetCPUTypeGeneric(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
savedArchRequiredCPUFlags := archRequiredCPUFlags
|
||||
savedArchRequiredCPUAttribs := archRequiredCPUAttribs
|
||||
savedArchRequiredKernelModules := archRequiredKernelModules
|
||||
|
||||
defer func() {
|
||||
archRequiredCPUFlags = savedArchRequiredCPUFlags
|
||||
archRequiredCPUAttribs = savedArchRequiredCPUAttribs
|
||||
archRequiredKernelModules = savedArchRequiredKernelModules
|
||||
}()
|
||||
|
||||
assert.Empty(archRequiredCPUFlags)
|
||||
assert.Empty(archRequiredCPUAttribs)
|
||||
assert.NotEmpty(archRequiredKernelModules)
|
||||
|
||||
setCPUtype()
|
||||
|
||||
assert.Equal(archRequiredCPUFlags, savedArchRequiredCPUFlags)
|
||||
assert.Equal(archRequiredCPUAttribs, savedArchRequiredCPUAttribs)
|
||||
assert.Equal(archRequiredKernelModules, savedArchRequiredKernelModules)
|
||||
}
|
@ -210,3 +210,7 @@ func TestKvmIsUsable(t *testing.T) {
|
||||
func TestGetCPUDetails(t *testing.T) {
|
||||
genericTestGetCPUDetails(t)
|
||||
}
|
||||
|
||||
func TestSetCPUtype(t *testing.T) {
|
||||
testSetCPUTypeGeneric(t)
|
||||
}
|
||||
|
@ -294,6 +294,8 @@ func getHypervisorInfo(config oci.RuntimeConfig) HypervisorInfo {
|
||||
}
|
||||
|
||||
func getEnvInfo(configFile string, config oci.RuntimeConfig) (env EnvInfo, err error) {
|
||||
setCPUtype()
|
||||
|
||||
meta := getMetaInfo()
|
||||
|
||||
runtime := getRuntimeInfo(configFile, config)
|
||||
|
@ -5,6 +5,56 @@
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func getExpectedHostDetails(tmpdir string) (HostInfo, error) {
|
||||
return genericGetExpectedHostDetails(tmpdir)
|
||||
}
|
||||
|
||||
func TestEnvGetEnvInfoSetsCPUType(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
tmpdir, err := ioutil.TempDir("", "")
|
||||
assert.NoError(err)
|
||||
defer os.RemoveAll(tmpdir)
|
||||
|
||||
savedArchRequiredCPUFlags := archRequiredCPUFlags
|
||||
savedArchRequiredCPUAttribs := archRequiredCPUAttribs
|
||||
savedArchRequiredKernelModules := archRequiredKernelModules
|
||||
|
||||
defer func() {
|
||||
archRequiredCPUFlags = savedArchRequiredCPUFlags
|
||||
archRequiredCPUAttribs = savedArchRequiredCPUAttribs
|
||||
archRequiredKernelModules = savedArchRequiredKernelModules
|
||||
}()
|
||||
|
||||
archRequiredCPUFlags = map[string]string{}
|
||||
archRequiredCPUAttribs = map[string]string{}
|
||||
archRequiredKernelModules = map[string]kernelModule{}
|
||||
|
||||
configFile, config, err := makeRuntimeConfig(tmpdir)
|
||||
assert.NoError(err)
|
||||
|
||||
expectedEnv, err := getExpectedSettings(config, tmpdir, configFile)
|
||||
assert.NoError(err)
|
||||
|
||||
env, err := getEnvInfo(configFile, config)
|
||||
assert.NoError(err)
|
||||
|
||||
assert.Equal(expectedEnv, env)
|
||||
|
||||
assert.NotEmpty(archRequiredCPUFlags)
|
||||
assert.NotEmpty(archRequiredCPUAttribs)
|
||||
assert.NotEmpty(archRequiredKernelModules)
|
||||
|
||||
assert.Equal(archRequiredCPUFlags["vmx"], "Virtualization support")
|
||||
|
||||
_, ok := archRequiredKernelModules["kvm"]
|
||||
assert.True(ok)
|
||||
}
|
||||
|
@ -9,6 +9,7 @@ import (
|
||||
"fmt"
|
||||
"path/filepath"
|
||||
goruntime "runtime"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func getExpectedHostDetails(tmpdir string) (HostInfo, error) {
|
||||
@ -92,3 +93,7 @@ VERSION_ID="%s"
|
||||
|
||||
return expectedHostDetails, nil
|
||||
}
|
||||
|
||||
func TestEnvGetEnvInfoSetsCPUType(t *testing.T) {
|
||||
testEnvGetEnvInfoSetsCPUTypeGeneric(t)
|
||||
}
|
||||
|
53
cli/kata-env_generic_test.go
Normal file
53
cli/kata-env_generic_test.go
Normal file
@ -0,0 +1,53 @@
|
||||
// Copyright (c) 2018 Intel Corporation
|
||||
//
|
||||
// SPDX-License-Identifier: Apache-2.0
|
||||
//
|
||||
|
||||
// +build arm64 ppc64le
|
||||
|
||||
package main
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"os"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
func testEnvGetEnvInfoSetsCPUTypeGeneric(t *testing.T) {
|
||||
assert := assert.New(t)
|
||||
|
||||
tmpdir, err := ioutil.TempDir("", "")
|
||||
assert.NoError(err)
|
||||
defer os.RemoveAll(tmpdir)
|
||||
|
||||
savedArchRequiredCPUFlags := archRequiredCPUFlags
|
||||
savedArchRequiredCPUAttribs := archRequiredCPUAttribs
|
||||
savedArchRequiredKernelModules := archRequiredKernelModules
|
||||
|
||||
defer func() {
|
||||
archRequiredCPUFlags = savedArchRequiredCPUFlags
|
||||
archRequiredCPUAttribs = savedArchRequiredCPUAttribs
|
||||
archRequiredKernelModules = savedArchRequiredKernelModules
|
||||
}()
|
||||
|
||||
assert.Empty(archRequiredCPUFlags)
|
||||
assert.Empty(archRequiredCPUAttribs)
|
||||
assert.NotEmpty(archRequiredKernelModules)
|
||||
|
||||
configFile, config, err := makeRuntimeConfig(tmpdir)
|
||||
assert.NoError(err)
|
||||
|
||||
expectedEnv, err := getExpectedSettings(config, tmpdir, configFile)
|
||||
assert.NoError(err)
|
||||
|
||||
env, err := getEnvInfo(configFile, config)
|
||||
assert.NoError(err)
|
||||
|
||||
assert.Equal(expectedEnv, env)
|
||||
|
||||
assert.Equal(archRequiredCPUFlags, savedArchRequiredCPUFlags)
|
||||
assert.Equal(archRequiredCPUAttribs, savedArchRequiredCPUAttribs)
|
||||
assert.Equal(archRequiredKernelModules, savedArchRequiredKernelModules)
|
||||
}
|
@ -5,6 +5,12 @@
|
||||
|
||||
package main
|
||||
|
||||
import "testing"
|
||||
|
||||
func getExpectedHostDetails(tmpdir string) (HostInfo, error) {
|
||||
return genericGetExpectedHostDetails(tmpdir)
|
||||
}
|
||||
|
||||
func TestEnvGetEnvInfoSetsCPUType(t *testing.T) {
|
||||
testEnvGetEnvInfoSetsCPUTypeGeneric(t)
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user