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  }