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  }