Documentation ¶
Index ¶
- Constants
- func AssertGrpcCode(tb testing.TB, err error, expectedCode codes.Code)
- func Context(tb testing.TB, opts ...ContextOpt) context.Context
- func ContextWithoutCancel(opts ...ContextOpt) context.Context
- func CopyFile(tb testing.TB, src, dst string)
- func CreateGlobalDirectory(tb testing.TB, name string) string
- func CreateTestLogDir(tb testing.TB) string
- func EnabledOrDisabledFlag[T any](ctx context.Context, flag featureflag.FeatureFlag, enabled, disabled T) T
- func GenerateCerts(tb testing.TB) (string, string)
- func GetLocalhostListener(tb testing.TB) (net.Listener, string)
- func GetTemporaryGitalySocketFileName(tb testing.TB) string
- func GitLabTestCommit(id string) *gitalypb.GitCommit
- func GitalyOrPraefect[Type any](gitaly, praefect Type) Type
- func GitlabTestStoragePath() string
- func IsPraefectEnabled() bool
- func MergeIncomingMetadata(ctx context.Context, md ...metadata.MD) context.Context
- func MergeOutgoingMetadata(ctx context.Context, md ...metadata.MD) context.Context
- func MustClose(tb testing.TB, closer io.Closer)
- func MustReadFile(tb testing.TB, filename string) []byte
- func MustRunCommand(tb testing.TB, stdin io.Reader, name string, args ...string) []byte
- func MustServe(tb testing.TB, server Server, listener net.Listener)
- func NewDiscardingLogEntry(tb testing.TB) *logrus.Entry
- func NewDiscardingLogger(tb testing.TB) *logrus.Logger
- func NewGitalyServerLogger(tb testing.TB) *logrus.Logger
- func NewHealthServerWithListener(tb testing.TB, listener net.Listener) *health.Server
- func NewServerWithHealth(tb testing.TB, socketName string) *health.Server
- func ProtoEqual(tb testing.TB, expected, actual interface{})
- func RequireDirectoryState(tb testing.TB, rootDirectory, relativeDirectory string, ...)
- func RequireGrpcCode(tb testing.TB, err error, expectedCode codes.Code)
- func RequireGrpcError(tb testing.TB, expected, actual error)
- func Run(m *testing.M, opts ...RunOption)
- func SetCtxGrpcMethod(ctx context.Context, method string) context.Context
- func SkipQuarantinedTest(t *testing.T, issue string, tests ...string)
- func SkipWithPraefect(tb testing.TB, reason string)
- func TempDir(tb testing.TB) string
- func Unsetenv(tb testing.TB, key string)
- func WriteExecutable(tb testing.TB, path string, content []byte) string
- type Cleanup
- type ContextOpt
- type DirectoryEntry
- type DirectoryState
- type FakeDNSServer
- type FeatureSet
- type FeatureSets
- type RunOption
- type Server
Constants ¶
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 AssertGrpcCode ¶ added in v15.10.0
AssertGrpcCode asserts that the error has the expected gRPC status code.
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 CreateGlobalDirectory ¶
CreateGlobalDirectory creates a directory in the test directory that is shared across all between all tests.
func CreateTestLogDir ¶ added in v15.6.0
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 EnabledOrDisabledFlag ¶ added in v15.10.0
func EnabledOrDisabledFlag[T any](ctx context.Context, flag featureflag.FeatureFlag, enabled, disabled T) T
EnabledOrDisabledFlag returns either the enabled value or the disabled value depending on the feature flag's state.
func GenerateCerts ¶
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 ¶
GetLocalhostListener listens on the next available TCP port and returns the listener and the localhost address (host:port) string.
func GetTemporaryGitalySocketFileName ¶
GetTemporaryGitalySocketFileName will return a unique, useable socket file name
func GitLabTestCommit ¶
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 ¶
MergeIncomingMetadata merges provided metadata-s and returns context with resulting value.
func MergeOutgoingMetadata ¶
MergeOutgoingMetadata merges provided metadata-s and returns context with resulting value.
func MustClose ¶
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 ¶
MustReadFile returns the content of a file or fails at once.
func MustRunCommand ¶
MustRunCommand runs a command with an optional standard input and returns the standard output, or fails.
func MustServe ¶ added in v15.5.0
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 ¶
NewDiscardingLogEntry creates a logrus entry that discards everything.
func NewDiscardingLogger ¶
NewDiscardingLogger creates a logger that discards everything.
func NewGitalyServerLogger ¶ added in v15.6.0
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 ¶
NewHealthServerWithListener creates a new gRPC server with the health server set up. It will listen on the given listener.
func NewServerWithHealth ¶
NewServerWithHealth creates a new gRPC server with the health server set up. It will listen on the socket identified by `socketName`.
func ProtoEqual ¶
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 RequireDirectoryState ¶ added in v15.10.0
func RequireDirectoryState(tb testing.TB, rootDirectory, relativeDirectory string, expected DirectoryState)
RequireDirectoryState asserts that given directory matches the expected state. The rootDirectory and relativeDirectory are joined together to decide the directory to walk. rootDirectory is trimmed out of the paths in the DirectoryState to make assertions easier by using the relative paths only. For example, given `/root-path` and `relative/path`, the directory walked is `/root-path/relative/path`. The paths in DirectoryState trim the root prefix, thus they should be like `/relative/path/...`. The beginning point of the walk has path "/".
func RequireGrpcCode ¶
RequireGrpcCode asserts that the error has the expected gRPC status code.
func RequireGrpcError ¶
RequireGrpcError asserts that expected and actual gRPC errors are equal. Comparing gRPC errors directly with `require.Equal()` will not typically work correct.
func Run ¶
Run sets up required testing state and executes the given test suite. It can optionally receive a variable number of RunOptions.
func SetCtxGrpcMethod ¶
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
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 ¶
SkipWithPraefect skips the test if it is being executed with Praefect in front of the Gitaly.
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 ¶
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 DirectoryEntry ¶ added in v15.10.0
type DirectoryEntry struct { // Mode is the file mode of the entry. Mode fs.FileMode // Content contains the file content if this is a regular file. Content []byte }
DirectoryEntry models an entry in a directory.
type DirectoryState ¶ added in v15.10.0
type DirectoryState map[string]DirectoryEntry
DirectoryState models the contents of a directory. The key is relative of the entry in the rootDirectory as described on RequireDirectoryState.
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.
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.