From d0d9e4679928eecae679239320ba8fb713a72b73 Mon Sep 17 00:00:00 2001 From: yangxuan Date: Wed, 13 Mar 2024 14:44:17 +0800 Subject: [PATCH] Fix compaction view manager ut Signed-off-by: yangxuan --- internal/datacoord/compaction_trigger_test.go | 4 +- internal/datacoord/compaction_view_manager.go | 7 ++-- .../datacoord/compaction_view_manager_test.go | 42 ++++++++++++++----- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/internal/datacoord/compaction_trigger_test.go b/internal/datacoord/compaction_trigger_test.go index e32820baebdee..a868fb4d4854d 100644 --- a/internal/datacoord/compaction_trigger_test.go +++ b/internal/datacoord/compaction_trigger_test.go @@ -2325,6 +2325,8 @@ func (s *CompactionTriggerSuite) TestEnableCompactionConfigDynamicly() { } enableCompKey := paramtable.Get().DataCoordCfg.EnableCompaction.Key enableAutoCompKey := paramtable.Get().DataCoordCfg.EnableAutoCompaction.Key + defer paramtable.Get().Reset(enableCompKey) + defer paramtable.Get().Reset(enableAutoCompKey) for _, test := range tests { s.Run(test.description, func() { @@ -2362,7 +2364,7 @@ func (s *CompactionTriggerSuite) TestEnableCompactionConfigDynamicly() { } s.tr.stop() - // test if trigger compaction by triggerSingleCompaction and forceTriggerCompaction + // test triggerSingleCompaction and forceTriggerCompaction if test.triggered { s.Require().True(autoCompactionEnabled()) err := s.tr.triggerSingleCompaction(s.collectionID, s.partitionID, 1, s.channel, false) diff --git a/internal/datacoord/compaction_view_manager.go b/internal/datacoord/compaction_view_manager.go index e44a60235370b..58f0c61b52c47 100644 --- a/internal/datacoord/compaction_view_manager.go +++ b/internal/datacoord/compaction_view_manager.go @@ -12,6 +12,7 @@ import ( "github.com/milvus-io/milvus/internal/proto/datapb" "github.com/milvus-io/milvus/pkg/log" "github.com/milvus-io/milvus/pkg/util/logutil" + "github.com/milvus-io/milvus/pkg/util/paramtable" "github.com/milvus-io/milvus/pkg/util/typeutil" ) @@ -53,12 +54,12 @@ func (m *CompactionViewManager) checkLoop() { defer logutil.LogPanic() defer m.closeWg.Done() - // TODO: Only process L0 compaction now, so just return if its not enabled + // TODO: Only process L0 compaction now L0SegmentEnabled := func() bool { - return autoCompactionEnabled() && Params.DataCoordCfg.EnableLevelZeroSegment.GetAsBool() + return autoCompactionEnabled() && paramtable.Get().DataCoordCfg.EnableLevelZeroSegment.GetAsBool() } - interval := Params.DataCoordCfg.GlobalCompactionInterval.GetAsDuration(time.Second) + interval := paramtable.Get().DataCoordCfg.GlobalCompactionInterval.GetAsDuration(time.Second) checkTicker := time.NewTicker(interval) defer checkTicker.Stop() diff --git a/internal/datacoord/compaction_view_manager_test.go b/internal/datacoord/compaction_view_manager_test.go index f3fac3d1fcb4c..68d92b5b31dfd 100644 --- a/internal/datacoord/compaction_view_manager_test.go +++ b/internal/datacoord/compaction_view_manager_test.go @@ -71,6 +71,10 @@ func genSegmentsForMeta(label *CompactionGroupLabel) map[int64]*SegmentInfo { } func (s *CompactionViewManagerSuite) SetupTest() { + s.SetupSubTest() +} + +func (s *CompactionViewManagerSuite) SetupSubTest() { s.mockAlloc = NewNMockAllocator(s.T()) s.mockTriggerManager = NewMockTriggerManager(s.T()) @@ -93,20 +97,36 @@ func (s *CompactionViewManagerSuite) TestCheckLoop() { s.m.Close() }) - s.Run("Test not enable auto compaction", func() { - paramtable.Get().Save(Params.DataCoordCfg.EnableAutoCompaction.Key, "false") - defer paramtable.Get().Reset(Params.DataCoordCfg.EnableAutoCompaction.Key) - + s.Run("Test not enable compaction", func() { + var ( + globalIntervalK = paramtable.Get().DataCoordCfg.GlobalCompactionInterval.Key + enableCompK = paramtable.Get().DataCoordCfg.EnableCompaction.Key + enableAutoCompK = paramtable.Get().DataCoordCfg.EnableAutoCompaction.Key + enableL0K = paramtable.Get().DataCoordCfg.EnableLevelZeroSegment.Key + ) + defer paramtable.Get().Reset(globalIntervalK) + defer paramtable.Get().Reset(enableCompK) + defer paramtable.Get().Reset(enableAutoCompK) + defer paramtable.Get().Reset(enableL0K) + + paramtable.Get().Save(globalIntervalK, "0.01") + paramtable.Get().Save(enableCompK, "false") + paramtable.Get().Save(enableAutoCompK, "true") + + // no mocks needed for no events will be triggerred s.m.Start() - s.m.closeWg.Wait() - }) - s.Run("Test not enable levelZero segment", func() { - paramtable.Get().Save(Params.DataCoordCfg.EnableLevelZeroSegment.Key, "false") - defer paramtable.Get().Reset(Params.DataCoordCfg.EnableLevelZeroSegment.Key) + waitDur := 100 * time.Millisecond + <-time.After(waitDur) + paramtable.Get().Save(enableAutoCompK, "false") + paramtable.Get().Save(enableCompK, "true") - s.m.Start() - s.m.closeWg.Wait() + <-time.After(waitDur) + paramtable.Get().Save(enableL0K, "false") + paramtable.Get().Save(enableAutoCompK, "true") + + <-time.After(waitDur) + s.m.Close() }) }