Documentation ¶
Index ¶
- Constants
- func AuthMethodInit(t *testing.T, consulClient *api.Client, ...) *httptest.Server
- func BoolPtr(v bool) *bool
- func ConsulACLConfigFn(c *testutil.TestServerConfig)
- func ConsulServer(t *testing.T, cb ServerConfigCallback) (*testutil.TestServer, *api.Config)
- func EnterpriseFlag() bool
- func GetHostAndPortFromAddress(address string) (string, int)
- func SetECSConfigEnvVar(t *testing.T, val interface{})
- func TaskMetaHandler(t *testing.T, resp string) http.Handler
- func TaskMetaHandlerFn(t *testing.T, respFn func() string) http.Handler
- func TaskMetaServer(t *testing.T, handler http.Handler)
- func TempDir(t *testing.T) string
- type FakeCommand
- type ServerConfigCallback
Constants ¶
const AdminToken = "123e4567-e89b-12d3-a456-426614174000"
Variables ¶
This section is empty.
Functions ¶
func AuthMethodInit ¶ added in v0.5.0
func AuthMethodInit(t *testing.T, consulClient *api.Client, expectedServiceName, authMethodName string) *httptest.Server
AuthMethodInit sets up necessary pieces for the IAM auth method:
- Start a fake AWS server. This responds with an IAM role tagged with expectedServiceName.
- Configures an auth method + binding rule that uses the tagged service name from the IAM role for the service identity.
- Sets the AWS_ACCESS_KEY_ID and AWS_SECRET_ACCESS_KEY to dummy values.
When using this, you will also need to point the login command at the fake AWS server, for example:
fakeAws := authMethodInit(...) consulLogin.ExtraLoginFlags = []string{"-aws-sts-endpoint", fakeAws.URL + "/sts"}
func ConsulACLConfigFn ¶
func ConsulACLConfigFn(c *testutil.TestServerConfig)
ConsulACLConfigFn configures a Consul test server with ACLs.
func ConsulServer ¶
func ConsulServer(t *testing.T, cb ServerConfigCallback) (*testutil.TestServer, *api.Config)
ConsulServer initializes a Consul test server and returns Consul client config and the configured test server
func EnterpriseFlag ¶ added in v0.5.0
func EnterpriseFlag() bool
EnterpriseFlag indicates whether or not the test was invoked with the -enterprise command line argument.
func GetHostAndPortFromAddress ¶ added in v0.7.0
func SetECSConfigEnvVar ¶
SetECSConfigEnvVar the CONSUL_ECS_CONFIG_JSON environment variable to the JSON string of the provided value, with a test cleanup.
func TaskMetaHandler ¶
TaskMetaHandler returns an http.Handler that always responds with the given string for the 'GET /task' request of the ECS Task Metadata server.
func TaskMetaHandlerFn ¶
TaskMetaHandler wraps the respFn in an http.Handler for the ECS Task Metadata server. respFn should return a response to the 'GET /task' request.
func TaskMetaServer ¶
TaskMetaServer starts a local HTTP server to mimic the ECS Task Metadata server. This sets ECS_CONTAINER_METADATA_URI_V4 and configures a test cleanup. Because of the environment variable, this is unsafe for running tests in parallel.
Types ¶
type FakeCommand ¶ added in v0.5.0
type FakeCommand struct { // The command to run. Command string // Check this file exists to check the command is ready. ReadyFile string }
FakeCommand is a command/script to be run by tests for "entrypoint" commands. Each command touches a "ready file" after the command has started and completed setup. This enables the tests to ensure the command has started in order to avoid race conditions. For example, certain tests should not proceed until signal handling has been set up.
func FakeCommandWithTraps ¶ added in v0.5.0
func FakeCommandWithTraps(t *testing.T, sleep int) FakeCommand
FakeCommandWithTraps is a script used to validate our "entrypoint" commands. This script does the following: * When a sigint is received, it exits with code 42 * When a sigterm is received, it exits with code 55 * It sleeps for 120 seconds (long enough for tests, but not so long that it holds up CI)
Why not just a simple 'sleep 120'? * Bash actually ignores SIGINT by default (note: CTRL-C sends SIGINT to the process group, not just the parent) * Tests can be run in different places, so /bin/sh could be any shell with different behavior. Why a background process + wait? Why not just a trap + sleep? * The sleep blocks the trap. Traps are not executed until the current command completes, except for `wait`.
func SimpleFakeCommand ¶ added in v0.5.0
func SimpleFakeCommand(t *testing.T, sleep int) FakeCommand
SimpleFakeCommand sleeps for a given number of seconds.
type ServerConfigCallback ¶ added in v0.5.0
type ServerConfigCallback = testutil.ServerConfigCallback