Skip to content

Commit 55667f4

Browse files
authored
Ensure all images can be modified with environment variables (#272)
1 parent f6ddee2 commit 55667f4

File tree

13 files changed

+38
-71
lines changed

13 files changed

+38
-71
lines changed

docs/env-vars.md

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,15 @@
4949
| `RCLONE_CONFIG_REMOTECUSTOMDATA_SECRET_ACCESS_KEY` | [Rclone](https://rclone.org/) environment variable for secret access key | |
5050
| `RCLONE_CONFIG_REMOTECUSTOMDATA_REGION` | [Rclone](https://rclone.org/) environment variable for region | |
5151
| `RCLONE_CONFIG_REMOTECUSTOMDATA_ENDPOINT` | [Rclone](https://rclone.org/) environment variable for endpoint | |
52+
| `JMETER_TESTDATA_DECOMPRESS_IMAGE` | Image used to decompress the testdata. | `alpine:latest` |
53+
| `JMETER_WORKER_REMOTE_CUSTOM_DATA_IMAGE` | Image used to sync remote custom data. | `rclone/rclone:latest` |
5254

5355
### Locust
5456
| Parameter | Description | Default |
5557
|---------------------------------|-----------------------------|-------------------|
5658
| `LOCUST_IMAGE` | Locust image | |
57-
| `LOCUST_IMAGE_NAME` | Locust image name | |
58-
| `LOCUST_IMAGE_TAG` | Locust image tag | |
59+
| `LOCUST_IMAGE_NAME` | Locust image name | `locustio/locust` |
60+
| `LOCUST_IMAGE_TAG` | Locust image tag | `latest` |
5961
| `LOCUST_MASTER_CPU_LIMITS` | Master container CPU limits | |
6062
| `LOCUST_MASTER_CPU_REQUESTS` | Master CPU requests | |
6163
| `LOCUST_MASTER_MEMORY_LIMITS` | Master memory limits | |

pkg/backends/ghz/backend.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ var (
2222
ErrRequireTestFile = errors.New("LoadTest TestFile is required")
2323
)
2424

25-
const (
26-
defaultImageName = "hellofresh/kangal-ghz"
27-
defaultImageTag = "latest"
28-
)
29-
3025
func init() {
3126
backends.Register(&Backend{})
3227
}
@@ -58,10 +53,6 @@ func (b *Backend) GetEnvConfig() interface{} {
5853

5954
// SetDefaults must set default values
6055
func (b *Backend) SetDefaults() {
61-
if b.config.ImageName == "" || b.config.ImageTag == "" {
62-
b.config.ImageName = defaultImageName
63-
b.config.ImageTag = defaultImageTag
64-
}
6556
b.image = loadTestV1.ImageDetails{
6657
Image: b.config.ImageName,
6758
Tag: b.config.ImageTag,

pkg/backends/ghz/config.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ package ghz
22

33
// Config specific to ghz backend
44
type Config struct {
5-
Image string `envconfig:"GHZ_IMAGE"`
6-
ImageName string `envconfig:"GHZ_IMAGE_NAME"`
7-
ImageTag string `envconfig:"GHZ_IMAGE_TAG"`
5+
ImageName string `envconfig:"GHZ_IMAGE_NAME" default:"hellofresh/kangal-ghz"`
6+
ImageTag string `envconfig:"GHZ_IMAGE_TAG" default:"latest"`
87
CPULimits string `envconfig:"GHZ_CPU_LIMITS"`
98
CPURequests string `envconfig:"GHZ_CPU_REQUESTS"`
109
MemoryLimits string `envconfig:"GHZ_MEMORY_LIMITS"`

pkg/backends/jmeter/backend.go

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -73,20 +73,6 @@ func (b *Backend) GetEnvConfig() interface{} {
7373

7474
// SetDefaults must set default values
7575
func (b *Backend) SetDefaults() {
76-
if b.config.MasterImageName == "" {
77-
b.config.MasterImageName = defaultMasterImageName
78-
}
79-
if b.config.MasterImageTag == "" {
80-
b.config.MasterImageTag = defaultMasterImageTag
81-
}
82-
83-
if b.config.WorkerImageName == "" {
84-
b.config.WorkerImageName = defaultWorkerImageName
85-
}
86-
if b.config.WorkerImageTag == "" {
87-
b.config.WorkerImageTag = defaultWorkerImageTag
88-
}
89-
9076
b.masterConfig = loadTestV1.ImageDetails{
9177
Image: b.config.MasterImageName,
9278
Tag: b.config.MasterImageTag,

pkg/backends/jmeter/backend_test.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"testing"
66
"time"
77

8+
"github.com/kelseyhightower/envconfig"
89
"github.com/stretchr/testify/assert"
910
"github.com/stretchr/testify/require"
1011
"go.uber.org/zap/zaptest"
@@ -237,8 +238,10 @@ func TestSetDefaults(t *testing.T) {
237238
})
238239

239240
t.Run("No default", func(t *testing.T) {
241+
cfg := Config{}
242+
envconfig.MustProcess("", &cfg)
240243
jmeter := &Backend{
241-
config: &Config{},
244+
config: &cfg,
242245
}
243246
jmeter.SetDefaults()
244247

pkg/backends/jmeter/config.go

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,17 +6,19 @@ import (
66

77
// Config specific to JMeter backend
88
type Config struct {
9-
MasterImageName string `envconfig:"JMETER_MASTER_IMAGE_NAME"`
10-
MasterImageTag string `envconfig:"JMETER_MASTER_IMAGE_TAG"`
11-
MasterCPULimits string `envconfig:"JMETER_MASTER_CPU_LIMITS"`
12-
MasterCPURequests string `envconfig:"JMETER_MASTER_CPU_REQUESTS"`
13-
MasterMemoryLimits string `envconfig:"JMETER_MASTER_MEMORY_LIMITS"`
14-
MasterMemoryRequests string `envconfig:"JMETER_MASTER_MEMORY_REQUESTS"`
15-
WorkerImageName string `envconfig:"JMETER_WORKER_IMAGE_NAME"`
16-
WorkerImageTag string `envconfig:"JMETER_WORKER_IMAGE_TAG"`
17-
WorkerCPULimits string `envconfig:"JMETER_WORKER_CPU_LIMITS"`
18-
WorkerCPURequests string `envconfig:"JMETER_WORKER_CPU_REQUESTS"`
19-
WorkerMemoryLimits string `envconfig:"JMETER_WORKER_MEMORY_LIMITS"`
20-
WorkerMemoryRequests string `envconfig:"JMETER_WORKER_MEMORY_REQUESTS"`
21-
WaitForResourceTimeout time.Duration `envconfig:"WAIT_FOR_RESOURCE_TIMEOUT" default:"30s"`
9+
MasterImageName string `envconfig:"JMETER_MASTER_IMAGE_NAME" default:"hellofresh/kangal-jmeter-master"`
10+
MasterImageTag string `envconfig:"JMETER_MASTER_IMAGE_TAG" default:"latest"`
11+
MasterCPULimits string `envconfig:"JMETER_MASTER_CPU_LIMITS"`
12+
MasterCPURequests string `envconfig:"JMETER_MASTER_CPU_REQUESTS"`
13+
MasterMemoryLimits string `envconfig:"JMETER_MASTER_MEMORY_LIMITS"`
14+
MasterMemoryRequests string `envconfig:"JMETER_MASTER_MEMORY_REQUESTS"`
15+
WorkerImageName string `envconfig:"JMETER_WORKER_IMAGE_NAME" default:"hellofresh/kangal-jmeter-worker"`
16+
WorkerImageTag string `envconfig:"JMETER_WORKER_IMAGE_TAG" default:"latest"`
17+
WorkerCPULimits string `envconfig:"JMETER_WORKER_CPU_LIMITS"`
18+
WorkerCPURequests string `envconfig:"JMETER_WORKER_CPU_REQUESTS"`
19+
WorkerMemoryLimits string `envconfig:"JMETER_WORKER_MEMORY_LIMITS"`
20+
WorkerMemoryRequests string `envconfig:"JMETER_WORKER_MEMORY_REQUESTS"`
21+
TestDataDecompressImage string `envconfig:"JMETER_TESTDATA_DECOMPRESS_IMAGE" default:"alpine:latest"`
22+
RemoteCustomDataImage string `envconfig:"JMETER_WORKER_REMOTE_CUSTOM_DATA_IMAGE" default:"rclone/rclone:latest"`
23+
WaitForResourceTimeout time.Duration `envconfig:"WAIT_FOR_RESOURCE_TIMEOUT" default:"30s"`
2224
}

pkg/backends/jmeter/resources.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -239,7 +239,7 @@ func (b *Backend) NewPod(loadTest loadTestV1.LoadTest, i int, configMap *coreV1.
239239
InitContainers: []coreV1.Container{
240240
{
241241
Name: "convert-data-back-to-csv",
242-
Image: "alpine:latest",
242+
Image: b.config.TestDataDecompressImage,
243243
Command: []string{"/bin/sh"},
244244
Args: []string{"-c", "(ls /testdatatmp/testdata.csv.gz >/dev/null 2>&1 && cat /testdatatmp/testdata.csv.gz |base64 -d|zcat > /testdata/testdata.csv) || echo \"no testdata.csv.gz file\""},
245245
VolumeMounts: []coreV1.VolumeMount{
@@ -326,7 +326,7 @@ func (b *Backend) NewPod(loadTest loadTestV1.LoadTest, i int, configMap *coreV1.
326326
pod.Spec.InitContainers = []coreV1.Container{
327327
{
328328
Name: "get-data",
329-
Image: "rclone/rclone:latest",
329+
Image: b.config.RemoteCustomDataImage,
330330
Command: []string{"/bin/sh"},
331331
Args: []string{"-c", "/usr/local/bin/rclone sync remotecustomdata:$(JMETER_WORKER_REMOTE_CUSTOM_DATA_BUCKET) /customdata || echo \"rsync failed\""},
332332
VolumeMounts: []coreV1.VolumeMount{

pkg/backends/jmeter/resources_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,6 +133,7 @@ func TestPodResourceConfiguration(t *testing.T) {
133133
MemoryLimits: "300Mi",
134134
MemoryRequests: "400Mi",
135135
},
136+
config: &Config{},
136137
}
137138

138139
masterJob := c.NewJMeterMasterJob(lt, "http://kangal-proxy.local/load-test/loadtest-name/report", map[string]string{"": ""})

pkg/backends/k6/backend.go

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,11 +22,6 @@ var (
2222
ErrRequireTestFile = errors.New("LoadTest TestFile is required")
2323
)
2424

25-
const (
26-
defaultImageName = "grafana/k6"
27-
defaultImageTag = "latest"
28-
)
29-
3025
func init() {
3126
backends.Register(&Backend{})
3227
}
@@ -58,10 +53,6 @@ func (b *Backend) GetEnvConfig() interface{} {
5853

5954
// SetDefaults must set default values
6055
func (b *Backend) SetDefaults() {
61-
if b.config.ImageName == "" || b.config.ImageTag == "" {
62-
b.config.ImageName = defaultImageName
63-
b.config.ImageTag = defaultImageTag
64-
}
6556
b.image = loadTestV1.ImageDetails{
6657
Image: b.config.ImageName,
6758
Tag: b.config.ImageTag,

pkg/backends/k6/config.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,8 @@ package k6
22

33
// Config specific to k6 backend
44
type Config struct {
5-
Image string `envconfig:"K6_IMAGE"`
6-
ImageName string `envconfig:"K6_IMAGE_NAME"`
7-
ImageTag string `envconfig:"K6_IMAGE_TAG"`
5+
ImageName string `envconfig:"K6_IMAGE_NAME" default:"grafana/k6"`
6+
ImageTag string `envconfig:"K6_IMAGE_TAG" default:"latest"`
87
CPULimits string `envconfig:"K6_CPU_LIMITS"`
98
CPURequests string `envconfig:"K6_CPU_REQUESTS"`
109
MemoryLimits string `envconfig:"K6_MEMORY_LIMITS"`

0 commit comments

Comments
 (0)