testruntime

package
v0.51.4 Latest Latest
Warning

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

Go to latest
Published: Dec 10, 2024 License: Apache-2.0 Imports: 37 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var Connectors = map[string]ConnectorAcquireFunc{

	"clickhouse": func(t TestingT) map[string]string {
		_, currentFile, _, _ := goruntime.Caller(0)
		testdataPath := filepath.Join(currentFile, "..", "testdata")

		ctx := context.Background()
		clickHouseContainer, err := clickhouse.Run(
			ctx,
			"clickhouse/clickhouse-server:24.6.2.17",
			clickhouse.WithUsername("clickhouse"),
			clickhouse.WithPassword("clickhouse"),
			clickhouse.WithConfigFile(filepath.Join(testdataPath, "clickhouse-config.xml")),
			testcontainers.CustomizeRequestOption(func(req *testcontainers.GenericContainerRequest) error {
				cf := testcontainers.ContainerFile{
					HostFilePath:      filepath.Join(testdataPath, "users.xml"),
					ContainerFilePath: "/etc/clickhouse-server/users.xml",
					FileMode:          0o755,
				}
				req.Files = append(req.Files, cf)
				return nil
			}),
		)
		require.NoError(t, err)

		t.Cleanup(func() {
			err := clickHouseContainer.Terminate(ctx)
			require.NoError(t, err)
		})

		host, err := clickHouseContainer.Host(ctx)
		require.NoError(t, err)
		port, err := clickHouseContainer.MappedPort(ctx, "9000/tcp")
		require.NoError(t, err)

		dsn := fmt.Sprintf("clickhouse://clickhouse:clickhouse@%v:%v", host, port.Port())
		return map[string]string{"connector.clickhouse.dsn": dsn}
	},

	"druid": func(t TestingT) map[string]string {

		_, currentFile, _, _ := goruntime.Caller(0)
		envPath := filepath.Join(currentFile, "..", "..", "..", ".env")
		_, err := os.Stat(envPath)
		if err == nil {
			require.NoError(t, godotenv.Load(envPath))
		}

		dsn := os.Getenv("RILL_RUNTIME_DRUID_TEST_DSN")
		require.NotEmpty(t, dsn, "Druid test DSN not configured")
		return map[string]string{"connector.druid.dsn": dsn}
	},
}

Connectors is a map of available connectors for use in tests. When acquiring a connector, it will only be cleaned up when the test has completed. You should avoid acquiring the same connector multiple times in the same test.

Test connectors can either be implemented as: - Services embedded in the current process - Services started as ephemeral testcontainers - Real external services configured for use in tests with credentials provided in the root .env file with the prefix RILL_RUNTIME_TEST_.

Functions

func ClickhouseCluster added in v0.49.0

func ClickhouseCluster(t TestingT) (string, string)

func DeleteFiles added in v0.35.0

func DeleteFiles(t testing.TB, rt *runtime.Runtime, id string, files ...string)

func DumpResources added in v0.35.0

func DumpResources(t testing.TB, rt *runtime.Runtime, id string)

func GetResource added in v0.50.0

func GetResource(t testing.TB, rt *runtime.Runtime, id, kind, name string) *runtimev1.Resource

func Must added in v0.35.0

func Must[T any](v T, err error) T

func New

func New(t TestingT) *runtime.Runtime

New returns a runtime configured for use in tests.

func NewInstance

func NewInstance(t TestingT) (*runtime.Runtime, string)

NewInstance is a convenience wrapper around NewInstanceWithOptions, using defaults sensible for most tests.

func NewInstanceForDruidProject added in v0.46.0

func NewInstanceForDruidProject(t *testing.T) (*runtime.Runtime, string, error)

func NewInstanceForProject

func NewInstanceForProject(t TestingT, name string) (*runtime.Runtime, string)

NewInstanceForProject creates a runtime and an instance for use in tests. The passed name should match a test project in the testdata folder. You should not do mutable repo operations on the returned instance.

func NewInstanceWithClickhouseProject added in v0.49.0

func NewInstanceWithClickhouseProject(t TestingT, withCluster bool) (*runtime.Runtime, string)

func NewInstanceWithModel

func NewInstanceWithModel(t TestingT, name, sql string) (*runtime.Runtime, string)

NewInstanceWithModel creates a runtime and an instance for use in tests. The passed model name and SQL SELECT statement will be loaded into the instance.

func NewInstanceWithOptions added in v0.35.0

func NewInstanceWithOptions(t TestingT, opts InstanceOptions) (*runtime.Runtime, string)

NewInstanceWithOptions creates a runtime and an instance for use in tests. The instance's repo is a temp directory that will be cleared when the tests finish.

func PutFiles added in v0.35.0

func PutFiles(t testing.TB, rt *runtime.Runtime, id string, files map[string]string)

func ReconcileAndWait added in v0.35.0

func ReconcileAndWait(t testing.TB, rt *runtime.Runtime, id string, n *runtimev1.ResourceName)

func ReconcileParserAndWait added in v0.35.0

func ReconcileParserAndWait(t testing.TB, rt *runtime.Runtime, id string)

func RefreshAndWait added in v0.35.0

func RefreshAndWait(t testing.TB, rt *runtime.Runtime, id string, n *runtimev1.ResourceName)

func RenameFile added in v0.36.0

func RenameFile(t testing.TB, rt *runtime.Runtime, id, from, to string)

func RequireIsView added in v0.36.0

func RequireIsView(t testing.TB, olap drivers.OLAPStore, tableName string, isView bool)

func RequireNoOLAPTable added in v0.35.0

func RequireNoOLAPTable(t testing.TB, rt *runtime.Runtime, id, name string)

func RequireOLAPTable added in v0.35.0

func RequireOLAPTable(t testing.TB, rt *runtime.Runtime, id, name string)

func RequireOLAPTableCount added in v0.35.0

func RequireOLAPTableCount(t testing.TB, rt *runtime.Runtime, id, name string, count int)

func RequireParseErrors added in v0.36.0

func RequireParseErrors(t testing.TB, rt *runtime.Runtime, id string, expectedParseErrors map[string]string)

func RequireReconcileState added in v0.35.0

func RequireReconcileState(t testing.TB, rt *runtime.Runtime, id string, lenResources, lenReconcileErrs, lenParseErrs int)

func RequireResource added in v0.35.0

func RequireResource(t testing.TB, rt *runtime.Runtime, id string, a *runtimev1.Resource)

Types

type ConnectorAcquireFunc added in v0.51.0

type ConnectorAcquireFunc func(t TestingT) (vars map[string]string)

ConnectorAcquireFunc is a function that acquires a connector for a test. It should return a map of variables to add to the test runtime instance.

type InstanceOptions added in v0.35.0

type InstanceOptions struct {
	Files          map[string]string
	Variables      map[string]string
	WatchRepo      bool
	StageChanges   bool
	TestConnectors []string
}

InstanceOptions enables configuration of the instance options that are configurable in tests.

type TestingT

type TestingT interface {
	Name() string
	TempDir() string
	FailNow()
	Errorf(format string, args ...interface{})
	Cleanup(f func())
}

TestingT satisfies both *testing.T and *testing.B.

Jump to

Keyboard shortcuts

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