github-advanced-security[bot] commented on code in PR #15415:
URL: https://github.com/apache/druid/pull/15415#discussion_r1402772389


##########
server/src/test/java/org/apache/druid/server/http/DataSourcesResourceTest.java:
##########
@@ -586,6 +588,203 @@
     EasyMock.verify(inventoryView);
   }
 
+  @Test
+  public void testGetUnusedSegmentDataSourceIntervals()
+  {
+    
EasyMock.expect(segmentsMetadataManager.iterateAllUnusedSegmentsForDatasource(
+            EasyMock.anyString(),
+            EasyMock.anyObject(Interval.class),
+            EasyMock.anyInt(),
+            EasyMock.anyInt()
+        ))
+        .andAnswer(mockIterateAllUnusedSegmentsForDatasource())
+        .atLeastOnce();
+    EasyMock.replay(segmentsMetadataManager);
+
+    List<Interval> expectedIntervals = new ArrayList<>();
+    
expectedIntervals.add(Intervals.of("2010-01-22T00:00:00.000Z/2010-01-23T00:00:00.000Z"));
+    
expectedIntervals.add(Intervals.of("2010-01-01T00:00:00.000Z/2010-01-02T00:00:00.000Z"));
+    DataSourcesResource dataSourcesResource =
+        new DataSourcesResource(null, segmentsMetadataManager, null, null, 
null, null);
+
+    Response response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "invalidDataSource",
+        null,
+        null,
+        null,
+        null
+    );
+    Assert.assertEquals(response.getEntity(), null);
+
+    response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "datasource1",
+        null,
+        null,
+        null,
+        null
+    );
+    TreeSet<Interval> actualIntervals = (TreeSet) response.getEntity();
+    Assert.assertEquals(2, actualIntervals.size());
+    List<Interval> intervalsInOrderFromEarliest = expectedIntervals.stream()
+        .sorted((o1, o2) -> Comparators.intervalsByStartThenEnd().compare(o1, 
o2))
+        .collect(Collectors.toList());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(0), 
actualIntervals.first());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(1), 
actualIntervals.last());
+
+    response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "datasource1",
+        "simple",
+        null,
+        null,
+        null
+    );
+    TreeMap<Interval, Map<DataSourcesResource.SimpleProperties, Object>> 
results = (TreeMap) response.getEntity();
+    Assert.assertEquals(2, results.size());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(0), 
results.firstKey());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(1), 
results.lastKey());
+    Assert.assertEquals(1, 
results.firstEntry().getValue().get(DataSourcesResource.SimpleProperties.count));
+    Assert.assertEquals(1, 
results.lastEntry().getValue().get(DataSourcesResource.SimpleProperties.count));
+
+    response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "datasource1",
+        null,
+        "full",
+        null,
+        null
+    );
+    Map<Interval, Map<SegmentId, Object>> results2 = ((Map<Interval, 
Map<SegmentId, Object>>) response.getEntity());
+    int i = 0;
+    List<DataSegment> segmentsInOrderFromEarliest = dataSegmentList.stream()
+        .filter(d -> d.getDataSource().equals("datasource1"))
+        .sorted((o1, o2) -> 
Comparators.intervalsByStartThenEnd().compare(o1.getInterval(), 
o2.getInterval()))
+        .collect(Collectors.toList());
+    for (Map.Entry<Interval, Map<SegmentId, Object>> entry : 
results2.entrySet()) {
+      for (Map.Entry<SegmentId, Object> entryInner : 
entry.getValue().entrySet()) {

Review Comment:
   ## Unread local variable
   
   Variable 'Entry<SegmentId,Object> entryInner' is never read.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/5994)



##########
server/src/test/java/org/apache/druid/server/http/DataSourcesResourceTest.java:
##########
@@ -586,6 +588,203 @@
     EasyMock.verify(inventoryView);
   }
 
+  @Test
+  public void testGetUnusedSegmentDataSourceIntervals()
+  {
+    
EasyMock.expect(segmentsMetadataManager.iterateAllUnusedSegmentsForDatasource(
+            EasyMock.anyString(),
+            EasyMock.anyObject(Interval.class),
+            EasyMock.anyInt(),
+            EasyMock.anyInt()
+        ))
+        .andAnswer(mockIterateAllUnusedSegmentsForDatasource())
+        .atLeastOnce();
+    EasyMock.replay(segmentsMetadataManager);
+
+    List<Interval> expectedIntervals = new ArrayList<>();
+    
expectedIntervals.add(Intervals.of("2010-01-22T00:00:00.000Z/2010-01-23T00:00:00.000Z"));
+    
expectedIntervals.add(Intervals.of("2010-01-01T00:00:00.000Z/2010-01-02T00:00:00.000Z"));
+    DataSourcesResource dataSourcesResource =
+        new DataSourcesResource(null, segmentsMetadataManager, null, null, 
null, null);
+
+    Response response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "invalidDataSource",
+        null,
+        null,
+        null,
+        null
+    );
+    Assert.assertEquals(response.getEntity(), null);
+
+    response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "datasource1",
+        null,
+        null,
+        null,
+        null
+    );
+    TreeSet<Interval> actualIntervals = (TreeSet) response.getEntity();
+    Assert.assertEquals(2, actualIntervals.size());
+    List<Interval> intervalsInOrderFromEarliest = expectedIntervals.stream()
+        .sorted((o1, o2) -> Comparators.intervalsByStartThenEnd().compare(o1, 
o2))
+        .collect(Collectors.toList());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(0), 
actualIntervals.first());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(1), 
actualIntervals.last());
+
+    response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "datasource1",
+        "simple",
+        null,
+        null,
+        null
+    );
+    TreeMap<Interval, Map<DataSourcesResource.SimpleProperties, Object>> 
results = (TreeMap) response.getEntity();
+    Assert.assertEquals(2, results.size());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(0), 
results.firstKey());
+    Assert.assertEquals(intervalsInOrderFromEarliest.get(1), 
results.lastKey());
+    Assert.assertEquals(1, 
results.firstEntry().getValue().get(DataSourcesResource.SimpleProperties.count));
+    Assert.assertEquals(1, 
results.lastEntry().getValue().get(DataSourcesResource.SimpleProperties.count));
+
+    response = 
dataSourcesResource.getIntervalsWithUnusedSegmentsOrAllUnusedSegmentsPerIntervals(
+        "datasource1",
+        null,
+        "full",
+        null,
+        null
+    );
+    Map<Interval, Map<SegmentId, Object>> results2 = ((Map<Interval, 
Map<SegmentId, Object>>) response.getEntity());
+    int i = 0;
+    List<DataSegment> segmentsInOrderFromEarliest = dataSegmentList.stream()
+        .filter(d -> d.getDataSource().equals("datasource1"))
+        .sorted((o1, o2) -> 
Comparators.intervalsByStartThenEnd().compare(o1.getInterval(), 
o2.getInterval()))
+        .collect(Collectors.toList());
+    for (Map.Entry<Interval, Map<SegmentId, Object>> entry : 
results2.entrySet()) {
+      for (Map.Entry<SegmentId, Object> entryInner : 
entry.getValue().entrySet()) {
+        Assert.assertEquals(segmentsInOrderFromEarliest.get(i).getInterval(), 
entry.getKey());
+        Assert.assertEquals(
+            segmentsInOrderFromEarliest.get(i),
+            ((Map<String, Object>) 
entry.getValue().get(segmentsInOrderFromEarliest.get(i).getId())).get("metadata")
+        );
+        i++;
+      }
+    }
+    EasyMock.verify(segmentsMetadataManager);
+  }
+
+  @Test
+  public void testGetUnusedSegmentsInIntervalInDataSource()
+  {
+    
EasyMock.expect(segmentsMetadataManager.iterateAllUnusedSegmentsForDatasource(
+            EasyMock.anyString(),
+            EasyMock.anyObject(Interval.class),
+            EasyMock.anyInt(),
+            EasyMock.anyInt()
+        ))
+        .andAnswer(mockIterateAllUnusedSegmentsForDatasource())
+        .atLeastOnce();
+    EasyMock.replay(segmentsMetadataManager);
+
+    DataSourcesResource dataSourcesResource =
+        new DataSourcesResource(null, segmentsMetadataManager, null, null, 
null, null);
+    Response response = dataSourcesResource.getUnusedSegmentsInInterval(
+        "invalidDataSource",
+        "2010-01-01/P1D",
+        null,
+        null,
+        null,
+        null
+    );
+    Assert.assertEquals(ImmutableSet.of(), response.getEntity());
+
+    response = dataSourcesResource.getUnusedSegmentsInInterval(
+        "datasource1",
+        "2010-03-01/P1D",
+        null,
+        null,
+        null,
+        null
+    );
+    // interval not present in the datasource
+    Assert.assertEquals(ImmutableSet.of(), response.getEntity());
+
+    response = dataSourcesResource.getUnusedSegmentsInInterval("datasource1", 
"2010-01-01/P1D", null, null, null, null);
+    Assert.assertEquals(ImmutableSet.of(dataSegmentList.get(0).getId()), 
response.getEntity());
+
+    response = dataSourcesResource.getUnusedSegmentsInInterval("datasource1", 
"2010-01-01/P1M", null, null, null, null);
+    Assert.assertEquals(
+        ImmutableSet.of(dataSegmentList.get(1).getId(), 
dataSegmentList.get(0).getId()),
+        response.getEntity()
+    );
+
+    response = dataSourcesResource.getUnusedSegmentsInInterval(
+        "datasource1",
+        "2010-01-01/P1M",
+        "simple",
+        null,
+        null,
+        null
+    );
+    Map<Interval, Map<DataSourcesResource.SimpleProperties, Object>> results =
+        ((Map<Interval, Map<DataSourcesResource.SimpleProperties, Object>>) 
response.getEntity());
+    Assert.assertEquals(2, results.size());
+    int i;
+    for (i = 0; i < 2; i++) {
+      
Assert.assertTrue(results.containsKey(dataSegmentList.get(i).getInterval()));
+      Assert.assertEquals(
+          1,
+          
(results.get(dataSegmentList.get(i).getInterval())).get(DataSourcesResource.SimpleProperties.count)
+      );
+    }
+
+    response = dataSourcesResource.getUnusedSegmentsInInterval("datasource1", 
"2010-01-01/P1M", null, "full", null, null);
+    Map<Interval, Map<SegmentId, Object>> results1 = ((Map<Interval, 
Map<SegmentId, Object>>) response.getEntity());
+    i = 0;
+    List<DataSegment> segmentsInOrderFromEarliest = dataSegmentList.stream()
+        .filter(d -> d.getDataSource().equals("datasource1"))
+        .sorted((o1, o2) -> 
Comparators.intervalsByStartThenEnd().compare(o1.getInterval(), 
o2.getInterval()))
+        .collect(Collectors.toList());
+    for (Map.Entry<Interval, Map<SegmentId, Object>> entry : 
results1.entrySet()) {
+      for (Map.Entry<SegmentId, Object> entryInner : 
entry.getValue().entrySet()) {

Review Comment:
   ## Unread local variable
   
   Variable 'Entry<SegmentId,Object> entryInner' is never read.
   
   [Show more 
details](https://github.com/apache/druid/security/code-scanning/5995)



-- 
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