package
0.16.2
Repository: https://github.com/hashicorp/consul.git
Documentation: pkg.go.dev

# README

Consul Testing Utilities

This package provides some generic helpers to facilitate testing in Consul.

TestServer

TestServer is a harness for managing Consul agents and initializing them with test data. Using it, you can form test clusters, create services, add health checks, manipulate the K/V store, etc. This test harness is completely decoupled from Consul's core and API client, meaning it can be easily imported and used in external unit tests for various applications. It works by invoking the Consul CLI, which means it is a requirement to have Consul installed in the $PATH.

Following is an example usage:

package my_program

import (
	"testing"

	"github.com/hashicorp/consul/consul/structs"
	"github.com/hashicorp/consul/sdk/testutil"
)

func TestFoo_bar(t *testing.T) {
	// Create a test Consul server
	srv1, err := testutil.NewTestServerConfigT(t, nil)
	if err != nil {
		t.Fatal(err)
	}
	defer srv1.Stop()

	// Create a secondary server, passing in configuration
	// to avoid bootstrapping as we are forming a cluster.
	srv2, err := testutil.NewTestServerConfigT(t, func(c *testutil.TestServerConfig) {
		c.Bootstrap = false
	})
	if err != nil {
		t.Fatal(err)
	}
	defer srv2.Stop()

	// Join the servers together
	srv1.JoinLAN(t, srv2.LANAddr)

	// Create a test key/value pair
	srv1.SetKV(t, "foo", []byte("bar"))

	// Create lots of test key/value pairs
	srv1.PopulateKV(t, map[string][]byte{
		"bar": []byte("123"),
		"baz": []byte("456"),
	})

	// Create a service
	srv1.AddService(t, "redis", structs.HealthPassing, []string{"primary"})

	// Create a service that will be accessed in target source code
	srv1.AddAccessibleService("redis", structs.HealthPassing, "127.0.0.1", 6379, []string{"primary"})

	// Create a service check
	srv1.AddCheck(t, "service:redis", "redis", structs.HealthPassing)

	// Create a node check
	srv1.AddCheck(t, "mem", "", structs.HealthCritical)

	// The HTTPAddr field contains the address of the Consul
	// API on the new test server instance.
	println(srv1.HTTPAddr)

	// All functions also have a wrapper method to limit the passing of "t"
	wrap := srv1.Wrap(t)
	wrap.SetKV("foo", []byte("bar"))
}

# Packages

Package retry provides support for repeating operations in tests.

# Functions

No description provided by the author
No description provided by the author
NewLogBuffer returns an io.Writer which buffers all writes.
NewTestServerConfigT creates a new TestServer, and makes a call to an optional callback function to modify the configuration.
RequireErrorContains is a test helper for asserting that an error occurred and the error message returned contains the expected error message as a substring.
RunStep is a test helper to help you stop a series of subtests from executing after the first one that fails.
TempDir creates a temporary directory within tmpdir with the name 'testname-name'.
TempFile creates a temporary file within tmpdir with the name 'testname-name'.
No description provided by the author
No description provided by the author

# Constants

copied from testutil to break circular dependency.
copied from testutil to break circular dependency.
copied from testutil to break circular dependency.
copied from testutil to break circular dependency.
copied from testutil to break circular dependency.

# Variables

TestLogLevel is set from the TEST_LOG_LEVEL environment variable.

# Structs

Locality is used as the TestServerConfig's Locality.
No description provided by the author
TestAddressConfig contains the bind addresses for various components of the Consul server.
TestAudigConfig contains the configuration for Audit.
TestAutopilotConfig contains the configuration for autopilot.
TestCheck is used to serialize a check definition.
TestKVResponse is what we use to decode KV data.
TestNetworkSegment contains the configuration for a network segment.
No description provided by the author
TestPerformanceConfig configures the performance parameters.
TestPortConfig configures the various ports used for services provided by the Consul server.
TestServer is the main server wrapper struct.
TestServerConfig is the main server configuration struct.
TestService is used to serialize a service definition.
No description provided by the author
No description provided by the author

# Interfaces

No description provided by the author
TestingTB is an interface that describes the implementation of the testing object.

# Type aliases

ServerConfigCallback is a function interface which can be passed to NewTestServerConfig to modify the server config.