From 9508fca88f8b82c9ea7f1e88018413128b5c6bfa Mon Sep 17 00:00:00 2001 From: Erik Brakkee Date: Tue, 3 Sep 2024 21:21:01 +0200 Subject: [PATCH] now using a go-like logo for the project. --- integrationtest/integration_test.go | 39 ++++++++++++++++++++------- pkg/server/ui/basepage.templ | 7 +++-- static/images/wamblee_logo_go.25.png | Bin 0 -> 29075 bytes 3 files changed, 32 insertions(+), 14 deletions(-) create mode 100644 static/images/wamblee_logo_go.25.png diff --git a/integrationtest/integration_test.go b/integrationtest/integration_test.go index 9328d91..d8433a5 100644 --- a/integrationtest/integration_test.go +++ b/integrationtest/integration_test.go @@ -30,6 +30,11 @@ const ( tail -f /dev/null ` clientEntryPointTemplate = ` + echo "HOSTNAME_OF_AGENT_ON_CLIENT=agent" + echo Ready + sleep 1000000 + ` + clientEntryPointTemplatex = ` curl -v http://converge:8000/downloads/wsproxy > wsproxy chmod 755 wsproxy echo "{{.privateKey}}" > id_rsa @@ -81,7 +86,7 @@ type IntegrationTestSuite struct { cancelFunc context.CancelFunc } -func Test_IntergrationTestSuite(t *testing.T) { +func Test_IntegrationTestSuite(t *testing.T) { suite.Run(t, &IntegrationTestSuite{}) } @@ -92,7 +97,7 @@ func (s *IntegrationTestSuite) TearDownSuite() { } func (s *IntegrationTestSuite) SetupTest() { - ctx, cancelFunc := testsupport.CreateTestContext(context.Background(), 10*time.Second) + ctx, cancelFunc := testsupport.CreateTestContext(context.Background(), 60*time.Second) s.ctx = ctx s.cancelFunc = cancelFunc } @@ -144,17 +149,22 @@ func (s *IntegrationTestSuite) runCmdFailOnError(container testcontainers.Contai func (s *IntegrationTestSuite) defineContainer(net *testcontainers.DockerNetwork, hostname string, image string, - waitForLog string, + logLine string, ports []string) testcontainers.GenericContainerRequest { log.Printf("PORTS %v", ports) + waitStrategies := []wait.Strategy{wait.ForLog(logLine)} + if len(ports) > 0 { + waitStrategies = append(waitStrategies, wait.ForExposedPort()) + } + request := testcontainers.GenericContainerRequest{ ContainerRequest: testcontainers.ContainerRequest{ Image: image, ExposedPorts: ports, Hostname: hostname, - WaitingFor: wait.ForLog(waitForLog).WithStartupTimeout(10 * time.Second), + WaitingFor: wait.ForAll(waitStrategies...).WithStartupTimeoutDefault(30 * time.Second), LogConsumerCfg: createLogConsumerConfig(hostname), Networks: []string{net.Name}, //NetworkAliases: map[string][]string{ @@ -169,7 +179,8 @@ func (s *IntegrationTestSuite) defineContainer(net *testcontainers.DockerNetwork func (s *IntegrationTestSuite) Test_SingleAgentAndClient() { net, err := network.New(s.ctx) - s.Nil(err) + s.Require().Nil(err) + defer net.Remove(s.ctx) // SSH key to use privateKey, publicKey, err := sshsupport.GeneratePrivatePublicKey(2048) @@ -177,6 +188,7 @@ func (s *IntegrationTestSuite) Test_SingleAgentAndClient() { // The server + log.Println("Starting converge server") converge, err := testcontainers.GenericContainer(s.ctx, s.defineContainer(net, "converge", convergeImage, @@ -185,12 +197,14 @@ func (s *IntegrationTestSuite) Test_SingleAgentAndClient() { s.Require().Nil(err) err = converge.Start(s.ctx) s.Require().Nil(err) + defer converge.Terminate(s.ctx) + port, err := converge.MappedPort(s.ctx, "8000/tcp") s.Require().Nil(err) log.Printf("External port %v", port) // The agent - + log.Println("Starting agent") agentEntrypoint := testsupport.Template(agentEntryPointTemplate, map[string]string{"publicKey": publicKey}) @@ -200,10 +214,14 @@ func (s *IntegrationTestSuite) Test_SingleAgentAndClient() { "sh", "-c", agentEntrypoint} agent, err := testcontainers.GenericContainer(s.ctx, agentRequest) s.Require().Nil(err) - s.Require().Nil(agent.Start(s.ctx)) + err = agent.Start(s.ctx) + log.Printf("Error from starting agent %+v", err) + s.Require().Nil(err) + defer agent.Terminate(s.ctx) // The client + log.Println("Starting client") clientEntrypoint := testsupport.Template(clientEntryPointTemplate, map[string]string{"privateKey": privateKey}) clientRequest := s.defineContainer(net, "client", clientImage, @@ -212,13 +230,14 @@ func (s *IntegrationTestSuite) Test_SingleAgentAndClient() { "sh", "-c", clientEntrypoint} client, err := testcontainers.GenericContainer(s.ctx, clientRequest) s.Require().Nil(err) - s.Require().Nil(client.Start(s.ctx)) + err = client.Start(s.ctx) + log.Printf("Error from starting client %+v", err) + s.Require().Nil(err) + defer client.Terminate(s.ctx) input, err := client.Logs(s.ctx) s.Require().Nil(err) inputBytes, err := io.ReadAll(input) s.Require().Nil(err) s.True(strings.Contains(string(inputBytes), "HOSTNAME_OF_AGENT_ON_CLIENT=agent")) - - log.Printf("Found registry: %v", getRegistry()) } diff --git a/pkg/server/ui/basepage.templ b/pkg/server/ui/basepage.templ index f150486..4489abe 100644 --- a/pkg/server/ui/basepage.templ +++ b/pkg/server/ui/basepage.templ @@ -18,7 +18,7 @@ templ BasePage(tab int) { crossorigin="anonymous"> - + @@ -30,14 +30,13 @@ templ BasePage(tab int) { diff --git a/static/images/wamblee_logo_go.25.png b/static/images/wamblee_logo_go.25.png new file mode 100644 index 0000000000000000000000000000000000000000..84b92cf9410b62ba2314a2ebcd6796e48b7a5e76 GIT binary patch literal 29075 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 literal 0 HcmV?d00001