mirror of
https://github.com/kubeshark/kubeshark.git
synced 2025-06-23 06:48:47 +00:00
additional acceptance tests (#287)
This commit is contained in:
parent
b50eced489
commit
ec4fa2ee4f
196
acceptanceTests/logs_test.go
Normal file
196
acceptanceTests/logs_test.go
Normal file
@ -0,0 +1,196 @@
|
|||||||
|
package acceptanceTests
|
||||||
|
|
||||||
|
import (
|
||||||
|
"archive/zip"
|
||||||
|
"os/exec"
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLogs(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
|
||||||
|
}
|
||||||
|
|
||||||
|
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 := tapCmd.Start(); err != nil {
|
||||||
|
t.Errorf("failed to start tap command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiServerUrl := getApiServerUrl(defaultApiServerPort)
|
||||||
|
|
||||||
|
if err := waitTapPodsReady(apiServerUrl); err != nil {
|
||||||
|
t.Errorf("failed to start tap pods on time, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
logsCmdArgs := getDefaultLogsCommandArgs()
|
||||||
|
|
||||||
|
logsCmd := exec.Command(cliPath, logsCmdArgs...)
|
||||||
|
t.Logf("running command: %v", logsCmd.String())
|
||||||
|
|
||||||
|
if err := logsCmd.Start(); err != nil {
|
||||||
|
t.Errorf("failed to start logs command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := logsCmd.Wait(); err != nil {
|
||||||
|
t.Errorf("failed to wait logs command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
logsPath, logsPathErr := getLogsPath()
|
||||||
|
if logsPathErr != nil {
|
||||||
|
t.Errorf("failed to get logs path, err: %v", logsPathErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
zipReader, zipError := zip.OpenReader(logsPath)
|
||||||
|
if zipError != nil {
|
||||||
|
t.Errorf("failed to get zip reader, err: %v", zipError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
if err := zipReader.Close(); err != nil {
|
||||||
|
t.Logf("failed to close zip reader, err: %v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var logsFileNames []string
|
||||||
|
for _, file := range zipReader.File {
|
||||||
|
logsFileNames = append(logsFileNames, file.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu.mizu-api-server.log") {
|
||||||
|
t.Errorf("api server logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu_cli.log") {
|
||||||
|
t.Errorf("cli logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu_events.log") {
|
||||||
|
t.Errorf("events logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ContainsPartOfValue(logsFileNames, "mizu.mizu-tapper-daemon-set") {
|
||||||
|
t.Errorf("tapper logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestLogsPath(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
|
||||||
|
}
|
||||||
|
|
||||||
|
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 := tapCmd.Start(); err != nil {
|
||||||
|
t.Errorf("failed to start tap command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiServerUrl := getApiServerUrl(defaultApiServerPort)
|
||||||
|
|
||||||
|
if err := waitTapPodsReady(apiServerUrl); err != nil {
|
||||||
|
t.Errorf("failed to start tap pods on time, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
logsCmdArgs := getDefaultLogsCommandArgs()
|
||||||
|
|
||||||
|
logsPath := "../logs.zip"
|
||||||
|
logsCmdArgs = append(logsCmdArgs, "-f", logsPath)
|
||||||
|
|
||||||
|
logsCmd := exec.Command(cliPath, logsCmdArgs...)
|
||||||
|
t.Logf("running command: %v", logsCmd.String())
|
||||||
|
|
||||||
|
if err := logsCmd.Start(); err != nil {
|
||||||
|
t.Errorf("failed to start logs command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := logsCmd.Wait(); err != nil {
|
||||||
|
t.Errorf("failed to wait logs command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
zipReader, zipError := zip.OpenReader(logsPath)
|
||||||
|
if zipError != nil {
|
||||||
|
t.Errorf("failed to get zip reader, err: %v", zipError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
if err := zipReader.Close(); err != nil {
|
||||||
|
t.Logf("failed to close zip reader, err: %v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var logsFileNames []string
|
||||||
|
for _, file := range zipReader.File {
|
||||||
|
logsFileNames = append(logsFileNames, file.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu.mizu-api-server.log") {
|
||||||
|
t.Errorf("api server logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu_cli.log") {
|
||||||
|
t.Errorf("cli logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu_events.log") {
|
||||||
|
t.Errorf("events logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ContainsPartOfValue(logsFileNames, "mizu.mizu-tapper-daemon-set") {
|
||||||
|
t.Errorf("tapper logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
@ -1,11 +1,14 @@
|
|||||||
package acceptanceTests
|
package acceptanceTests
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"archive/zip"
|
||||||
"bytes"
|
"bytes"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
|
"io/ioutil"
|
||||||
"net/http"
|
"net/http"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
|
"path"
|
||||||
"strings"
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
@ -758,3 +761,105 @@ func TestTapRegexMasking(t *testing.T) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestTapDumpLogs(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
|
||||||
|
}
|
||||||
|
|
||||||
|
tapCmdArgs := getDefaultTapCommandArgs()
|
||||||
|
|
||||||
|
tapNamespace := getDefaultTapNamespace()
|
||||||
|
tapCmdArgs = append(tapCmdArgs, tapNamespace...)
|
||||||
|
|
||||||
|
tapCmdArgs = append(tapCmdArgs, "--set", "dump-logs=true")
|
||||||
|
|
||||||
|
tapCmd := exec.Command(cliPath, tapCmdArgs...)
|
||||||
|
t.Logf("running command: %v", tapCmd.String())
|
||||||
|
|
||||||
|
if err := tapCmd.Start(); err != nil {
|
||||||
|
t.Errorf("failed to start tap command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
apiServerUrl := getApiServerUrl(defaultApiServerPort)
|
||||||
|
|
||||||
|
if err := waitTapPodsReady(apiServerUrl); err != nil {
|
||||||
|
t.Errorf("failed to start tap pods on time, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if err := cleanupCommand(tapCmd); err != nil {
|
||||||
|
t.Errorf("failed to cleanup tap command, err: %v", err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
mizuFolderPath, mizuPathErr := getMizuFolderPath()
|
||||||
|
if mizuPathErr != nil {
|
||||||
|
t.Errorf("failed to get mizu folder path, err: %v", mizuPathErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
files, readErr := ioutil.ReadDir(mizuFolderPath)
|
||||||
|
if readErr != nil {
|
||||||
|
t.Errorf("failed to read mizu folder files, err: %v", readErr)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
var dumpsLogsPath string
|
||||||
|
for _, file := range files {
|
||||||
|
fileName := file.Name()
|
||||||
|
if strings.Contains(fileName, "mizu_logs") {
|
||||||
|
dumpsLogsPath = path.Join(mizuFolderPath, fileName)
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if dumpsLogsPath == "" {
|
||||||
|
t.Errorf("dump logs file not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
zipReader, zipError := zip.OpenReader(dumpsLogsPath)
|
||||||
|
if zipError != nil {
|
||||||
|
t.Errorf("failed to get zip reader, err: %v", zipError)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
t.Cleanup(func() {
|
||||||
|
if err := zipReader.Close(); err != nil {
|
||||||
|
t.Logf("failed to close zip reader, err: %v", err)
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
||||||
|
var logsFileNames []string
|
||||||
|
for _, file := range zipReader.File {
|
||||||
|
logsFileNames = append(logsFileNames, file.Name)
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu.mizu-api-server.log") {
|
||||||
|
t.Errorf("api server logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu_cli.log") {
|
||||||
|
t.Errorf("cli logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !Contains(logsFileNames, "mizu_events.log") {
|
||||||
|
t.Errorf("events logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
if !ContainsPartOfValue(logsFileNames, "mizu.mizu-tapper-daemon-set") {
|
||||||
|
t.Errorf("tapper logs not found")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
}
|
||||||
|
@ -9,6 +9,7 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"os/exec"
|
"os/exec"
|
||||||
"path"
|
"path"
|
||||||
|
"strings"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
)
|
)
|
||||||
@ -32,13 +33,22 @@ func getCliPath() (string, error) {
|
|||||||
return cliPath, nil
|
return cliPath, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getConfigPath() (string, error) {
|
func getMizuFolderPath() (string, error) {
|
||||||
home, homeDirErr := os.UserHomeDir()
|
home, homeDirErr := os.UserHomeDir()
|
||||||
if homeDirErr != nil {
|
if homeDirErr != nil {
|
||||||
return "", homeDirErr
|
return "", homeDirErr
|
||||||
}
|
}
|
||||||
|
|
||||||
return path.Join(home, ".mizu", "config.yaml"), nil
|
return path.Join(home, ".mizu"), nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func getConfigPath() (string, error) {
|
||||||
|
mizuFolderPath, mizuPathError := getMizuFolderPath()
|
||||||
|
if mizuPathError != nil {
|
||||||
|
return "", mizuPathError
|
||||||
|
}
|
||||||
|
|
||||||
|
return path.Join(mizuFolderPath, "config.yaml"), nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getProxyUrl(namespace string, service string) string {
|
func getProxyUrl(namespace string, service string) string {
|
||||||
@ -72,6 +82,13 @@ func getDefaultTapCommandArgsWithRegex(regex string) []string {
|
|||||||
return append([]string{tapCommand, regex}, defaultCmdArgs...)
|
return append([]string{tapCommand, regex}, defaultCmdArgs...)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getDefaultLogsCommandArgs() []string {
|
||||||
|
logsCommand := "logs"
|
||||||
|
defaultCmdArgs := getDefaultCommandArgs()
|
||||||
|
|
||||||
|
return append([]string{logsCommand}, defaultCmdArgs...)
|
||||||
|
}
|
||||||
|
|
||||||
func getDefaultTapNamespace() []string {
|
func getDefaultTapNamespace() []string {
|
||||||
return []string{"-n", "mizu-tests"}
|
return []string{"-n", "mizu-tests"}
|
||||||
}
|
}
|
||||||
@ -193,3 +210,33 @@ func getPods(tapStatusInterface interface{}) ([]map[string]interface{}, error) {
|
|||||||
|
|
||||||
return pods, nil
|
return pods, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func getLogsPath() (string, error) {
|
||||||
|
dir, filePathErr := os.Getwd()
|
||||||
|
if filePathErr != nil {
|
||||||
|
return "", filePathErr
|
||||||
|
}
|
||||||
|
|
||||||
|
logsPath := path.Join(dir, "mizu_logs.zip")
|
||||||
|
return logsPath, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
func Contains(slice []string, containsValue string) bool {
|
||||||
|
for _, sliceValue := range slice {
|
||||||
|
if sliceValue == containsValue {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
func ContainsPartOfValue(slice []string, containsValue string) bool {
|
||||||
|
for _, sliceValue := range slice {
|
||||||
|
if strings.Contains(sliceValue, containsValue) {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user