From 5557d365be07c8ae52ed8ed776f3ec60914fa031 Mon Sep 17 00:00:00 2001 From: Ma Shimiao Date: Mon, 6 Nov 2017 09:57:03 +0800 Subject: [PATCH] add more test cases for default runtime validation Signed-off-by: Ma Shimiao --- cmd/runtimetest/main.go | 5 ++++ validation/validation_test.go | 44 +++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/cmd/runtimetest/main.go b/cmd/runtimetest/main.go index 09fbfb09..7605ef2b 100644 --- a/cmd/runtimetest/main.go +++ b/cmd/runtimetest/main.go @@ -336,6 +336,11 @@ func validateRootFS(spec *rspec.Spec) error { if err == nil { return specerror.NewError(specerror.RootReadonlyImplement, fmt.Errorf("rootfs must be readonly"), rspec.Version) } + } else { + err := testWriteAccess("/") + if err != nil { + return specerror.NewError(specerror.RootReadonlyImplement, fmt.Errorf("rootfs must not be readonly"), rspec.Version) + } } return nil diff --git a/validation/validation_test.go b/validation/validation_test.go index 6661c6d6..e232acb4 100644 --- a/validation/validation_test.go +++ b/validation/validation_test.go @@ -88,6 +88,49 @@ func TestValidateBasic(t *testing.T) { assert.Nil(t, runtimeInsideValidate(g)) } +// Test whether rootfs Readonly can be applied as false +func TestValidateRootFSReadWrite(t *testing.T) { + g := getDefaultGenerator() + g.SetRootReadonly(false) + + assert.Nil(t, runtimeInsideValidate(g)) +} + +// Test whether rootfs Readonly can be applied as true +func TestValidateRootFSReadonly(t *testing.T) { + if "windows" == runtime.GOOS { + t.Skip("skip this test on windows platform") + } + + g := getDefaultGenerator() + g.SetRootReadonly(true) + + assert.Nil(t, runtimeInsideValidate(g)) +} + +// Test whether hostname can be applied or not +func TestValidateHostname(t *testing.T) { + g := getDefaultGenerator() + g.SetHostname("hostname-specific") + + assert.Nil(t, runtimeInsideValidate(g)) +} + +// Test whether mounts are correctly mounted +func TestValidateMounts(t *testing.T) { + // TODO mounts generation options have not been implemented + // will add it after 'mounts generate' done +} + +// Test whether rlimits can be applied or not +func TestValidateRlimits(t *testing.T) { + g := getDefaultGenerator() + g.AddProcessRlimits("RLIMIT_NOFILE", 1024, 1024) + + assert.Nil(t, runtimeInsideValidate(g)) +} + +// Test whether sysctls can be applied or not func TestValidateSysctls(t *testing.T) { g := getDefaultGenerator() g.AddLinuxSysctl("net.ipv4.ip_forward", "1") @@ -95,6 +138,7 @@ func TestValidateSysctls(t *testing.T) { assert.Nil(t, runtimeInsideValidate(g)) } +// Test Create operation func TestValidateCreate(t *testing.T) { g := generate.New() g.SetRootPath(".")