@@ -24,7 +24,7 @@ import (
24
24
"github.com/matryer/is"
25
25
)
26
26
27
- const DebeziumRecord = `{
27
+ const DebeziumRecordPayload = `{
28
28
"payload": {
29
29
"after": {
30
30
"description": "test1",
@@ -42,6 +42,26 @@ const DebeziumRecord = `{
42
42
"schema": {}
43
43
}`
44
44
45
+ const OpenCDCRecordPayload = `{
46
+ "position": "NzgyNjJmODUtODNmMS00ZGQwLWEyZDAtNTRmNjA1ZjkyYTg0",
47
+ "operation": "create",
48
+ "metadata": {
49
+ "conduit.source.connector.id": "source-generator-78lpnchx7tzpyqz:source",
50
+ "opencdc.readAt": "1706028953595546000",
51
+ "opencdc.version": "v1"
52
+ },
53
+ "key": "MTc3NzQ5NDEtNTdhMi00MmZhLWI0MzAtODkxMmE5NDI0YjNh",
54
+ "payload": {
55
+ "after": {
56
+ "event_id": 1747353650,
57
+ "msg": "string 0e8955b3-7fb5-4dda-8064-e10dc007f00d",
58
+ "pg_generator": false,
59
+ "sensor_id": 1250383582,
60
+ "triggered": false
61
+ }
62
+ }
63
+ }`
64
+
45
65
func TestUnwrap_Config (t * testing.T ) {
46
66
tests := []struct {
47
67
name string
@@ -108,7 +128,7 @@ func TestUnwrap_Process(t *testing.T) {
108
128
Payload : record.Change {
109
129
Before : nil ,
110
130
After : record.RawData {
111
- Raw : []byte (DebeziumRecord ),
131
+ Raw : []byte (DebeziumRecordPayload ),
112
132
},
113
133
},
114
134
},
@@ -401,6 +421,115 @@ func TestUnwrap_Process(t *testing.T) {
401
421
},
402
422
wantErr : false ,
403
423
},
424
+ {
425
+ name : "opencdc with structured data" ,
426
+ config : processor.Config {
427
+ Settings : map [string ]string {"format" : "opencdc" },
428
+ },
429
+ record : record.Record {
430
+ Key : record.RawData {Raw : []byte ("one-key" )},
431
+ Operation : record .OperationCreate ,
432
+ Metadata : map [string ]string {
433
+ "conduit.source.connector.id" : "dest-log-78lpnchx7tzpyqz:source-kafka" ,
434
+ "kafka.topic" : "stream-78lpnchx7tzpyqz-generator" ,
435
+ "opencdc.createdAt" : "1706028953595000000" ,
436
+ "opencdc.readAt" : "1706028953606997000" ,
437
+ "opencdc.version" : "v1" ,
438
+ },
439
+ Payload : record.Change {
440
+ Before : nil ,
441
+ After : record.StructuredData {
442
+ "position" : []byte ("NzgyNjJmODUtODNmMS00ZGQwLWEyZDAtNTRmNjA1ZjkyYTg0" ),
443
+ "operation" : record .OperationCreate ,
444
+ "metadata" : record.Metadata {
445
+ "conduit.source.connector.id" : "source-generator-78lpnchx7tzpyqz:source" ,
446
+ "opencdc.readAt" : "1706028953595546000" ,
447
+ "opencdc.version" : "v1" ,
448
+ },
449
+ "key" : record.RawData {
450
+ Raw : []byte ("MTc3NzQ5NDEtNTdhMi00MmZhLWI0MzAtODkxMmE5NDI0YjNh" ),
451
+ },
452
+ "payload" : record.Change {
453
+ Before : nil ,
454
+ After : record.StructuredData {
455
+ "event_id" : 1747353650 ,
456
+ "msg" : "string 0e8955b3-7fb5-4dda-8064-e10dc007f00d" ,
457
+ "pg_generator" : false ,
458
+ "sensor_id" : 1250383582 ,
459
+ "triggered" : false ,
460
+ },
461
+ },
462
+ },
463
+ },
464
+ Position : []byte ("eyJHcm91cElEIjoiNGQ2ZTBhMjktNzAwZi00Yjk4LWEzY2MtZWUyNzZhZTc4MjVjIiwiVG9waWMiOiJzdHJlYW0tNzhscG5jaHg3dHpweXF6LWdlbmVyYXRvciIsIlBhcnRpdGlvbiI6MCwiT2Zmc2V0IjoyMjF9" ),
465
+ },
466
+ want : record.Record {
467
+ Operation : record .OperationCreate ,
468
+ Metadata : record.Metadata {
469
+ "conduit.source.connector.id" : "source-generator-78lpnchx7tzpyqz:source" ,
470
+ "opencdc.readAt" : "1706028953595546000" ,
471
+ "opencdc.version" : "v1" ,
472
+ },
473
+ Payload : record.Change {
474
+ Before : nil ,
475
+ After : record.StructuredData {
476
+ "event_id" : 1747353650 ,
477
+ "msg" : "string 0e8955b3-7fb5-4dda-8064-e10dc007f00d" ,
478
+ "pg_generator" : false ,
479
+ "sensor_id" : 1250383582 ,
480
+ "triggered" : false ,
481
+ },
482
+ },
483
+ Key : record.RawData {Raw : []byte ("MTc3NzQ5NDEtNTdhMi00MmZhLWI0MzAtODkxMmE5NDI0YjNh" )},
484
+ Position : []byte ("eyJHcm91cElEIjoiNGQ2ZTBhMjktNzAwZi00Yjk4LWEzY2MtZWUyNzZhZTc4MjVjIiwiVG9waWMiOiJzdHJlYW0tNzhscG5jaHg3dHpweXF6LWdlbmVyYXRvciIsIlBhcnRpdGlvbiI6MCwiT2Zmc2V0IjoyMjF9" ),
485
+ },
486
+ wantErr : false ,
487
+ },
488
+ {
489
+ name : "opencdc with raw data" ,
490
+ config : processor.Config {
491
+ Settings : map [string ]string {"format" : "opencdc" },
492
+ },
493
+ record : record.Record {
494
+ Key : record.RawData {Raw : []byte ("one-key-raw-data" )},
495
+ Operation : record .OperationCreate ,
496
+ Metadata : map [string ]string {
497
+ "conduit.source.connector.id" : "dest-log-78lpnchx7tzpyqz:source-kafka" ,
498
+ "kafka.topic" : "stream-78lpnchx7tzpyqz-generator" ,
499
+ "opencdc.createdAt" : "1706028953595000000" ,
500
+ "opencdc.readAt" : "1706028953606997000" ,
501
+ "opencdc.version" : "v1" ,
502
+ },
503
+ Payload : record.Change {
504
+ Before : nil ,
505
+ After : record.RawData {
506
+ Raw : []byte (OpenCDCRecordPayload ),
507
+ },
508
+ },
509
+ Position : []byte ("eyJHcm91cElEIjoiNGQ2ZTBhMjktNzAwZi00Yjk4LWEzY2MtZWUyNzZhZTc4MjVjIiwiVG9waWMiOiJzdHJlYW0tNzhscG5jaHg3dHpweXF6LWdlbmVyYXRvciIsIlBhcnRpdGlvbiI6MCwiT2Zmc2V0IjoyMjF9" ),
510
+ },
511
+ want : record.Record {
512
+ Operation : record .OperationCreate ,
513
+ Metadata : record.Metadata {
514
+ "conduit.source.connector.id" : "source-generator-78lpnchx7tzpyqz:source" ,
515
+ "opencdc.readAt" : "1706028953595546000" ,
516
+ "opencdc.version" : "v1" ,
517
+ },
518
+ Payload : record.Change {
519
+ Before : nil ,
520
+ After : record.StructuredData {
521
+ "event_id" : float64 (1747353650 ),
522
+ "msg" : "string 0e8955b3-7fb5-4dda-8064-e10dc007f00d" ,
523
+ "pg_generator" : false ,
524
+ "sensor_id" : float64 (1250383582 ),
525
+ "triggered" : false ,
526
+ },
527
+ },
528
+ Key : record.RawData {Raw : []byte ("MTc3NzQ5NDEtNTdhMi00MmZhLWI0MzAtODkxMmE5NDI0YjNh" )},
529
+ Position : []byte ("eyJHcm91cElEIjoiNGQ2ZTBhMjktNzAwZi00Yjk4LWEzY2MtZWUyNzZhZTc4MjVjIiwiVG9waWMiOiJzdHJlYW0tNzhscG5jaHg3dHpweXF6LWdlbmVyYXRvciIsIlBhcnRpdGlvbiI6MCwiT2Zmc2V0IjoyMjF9" ),
530
+ },
531
+ wantErr : false ,
532
+ },
404
533
}
405
534
406
535
for _ , tt := range tests {
@@ -413,6 +542,7 @@ func TestUnwrap_Process(t *testing.T) {
413
542
if (err != nil ) != tt .wantErr {
414
543
t .Fatalf ("process() error = %v, wantErr = %v" , err , tt .wantErr )
415
544
}
545
+
416
546
if diff := cmp .Diff (tt .want , got ); diff != "" {
417
547
t .Errorf ("process() diff = %s" , diff )
418
548
}
0 commit comments