Merge pull request #661 from jodh-intel/fix-amd64-kata-env

kata-env: Fix amd64 VM container capable check
This commit is contained in:
James O. D. Hunt 2018-08-30 14:07:52 +01:00 committed by GitHub
commit ede60044fd
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 191 additions and 0 deletions

View File

@ -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)
}

View File

@ -198,3 +198,7 @@ foo : bar
}
}
}
func TestSetCPUtype(t *testing.T) {
testSetCPUTypeGeneric(t)
}

View 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)
}

View File

@ -210,3 +210,7 @@ func TestKvmIsUsable(t *testing.T) {
func TestGetCPUDetails(t *testing.T) {
genericTestGetCPUDetails(t)
}
func TestSetCPUtype(t *testing.T) {
testSetCPUTypeGeneric(t)
}

View File

@ -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)

View File

@ -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)
}

View File

@ -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)
}

View 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)
}

View File

@ -5,6 +5,12 @@
package main
import "testing"
func getExpectedHostDetails(tmpdir string) (HostInfo, error) {
return genericGetExpectedHostDetails(tmpdir)
}
func TestEnvGetEnvInfoSetsCPUType(t *testing.T) {
testEnvGetEnvInfoSetsCPUTypeGeneric(t)
}