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]