kata-containers/runtime/patches/0040-storage-add-go-tests-for-storage.patch
holyfei c709612f2a kata-containers: modify kata-containers version
Fix #I4KI81
reason: modify kata-containers version and update
it to 1.11.1

Signed-off-by: holyfei <yangfeiyu20092010@163.com>
2021-11-30 20:08:25 +08:00

222 lines
5.8 KiB
Diff

From 2e32e2c156a134605de42c53ef77366ac73f2614 Mon Sep 17 00:00:00 2001
From: jiangpengfei <jiangpengfei9@huawei.com>
Date: Tue, 18 Aug 2020 22:01:58 +0800
Subject: [PATCH 40/50] storage: add go tests for storage
reason: add go tests file storage_test.go and storage_spec_test.go
Signed-off-by: jiangpengfei <jiangpengfei9@huawei.com>
---
virtcontainers/storage/storage_spec_test.go | 151 ++++++++++++++++++++++++++++
virtcontainers/storage/storage_test.go | 40 ++++++++
2 files changed, 191 insertions(+)
create mode 100644 virtcontainers/storage/storage_spec_test.go
create mode 100644 virtcontainers/storage/storage_test.go
diff --git a/virtcontainers/storage/storage_spec_test.go b/virtcontainers/storage/storage_spec_test.go
new file mode 100644
index 00000000..f638245a
--- /dev/null
+++ b/virtcontainers/storage/storage_spec_test.go
@@ -0,0 +1,151 @@
+/*
+Copyright (c) Huawei Technologies Co., Ltd. 2019. All rights reserved.
+Description: common functions test
+Author: yangfeiyu
+Create: 2019-07-24
+*/
+
+package storage
+
+import (
+ "encoding/json"
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+ "github.com/opencontainers/runtime-spec/specs-go"
+)
+
+func TestValidateStorageValue(t *testing.T) {
+ assert := assert.New(t)
+ //invalid storage type,not NFS or GPATHS
+ spec := &StorageSpec{
+ StorageType: "invalidStorage",
+ Source: "sfs.com:/remote/path",
+ Destination: "/opt/",
+ }
+ data, err := json.Marshal(spec)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.Error(err, "StorageType is not NFS or GPATHS,it should return error")
+
+ //case 1: NFS
+ specNFS := []StorageSpec{
+ {
+ StorageType: NFS,
+ Source: "sfs.com:/remote/path",
+ Destination: "/opt/"},
+ }
+ data, err = json.Marshal(specNFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.NoError(err)
+
+ // case2: invalid source domain address
+ specNFS = []StorageSpec{
+ {
+ StorageType: NFS,
+ Source: "sfs..com:/remote/path",
+ Destination: "/opt/"},
+ }
+ data, err = json.Marshal(specNFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.Error(err)
+
+ // case 3: nfs source is valid ip address
+ ipSpecNFS := []StorageSpec{
+ {
+ StorageType: NFS,
+ Source: "192.168.18.147:/remote/path",
+ Destination: "/tmp/sfsturbo0",
+ },
+ }
+
+ data, err = json.Marshal(ipSpecNFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.NoError(err)
+
+ // case 4: invalid ip address for nfs source
+ ipSpecNFS = []StorageSpec{
+ {
+ StorageType: NFS,
+ Source: "192.168.18.300:/remote/path",
+ Destination: "/tmp/sfsturbo0",
+ },
+ }
+
+ data, err = json.Marshal(ipSpecNFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.Error(err)
+
+ // case 5: validate ip address and source remote path is /
+ ipSpecNFS = []StorageSpec{
+ {
+ StorageType: NFS,
+ Source: "192.168.18.3:/",
+ Destination: "/tmp/sfsturbo0",
+ },
+ }
+
+ data, err = json.Marshal(ipSpecNFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.NoError(err)
+
+ // case 6: invalid ip address 192.168.18.147.11
+ ipSpecNFS = []StorageSpec{
+ {
+ StorageType: NFS,
+ Source: "192.168.18.147.11:/",
+ Destination: "/tmp/sfsturbo0",
+ },
+ }
+
+ data, err = json.Marshal(ipSpecNFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ assert.Error(err)
+
+ //GPATHS
+ specGPATHFS := []StorageSpec{
+ {
+ StorageType: GPATHFS,
+ Source: "/remote/path",
+ Destination: "/opt/"},
+ }
+ data, err = json.Marshal(specGPATHFS)
+ assert.NoError(err)
+
+ err = ValidateStorageValue(string(data))
+ if STORAGES[GPATHFS] == true {
+ assert.NoError(err, "StorageType GPATHFS is valid,it should return no error")
+ } else {
+ assert.Error(err, "StorageType GPATHFS is invalid,it should return error")
+ }
+}
+
+func TestGetGrpcStorageAndAppendMount(t *testing.T) {
+ assert := assert.New(t)
+ var spec specs.Spec
+ sandboxId := "7f3b5e32cc7fe757e1b69f7a005ca1971def5011e730c82535783630fe24b318"
+ vmBasePath := "/tmp"
+
+ // storageType nfs with legal source and dest will succeed
+ storageSpec := "[{\"storage_type\":\"nfs\",\"source\":\"sfs.com:/remote/path\",\"dest\":\"/opt/nfs\"}]"
+ grpcStorages := GetGrpcStorageAndAppendMount(vmBasePath,storageSpec,&spec,sandboxId)
+ assert.NotNil(grpcStorages[0])
+
+ // storageType nfs with illegal source and dest will fail
+ storageSpec = "[{\"storage_type\":\"nfs\",\"source\":\"sfs.com\",\"dest\":\"/opt/nfs\"}]"
+ grpcStorages = GetGrpcStorageAndAppendMount(vmBasePath,storageSpec,&spec,sandboxId)
+ assert.Nil(grpcStorages[0])
+}
diff --git a/virtcontainers/storage/storage_test.go b/virtcontainers/storage/storage_test.go
new file mode 100644
index 00000000..c9ca4926
--- /dev/null
+++ b/virtcontainers/storage/storage_test.go
@@ -0,0 +1,40 @@
+/*
+Copyright (c) Huawei Technologies Co., Ltd. 2019. All rights reserved.
+Description: common functions test
+Author: yangfeiyu
+Create: 2019-07-24
+*/
+
+package storage
+
+import (
+ "testing"
+
+ "github.com/stretchr/testify/assert"
+)
+
+func TestValidate(t *testing.T) {
+ //NFS valid
+ assert := assert.New(t)
+ remoteStorage := &RemoteStorage{
+ Source: "sfs.com:/remote/path",
+ Dest: "/opt/",
+ }
+ err := remoteStorage.Validate(NFS)
+ assert.NoError(err, "NFS url is valid,it should return no error")
+
+ //NFS invalid
+ remoteStorage.Source = "sfs.com/../remote/path"
+ err = remoteStorage.Validate(NFS)
+ assert.Error(err, "NFS url is invalid,it should return error")
+
+ //GPATHS valid
+ remoteStorage.Source = "/path/in/vm"
+ err = remoteStorage.Validate(GPATHFS)
+ assert.NoError(err, "GPATHFS is valid,it should return no error")
+
+ //GPATHS invalid
+ remoteStorage.Source = "./../path/in/../vm"
+ err = remoteStorage.Validate(GPATHFS)
+ assert.Error(err, "GPATHFS is invalid,it should return error")
+}
--
2.14.3 (Apple Git-98)