From d07c6c15b0f2dba1aed265ee5f61e63efcadbdb4 Mon Sep 17 00:00:00 2001 From: Yevgeny Pats <16490766+yevgenypats@users.noreply.github.com> Date: Sun, 12 Feb 2023 17:05:27 +0200 Subject: [PATCH 1/2] fix: Take2 of fixing race in destination testing --- internal/memdb/memdb_test.go | 36 ++++++++++++++++++--------- plugins/destination/plugin_testing.go | 11 +++++++- 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/internal/memdb/memdb_test.go b/internal/memdb/memdb_test.go index 5adcab81ff..ce0a3168f7 100644 --- a/internal/memdb/memdb_test.go +++ b/internal/memdb/memdb_test.go @@ -14,30 +14,42 @@ import ( ) func TestPluginUnmanagedClient(t *testing.T) { - p := destination.NewPlugin("test", "development", NewClient) - destination.PluginTestSuiteRunner(t, p, nil, + destination.PluginTestSuiteRunner( + t, + func() *destination.Plugin { + return destination.NewPlugin("test", "development", NewClient) + }, + nil, destination.PluginTestSuiteTests{}) } func TestPluginManagedClient(t *testing.T) { - p := destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter()) - destination.PluginTestSuiteRunner(t, p, nil, + destination.PluginTestSuiteRunner(t, + func() *destination.Plugin { + return destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter()) + }, + nil, destination.PluginTestSuiteTests{}) } func TestPluginManagedClientWithSmallBatchSize(t *testing.T) { - p := destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter(), - destination.WithDefaultBatchSize(1), - destination.WithDefaultBatchSizeBytes(1)) - destination.PluginTestSuiteRunner(t, p, nil, + destination.PluginTestSuiteRunner(t, + func() *destination.Plugin { + return destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter(), + destination.WithDefaultBatchSize(1), + destination.WithDefaultBatchSizeBytes(1)) + }, nil, destination.PluginTestSuiteTests{}) } func TestPluginManagedClientWithLargeBatchSize(t *testing.T) { - p := destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter(), - destination.WithDefaultBatchSize(100000000), - destination.WithDefaultBatchSizeBytes(100000000)) - destination.PluginTestSuiteRunner(t, p, nil, + destination.PluginTestSuiteRunner(t, + func() *destination.Plugin { + return destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter(), + destination.WithDefaultBatchSize(100000000), + destination.WithDefaultBatchSizeBytes(100000000)) + }, + nil, destination.PluginTestSuiteTests{}) } diff --git a/plugins/destination/plugin_testing.go b/plugins/destination/plugin_testing.go index eca9be202d..db39cd6ec7 100644 --- a/plugins/destination/plugin_testing.go +++ b/plugins/destination/plugin_testing.go @@ -58,7 +58,9 @@ func getTestLogger(t *testing.T) zerolog.Logger { ).Level(zerolog.TraceLevel).With().Timestamp().Logger() } -func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSuiteTests) { +type NewPluginFunc func() *Plugin + +func PluginTestSuiteRunner(t *testing.T, newPlugin NewPluginFunc, spec any, tests PluginTestSuiteTests) { t.Helper() destSpec := specs.Destination{ Name: "testsuite", @@ -76,6 +78,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu t.Skip("skipping " + t.Name()) } destSpec.Name = "test_write_overwrite" + p := newPlugin() if err := suite.destinationPluginTestWriteOverwrite(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } @@ -87,6 +90,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu t.Skip("skipping " + t.Name()) } destSpec.Name = "test_write_overwrite_delete_stale" + p := newPlugin() if err := suite.destinationPluginTestWriteOverwriteDeleteStale(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } @@ -99,6 +103,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu } destSpec.WriteMode = specs.WriteModeOverwrite destSpec.Name = "test_migrate_overwrite" + p := newPlugin() if err := suite.destinationPluginTestMigrate(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } @@ -112,6 +117,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu destSpec.WriteMode = specs.WriteModeOverwrite destSpec.MigrateMode = specs.MigrateModeForced destSpec.Name = "test_migrate_overwrite_force" + p := newPlugin() if err := suite.destinationPluginTestMigrate(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } @@ -123,6 +129,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu t.Skip("skipping " + t.Name()) } destSpec.Name = "test_write_append" + p := newPlugin() if err := suite.destinationPluginTestWriteAppend(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } @@ -135,6 +142,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu } destSpec.WriteMode = specs.WriteModeAppend destSpec.Name = "test_migrate_append" + p := newPlugin() if err := suite.destinationPluginTestMigrate(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } @@ -148,6 +156,7 @@ func PluginTestSuiteRunner(t *testing.T, p *Plugin, spec any, tests PluginTestSu destSpec.WriteMode = specs.WriteModeAppend destSpec.MigrateMode = specs.MigrateModeForced destSpec.Name = "test_migrate_append_force" + p := newPlugin() if err := suite.destinationPluginTestMigrate(ctx, p, logger, destSpec); err != nil { t.Fatal(err) } From 24f3cfca7edf0f32a5092854852792b631183cbc Mon Sep 17 00:00:00 2001 From: Yevgeny Pats <16490766+yevgenypats@users.noreply.github.com> Date: Sun, 12 Feb 2023 17:08:21 +0200 Subject: [PATCH 2/2] fix fmt --- internal/memdb/memdb_test.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/internal/memdb/memdb_test.go b/internal/memdb/memdb_test.go index ce0a3168f7..5b501736b6 100644 --- a/internal/memdb/memdb_test.go +++ b/internal/memdb/memdb_test.go @@ -36,18 +36,18 @@ func TestPluginManagedClientWithSmallBatchSize(t *testing.T) { destination.PluginTestSuiteRunner(t, func() *destination.Plugin { return destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter(), - destination.WithDefaultBatchSize(1), - destination.WithDefaultBatchSizeBytes(1)) + destination.WithDefaultBatchSize(1), + destination.WithDefaultBatchSizeBytes(1)) }, nil, destination.PluginTestSuiteTests{}) } func TestPluginManagedClientWithLargeBatchSize(t *testing.T) { - destination.PluginTestSuiteRunner(t, + destination.PluginTestSuiteRunner(t, func() *destination.Plugin { return destination.NewPlugin("test", "development", NewClient, destination.WithManagedWriter(), - destination.WithDefaultBatchSize(100000000), - destination.WithDefaultBatchSizeBytes(100000000)) + destination.WithDefaultBatchSize(100000000), + destination.WithDefaultBatchSizeBytes(100000000)) }, nil, destination.PluginTestSuiteTests{})