diff --git a/Makefile b/Makefile index 07c87f5..b689d42 100644 --- a/Makefile +++ b/Makefile @@ -19,14 +19,8 @@ test-bittwister-latency: test-bittwister-jitter: KNUU_TIMEOUT=120m go test -v ./e2e/basic --run=TestBittwister_Jitter -timeout 60m -count=1 -test-celestia-app: - go test -v ./e2e/celestia_app - -test-celestia-node: - go test -v ./e2e/celestia_node - test-all: KNUU_TIMEOUT=300m go test -v ./e2e/... -timeout 120m -.PHONY: test-all test-basic test-basic-file-cache test-basic-folder-cache test-bittwister-packetloss test-bittwister-bandwidth test-bittwister-latency test-bittwister-jitter test-celestia-app test-celestia-node +.PHONY: test-all test-basic test-basic-file-cache test-basic-folder-cache test-bittwister-packetloss test-bittwister-bandwidth test-bittwister-latency test-bittwister-jitter diff --git a/e2e/basic/assert_create.go b/e2e/basic/assert_create.go new file mode 100644 index 0000000..ee0edb6 --- /dev/null +++ b/e2e/basic/assert_create.go @@ -0,0 +1,49 @@ +package basic + +import ( + "testing" + + "github.com/celestiaorg/knuu/pkg/knuu" +) + +const ( + // nginxImage is the image used to create the instances. + nginxImage = "docker.io/nginx:latest" + // nginxVolume is the volume used to create the instances. + nginxVolume = "1Gi" + // nginxVolumeOwner is the owner of the volume used to create the instances. + nginxVolumeOwner = 0 + // nginxPort is the port used to create the instances. + nginxPort = 80 + // nginxPath is the path used to create the instances. + nginxPath = "/usr/share/nginx/html" +) + +// assertCreateInstanceNginxWithVolumeOwner creates and configures an instance with common settings used across tests. +func assertCreateInstanceNginxWithVolumeOwner(t *testing.T, instanceName string) *knuu.Instance { + instance, err := knuu.NewInstance(instanceName) + if err != nil { + t.Fatalf("Error creating instance '%v': %v", instanceName, err) + } + err = instance.SetImage(nginxImage) + if err != nil { + t.Fatalf("Error setting image for '%v': %v", instanceName, err) + } + err = instance.AddPortTCP(nginxPort) + if err != nil { + t.Fatalf("Error adding port for '%v': %v", instanceName, err) + } + _, err = instance.ExecuteCommand("mkdir", "-p", nginxPath) + if err != nil { + t.Fatalf("Error executing command for '%v': %v", instanceName, err) + } + err = instance.AddVolumeWithOwner(nginxPath, nginxVolume, nginxVolumeOwner) + if err != nil { + t.Fatalf("Error adding volume: %v", err) + } + err = instance.Commit() + if err != nil { + t.Fatalf("Error committing instance '%v': %v", instanceName, err) + } + return instance +} diff --git a/e2e/basic/file_test_image_cached_test.go b/e2e/basic/file_test_image_cached_test.go index 5700a4c..748804d 100644 --- a/e2e/basic/file_test_image_cached_test.go +++ b/e2e/basic/file_test_image_cached_test.go @@ -13,7 +13,6 @@ import ( func TestFileCached(t *testing.T) { t.Parallel() // Setup - executor, err := knuu.NewExecutor() if err != nil { t.Fatalf("Error creating executor: %v", err) @@ -24,29 +23,7 @@ func TestFileCached(t *testing.T) { for i := 0; i < numberOfInstances; i++ { instanceName := fmt.Sprintf("web%d", i+1) - instance, err := knuu.NewInstance(instanceName) - if err != nil { - t.Fatalf("Error creating instance '%v': %v", instanceName, err) - } - err = instance.SetImage("docker.io/nginx:latest") - if err != nil { - t.Fatalf("Error setting image for '%v': %v", instanceName, err) - } - instance.AddPortTCP(80) - _, err = instance.ExecuteCommand("mkdir", "-p", "/usr/share/nginx/html") - if err != nil { - t.Fatalf("Error executing command for '%v': %v", instanceName, err) - } - err = instance.AddVolumeWithOwner("/usr/share/nginx/html", "1Gi", 0) - if err != nil { - t.Fatalf("Error adding volume: %v", err) - } - err = instance.Commit() - if err != nil { - t.Fatalf("Error committing instance '%v': %v", instanceName, err) - } - - instances[i] = instance + instances[i] = assertCreateInstanceNginxWithVolumeOwner(t, instanceName) } var wgFolders sync.WaitGroup diff --git a/e2e/basic/files_to_volumes_cm_test.go b/e2e/basic/files_to_volumes_cm_test.go index 77eb384..803fb08 100644 --- a/e2e/basic/files_to_volumes_cm_test.go +++ b/e2e/basic/files_to_volumes_cm_test.go @@ -146,7 +146,6 @@ func TestOneVolumeNoFiles(t *testing.T) { func TestNoVolumesOneFile(t *testing.T) { t.Parallel() // Setup - executor, err := knuu.NewExecutor() if err != nil { t.Fatalf("Error creating executor: %v", err) @@ -157,32 +156,7 @@ func TestNoVolumesOneFile(t *testing.T) { for i := 0; i < numberOfInstances; i++ { instanceName := fmt.Sprintf("web%d", i+1) - instance, err := knuu.NewInstance(instanceName) - if err != nil { - t.Fatalf("Error creating instance '%v': %v", instanceName, err) - } - err = instance.SetImage("docker.io/nginx:latest") - if err != nil { - t.Fatalf("Error setting image for '%v': %v", instanceName, err) - } - err = instance.AddPortTCP(80) - if err != nil { - t.Fatalf("Error adding port for '%v': %v", instanceName, err) - } - _, err = instance.ExecuteCommand("mkdir", "-p", "/usr/share/nginx/html") - if err != nil { - t.Fatalf("Error executing command for '%v': %v", instanceName, err) - } - err = instance.AddVolumeWithOwner("/usr/share/nginx/html", "1Gi", 0) - if err != nil { - t.Fatalf("Error adding volume: %v", err) - } - err = instance.Commit() - if err != nil { - t.Fatalf("Error committing instance '%v': %v", instanceName, err) - } - - instances[i] = instance + instances[i] = assertCreateInstanceNginxWithVolumeOwner(t, instanceName) } var wgFolders sync.WaitGroup @@ -265,32 +239,7 @@ func TestOneVolumeOneFile(t *testing.T) { for i := 0; i < numberOfInstances; i++ { instanceName := fmt.Sprintf("web%d", i+1) - instance, err := knuu.NewInstance(instanceName) - if err != nil { - t.Fatalf("Error creating instance '%v': %v", instanceName, err) - } - err = instance.SetImage("docker.io/nginx:latest") - if err != nil { - t.Fatalf("Error setting image for '%v': %v", instanceName, err) - } - err = instance.AddPortTCP(80) - if err != nil { - t.Fatalf("Error adding port for '%v': %v", instanceName, err) - } - _, err = instance.ExecuteCommand("mkdir", "-p", "/usr/share/nginx/html") - if err != nil { - t.Fatalf("Error executing command for '%v': %v", instanceName, err) - } - err = instance.AddVolumeWithOwner("/usr/share/nginx/html", "1Gi", 0) - if err != nil { - t.Fatalf("Error adding volume: %v", err) - } - err = instance.Commit() - if err != nil { - t.Fatalf("Error committing instance '%v': %v", instanceName, err) - } - - instances[i] = instance + instances[i] = assertCreateInstanceNginxWithVolumeOwner(t, instanceName) } var wgFolders sync.WaitGroup @@ -371,32 +320,7 @@ func TestOneVolumeTwoFiles(t *testing.T) { for i := 0; i < numberOfInstances; i++ { instanceName := fmt.Sprintf("web%d", i+1) - instance, err := knuu.NewInstance(instanceName) - if err != nil { - t.Fatalf("Error creating instance '%v': %v", instanceName, err) - } - err = instance.SetImage("docker.io/nginx:latest") - if err != nil { - t.Fatalf("Error setting image for '%v': %v", instanceName, err) - } - err = instance.AddPortTCP(80) - if err != nil { - t.Fatalf("Error adding port for '%v': %v", instanceName, err) - } - _, err = instance.ExecuteCommand("mkdir", "-p", "/usr/share/nginx/html") - if err != nil { - t.Fatalf("Error executing command for '%v': %v", instanceName, err) - } - err = instance.AddVolumeWithOwner("/usr/share/nginx/html", "1Gi", 0) - if err != nil { - t.Fatalf("Error adding volume: %v", err) - } - err = instance.Commit() - if err != nil { - t.Fatalf("Error committing instance '%v': %v", instanceName, err) - } - - instances[i] = instance + instances[i] = assertCreateInstanceNginxWithVolumeOwner(t, instanceName) } var wgFolders sync.WaitGroup diff --git a/e2e/basic/folder_test.go b/e2e/basic/folder_test.go index 69c328e..6541734 100644 --- a/e2e/basic/folder_test.go +++ b/e2e/basic/folder_test.go @@ -17,27 +17,8 @@ func TestFolder(t *testing.T) { t.Fatalf("Error creating executor: %v", err) } - web, err := knuu.NewInstance("web") - if err != nil { - t.Fatalf("Error creating instance '%v':", err) - } - err = web.SetImage("docker.io/nginx:latest") - if err != nil { - t.Fatalf("Error setting image '%v':", err) - } - web.AddPortTCP(80) - _, err = web.ExecuteCommand("mkdir", "-p", "/usr/share/nginx/html") - if err != nil { - t.Fatalf("Error executing command '%v':", err) - } - err = web.AddFolder("resources/html", "/usr/share/nginx/html", "0:0") - if err != nil { - t.Fatalf("Error adding file '%v':", err) - } - err = web.Commit() - if err != nil { - t.Fatalf("Error committing instance: %v", err) - } + // Create and commit the instance + web := assertCreateInstanceNginxWithVolumeOwner(t, "web") t.Cleanup(func() { require.NoError(t, knuu.BatchDestroy(executor.Instance, web)) diff --git a/e2e/basic/folder_test_image_cached_test.go b/e2e/basic/folder_test_image_cached_test.go index 86fbaa4..f0bd041 100644 --- a/e2e/basic/folder_test_image_cached_test.go +++ b/e2e/basic/folder_test_image_cached_test.go @@ -25,29 +25,7 @@ func TestFolderCached(t *testing.T) { for i := 0; i < numberOfInstances; i++ { instanceName := fmt.Sprintf("web%d", i+1) - instance, err := knuu.NewInstance(instanceName) - if err != nil { - t.Fatalf("Error creating instance '%v': %v", instanceName, err) - } - err = instance.SetImage("docker.io/nginx:latest") - if err != nil { - t.Fatalf("Error setting image for '%v': %v", instanceName, err) - } - instance.AddPortTCP(80) - _, err = instance.ExecuteCommand("mkdir", "-p", "/usr/share/nginx/html") - if err != nil { - t.Fatalf("Error executing command for '%v': %v", instanceName, err) - } - err = instance.AddVolumeWithOwner("/usr/share/nginx/html", "1Gi", 0) - if err != nil { - t.Fatalf("Error adding volume: %v", err) - } - err = instance.Commit() - if err != nil { - t.Fatalf("Error committing instance '%v': %v", instanceName, err) - } - - instances[i] = instance + instances[i] = assertCreateInstanceNginxWithVolumeOwner(t, instanceName) } var wgFolders sync.WaitGroup diff --git a/e2e/basic/probe_test.go b/e2e/basic/probe_test.go index 8ddd493..9f07a10 100644 --- a/e2e/basic/probe_test.go +++ b/e2e/basic/probe_test.go @@ -32,6 +32,10 @@ func TestProbe(t *testing.T) { if err != nil { t.Fatalf("Error executing command '%v':", err) } + err = web.AddVolumeWithOwner("/usr/share/nginx/html", "1Gi", 0) + if err != nil { + t.Fatalf("Error adding volume: %v", err) + } err = web.AddFile("resources/html/index.html", "/usr/share/nginx/html/index.html", "0:0") if err != nil { t.Fatalf("Error adding file '%v':", err)