Documentation
¶
Index ¶
- Constants
- Variables
- func ConnectAndQueryTest(t *testing.T, connections *Connection)
- type Connection
- type DatabaseContainer
- func (dc *DatabaseContainer) ContainerID() string
- func (dc *DatabaseContainer) EnsureNodeReadinessByLogs(t *testing.T, requiredOutput string)
- func (dc *DatabaseContainer) ExecuteCommand(t *testing.T, cmd []string) string
- func (dc *DatabaseContainer) GetConnectionOptions(ctx context.Context, t *testing.T) *Connection
- func (dc *DatabaseContainer) GetContainerConnectionDetails(t *testing.T) *connection.Endpoint
- func (dc *DatabaseContainer) GetContainerLogs(t *testing.T) string
- func (dc *DatabaseContainer) ReadPasswordFromContainer(t *testing.T, filePath string) string
- func (dc *DatabaseContainer) StartContainer(ctx context.Context, t *testing.T)
- func (dc *DatabaseContainer) StopAndRemoveContainer(t *testing.T)
- func (dc *DatabaseContainer) StopContainer(t *testing.T)
Constants ¶
const ( // YugabytedReadinessOutput is the output indicating that a Yugabyted node is ready. YugabytedReadinessOutput = "Data placement constraint successfully verified" // YugabyteTabletNodeReadinessOutput is the output indicating that a yugabyte's tablet node is ready. YugabyteTabletNodeReadinessOutput = "syncing data to disk ... ok" // PostgresReadinesssOutput is the output indicating that a PostgreSQL node is ready. PostgresReadinesssOutput = "database system is ready to accept connections" // SecondaryPostgresNodeReadinessOutput is the output indicating that a secondary PostgreSQL node is ready. SecondaryPostgresNodeReadinessOutput = "started streaming WAL from primary" )
const ( // YugaDBType represents the usage of Yugabyte DB. YugaDBType = "yugabyte" // PostgresDBType represents the usage of PostgreSQL DB. PostgresDBType = "postgres" )
Variables ¶
var ( // YugabyteCMD starts yugabyte without fault tolerance (single server). YugabyteCMD = []string{ "bin/yugabyted", "start", "--callhome", "false", "--background", "false", "--ui", "false", "--tserver_flags", "ysql_max_connections=500," + "tablet_replicas_per_gib_limit=4000," + "yb_num_shards_per_tserver=1," + "minloglevel=3," + "yb_enable_read_committed_isolation=true", } )
Functions ¶
func ConnectAndQueryTest ¶
func ConnectAndQueryTest(t *testing.T, connections *Connection)
ConnectAndQueryTest is an exported function for testing purpose.
Types ¶
type Connection ¶
type Connection struct {
Endpoints []*connection.Endpoint
User string
Password string
Database string
LoadBalance bool
TLS dbconn.DatabaseTLSConfig
}
Connection facilities connecting to a YugabyteDB instance.
func NewConnection ¶
func NewConnection(endpoints ...*connection.Endpoint) *Connection
NewConnection returns a connection parameters with the specified host:port, and the default values for the other parameters.
func PrepareTestEnv ¶
func PrepareTestEnv(t *testing.T) *Connection
PrepareTestEnv initializes a test environment for an existing or uncontrollable db instance.
func PrepareTestEnvWithConnection ¶
func PrepareTestEnvWithConnection(t *testing.T, conn *Connection) *Connection
PrepareTestEnvWithConnection initializes a test environment given a db connection.
func StartAndConnect ¶
func StartAndConnect(ctx context.Context, t *testing.T) *Connection
StartAndConnect connects to an existing Yugabyte instance or creates a containerized new one.
type DatabaseContainer ¶
type DatabaseContainer struct {
Name string
Image string
HostIP string
Network string
Hostname string
DatabaseType string
Tag string
Role string
Cmd []string
Env []string
Binds []string
HostPort int
DbPort docker.Port
PortMap docker.Port
PortBinds map[docker.Port][]docker.PortBinding
NetToIP map[string]*docker.EndpointConfig
AutoRm bool
// TLSConfig holds the node TLS certificates.
// If TLSConfig isn't available (is nil), we fallback to insecure mode.
TLSConfig *connection.TLSConfig
// contains filtered or unexported fields
}
DatabaseContainer manages the execution of an instance of a dockerized DB for tests.
func (*DatabaseContainer) ContainerID ¶
func (dc *DatabaseContainer) ContainerID() string
ContainerID returns the container ID.
func (*DatabaseContainer) EnsureNodeReadinessByLogs ¶ added in v0.1.7
func (dc *DatabaseContainer) EnsureNodeReadinessByLogs(t *testing.T, requiredOutput string)
EnsureNodeReadinessByLogs checks the container's readiness by monitoring its logs and ensure its running correctly.
func (*DatabaseContainer) ExecuteCommand ¶
func (dc *DatabaseContainer) ExecuteCommand(t *testing.T, cmd []string) string
ExecuteCommand executes a command and returns the container output.
func (*DatabaseContainer) GetConnectionOptions ¶ added in v0.1.7
func (dc *DatabaseContainer) GetConnectionOptions(ctx context.Context, t *testing.T) *Connection
GetConnectionOptions inspect the container and fetches the available connection options.
func (*DatabaseContainer) GetContainerConnectionDetails ¶
func (dc *DatabaseContainer) GetContainerConnectionDetails( t *testing.T, ) *connection.Endpoint
GetContainerConnectionDetails inspect the container and fetches its connection to an endpoint.
func (*DatabaseContainer) GetContainerLogs ¶
func (dc *DatabaseContainer) GetContainerLogs(t *testing.T) string
GetContainerLogs return the output of the DatabaseContainer.
func (*DatabaseContainer) ReadPasswordFromContainer ¶ added in v0.1.7
func (dc *DatabaseContainer) ReadPasswordFromContainer(t *testing.T, filePath string) string
ReadPasswordFromContainer extracts the randomly generated password from a file inside the container. This is required because YugabyteDB, when running in secure mode, doesn't allow default passwords and instead generates a random one at startup. This method being called only when a secured Yugabyted node is started. If the file doesn’t exist or doesn't contain a password, the test should fail.
func (*DatabaseContainer) StartContainer ¶
func (dc *DatabaseContainer) StartContainer(ctx context.Context, t *testing.T)
StartContainer runs a DB container, if no specific container details provided, default values will be set.
func (*DatabaseContainer) StopAndRemoveContainer ¶
func (dc *DatabaseContainer) StopAndRemoveContainer(t *testing.T)
StopAndRemoveContainer stops and removes the db container from the docker engine.
func (*DatabaseContainer) StopContainer ¶
func (dc *DatabaseContainer) StopContainer(t *testing.T)
StopContainer stops db container.