mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-23 14:58:44 +00:00
285 lines
6.8 KiB
Go
285 lines
6.8 KiB
Go
package acceptanceTests
|
|
|
|
import (
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"os/exec"
|
|
"testing"
|
|
|
|
"gopkg.in/yaml.v3"
|
|
)
|
|
|
|
type tapConfig struct {
|
|
GuiPort uint16 `yaml:"gui-port"`
|
|
}
|
|
|
|
type configStruct struct {
|
|
Tap tapConfig `yaml:"tap"`
|
|
}
|
|
|
|
func TestConfigRegenerate(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("ignored acceptance test")
|
|
}
|
|
|
|
cliPath, cliPathErr := GetCliPath()
|
|
if cliPathErr != nil {
|
|
t.Errorf("failed to get cli path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
configPath, configPathErr := GetConfigPath()
|
|
if configPathErr != nil {
|
|
t.Errorf("failed to get config path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
configCmdArgs := GetDefaultConfigCommandArgs()
|
|
|
|
configCmdArgs = append(configCmdArgs, "-r")
|
|
|
|
configCmd := exec.Command(cliPath, configCmdArgs...)
|
|
t.Logf("running command: %v", configCmd.String())
|
|
|
|
t.Cleanup(func() {
|
|
if err := os.Remove(configPath); err != nil {
|
|
t.Logf("failed to delete config file, err: %v", err)
|
|
}
|
|
})
|
|
|
|
if err := configCmd.Start(); err != nil {
|
|
t.Errorf("failed to start config command, err: %v", err)
|
|
return
|
|
}
|
|
|
|
if err := configCmd.Wait(); err != nil {
|
|
t.Errorf("failed to wait config command, err: %v", err)
|
|
return
|
|
}
|
|
|
|
_, readFileErr := ioutil.ReadFile(configPath)
|
|
if readFileErr != nil {
|
|
t.Errorf("failed to read config file, err: %v", readFileErr)
|
|
return
|
|
}
|
|
}
|
|
|
|
func TestConfigGuiPort(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("ignored acceptance test")
|
|
}
|
|
|
|
tests := []uint16{8898}
|
|
|
|
for _, guiPort := range tests {
|
|
t.Run(fmt.Sprintf("%d", guiPort), func(t *testing.T) {
|
|
cliPath, cliPathErr := GetCliPath()
|
|
if cliPathErr != nil {
|
|
t.Errorf("failed to get cli path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
configPath, configPathErr := GetConfigPath()
|
|
if configPathErr != nil {
|
|
t.Errorf("failed to get config path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
config := configStruct{}
|
|
config.Tap.GuiPort = guiPort
|
|
|
|
configBytes, marshalErr := yaml.Marshal(config)
|
|
if marshalErr != nil {
|
|
t.Errorf("failed to marshal config, err: %v", marshalErr)
|
|
return
|
|
}
|
|
|
|
if writeErr := ioutil.WriteFile(configPath, configBytes, 0644); writeErr != nil {
|
|
t.Errorf("failed to write config to file, err: %v", writeErr)
|
|
return
|
|
}
|
|
|
|
tapCmdArgs := GetDefaultTapCommandArgs()
|
|
|
|
tapNamespace := GetDefaultTapNamespace()
|
|
tapCmdArgs = append(tapCmdArgs, tapNamespace...)
|
|
|
|
tapCmd := exec.Command(cliPath, tapCmdArgs...)
|
|
t.Logf("running command: %v", tapCmd.String())
|
|
|
|
t.Cleanup(func() {
|
|
if err := CleanupCommand(tapCmd); err != nil {
|
|
t.Logf("failed to cleanup tap command, err: %v", err)
|
|
}
|
|
|
|
if err := os.Remove(configPath); err != nil {
|
|
t.Logf("failed to delete config file, err: %v", err)
|
|
}
|
|
})
|
|
|
|
if err := tapCmd.Start(); err != nil {
|
|
t.Errorf("failed to start tap command, err: %v", err)
|
|
return
|
|
}
|
|
|
|
apiServerUrl := GetApiServerUrl(guiPort)
|
|
|
|
if err := WaitTapPodsReady(apiServerUrl); err != nil {
|
|
t.Errorf("failed to start tap pods on time, err: %v", err)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestConfigSetGuiPort(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("ignored acceptance test")
|
|
}
|
|
|
|
tests := []struct {
|
|
ConfigFileGuiPort uint16
|
|
SetGuiPort uint16
|
|
}{
|
|
{ConfigFileGuiPort: 8898, SetGuiPort: 8897},
|
|
}
|
|
|
|
for _, guiPortStruct := range tests {
|
|
t.Run(fmt.Sprintf("%d", guiPortStruct.SetGuiPort), func(t *testing.T) {
|
|
cliPath, cliPathErr := GetCliPath()
|
|
if cliPathErr != nil {
|
|
t.Errorf("failed to get cli path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
configPath, configPathErr := GetConfigPath()
|
|
if configPathErr != nil {
|
|
t.Errorf("failed to get config path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
config := configStruct{}
|
|
config.Tap.GuiPort = guiPortStruct.ConfigFileGuiPort
|
|
|
|
configBytes, marshalErr := yaml.Marshal(config)
|
|
if marshalErr != nil {
|
|
t.Errorf("failed to marshal config, err: %v", marshalErr)
|
|
return
|
|
}
|
|
|
|
if writeErr := ioutil.WriteFile(configPath, configBytes, 0644); writeErr != nil {
|
|
t.Errorf("failed to write config to file, err: %v", writeErr)
|
|
return
|
|
}
|
|
|
|
tapCmdArgs := GetDefaultTapCommandArgs()
|
|
|
|
tapNamespace := GetDefaultTapNamespace()
|
|
tapCmdArgs = append(tapCmdArgs, tapNamespace...)
|
|
|
|
tapCmdArgs = append(tapCmdArgs, "--set", fmt.Sprintf("tap.gui-port=%v", guiPortStruct.SetGuiPort))
|
|
|
|
tapCmd := exec.Command(cliPath, tapCmdArgs...)
|
|
t.Logf("running command: %v", tapCmd.String())
|
|
|
|
t.Cleanup(func() {
|
|
if err := CleanupCommand(tapCmd); err != nil {
|
|
t.Logf("failed to cleanup tap command, err: %v", err)
|
|
}
|
|
|
|
if err := os.Remove(configPath); err != nil {
|
|
t.Logf("failed to delete config file, err: %v", err)
|
|
}
|
|
})
|
|
|
|
if err := tapCmd.Start(); err != nil {
|
|
t.Errorf("failed to start tap command, err: %v", err)
|
|
return
|
|
}
|
|
|
|
apiServerUrl := GetApiServerUrl(guiPortStruct.SetGuiPort)
|
|
|
|
if err := WaitTapPodsReady(apiServerUrl); err != nil {
|
|
t.Errorf("failed to start tap pods on time, err: %v", err)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestConfigFlagGuiPort(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("ignored acceptance test")
|
|
}
|
|
|
|
tests := []struct {
|
|
ConfigFileGuiPort uint16
|
|
FlagGuiPort uint16
|
|
}{
|
|
{ConfigFileGuiPort: 8898, FlagGuiPort: 8896},
|
|
}
|
|
|
|
for _, guiPortStruct := range tests {
|
|
t.Run(fmt.Sprintf("%d", guiPortStruct.FlagGuiPort), func(t *testing.T) {
|
|
cliPath, cliPathErr := GetCliPath()
|
|
if cliPathErr != nil {
|
|
t.Errorf("failed to get cli path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
configPath, configPathErr := GetConfigPath()
|
|
if configPathErr != nil {
|
|
t.Errorf("failed to get config path, err: %v", cliPathErr)
|
|
return
|
|
}
|
|
|
|
config := configStruct{}
|
|
config.Tap.GuiPort = guiPortStruct.ConfigFileGuiPort
|
|
|
|
configBytes, marshalErr := yaml.Marshal(config)
|
|
if marshalErr != nil {
|
|
t.Errorf("failed to marshal config, err: %v", marshalErr)
|
|
return
|
|
}
|
|
|
|
if writeErr := ioutil.WriteFile(configPath, configBytes, 0644); writeErr != nil {
|
|
t.Errorf("failed to write config to file, err: %v", writeErr)
|
|
return
|
|
}
|
|
|
|
tapCmdArgs := GetDefaultTapCommandArgs()
|
|
|
|
tapNamespace := GetDefaultTapNamespace()
|
|
tapCmdArgs = append(tapCmdArgs, tapNamespace...)
|
|
|
|
tapCmdArgs = append(tapCmdArgs, "-p", fmt.Sprintf("%v", guiPortStruct.FlagGuiPort))
|
|
|
|
tapCmd := exec.Command(cliPath, tapCmdArgs...)
|
|
t.Logf("running command: %v", tapCmd.String())
|
|
|
|
t.Cleanup(func() {
|
|
if err := CleanupCommand(tapCmd); err != nil {
|
|
t.Logf("failed to cleanup tap command, err: %v", err)
|
|
}
|
|
|
|
if err := os.Remove(configPath); err != nil {
|
|
t.Logf("failed to delete config file, err: %v", err)
|
|
}
|
|
})
|
|
|
|
if err := tapCmd.Start(); err != nil {
|
|
t.Errorf("failed to start tap command, err: %v", err)
|
|
return
|
|
}
|
|
|
|
apiServerUrl := GetApiServerUrl(guiPortStruct.FlagGuiPort)
|
|
|
|
if err := WaitTapPodsReady(apiServerUrl); err != nil {
|
|
t.Errorf("failed to start tap pods on time, err: %v", err)
|
|
return
|
|
}
|
|
})
|
|
}
|
|
}
|