gitee.com/leisunstar/runtime@v0.0.0-20200521203717-5cef3e7b53f9/pkg/katautils/oci_test.go (about) 1 // Copyright (c) 2018 Intel Corporation 2 // Copyright (c) 2018 HyperHQ Inc. 3 // 4 // SPDX-License-Identifier: Apache-2.0 5 // 6 7 package katautils 8 9 import ( 10 "context" 11 "io/ioutil" 12 "os" 13 "path/filepath" 14 "testing" 15 16 "github.com/kata-containers/runtime/virtcontainers/pkg/rootless" 17 "github.com/stretchr/testify/assert" 18 ) 19 20 func init() { 21 rootless.IsRootless = func() bool { return false } 22 } 23 24 func createTempContainerIDMapping(containerID, sandboxID string) (string, error) { 25 tmpDir, err := ioutil.TempDir("", "containers-mapping") 26 if err != nil { 27 return "", err 28 } 29 ctrsMapTreePath = tmpDir 30 31 path := filepath.Join(ctrsMapTreePath, containerID, sandboxID) 32 if err := os.MkdirAll(path, 0750); err != nil { 33 return "", err 34 } 35 36 return tmpDir, nil 37 } 38 39 func TestFetchContainerIDMappingContainerIDEmptyFailure(t *testing.T) { 40 assert := assert.New(t) 41 42 sandboxID, err := FetchContainerIDMapping("") 43 assert.Error(err) 44 assert.Empty(sandboxID) 45 } 46 47 func TestFetchContainerIDMappingEmptyMappingSuccess(t *testing.T) { 48 assert := assert.New(t) 49 50 path, err := ioutil.TempDir("", "containers-mapping") 51 assert.NoError(err) 52 defer os.RemoveAll(path) 53 ctrsMapTreePath = path 54 55 sandboxID, err := FetchContainerIDMapping(testContainerID) 56 assert.NoError(err) 57 assert.Empty(sandboxID) 58 } 59 60 func TestFetchContainerIDMappingTooManyFilesFailure(t *testing.T) { 61 assert := assert.New(t) 62 63 path, err := createTempContainerIDMapping(testContainerID, testSandboxID) 64 assert.NoError(err) 65 defer os.RemoveAll(path) 66 err = os.MkdirAll(filepath.Join(ctrsMapTreePath, testContainerID, testSandboxID+"2"), ctrsMappingDirMode) 67 assert.NoError(err) 68 69 sandboxID, err := FetchContainerIDMapping(testContainerID) 70 assert.Error(err) 71 assert.Empty(sandboxID) 72 } 73 74 func TestFetchContainerIDMappingSuccess(t *testing.T) { 75 assert := assert.New(t) 76 77 path, err := createTempContainerIDMapping(testContainerID, testSandboxID) 78 assert.NoError(err) 79 defer os.RemoveAll(path) 80 81 sandboxID, err := FetchContainerIDMapping(testContainerID) 82 assert.NoError(err) 83 assert.Equal(sandboxID, testSandboxID) 84 } 85 86 func TestAddContainerIDMappingContainerIDEmptyFailure(t *testing.T) { 87 assert := assert.New(t) 88 89 err := AddContainerIDMapping(context.Background(), "", testSandboxID) 90 assert.Error(err) 91 } 92 93 func TestAddContainerIDMappingSandboxIDEmptyFailure(t *testing.T) { 94 assert := assert.New(t) 95 96 err := AddContainerIDMapping(context.Background(), testContainerID, "") 97 assert.Error(err) 98 } 99 100 func TestAddContainerIDMappingSuccess(t *testing.T) { 101 assert := assert.New(t) 102 103 path, err := ioutil.TempDir("", "containers-mapping") 104 assert.NoError(err) 105 defer os.RemoveAll(path) 106 ctrsMapTreePath = path 107 108 _, err = os.Stat(filepath.Join(ctrsMapTreePath, testContainerID, testSandboxID)) 109 assert.True(os.IsNotExist(err)) 110 111 err = AddContainerIDMapping(context.Background(), testContainerID, testSandboxID) 112 assert.NoError(err) 113 114 _, err = os.Stat(filepath.Join(ctrsMapTreePath, testContainerID, testSandboxID)) 115 assert.NoError(err) 116 } 117 118 func TestDelContainerIDMappingContainerIDEmptyFailure(t *testing.T) { 119 assert := assert.New(t) 120 121 err := DelContainerIDMapping(context.Background(), "") 122 assert.Error(err) 123 } 124 125 func TestDelContainerIDMappingSuccess(t *testing.T) { 126 assert := assert.New(t) 127 128 path, err := createTempContainerIDMapping(testContainerID, testSandboxID) 129 assert.NoError(err) 130 defer os.RemoveAll(path) 131 132 _, err = os.Stat(filepath.Join(ctrsMapTreePath, testContainerID, testSandboxID)) 133 assert.NoError(err) 134 135 err = DelContainerIDMapping(context.Background(), testContainerID) 136 assert.NoError(err) 137 138 _, err = os.Stat(filepath.Join(ctrsMapTreePath, testContainerID, testSandboxID)) 139 assert.True(os.IsNotExist(err)) 140 }