gitee.com/leisunstar/runtime@v0.0.0-20200521203717-5cef3e7b53f9/virtcontainers/factory/template/template_test.go (about) 1 // Copyright (c) 2018 HyperHQ Inc. 2 // 3 // SPDX-License-Identifier: Apache-2.0 4 // 5 6 package template 7 8 import ( 9 "context" 10 "os" 11 "testing" 12 "time" 13 14 "github.com/stretchr/testify/assert" 15 16 vc "github.com/kata-containers/runtime/virtcontainers" 17 "github.com/kata-containers/runtime/virtcontainers/persist/fs" 18 ) 19 20 const testDisabledAsNonRoot = "Test disabled as requires root privileges" 21 22 func TestTemplateFactory(t *testing.T) { 23 if os.Geteuid() != 0 { 24 t.Skip(testDisabledAsNonRoot) 25 } 26 27 assert := assert.New(t) 28 29 templateWaitForAgent = 1 * time.Microsecond 30 31 testDir := fs.MockStorageRootPath() 32 defer fs.MockStorageDestroy() 33 34 hyperConfig := vc.HypervisorConfig{ 35 KernelPath: testDir, 36 ImagePath: testDir, 37 } 38 vmConfig := vc.VMConfig{ 39 HypervisorType: vc.MockHypervisor, 40 HypervisorConfig: hyperConfig, 41 AgentType: vc.NoopAgentType, 42 ProxyType: vc.NoopProxyType, 43 } 44 45 err := vmConfig.Valid() 46 assert.Nil(err) 47 48 ctx := context.Background() 49 50 // New 51 f, err := New(ctx, vmConfig, testDir) 52 assert.Nil(err) 53 54 // Config 55 assert.Equal(f.Config(), vmConfig) 56 57 // GetBaseVM 58 vm, err := f.GetBaseVM(ctx, vmConfig) 59 assert.Nil(err) 60 61 err = vm.Stop() 62 assert.Nil(err) 63 64 // Fetch 65 tt := template{ 66 statePath: testDir, 67 config: vmConfig, 68 } 69 70 assert.Equal(tt.Config(), vmConfig) 71 72 err = tt.checkTemplateVM() 73 assert.Error(err) 74 75 _, err = os.Create(tt.statePath + "/memory") 76 assert.Nil(err) 77 err = tt.checkTemplateVM() 78 assert.Error(err) 79 80 _, err = os.Create(tt.statePath + "/state") 81 assert.Nil(err) 82 err = tt.checkTemplateVM() 83 assert.Nil(err) 84 85 err = tt.createTemplateVM(ctx) 86 assert.Nil(err) 87 88 vm, err = tt.GetBaseVM(ctx, vmConfig) 89 assert.Nil(err) 90 91 err = vm.Stop() 92 assert.Nil(err) 93 94 vm, err = f.GetBaseVM(ctx, vmConfig) 95 assert.Nil(err) 96 97 err = vm.Stop() 98 assert.Nil(err) 99 100 err = tt.createTemplateVM(ctx) 101 assert.Nil(err) 102 103 vm, err = tt.GetBaseVM(ctx, vmConfig) 104 assert.Nil(err) 105 106 err = vm.Stop() 107 assert.Nil(err) 108 109 vm, err = f.GetBaseVM(ctx, vmConfig) 110 assert.Nil(err) 111 112 err = vm.Stop() 113 assert.Nil(err) 114 115 // CloseFactory 116 f.CloseFactory(ctx) 117 tt.CloseFactory(ctx) 118 }