...

Package sharedtest

import "github.com/launchdarkly/go-server-sdk/v6/internal/sharedtest"
Overview
Index
Subdirectories

Overview ▾

Package sharedtest contains types and functions used by SDK unit tests in multiple packages.

Since it is inside internal/, none of this code can be seen by application code and it can be freely changed without breaking any public APIs. Test helpers that we want to be available to application code should be in testhelpers/ instead.

It is important that no non-test code ever imports this package, so that it will not be compiled into applications as a transitive dependency.

Note that this package is not allowed to reference the "internal" package, because the tests in that package use sharedtest helpers so it would be a circular reference.

func DataSetToMap

func DataSetToMap(
    allData []ldstoretypes.Collection,
) map[ldstoretypes.DataKind]map[string]ldstoretypes.ItemDescriptor

DataSetToMap converts the data format for Init into a map of maps.

func ExpectFlagChangeEvents

func ExpectFlagChangeEvents(t *testing.T, ch <-chan interfaces.FlagChangeEvent, keys ...string)

ExpectFlagChangeEvents asserts that a channel receives flag change events for the specified keys (in any order) and then does not receive any more events for the next 100ms.

func FlagDescriptor

func FlagDescriptor(f ldmodel.FeatureFlag) ldstoretypes.ItemDescriptor

FlagDescriptor is a shortcut for creating a StoreItemDescriptor from a flag.

func NewSimpleTestContext

func NewSimpleTestContext(sdkKey string) subsystems.ClientContext

NewSimpleTestContext returns a basic implementation of interfaces.ClientContext for use in test code.

func NewTestContext

func NewTestContext(
    sdkKey string,
    optHTTPConfig *subsystems.HTTPConfiguration,
    optLoggingConfig *subsystems.LoggingConfiguration,
) subsystems.BasicClientContext

NewTestContext returns a basic implementation of interfaces.ClientContext for use in test code. We can't use internal.NewClientContextImpl for this because of circular references.

func NewTestLoggers

func NewTestLoggers() ldlog.Loggers

NewTestLoggers returns a standardized logger instance used by unit tests. If you want to temporarily enable log output for tests, change testLogLevel to for instance ldlog.Debug. Note that "go test" normally suppresses output anyway unless a test fails.

func NormalizeDataSet

func NormalizeDataSet(in []ldstoretypes.Collection) []ldstoretypes.Collection

NormalizeDataSet sorts the data set by kind and key for test determinacy.

func SegmentDescriptor

func SegmentDescriptor(s ldmodel.Segment) ldstoretypes.ItemDescriptor

SegmentDescriptor is a shortcut for creating a StoreItemDescriptor from a segment.

func TestLoggingConfig

func TestLoggingConfig() subsystems.LoggingConfiguration

TestLoggingConfig returns a LoggingConfiguration corresponding to NewTestLoggers().

type DataSetBuilder

DataSetBuilder is a helper for creating collections of flags and segments.

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

func NewDataSetBuilder

func NewDataSetBuilder() *DataSetBuilder

NewDataSetBuilder creates a DataSetBuilder.

func (*DataSetBuilder) Build

func (d *DataSetBuilder) Build() []ldstoretypes.Collection

Build returns the built data sest.

func (*DataSetBuilder) Flags

func (d *DataSetBuilder) Flags(flags ...ldmodel.FeatureFlag) *DataSetBuilder

Flags adds flags to the data set.

func (*DataSetBuilder) Segments

func (d *DataSetBuilder) Segments(segments ...ldmodel.Segment) *DataSetBuilder

Segments adds segments to the data set.

func (*DataSetBuilder) ToServerSDKData

func (d *DataSetBuilder) ToServerSDKData() *ldservices.ServerSDKData

ToServerSDKData converts the data set to the format used by the ldservices helpers.

Subdirectories

Name Synopsis
..