testhelpers

package
v1.0.1-pre Latest Latest
Warning

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

Go to latest
Published: Mar 24, 2023 License: MIT Imports: 19 Imported by: 0

Documentation

Index

Constants

View Source
const (
	TestSchemaName            = "gftest"
	TestTable1Name            = "test_table_1"
	TestCompressedTable1Name  = "test_compressed_table_1"
	TestCompressedColumn1Name = "data"
	TestCompressedData1       = "\x08" + "\x0cabcd" + "\x01\x02" // abcdcdcd
	TestCompressedData2       = "\x08" + "\x0cabcd" + "\x01\x01" // abcddddd
)

Variables

View Source
var (
	TestSourcePort = getPortFromEnv("N1_PORT", 29291)
	TestTargetPort = getPortFromEnv("N2_PORT", 29292)

	ApplicableTestDbs = []string{"gftest", "gftest1", "gftest2"}
)
View Source
var (
	TestCompressedData3 = loadFixtureFromFile("urls1.snappy")
	TestCompressedData4 = loadFixtureFromFile("urls2.snappy")
)

Functions

func AddTenantID

func AddTenantID(db *sql.DB, dbName, tableName string, numberOfTenants int)

func AssertQueriesHaveEqualResult

func AssertQueriesHaveEqualResult(t *testing.T, ferry *ghostferry.Ferry, query string, args ...interface{}) []map[string]interface{}

func AssertTwoQueriesHaveEqualResult

func AssertTwoQueriesHaveEqualResult(t *testing.T, ferry *ghostferry.Ferry, sourceQuery string, targetQuery string, args ...interface{}) []map[string]interface{}

func DbApplicabilityFilter

func DbApplicabilityFilter(applicableDbs []string) func([]string) []string

func FixturePath

func FixturePath(name string) string

func LoadResults

func LoadResults(rows *sqlorig.Rows) (out []map[string]interface{}, err error)

func NewTestConfig

func NewTestConfig() *ghostferry.Config

func PanicIfError

func PanicIfError(err error)

func ProcessListContainsQueries

func ProcessListContainsQueries(db *sql.DB, queries []string) bool

func RandByteData

func RandByteData() []byte

RandByteData returns a slice of random bytes

func RandData

func RandData() string

func RandLatin1Data

func RandLatin1Data() string

RandLatin1Data returns a UTF-8 string with valid codepoints for a latin1 charset

func RandUTF8MB4Data

func RandUTF8MB4Data() string

RandUTF8MB4Data returns a UTF-8 string with valid codepoints up to U+10FFFF

func SeedInitialData

func SeedInitialData(db *sql.DB, dbname, tablename string, numberOfRows int)

func SetupTest

func SetupTest()

Types

type DataWriter

type DataWriter interface {
	Run()
	Stop()
	Wait()
	SetDB(*sql.DB)
}

type ErrorHandler

type ErrorHandler struct {
	LastError error
}

func (*ErrorHandler) Fatal

func (this *ErrorHandler) Fatal(from string, err error)

func (*ErrorHandler) ReportError

func (this *ErrorHandler) ReportError(from string, err error)

type GhostferryUnitTestSuite

type GhostferryUnitTestSuite struct {
	suite.Suite

	TestFerry *TestFerry
	Ferry     *ghostferry.Ferry
}

func (*GhostferryUnitTestSuite) SeedSourceDB

func (this *GhostferryUnitTestSuite) SeedSourceDB(numberOfRows int)

func (*GhostferryUnitTestSuite) SeedTargetDB

func (this *GhostferryUnitTestSuite) SeedTargetDB(numberOfRows int)

func (*GhostferryUnitTestSuite) SetupTest

func (this *GhostferryUnitTestSuite) SetupTest()

func (*GhostferryUnitTestSuite) TearDownTest

func (this *GhostferryUnitTestSuite) TearDownTest()

type IntegrationTestCase

type IntegrationTestCase struct {
	T *testing.T

	SetupAction                   func(*TestFerry, *sql.DB, *sql.DB)
	AfterStartBinlogStreaming     func(*TestFerry, *sql.DB, *sql.DB)
	AfterRowCopyIsComplete        func(*TestFerry, *sql.DB, *sql.DB)
	BeforeStoppingBinlogStreaming func(*TestFerry, *sql.DB, *sql.DB)
	AfterStoppedBinlogStreaming   func(*TestFerry, *sql.DB, *sql.DB)
	CustomVerifyAction            func(*TestFerry, *sql.DB, *sql.DB)

	DisableChecksumVerifier bool

	SourceDB   *sql.DB
	TargetDB   *sql.DB
	DataWriter DataWriter
	Ferry      *TestFerry
	Verifier   *ghostferry.ChecksumTableVerifier
	// contains filtered or unexported fields
}

func (*IntegrationTestCase) AssertOnlyDataOnSourceAndTargetIs

func (this *IntegrationTestCase) AssertOnlyDataOnSourceAndTargetIs(data string)

func (*IntegrationTestCase) AssertQueriesHaveEqualResult

func (this *IntegrationTestCase) AssertQueriesHaveEqualResult(query string, args ...interface{}) []map[string]interface{}

func (*IntegrationTestCase) CopyData

func (this *IntegrationTestCase) CopyData()

func (*IntegrationTestCase) Run

func (this *IntegrationTestCase) Run()

func (*IntegrationTestCase) SetReadonlyOnSourceDbAndStopDataWriter

func (this *IntegrationTestCase) SetReadonlyOnSourceDbAndStopDataWriter()

func (*IntegrationTestCase) Setup

func (this *IntegrationTestCase) Setup()

func (*IntegrationTestCase) StartFerryAndDataWriter

func (this *IntegrationTestCase) StartFerryAndDataWriter()

func (*IntegrationTestCase) StopStreamingAndWaitForGhostferryFinish

func (this *IntegrationTestCase) StopStreamingAndWaitForGhostferryFinish()

func (*IntegrationTestCase) Teardown

func (this *IntegrationTestCase) Teardown()

func (*IntegrationTestCase) VerifyData

func (this *IntegrationTestCase) VerifyData()

func (*IntegrationTestCase) WaitUntilRowCopyIsComplete

func (this *IntegrationTestCase) WaitUntilRowCopyIsComplete()

type MixedActionDataWriter

type MixedActionDataWriter struct {
	ProbabilityOfInsert float32
	ProbabilityOfUpdate float32
	ProbabilityOfDelete float32

	ModifyIdRange [2]int64

	NumberOfWriters int
	Db              *sql.DB
	Tables          []string

	ExtraInsertData func(string, map[string]interface{})
	ExtraUpdateData func(string, map[string]interface{})
	// contains filtered or unexported fields
}

func (*MixedActionDataWriter) DeleteData

func (this *MixedActionDataWriter) DeleteData() error

func (*MixedActionDataWriter) InsertData

func (this *MixedActionDataWriter) InsertData() error

func (*MixedActionDataWriter) Run

func (this *MixedActionDataWriter) Run()

func (*MixedActionDataWriter) SetDB

func (this *MixedActionDataWriter) SetDB(db *sql.DB)

func (*MixedActionDataWriter) Stop

func (this *MixedActionDataWriter) Stop()

func (*MixedActionDataWriter) UpdateData

func (this *MixedActionDataWriter) UpdateData() error

func (*MixedActionDataWriter) Wait

func (this *MixedActionDataWriter) Wait()

func (*MixedActionDataWriter) WriteData

func (this *MixedActionDataWriter) WriteData(i int)

type TestFerry

type TestFerry struct {
	*ghostferry.Ferry

	BeforeBatchCopyListener   func(batch *ghostferry.RowBatch) error
	BeforeBinlogApplyListener func(events []ghostferry.DMLEvent) error
	BeforeRowCopyDoneListener func() error

	AfterBatchCopyListener   func(batch *ghostferry.RowBatch) error
	AfterBinlogApplyListener func(events []ghostferry.DMLEvent) error
	AfterRowCopyDoneListener func() error
}

func NewTestFerry

func NewTestFerry() *TestFerry

func (*TestFerry) Initialize

func (this *TestFerry) Initialize() error

func (*TestFerry) Run

func (this *TestFerry) Run()

func (*TestFerry) Start

func (this *TestFerry) Start() error

type TestTableFilter

type TestTableFilter struct {
	DbsFunc    func([]string) []string
	TablesFunc func([]*ghostferry.TableSchema) []*ghostferry.TableSchema
}

func (*TestTableFilter) ApplicableDatabases

func (t *TestTableFilter) ApplicableDatabases(dbs []string) ([]string, error)

func (*TestTableFilter) ApplicableTables

func (t *TestTableFilter) ApplicableTables(tables []*ghostferry.TableSchema) ([]*ghostferry.TableSchema, error)

Jump to

Keyboard shortcuts

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