Skip to content

Commit 6bcc5a0

Browse files
committed
fix e2e test
1 parent e900e32 commit 6bcc5a0

1 file changed

Lines changed: 21 additions & 7 deletions

File tree

flow/e2e/clickhouse_mysql_test.go

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -163,6 +163,9 @@ func (s ClickHouseSuite) Test_MySQL_MariaDB_CompressedColumn_Rejected() {
163163
}
164164

165165
func (s ClickHouseSuite) Test_MariaDB_CompressedColumn_AddedMidCDC() {
166+
if s.cluster {
167+
s.t.Skip("source-side compressed column coverage does not need to run against ClickHouse cluster")
168+
}
166169
mySource, ok := s.source.(*MySqlSource)
167170
if !ok {
168171
s.t.Skip("only applies to mysql")
@@ -171,23 +174,34 @@ func (s ClickHouseSuite) Test_MariaDB_CompressedColumn_AddedMidCDC() {
171174
s.t.Skip("column compression is a MariaDB-only feature")
172175
}
173176

177+
// A compressed column produces a binlog row event go-mysql cannot decode, which poisons the
178+
// binlog stream for every mirror reading the server. Use a dedicated throwaway MariaDB so the
179+
// failure cannot cascade into the other parallel subtests sharing the CI source.
180+
src, suffix := SetupMySQLTestContainerSource(s.t, "cmpcol", MySQLTestContainerConfig{
181+
Image: "mariadb:12.3",
182+
Flavor: protos.MySqlFlavor_MYSQL_MARIA,
183+
ReplicationMechanism: mySource.Config.ReplicationMechanism,
184+
})
185+
174186
srcTableName := "compressed_mid_cdc"
175-
srcFullName := s.attachSchemaSuffix(srcTableName)
187+
srcFullName := fmt.Sprintf("e2e_test_%s.%s", suffix, srcTableName)
176188
dstTableName := "compressed_mid_cdc"
177189

178190
// The table starts without a compressed column, so mirror creation validation passes.
179-
require.NoError(s.t, s.source.Exec(s.t.Context(), fmt.Sprintf(
191+
require.NoError(s.t, src.Exec(s.t.Context(), fmt.Sprintf(
180192
`CREATE TABLE %s (id INT PRIMARY KEY, name TEXT)`, srcFullName)))
181-
require.NoError(s.t, s.source.Exec(s.t.Context(), fmt.Sprintf(
193+
require.NoError(s.t, src.Exec(s.t.Context(), fmt.Sprintf(
182194
`INSERT INTO %s (id, name) VALUES (1, 'snapshot')`, srcFullName)))
183195

184196
connectionGen := FlowConnectionGenerationConfig{
185-
FlowJobName: srcFullName,
197+
FlowJobName: "test_mariadb_compressed_mid_cdc_" + suffix,
186198
TableNameMapping: map[string]string{srcFullName: dstTableName},
187199
Destination: s.Peer().Name,
188200
}
189201
flowConnConfig := connectionGen.GenerateFlowConnectionConfigs(s)
190202
flowConnConfig.DoInitialSnapshot = true
203+
// The suite source is the shared CI MariaDB; point the mirror at our isolated source instead.
204+
flowConnConfig.SourceName = src.GeneratePeer(s.t).Name
191205

192206
tc := NewTemporalClient(s.t)
193207
env := ExecutePeerflow(s.t, tc, flowConnConfig)
@@ -196,13 +210,13 @@ func (s ClickHouseSuite) Test_MariaDB_CompressedColumn_AddedMidCDC() {
196210
catalogPool, err := internal.GetCatalogConnectionPoolFromEnv(s.t.Context())
197211
require.NoError(s.t, err)
198212

199-
EnvWaitForEqualTablesWithNames(env, s, "waiting on initial snapshot", srcTableName, dstTableName, "id,name")
213+
EnvWaitForCount(env, s, "waiting on initial snapshot", dstTableName, "id,name", 1)
200214

201215
// Add a COMPRESSED column mid-stream, then write a row so a row event carrying the undecodable
202216
// wire type reaches the pipe and trips the TABLE_MAP detection.
203-
require.NoError(s.t, s.source.Exec(s.t.Context(), fmt.Sprintf(
217+
require.NoError(s.t, src.Exec(s.t.Context(), fmt.Sprintf(
204218
`ALTER TABLE %s ADD COLUMN val TEXT COMPRESSED`, srcFullName)))
205-
require.NoError(s.t, s.source.Exec(s.t.Context(), fmt.Sprintf(
219+
require.NoError(s.t, src.Exec(s.t.Context(), fmt.Sprintf(
206220
`INSERT INTO %s (id, name, val) VALUES (2, 'cdc', 'compressed value')`, srcFullName)))
207221

208222
EnvWaitFor(s.t, env, 3*time.Minute, "waiting for compressed column error", func() bool {

0 commit comments

Comments
 (0)