@@ -165,7 +165,7 @@ func (s MongoClickhouseSuite) Test_Inconsistent_Schema() {
165165 e2e .RequireEnvCanceled (t , env )
166166}
167167
168- func (s MongoClickhouseSuite ) Test_Update_Replace_Delete_Events () {
168+ func (s MongoClickhouseSuite ) Test_CDC () {
169169 t := s .T ()
170170
171171 srcDatabase := GetTestDatabase (s .Suffix ())
@@ -183,16 +183,15 @@ func (s MongoClickhouseSuite) Test_Update_Replace_Delete_Events() {
183183 adminClient := s .Source ().(* MongoSource ).AdminClient ()
184184 collection := adminClient .Database (srcDatabase ).Collection (srcTable )
185185
186- insertRes , err := collection .InsertOne (t .Context (), bson.D {bson.E {Key : "key" , Value : 1 }}, options .InsertOne ())
187- require .NoError (t , err )
188- require .True (t , insertRes .Acknowledged )
189-
190186 tc := e2e .NewTemporalClient (t )
191187 env := e2e .ExecutePeerflow (t .Context (), tc , peerflow .CDCFlowWorkflow , flowConnConfig , nil )
192- e2e .EnvWaitForEqualTablesWithNames (env , s , "initial load" , srcTable , dstTable , "_id,_full_document" )
193-
194188 e2e .SetupCDCFlowStatusQuery (t , env , flowConnConfig )
195189
190+ insertRes , err := collection .InsertOne (t .Context (), bson.D {bson.E {Key : "key" , Value : 1 }}, options .InsertOne ())
191+ require .NoError (t , err )
192+ require .True (t , insertRes .Acknowledged )
193+ e2e .EnvWaitForEqualTablesWithNames (env , s , "insert event" , srcTable , dstTable , "_id,_full_document" )
194+
196195 updateRes , err := collection .UpdateOne (
197196 t .Context (),
198197 bson.D {bson.E {Key : "key" , Value : 1 }},
@@ -355,3 +354,51 @@ func (s MongoClickhouseSuite) Test_Transactions_Across_Collections() {
355354 env .Cancel (t .Context ())
356355 e2e .RequireEnvCanceled (t , env )
357356}
357+
358+ func (s MongoClickhouseSuite ) Test_Enable_Json () {
359+ t := s .T ()
360+ srcDatabase := GetTestDatabase (s .Suffix ())
361+ srcTable := "test_full_document_json"
362+ dstTable := "test_full_document_json_dst"
363+
364+ connectionGen := e2e.FlowConnectionGenerationConfig {
365+ FlowJobName : e2e .AddSuffix (s , srcTable ),
366+ TableMappings : e2e .TableMappings (s , srcTable , dstTable ),
367+ Destination : s .Peer ().Name ,
368+ }
369+ flowConnConfig := connectionGen .GenerateFlowConnectionConfigs (s )
370+ flowConnConfig .DoInitialSnapshot = true
371+ flowConnConfig .Env = map [string ]string {"PEERDB_CLICKHOUSE_ENABLE_JSON" : "true" }
372+
373+ adminClient := s .Source ().(* MongoSource ).AdminClient ()
374+ collection := adminClient .Database (srcDatabase ).Collection (srcTable )
375+
376+ res , err := collection .InsertOne (t .Context (), bson.D {bson.E {Key : "key" , Value : "val" }}, options .InsertOne ())
377+ require .NoError (t , err )
378+ require .True (t , res .Acknowledged )
379+
380+ tc := e2e .NewTemporalClient (t )
381+ env := e2e .ExecutePeerflow (t .Context (), tc , peerflow .CDCFlowWorkflow , flowConnConfig , nil )
382+ e2e .EnvWaitForEqualTablesWithNames (env , s , "initial load" , srcTable , dstTable , "_id,_full_document" )
383+
384+ e2e .SetupCDCFlowStatusQuery (t , env , flowConnConfig )
385+
386+ insertRes , err := collection .InsertOne (t .Context (), bson.D {bson.E {Key : "key2" , Value : "val2" }}, options .InsertOne ())
387+ require .NoError (t , err )
388+ require .True (t , insertRes .Acknowledged )
389+ e2e .EnvWaitForEqualTablesWithNames (env , s , "insert event" , srcTable , dstTable , "_id,_full_document" )
390+ oid := bson.D {bson.E {Key : "_id" , Value : res .InsertedID }}
391+
392+ replaceRes , err := collection .ReplaceOne (t .Context (), oid , bson.D {bson.E {Key : "key2" , Value : "val2" }}, options .Replace ())
393+ require .NoError (t , err )
394+ require .Equal (t , int64 (1 ), replaceRes .ModifiedCount )
395+ e2e .EnvWaitForEqualTablesWithNames (env , s , "replace event" , srcTable , dstTable , "_id,_full_document" )
396+
397+ deleteRes , err := collection .DeleteOne (t .Context (), oid , options .DeleteOne ())
398+ require .NoError (t , err )
399+ require .Equal (t , int64 (1 ), deleteRes .DeletedCount )
400+ e2e .EnvWaitForEqualTablesWithNames (env , s , "delete event" , srcTable , dstTable , "_id,_full_document" )
401+
402+ env .Cancel (t .Context ())
403+ e2e .RequireEnvCanceled (t , env )
404+ }
0 commit comments