testhelper

package
v15.9.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 9, 2023 License: MIT Imports: 48 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// RepositoryAuthToken is the default token used to authenticate
	// against other Gitaly servers. It is inject as part of the
	// GitalyServers metadata.
	RepositoryAuthToken = "the-secret-token"
	// DefaultStorageName is the default name of the Gitaly storage.
	DefaultStorageName = "default"
	// SigningKeyPath is the default path to test commit signing.
	SigningKeyPath = "testdata/signingKey.gpg"
)

Variables

This section is empty.

Functions

func Context

func Context(tb testing.TB, opts ...ContextOpt) context.Context

Context returns that gets canceled at the end of the test.

func ContextWithoutCancel

func ContextWithoutCancel(opts ...ContextOpt) context.Context

ContextWithoutCancel returns a non-cancellable context.

func CopyFile

func CopyFile(tb testing.TB, src, dst string)

CopyFile copies a file at the path src to a file at the path dst

func CreateGlobalDirectory

func CreateGlobalDirectory(tb testing.TB, name string) string

CreateGlobalDirectory creates a directory in the test directory that is shared across all between all tests.

func CreateTestLogDir added in v15.6.0

func CreateTestLogDir(tb testing.TB) string

CreateTestLogDir creates a new log directory for testing purposes if the environment variable `TEST_LOG_DIR` is set. The log directory will then be created as a subdirectory of the value that `TEST_LOG_DIR` points to. The name of the subdirectory will match the executing test's name.

Returns the name of the created log directory. If the environment variable is not set then this functions returns an empty string.

func GenerateCerts

func GenerateCerts(tb testing.TB) (string, string)

GenerateCerts creates a certificate that can be used to establish TLS protected TCP connection. It returns paths to the file with the certificate and its private key.

func GetLocalhostListener

func GetLocalhostListener(tb testing.TB) (net.Listener, string)

GetLocalhostListener listens on the next available TCP port and returns the listener and the localhost address (host:port) string.

func GetTemporaryGitalySocketFileName

func GetTemporaryGitalySocketFileName(tb testing.TB) string

GetTemporaryGitalySocketFileName will return a unique, useable socket file name

func GitLabTestCommit

func GitLabTestCommit(id string) *gitalypb.GitCommit

GitLabTestCommit provides a key value lookup for commits in the GitLab-Test repository

func GitalyOrPraefect added in v15.7.0

func GitalyOrPraefect[Type any](gitaly, praefect Type) Type

GitalyOrPraefect returns either the Gitaly- or Praefect-specific object depending on whether tests are running with Praefect as a proxy or not.

func GitlabTestStoragePath

func GitlabTestStoragePath() string

GitlabTestStoragePath returns the storage path to the gitlab-test repo.

func IsPraefectEnabled

func IsPraefectEnabled() bool

IsPraefectEnabled returns whether this testing run is done with Praefect in front of the Gitaly.

func MergeIncomingMetadata

func MergeIncomingMetadata(ctx context.Context, md ...metadata.MD) context.Context

MergeIncomingMetadata merges provided metadata-s and returns context with resulting value.

func MergeOutgoingMetadata

func MergeOutgoingMetadata(ctx context.Context, md ...metadata.MD) context.Context

MergeOutgoingMetadata merges provided metadata-s and returns context with resulting value.

func MustClose

func MustClose(tb testing.TB, closer io.Closer)

MustClose calls Close() on the Closer and fails the test in case it returns an error. This function is useful when closing via `defer`, as a simple `defer require.NoError(t, closer.Close())` would cause `closer.Close()` to be executed early already.

func MustReadFile

func MustReadFile(tb testing.TB, filename string) []byte

MustReadFile returns the content of a file or fails at once.

func MustRunCommand

func MustRunCommand(tb testing.TB, stdin io.Reader, name string, args ...string) []byte

MustRunCommand runs a command with an optional standard input and returns the standard output, or fails.

func MustServe added in v15.5.0

func MustServe(tb testing.TB, server Server, listener net.Listener)

MustServe starts to serve the given server with the listener. This function asserts that the server was able to successfully serve and is useful in contexts where one wants to simply spawn a server in a Goroutine.

func NewDiscardingLogEntry

func NewDiscardingLogEntry(tb testing.TB) *logrus.Entry

NewDiscardingLogEntry creates a logrus entry that discards everything.

func NewDiscardingLogger

func NewDiscardingLogger(tb testing.TB) *logrus.Logger

NewDiscardingLogger creates a logger that discards everything.

func NewGitalyServerLogger added in v15.6.0

func NewGitalyServerLogger(tb testing.TB) *logrus.Logger

NewGitalyServerLogger creates a logger for Gitaly servers started by current test. The logger writes logs to gitaly_server.log inside log dir from TEST_LOG_DIR env.

func NewHealthServerWithListener

func NewHealthServerWithListener(tb testing.TB, listener net.Listener) *health.Server

NewHealthServerWithListener creates a new gRPC server with the health server set up. It will listen on the given listener.

func NewServerWithHealth

func NewServerWithHealth(tb testing.TB, socketName string) *health.Server

NewServerWithHealth creates a new gRPC server with the health server set up. It will listen on the socket identified by `socketName`.

func ProtoEqual

func ProtoEqual(tb testing.TB, expected, actual interface{})

ProtoEqual asserts that expected and actual protobuf messages are equal. It can accept not only proto.Message, but slices, maps, and structs too. This is required as comparing messages directly with `require.Equal` doesn't work.

func RequireGrpcCode

func RequireGrpcCode(tb testing.TB, err error, expectedCode codes.Code)

RequireGrpcCode asserts that the error has the expected gRPC status code.

func RequireGrpcError

func RequireGrpcError(tb testing.TB, expected, actual error)

RequireGrpcError asserts that expected and actual gRPC errors are equal. Comparing gRPC errors directly with `require.Equal()` will not typically work correct.

func Run

func Run(m *testing.M, opts ...RunOption)

Run sets up required testing state and executes the given test suite. It can optionally receive a variable number of RunOptions.

func SetCtxGrpcMethod

func SetCtxGrpcMethod(ctx context.Context, method string) context.Context

SetCtxGrpcMethod will set the gRPC context value for the proper key responsible for an RPC full method name. This directly corresponds to the gRPC function responsible for extracting the method: https://godoc.org/google.golang.org/grpc#Method

func SkipQuarantinedTest added in v15.9.0

func SkipQuarantinedTest(t *testing.T, issue string, tests ...string)

SkipQuarantinedTest skips the test if the test name has been specified as quarantined. If no test names are provided the test is always skipped.

func SkipWithPraefect

func SkipWithPraefect(tb testing.TB, reason string)

SkipWithPraefect skips the test if it is being executed with Praefect in front of the Gitaly.

func TempDir

func TempDir(tb testing.TB) string

TempDir is a wrapper around os.MkdirTemp that provides a cleanup function.

func Unsetenv added in v15.2.0

func Unsetenv(tb testing.TB, key string)

Unsetenv unsets an environment variable. The variable will be restored after the test has finished.

func WriteExecutable

func WriteExecutable(tb testing.TB, path string, content []byte) string

WriteExecutable ensures that the parent directory exists, and writes an executable with provided content. The executable must not exist previous to writing it. Returns the path of the written executable.

Types

type Cleanup

type Cleanup func()

Cleanup functions should be called in a defer statement immediately after they are returned from a test helper

type ContextOpt

type ContextOpt func(context.Context) context.Context

ContextOpt returns a new context instance with the new additions to it.

func ContextWithLogger

func ContextWithLogger(logger *log.Entry) ContextOpt

ContextWithLogger allows to inject provided logger into the context.

type FakeDNSServer added in v15.9.0

type FakeDNSServer struct {
	// contains filtered or unexported fields
}

FakeDNSServer starts a fake DNS server serving real DNS queries via UDP. The answers are returned from an input handler method.

func NewFakeDNSServer added in v15.9.0

func NewFakeDNSServer(t *testing.T) *FakeDNSServer

NewFakeDNSServer returns a new real fake DNS server object

func (*FakeDNSServer) Addr added in v15.9.0

func (s *FakeDNSServer) Addr() string

Addr returns the UDP address used to access the DNS nameserver

func (*FakeDNSServer) Start added in v15.9.0

func (s *FakeDNSServer) Start() *FakeDNSServer

Start starts the DNS name server. The server stops in the test clean-up phase

func (*FakeDNSServer) WithHandler added in v15.9.0

func (s *FakeDNSServer) WithHandler(t uint16, handler fakeDNSHandler) *FakeDNSServer

WithHandler adds a handler for an input DNS record type

type FeatureSet

type FeatureSet struct {
	// contains filtered or unexported fields
}

FeatureSet is a representation of a set of features that should be disabled. This is useful in situations where a test needs to test any combination of features toggled on and off. It is designed to disable features as all features are enabled by default, please see: testhelper.Context()

func (FeatureSet) Apply

func (f FeatureSet) Apply(ctx context.Context) context.Context

Apply applies all feature flags in the given FeatureSet to the given context.

func (FeatureSet) Desc

func (f FeatureSet) Desc() string

Desc describes the feature such that it is suitable as a testcase description.

type FeatureSets

type FeatureSets []FeatureSet

FeatureSets is a slice containing many FeatureSets

func NewFeatureSets

func NewFeatureSets(features ...featureflag.FeatureFlag) FeatureSets

NewFeatureSets takes Go feature flags and returns the combination of FeatureSets.

func NewFeatureSetsWithRubyFlags

func NewFeatureSetsWithRubyFlags(goFeatures []featureflag.FeatureFlag, rubyFeatures []featureflag.FeatureFlag) FeatureSets

NewFeatureSetsWithRubyFlags takes a Go- and Ruby-specific feature flags and returns a the combination of FeatureSets.

func (FeatureSets) Bench

func (s FeatureSets) Bench(b *testing.B, test func(b *testing.B, ctx context.Context))

Bench executes the given benchmarking function for each of the FeatureSets. The passed in context has the feature flags set accordingly.

func (FeatureSets) Run

func (s FeatureSets) Run(t *testing.T, test func(t *testing.T, ctx context.Context))

Run executes the given test function for each of the FeatureSets. The passed in context has the feature flags set accordingly.

type RunOption

type RunOption func(*runConfig)

RunOption is an option that can be passed to Run.

func WithDisabledGoroutineChecker deprecated

func WithDisabledGoroutineChecker() RunOption

WithDisabledGoroutineChecker disables checking for leaked Goroutines after tests have run. This should ideally only be used as a temporary measure until all Goroutine leaks have been fixed.

Deprecated: This should not be used, but instead you should try to fix all Goroutine leakages.

func WithSetup

func WithSetup(setup func() error) RunOption

WithSetup allows the caller of Run to pass a setup function that will be called after global test state has been configured.

type Server added in v15.5.0

type Server interface {
	Serve(net.Listener) error
}

Server is an interface for a server that can serve requests on a specific listener. This interface is used by the MustServe helper function.

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL