github.com/google/fleetspeak@v0.1.15-0.20240426164851-4f31f62c1aea/fleetspeak/src/e2etesting/localtesting/end_to_end_test.go (about) 1 package localtesting_test 2 3 import ( 4 "flag" 5 "os" 6 "path/filepath" 7 "testing" 8 9 "github.com/google/fleetspeak/fleetspeak/src/e2etesting/setup" 10 "github.com/google/fleetspeak/fleetspeak/src/e2etesting/tests" 11 ) 12 13 var ( 14 mysqlAddress = flag.String("mysql_address", "", "MySQL server address") 15 mysqlDatabase = flag.String("mysql_database", "", "MySQL database name to use") 16 mysqlUsername = flag.String("mysql_username", "", "MySQL username to use") 17 mysqlPassword = flag.String("mysql_password", "", "MySQL password to use") 18 numClients = flag.Int("num_clients", 3, "Number of clients to test") 19 numServers = flag.Int("num_servers", 2, "Number of servers to test") 20 ) 21 22 func parseFlags() { 23 flag.Parse() 24 for flagVar, envVarName := range map[*string]string{ 25 mysqlAddress: "MYSQL_TEST_ADDR", 26 mysqlUsername: "MYSQL_TEST_USER", 27 mysqlPassword: "MYSQL_TEST_PASS", 28 mysqlDatabase: "MYSQL_TEST_E2E_DB", 29 } { 30 val := os.Getenv(envVarName) 31 if len(val) > 0 { 32 *flagVar = val 33 } 34 } 35 } 36 37 // Test end to end 38 func TestLocalEndToEnd(t *testing.T) { 39 parseFlags() 40 if *mysqlAddress == "" { 41 t.Skip("Mysql address not provided") 42 } 43 if *mysqlUsername == "" { 44 t.Skip("Mysql user not provided") 45 } 46 if *mysqlDatabase == "" { 47 t.Skip("Mysql database for end-to-end testing not provided") 48 } 49 50 wd, err := os.Getwd() 51 if err != nil { 52 t.Fatalf("Failed to get working directory: %v", err) 53 } 54 for range 4 { 55 wd = filepath.Dir(wd) 56 } 57 err = os.Chdir(wd) 58 if err != nil { 59 t.Fatalf("Failed to change directory: %v", err) 60 } 61 62 frontendAddress := "localhost:6000" 63 msAddress := "localhost:6059" 64 65 clientIDs := setup.ConfigureAndStart(t, setup.MysqlCredentials{ 66 Host: *mysqlAddress, 67 Password: *mysqlPassword, 68 Username: *mysqlUsername, 69 Database: *mysqlDatabase, 70 }, frontendAddress, msAddress, *numServers, *numClients) 71 72 tests.RunTests(t, msAddress, clientIDs) 73 }