test: use T.TempDir to create temporary test directory

The directory created by `T.TempDir` is automatically removed when the
test and all its subtests complete.

Reference: https://pkg.go.dev/testing#T.TempDir
Signed-off-by: Eng Zer Jun <engzerjun@gmail.com>
This commit is contained in:
Eng Zer Jun
2022-03-15 11:41:08 +08:00
parent ed4cc4b482
commit 18ec2761c0
40 changed files with 137 additions and 428 deletions

View File

@@ -43,19 +43,13 @@ const (
func TestDMSetup(t *testing.T) {
testutil.RequiresRoot(t)
tempDir, err := os.MkdirTemp("", "dmsetup-tests-")
assert.NilError(t, err, "failed to make temp dir for tests")
defer func() {
err := os.RemoveAll(tempDir)
assert.NilError(t, err)
}()
tempDir := t.TempDir()
dataImage, loopDataDevice := createLoopbackDevice(t, tempDir)
metaImage, loopMetaDevice := createLoopbackDevice(t, tempDir)
defer func() {
err = mount.DetachLoopDevice(loopDataDevice, loopMetaDevice)
err := mount.DetachLoopDevice(loopDataDevice, loopMetaDevice)
assert.NilError(t, err, "failed to detach loop devices for data image: %s and meta image: %s", dataImage, metaImage)
}()
@@ -87,7 +81,7 @@ func TestDMSetup(t *testing.T) {
t.Run("RemoveDevice", testRemoveDevice)
t.Run("RemovePool", func(t *testing.T) {
err = RemoveDevice(testPoolName, RemoveWithForce, RemoveWithRetries)
err := RemoveDevice(testPoolName, RemoveWithForce, RemoveWithRetries)
assert.NilError(t, err, "failed to remove thin-pool")
})

View File

@@ -22,7 +22,6 @@ package devmapper
import (
"context"
"errors"
"os"
"path/filepath"
"strconv"
"testing"
@@ -37,8 +36,8 @@ var (
)
func TestPoolMetadata_AddDevice(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
expected := &DeviceInfo{
Name: "test2",
@@ -62,8 +61,8 @@ func TestPoolMetadata_AddDevice(t *testing.T) {
}
func TestPoolMetadata_AddDeviceRollback(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
err := store.AddDevice(testCtx, &DeviceInfo{Name: ""})
assert.Assert(t, err != nil)
@@ -73,8 +72,8 @@ func TestPoolMetadata_AddDeviceRollback(t *testing.T) {
}
func TestPoolMetadata_AddDeviceDuplicate(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
err := store.AddDevice(testCtx, &DeviceInfo{Name: "test"})
assert.NilError(t, err)
@@ -84,8 +83,8 @@ func TestPoolMetadata_AddDeviceDuplicate(t *testing.T) {
}
func TestPoolMetadata_ReuseDeviceID(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
info1 := &DeviceInfo{Name: "test1"}
err := store.AddDevice(testCtx, info1)
@@ -109,8 +108,8 @@ func TestPoolMetadata_ReuseDeviceID(t *testing.T) {
}
func TestPoolMetadata_RemoveDevice(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
err := store.AddDevice(testCtx, &DeviceInfo{Name: "test"})
assert.NilError(t, err)
@@ -123,8 +122,8 @@ func TestPoolMetadata_RemoveDevice(t *testing.T) {
}
func TestPoolMetadata_UpdateDevice(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
oldInfo := &DeviceInfo{
Name: "test1",
@@ -155,8 +154,8 @@ func TestPoolMetadata_UpdateDevice(t *testing.T) {
}
func TestPoolMetadata_MarkFaulty(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
info := &DeviceInfo{Name: "test"}
err := store.AddDevice(testCtx, info)
@@ -182,8 +181,8 @@ func TestPoolMetadata_MarkFaulty(t *testing.T) {
}
func TestPoolMetadata_WalkDevices(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
err := store.AddDevice(testCtx, &DeviceInfo{Name: "device1", DeviceID: 1, State: Created})
assert.NilError(t, err)
@@ -214,8 +213,8 @@ func TestPoolMetadata_WalkDevices(t *testing.T) {
}
func TestPoolMetadata_GetDeviceNames(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
err := store.AddDevice(testCtx, &DeviceInfo{Name: "test1"})
assert.NilError(t, err)
@@ -231,21 +230,15 @@ func TestPoolMetadata_GetDeviceNames(t *testing.T) {
assert.Equal(t, "test2", names[1])
}
func createStore(t *testing.T) (tempDir string, store *PoolMetadata) {
tempDir, err := os.MkdirTemp("", "pool-metadata-")
assert.NilError(t, err, "couldn't create temp directory for metadata tests")
path := filepath.Join(tempDir, "test.db")
func createStore(t *testing.T) (store *PoolMetadata) {
path := filepath.Join(t.TempDir(), "test.db")
metadata, err := NewPoolMetadata(path)
assert.NilError(t, err)
return tempDir, metadata
return metadata
}
func cleanupStore(t *testing.T, tempDir string, store *PoolMetadata) {
func cleanupStore(t *testing.T, store *PoolMetadata) {
err := store.Close()
assert.NilError(t, err, "failed to close metadata store")
err = os.RemoveAll(tempDir)
assert.NilError(t, err, "failed to cleanup temp directory")
}

View File

@@ -61,23 +61,19 @@ func TestPoolDevice(t *testing.T) {
logrus.SetLevel(logrus.DebugLevel)
ctx := context.Background()
tempDir, err := os.MkdirTemp("", "pool-device-test-")
assert.NilError(t, err, "couldn't get temp directory for testing")
tempDir := t.TempDir()
_, loopDataDevice := createLoopbackDevice(t, tempDir)
_, loopMetaDevice := createLoopbackDevice(t, tempDir)
poolName := fmt.Sprintf("test-pool-device-%d", time.Now().Nanosecond())
err = dmsetup.CreatePool(poolName, loopDataDevice, loopMetaDevice, 64*1024/dmsetup.SectorSize)
err := dmsetup.CreatePool(poolName, loopDataDevice, loopMetaDevice, 64*1024/dmsetup.SectorSize)
assert.NilError(t, err, "failed to create pool %q", poolName)
defer func() {
// Detach loop devices and remove images
err := mount.DetachLoopDevice(loopDataDevice, loopMetaDevice)
assert.NilError(t, err)
err = os.RemoveAll(tempDir)
assert.NilError(t, err, "couldn't cleanup temp directory")
}()
config := &Config{
@@ -176,8 +172,8 @@ func TestPoolDevice(t *testing.T) {
}
func TestPoolDeviceMarkFaulty(t *testing.T) {
tempDir, store := createStore(t)
defer cleanupStore(t, tempDir, store)
store := createStore(t)
defer cleanupStore(t, store)
err := store.AddDevice(testCtx, &DeviceInfo{Name: "1", State: Unknown})
assert.NilError(t, err)

View File

@@ -23,7 +23,6 @@ import (
"context"
_ "crypto/sha256"
"fmt"
"os"
"testing"
"time"
@@ -61,11 +60,7 @@ func TestSnapshotterSuite(t *testing.T) {
ctx = namespaces.WithNamespace(ctx, "testsuite")
t.Run("DevMapperUsage", func(t *testing.T) {
tempDir, err := os.MkdirTemp("", "snapshot-suite-usage")
assert.NilError(t, err)
defer os.RemoveAll(tempDir)
snapshotter, closer, err := snapshotterFn(ctx, tempDir)
snapshotter, closer, err := snapshotterFn(ctx, t.TempDir())
assert.NilError(t, err)
defer closer()
@@ -148,13 +143,10 @@ func TestMultipleXfsMounts(t *testing.T) {
ctx := context.Background()
ctx = namespaces.WithNamespace(ctx, "testsuite")
tempDir, err := os.MkdirTemp("", "snapshot-suite-usage")
assert.NilError(t, err)
defer os.RemoveAll(tempDir)
poolName := fmt.Sprintf("containerd-snapshotter-suite-pool-%d", time.Now().Nanosecond())
config := &Config{
RootPath: tempDir,
RootPath: t.TempDir(),
PoolName: poolName,
BaseImageSize: "16Mb",
FileSystemType: "xfs",
@@ -172,10 +164,9 @@ func TestMultipleXfsMounts(t *testing.T) {
mounts, err := snapshotter.Prepare(ctx, "prepare-1", "")
assert.NilError(t, err)
root1, _ := os.MkdirTemp(os.TempDir(), "containerd-mount")
root1 := t.TempDir()
defer func() {
mount.UnmountAll(root1, 0)
os.Remove(root1)
}()
err = mount.All(mounts, root1)
assert.NilError(t, err)
@@ -186,10 +177,9 @@ func TestMultipleXfsMounts(t *testing.T) {
mounts, err = snapshotter.Prepare(ctx, "prepare-2", "layer-1")
assert.NilError(t, err)
root2, _ := os.MkdirTemp(os.TempDir(), "containerd-mount")
root2 := t.TempDir()
defer func() {
mount.UnmountAll(root2, 0)
os.Remove(root2)
}()
err = mount.All(mounts, root2)
assert.NilError(t, err)