From 96abc032e5c5663f9cd259d48ec865d9c435592b Mon Sep 17 00:00:00 2001 From: Aaron Zeisler Date: Mon, 13 Jul 2026 15:16:14 -0700 Subject: [PATCH] test(ldtestdata): increase channel-wait timeouts to reduce CI flakiness test_data_source_test.go and test_data_source_flag_test.go passed a hardcoded time.Millisecond timeout to WaitForUpsert/WaitForInit/ WaitForNextInit/AssertChannelClosed, which wait on a channel populated by a producer goroutine. Under -race on slower CI runners (observed on Windows, Go 1.26), 1ms isn't enough margin and the wait can time out before the value is delivered even though nothing is wrong. Bump these to time.Second, which still fails fast on a genuine hang. --- .../ldtestdata/test_data_source_flag_test.go | 2 +- .../ldtestdata/test_data_source_test.go | 18 +++++++++--------- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/testhelpers/ldtestdata/test_data_source_flag_test.go b/testhelpers/ldtestdata/test_data_source_flag_test.go index 2ad31666..d3d42546 100644 --- a/testhelpers/ldtestdata/test_data_source_flag_test.go +++ b/testhelpers/ldtestdata/test_data_source_flag_test.go @@ -30,7 +30,7 @@ func verifyFlag(t *testing.T, configureFlag func(*FlagBuilder), expectedFlag *ld f := p.td.Flag("flagkey") configureFlag(f) p.td.Update(f) - up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), "flagkey", 1, time.Millisecond) + up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), "flagkey", 1, time.Second) upJSON := ldstoreimpl.Features().Serialize(up.Item) m.In(t).Assert(string(upJSON), m.JSONStrEqual(string(expectedJSON))) }) diff --git a/testhelpers/ldtestdata/test_data_source_test.go b/testhelpers/ldtestdata/test_data_source_test.go index aaf0d109..31242834 100644 --- a/testhelpers/ldtestdata/test_data_source_test.go +++ b/testhelpers/ldtestdata/test_data_source_test.go @@ -49,7 +49,7 @@ func (p testDataSourceTestParams) withDataSource(t *testing.T, action func(subsy closer := make(chan struct{}) ds.Start(closer) - if !th.AssertChannelClosed(t, closer, time.Millisecond, "start did not close channel") { + if !th.AssertChannelClosed(t, closer, time.Second, "start did not close channel") { t.FailNow() } p.updates.RequireStatusOf(t, interfaces.DataSourceStateValid) @@ -62,7 +62,7 @@ func TestTestDataSource(t *testing.T) { testDataSourceTest(t, func(p testDataSourceTestParams) { p.withDataSource(t, func(ds subsystems.DataSource) { expectedData := ldservices.NewServerSDKData() - p.updates.DataStore.WaitForInit(t, expectedData, time.Millisecond) + p.updates.DataStore.WaitForInit(t, expectedData, time.Second) assert.True(t, ds.IsInitialized()) }) }) @@ -74,7 +74,7 @@ func TestTestDataSource(t *testing.T) { Update(p.td.Flag("flag2").On(false)) p.withDataSource(t, func(subsystems.DataSource) { - initData := p.updates.DataStore.WaitForNextInit(t, time.Millisecond) + initData := p.updates.DataStore.WaitForNextInit(t, time.Second) dataMap := sharedtest.DataSetToMap(initData) require.Len(t, dataMap, 2) flags := dataMap[ldstoreimpl.Features()] @@ -93,7 +93,7 @@ func TestTestDataSource(t *testing.T) { p.withDataSource(t, func(subsystems.DataSource) { p.td.Update(p.td.Flag("flag1").On(true)) - up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), "flag1", 1, time.Millisecond) + up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), "flag1", 1, time.Second) assert.True(t, up.Item.Item.(*ldmodel.FeatureFlag).On) }) }) @@ -106,7 +106,7 @@ func TestTestDataSource(t *testing.T) { p.withDataSource(t, func(subsystems.DataSource) { p.td.Update(p.td.Flag("flag1").On(true)) - up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), "flag1", 2, time.Millisecond) + up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), "flag1", 2, time.Second) assert.True(t, up.Item.Item.(*ldmodel.FeatureFlag).On) }) }) @@ -130,7 +130,7 @@ func TestTestDataSource(t *testing.T) { p.withDataSource(t, func(subsystems.DataSource) { p.td.UsePreconfiguredFlag(flagv1) - up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), flagv1.Key, 1, time.Millisecond) + up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), flagv1.Key, 1, time.Second) assert.Equal(t, &flagv1, up.Item.Item.(*ldmodel.FeatureFlag)) updatedFlag := flagv1 @@ -139,7 +139,7 @@ func TestTestDataSource(t *testing.T) { expectedFlagV2.Version = 2 p.td.UsePreconfiguredFlag(updatedFlag) - up = p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), flagv1.Key, 2, time.Millisecond) + up = p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Features(), flagv1.Key, 2, time.Second) assert.Equal(t, &expectedFlagV2, up.Item.Item.(*ldmodel.FeatureFlag)) }) }) @@ -151,7 +151,7 @@ func TestTestDataSource(t *testing.T) { p.withDataSource(t, func(subsystems.DataSource) { p.td.UsePreconfiguredSegment(segmentv1) - up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Segments(), segmentv1.Key, 1, time.Millisecond) + up := p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Segments(), segmentv1.Key, 1, time.Second) assert.Equal(t, &segmentv1, up.Item.Item.(*ldmodel.Segment)) updatedSegment := segmentv1 @@ -160,7 +160,7 @@ func TestTestDataSource(t *testing.T) { expectedSegmentV2.Version = 2 p.td.UsePreconfiguredSegment(updatedSegment) - up = p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Segments(), segmentv1.Key, 2, time.Millisecond) + up = p.updates.DataStore.WaitForUpsert(t, ldstoreimpl.Segments(), segmentv1.Key, 2, time.Second) assert.Equal(t, &expectedSegmentV2, up.Item.Item.(*ldmodel.Segment)) }) })