Skip to content

Commit cac07d4

Browse files
authored
DF Soak test dashboard, default Docker network (#1982)
DF Soak test dashboard, default Docker network
1 parent ace64fd commit cac07d4

File tree

9 files changed

+1051
-34
lines changed

9 files changed

+1051
-34
lines changed

framework/.changeset/v0.10.5.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- Simplify Docker networking, use default network for obs
2+
- DF local soak dashboard

framework/components/clnode/clnode_test.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package clnode_test
22

33
import (
4-
"sync"
54
"testing"
65

76
"github.com/stretchr/testify/require"
@@ -51,7 +50,7 @@ func TestSmokeComponentDockerNodeWithSharedDB(t *testing.T) {
5150
}
5251

5352
for _, tc := range testCases {
54-
err := framework.DefaultNetwork(&sync.Once{})
53+
err := framework.DefaultNetwork(nil)
5554
require.NoError(t, err)
5655

5756
t.Run(tc.name, func(t *testing.T) {
@@ -87,7 +86,7 @@ func TestSmokeComponentDockerNodeWithDB(t *testing.T) {
8786
}
8887

8988
for _, tc := range testCases {
90-
err := framework.DefaultNetwork(&sync.Once{})
89+
err := framework.DefaultNetwork(nil)
9190
require.NoError(t, err)
9291

9392
t.Run(tc.name, func(t *testing.T) {

framework/components/jd/jd_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package jd_test
22

33
import (
44
"os"
5-
"sync"
65
"testing"
76

87
"github.com/stretchr/testify/require"
@@ -16,7 +15,7 @@ import (
1615
// since JD is private this env var should be set locally and in CI
1716
// TODO: add ComponentDocker prefix to turn this on when we'll have access to ECRs
1817
func TestJD(t *testing.T) {
19-
err := framework.DefaultNetwork(&sync.Once{})
18+
err := framework.DefaultNetwork(nil)
2019
require.NoError(t, err)
2120
_, err = jd.NewJD(&jd.Input{
2221
Image: os.Getenv("CTF_JD_IMAGE"),

framework/components/simple_node_set/nodeset_test.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package simple_node_set_test
22

33
import (
4-
"sync"
54
"testing"
65

76
"github.com/stretchr/testify/require"
@@ -89,7 +88,7 @@ level = 'info'
8988
}
9089

9190
for _, tc := range testCases {
92-
err := framework.DefaultNetwork(&sync.Once{})
91+
err := framework.DefaultNetwork(nil)
9392
require.NoError(t, err)
9493

9594
t.Run(tc.name, func(t *testing.T) {

framework/config.go

Lines changed: 14 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ package framework
22

33
import (
44
"bytes"
5-
"context"
65
"encoding/json"
76
"errors"
87
"fmt"
98
"os"
9+
"os/exec"
1010
"path/filepath"
1111
"strings"
1212
"sync"
@@ -21,8 +21,6 @@ import (
2121
"github.com/pelletier/go-toml/v2"
2222
"github.com/rs/zerolog"
2323
"github.com/stretchr/testify/require"
24-
"github.com/testcontainers/testcontainers-go"
25-
"github.com/testcontainers/testcontainers-go/network"
2624
)
2725

2826
const (
@@ -43,15 +41,8 @@ const (
4341
)
4442

4543
var (
46-
Once = &sync.Once{}
47-
// Secrets is a singleton AWS Secrets Manager
48-
// Loaded once on start inside Load and is safe to call concurrently
49-
Secrets *AWSSecretsManager
50-
51-
DefaultNetworkName string
52-
53-
Validator *validator.Validate = validator.New(validator.WithRequiredStructEnabled())
54-
44+
DefaultNetworkName = "ctf"
45+
Validator = validator.New(validator.WithRequiredStructEnabled())
5546
ValidatorTranslator ut.Translator
5647
)
5748

@@ -202,7 +193,7 @@ func Load[X any](t *testing.T) (*X, error) {
202193
require.NoError(t, err)
203194
})
204195
}
205-
if err = DefaultNetwork(Once); err != nil {
196+
if err = DefaultNetwork(nil); err != nil {
206197
L.Info().Err(err).Msg("docker network creation failed, either docker is not running or you are running in CRIB mode")
207198
}
208199
return input, nil
@@ -253,19 +244,17 @@ func BaseCacheName() (string, error) {
253244
return fmt.Sprintf("%s-cache.toml", name), nil
254245
}
255246

256-
func DefaultNetwork(once *sync.Once) error {
257-
var net *testcontainers.DockerNetwork
258-
var innerErr error
259-
once.Do(func() {
260-
net, innerErr = network.New(
261-
context.Background(),
262-
network.WithLabels(map[string]string{"framework": "ctf"}),
263-
)
264-
if innerErr == nil {
265-
DefaultNetworkName = net.Name
247+
func DefaultNetwork(_ *sync.Once) error {
248+
netCmd := exec.Command("docker", "network", "create", DefaultNetworkName)
249+
out, err := netCmd.CombinedOutput()
250+
L.Debug().Str("Out", string(out)).Msg("Creating Docker network")
251+
if err != nil {
252+
if strings.Contains(string(out), "already exists") {
253+
return nil
266254
}
267-
})
268-
return innerErr
255+
return err
256+
}
257+
return err
269258
}
270259

271260
func RenderTemplate(tmpl string, data interface{}) (string, error) {

framework/docker.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -371,8 +371,7 @@ func RemoveTestContainers() error {
371371
// Bash command for removing Docker containers and networks with "framework=ctf" label
372372
cmd := exec.Command("bash", "-c", `
373373
docker ps -aq --filter "label=framework=ctf" | xargs -r docker rm -f && \
374-
docker volume ls -q | xargs -r docker volume rm && \
375-
docker network ls --filter "label=framework=ctf" -q | xargs -r docker network rm || true
374+
docker volume ls -q | xargs -r docker volume rm || true
376375
`)
377376
L.Debug().Msg("Running command")
378377
if L.GetLevel() == zerolog.DebugLevel {

framework/observability.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ import (
1313
var EmbeddedObservabilityFiles embed.FS
1414

1515
const (
16+
LocalDFSoak = "http://localhost:3000/d/f8a04cef-653f-46d3-86df-87c532300672/df-soak?orgId=1&from=now-5m&to=now&refresh=5s"
1617
LocalCLNodeErrorsURL = "http://localhost:3000/d/a7de535b-3e0f-4066-bed7-d505b6ec9ef1/cl-node-errors?orgId=1&refresh=5s"
1718
LocalWorkflowEngineURL = "http://localhost:3000/d/ce589a98-b4be-4f80-bed1-bc62f3e4414a/workflow-engine?orgId=1&refresh=5s&from=now-15m&to=now"
1819
LocalLogsURL = "http://localhost:3000/explore?panes=%7B%22qZw%22:%7B%22datasource%22:%22P8E80F9AEF21F6940%22,%22queries%22:%5B%7B%22refId%22:%22A%22,%22expr%22:%22%7Bjob%3D%5C%22ctf%5C%22%7D%22,%22queryType%22:%22range%22,%22datasource%22:%7B%22type%22:%22loki%22,%22uid%22:%22P8E80F9AEF21F6940%22%7D,%22editorMode%22:%22code%22%7D%5D,%22range%22:%7B%22from%22:%22now-15m%22,%22to%22:%22now%22%7D%7D%7D&schemaVersion=1&orgId=1"
@@ -120,6 +121,7 @@ func ObservabilityUp() error {
120121
if err := NewPromtail(); err != nil {
121122
return err
122123
}
124+
_ = DefaultNetwork(nil)
123125
err := RunCommand("bash", "-c", fmt.Sprintf(`
124126
cd %s && \
125127
docker compose up -d
@@ -134,6 +136,7 @@ func ObservabilityUp() error {
134136
L.Info().Msgf("Pyroscope: %s", LocalPyroScopeURL)
135137
L.Info().Msgf("CL Node Errors: %s", LocalCLNodeErrorsURL)
136138
L.Info().Msgf("Workflow Engine: %s", LocalWorkflowEngineURL)
139+
L.Info().Msgf("DF Soak: %s", LocalDFSoak)
137140
return nil
138141
}
139142

0 commit comments

Comments
 (0)