Skip to content

Commit e9ae6a0

Browse files
committed
internal/testrunner/runners/script: provide mechanism to inspect agent containers
1 parent d4a4d7a commit e9ae6a0

File tree

3 files changed

+21
-12
lines changed

3 files changed

+21
-12
lines changed

docs/howto/script_testing.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ a stack, starting agents and services and validating results.
4747
- `get_policy [-profile <profile>] [-timeout <duration>] <policy_name>`: print the details for a policy
4848

4949
- agent commands:
50-
- `install_agent [-profile <profile>] [-timeout <duration>] [<network_name_label>]`: install an Elastic Agent policy, setting the environment variable named in the positional argument
50+
- `install_agent [-profile <profile>] [-timeout <duration>] [-container_name <container_name_label>] [-network_name <network_name_label>]`: install an Elastic Agent policy, setting the environment variables named in the container_name and network_name arguments
5151
- `uninstall_agent [-profile <profile>] [-timeout <duration>]`: remove an installed Elastic Agent policy
5252

5353
- package commands:
@@ -110,7 +110,7 @@ As an example, a basic system test could be expressed as follows.
110110
use_stack -profile ${CONFIG_PROFILES}/${PROFILE}
111111
112112
# Install an agent.
113-
install_agent -profile ${CONFIG_PROFILES}/${PROFILE} NETWORK_NAME
113+
install_agent -profile ${CONFIG_PROFILES}/${PROFILE} -network_name NETWORK_NAME
114114
115115
# Bring up a docker container.
116116
#

internal/testrunner/script/agents.go

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import (
99
"errors"
1010
"flag"
1111
"fmt"
12+
"path/filepath"
1213
"time"
1314

1415
"github.com/rogpeppe/go-internal/testscript"
@@ -47,14 +48,11 @@ func installAgent(ts *testscript.TestScript, neg bool, args []string) {
4748
flg := flag.NewFlagSet("install", flag.ContinueOnError)
4849
profName := flg.String("profile", "default", "profile name")
4950
timeout := flg.Duration("timeout", 0, "timeout (zero or lower indicates no timeout)")
51+
containerNameLabel := flg.String("container_name", "", "environment variable name to place container name in")
52+
networkNameLabel := flg.String("network_name", "", "environment variable name to place network name in")
5053
ts.Check(flg.Parse(args))
51-
if flg.NArg() != 0 && flg.NArg() != 1 {
52-
ts.Fatalf("usage: install_agent [-profile <profile>] [-timeout <duration>] [<network_name_label>]")
53-
}
54-
55-
var networkNameLabel string
56-
if flg.NArg() == 1 {
57-
networkNameLabel = flg.Arg(0)
54+
if flg.NArg() != 0 {
55+
ts.Fatalf("usage: install_agent [-profile <profile>] [-timeout <duration>] [-container_name <container_name_label>] [-network_name <network_name_label>]")
5856
}
5957

6058
stk, ok := stacks[*profName]
@@ -120,8 +118,12 @@ func installAgent(ts *testscript.TestScript, neg bool, args []string) {
120118
// ELASTIC_PACKAGE_CA_CERT is set. ¯\_(ツ)_/¯
121119
installed.deployed, err = dep.SetUp(ctx, info)
122120
ts.Check(decoratedWith("setting up agent", err))
123-
if networkNameLabel != "" {
124-
ts.Setenv(networkNameLabel, installed.deployed.Info().NetworkName)
121+
depInfo := installed.deployed.Info()
122+
if *networkNameLabel != "" {
123+
ts.Setenv(*networkNameLabel, depInfo.NetworkName)
124+
}
125+
if *containerNameLabel != "" {
126+
ts.Setenv(*containerNameLabel, fmt.Sprintf("elastic-package-agent-%s-%s-%s-%s-1", filepath.Base(pkgRoot), ds, info.Test.RunID, depInfo.Name))
125127
}
126128
polID := installed.deployed.Info().Policy.ID
127129
ts.Check(decoratedWith("getting kibana agent", doKibanaAgent(ctx, stk.kibana, func(a kibana.Agent) (bool, error) {

test/packages/other/with_script/data_stream/first/_dev/test/scripts/get_docs_external.txt

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,20 @@ use_stack -profile ${CONFIG_PROFILES}/${PROFILE}
88
cmpenv stdout want_use.json
99

1010
# Install an agent.
11-
install_agent -profile ${CONFIG_PROFILES}/${PROFILE} NETWORK_NAME
11+
install_agent -profile ${CONFIG_PROFILES}/${PROFILE} -container_name CONTAINER_NAME -network_name NETWORK_NAME
1212
! stderr .
1313
cmp stdout want_agent_up.text
14+
# Check the container name is valid.
15+
exec echo ${CONTAINER_NAME}
16+
stdout 'elastic-package-agent-with_script-first-[0-9]+-elastic-agent-1'
1417
# Check the network name is valid.
1518
exec echo ${NETWORK_NAME}
1619
stdout 'elastic-package-agent-with_script-first-[0-9]+_default'
1720

21+
# Demonstrate we can interact with the running agent container.
22+
exec docker exec ${CONTAINER_NAME} ls
23+
stdout elastic-agent
24+
1825
# Bring up a docker container and check that we get the expected output.
1926
docker_up -profile ${CONFIG_PROFILES}/${PROFILE} -network ${NETWORK_NAME} test-hits
2027
! stderr .

0 commit comments

Comments
 (0)