github-code-scanning[bot] commented on code in PR #13197:
URL: https://github.com/apache/druid/pull/13197#discussion_r1182266785


##########
server/src/test/java/org/apache/druid/server/coordinator/rules/LoadRuleTest.java:
##########
@@ -117,397 +98,276 @@
   @Before
   public void setUp()
   {
-    EmittingLogger.registerEmitter(EMITTER);
-    EMITTER.start();
-    throttler = EasyMock.createMock(ReplicationThrottler.class);
-
     exec = MoreExecutors.listeningDecorator(Execs.multiThreaded(1, 
"LoadRuleTest-%d"));
     balancerStrategy = new 
CostBalancerStrategyFactory().createBalancerStrategy(exec);
     cachingCostBalancerStrategy = new 
CachingCostBalancerStrategy(ClusterCostCache.builder().build(), exec);
 
     mockBalancerStrategy = EasyMock.createMock(BalancerStrategy.class);
+    loadQueueManager = new SegmentLoadQueueManager(null, null, null);
   }
 
   @After
-  public void tearDown() throws Exception
+  public void tearDown()
   {
     exec.shutdown();
-    EMITTER.close();
   }
 
   @Test
   public void testLoad()
   {
-    
EasyMock.expect(throttler.canCreateReplicant(EasyMock.anyString())).andReturn(true).anyTimes();
-
     final LoadQueuePeon mockPeon = createEmptyPeon();
-    mockPeon.loadSegment(EasyMock.anyObject(), EasyMock.anyObject());
+    mockPeon.loadSegment(EasyMock.anyObject(), EasyMock.anyObject(), 
EasyMock.anyObject());
     EasyMock.expectLastCall().atLeastOnce();
 
-    LoadRule rule = createLoadRule(ImmutableMap.of(
-        "hot", 1,
-        DruidServer.DEFAULT_TIER, 2
-    ));
-
-    final DataSegment segment = createDataSegment("foo");
-
-    throttler.registerReplicantCreation(DruidServer.DEFAULT_TIER, 
segment.getId(), "hostNorm");
-    EasyMock.expectLastCall().once();
-
     if (!useRoundRobinAssignment) {
-      
EasyMock.expect(mockBalancerStrategy.findNewSegmentHomeReplicator(EasyMock.anyObject(),
 EasyMock.anyObject()))
+      
EasyMock.expect(mockBalancerStrategy.findServerToLoadSegment(EasyMock.anyObject(),
 EasyMock.anyObject()))
               .andDelegateTo(balancerStrategy)
-              .times(3);
+              .times(2);
     }
+    EasyMock.replay(mockPeon, mockBalancerStrategy);
 
-    EasyMock.replay(throttler, mockPeon, mockBalancerStrategy);
-
-    DruidCluster druidCluster = DruidClusterBuilder
-        .newBuilder()
-        .addTier(
-            "hot",
-            new ServerHolder(
-                new DruidServer("serverHot", "hostHot", null, 1000, 
ServerType.HISTORICAL, "hot", 1)
-                    .toImmutableDruidServer(),
-                mockPeon
-            )
-        )
-        .addTier(
-            DruidServer.DEFAULT_TIER,
-            new ServerHolder(
-                new DruidServer(
-                    "serverNorm",
-                    "hostNorm",
-                    null,
-                    1000,
-                    ServerType.HISTORICAL,
-                    DruidServer.DEFAULT_TIER,
-                    0
-                ).toImmutableDruidServer(),
-                mockPeon
-            )
-        )
+    DruidCluster druidCluster = DruidCluster
+        .builder()
+        .addTier(Tier.T1, createServerHolder(Tier.T1, mockPeon, false))
+        .addTier(Tier.T2, createServerHolder(Tier.T2, mockPeon, false))
         .build();
 
-    CoordinatorStats stats = rule.run(null, 
makeCoordinatorRuntimeParams(druidCluster, segment), segment);
+    final DataSegment segment = createDataSegment(DS_WIKI);
+    LoadRule rule = loadForever(ImmutableMap.of(Tier.T1, 1, Tier.T2, 2));
+    CoordinatorRunStats stats = runRuleAndGetStats(rule, segment, 
druidCluster);
+
+    Assert.assertEquals(1L, stats.getSegmentStat(Stats.Segments.ASSIGNED, 
Tier.T1, DS_WIKI));
+    Assert.assertEquals(1L, stats.getSegmentStat(Stats.Segments.ASSIGNED, 
Tier.T2, DS_WIKI));
 
-    Assert.assertEquals(1L, stats.getTieredStat(LoadRule.ASSIGNED_COUNT, 
"hot"));
-    Assert.assertEquals(1L, stats.getTieredStat(LoadRule.ASSIGNED_COUNT, 
DruidServer.DEFAULT_TIER));
+    EasyMock.verify(mockPeon, mockBalancerStrategy);
+  }
+
+  private CoordinatorRunStats runRuleAndGetStats(
+      LoadRule rule,
+      DataSegment segment,
+      DruidCluster cluster
+  )
+  {
+    return runRuleAndGetStats(rule, segment, 
makeCoordinatorRuntimeParams(cluster, segment));
+  }
 
-    EasyMock.verify(throttler, mockPeon, mockBalancerStrategy);
+  private CoordinatorRunStats runRuleAndGetStats(
+      LoadRule rule,
+      DataSegment segment,
+      DruidCoordinatorRuntimeParams params
+  )
+  {
+    final StrategicSegmentAssigner segmentAssigner = 
params.getSegmentAssigner();
+    rule.run(segment, segmentAssigner);
+    return segmentAssigner.getStats();
   }
 
   private DruidCoordinatorRuntimeParams makeCoordinatorRuntimeParams(
       DruidCluster druidCluster,
       DataSegment... usedSegments
   )
   {
-    return CoordinatorRuntimeParamsTestHelpers
-        .newBuilder()
-        .withDruidCluster(druidCluster)
-        .withSegmentReplicantLookup(SegmentReplicantLookup.make(druidCluster, 
false))
-        .withReplicationManager(throttler)
-        .withDynamicConfigs(
-            CoordinatorDynamicConfig
-                .builder()
-                .withUseRoundRobinSegmentAssignment(useRoundRobinAssignment)
-                .build()
-        )
-        .withRoundRobinServerSelector(useRoundRobinAssignment ? new 
RoundRobinServerSelector(druidCluster) : null)
-        .withBalancerStrategy(mockBalancerStrategy)
-        .withUsedSegmentsInTest(usedSegments)
-        .build();
+    return makeCoordinatorRuntimeParams(druidCluster, false, usedSegments);
   }
 
-  private DruidCoordinatorRuntimeParams 
makeCoordinatorRuntimeParamsWithLoadReplicationOnTimeout(
+  private DruidCoordinatorRuntimeParams makeCoordinatorRuntimeParams(
       DruidCluster druidCluster,
+      boolean replicateAfterLoadTimeout,

Review Comment:
   ## Useless parameter
   
   The parameter 'replicateAfterLoadTimeout' is never used.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/4913)



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to