use of io.datarouter.util.tuple.Range in project datarouter by hotpads.
the class PrefixFieldSetComparatorTests method testInclusiveExclusive.
@Test
public void testInclusiveExclusive() {
SortedBeanKey endOfRange2 = new SortedBeanKey("emu", "d", 5, "g");
Range<SortedBeanKey> rangeEnd2Inclusive = new Range<>(null, true, endOfRange2, true);
Range<SortedBeanKey> rangeEnd2Exclusive = new Range<>(null, true, endOfRange2, false);
// the candidate would normally compare after the endOfRange, but should be included here
SortedBeanKey candidate3 = new SortedBeanKey("emu", "d", 5, "g");
Assert.assertTrue(candidate3.compareTo(endOfRange2) == 0);
// but in the prefix range
Assert.assertTrue(FieldSetRangeFilter.include(candidate3, rangeEnd2Inclusive, NODE_NAME));
// even with inclusive=false
Assert.assertFalse(FieldSetRangeFilter.include(candidate3, rangeEnd2Exclusive, NODE_NAME));
}
use of io.datarouter.util.tuple.Range in project datarouter by hotpads.
the class BaseSortedNodeIntegrationTests method testIncrementalScan2.
@Test
public void testIncrementalScan2() {
var smallIterateBatchSize = new Config().setResponseBatchSize(3);
var alp1 = new SortedBeanKey(SortedBeans.RANGE_alp, null, null, null);
var emu1 = new SortedBeanKey(SortedBeans.RANGE_emu, null, null, null);
int expectedSize1b = (SortedBeans.RANGE_LENGTH_alp_emu_inc - 1) * SortedBeans.NUM_ELEMENTS * SortedBeans.NUM_ELEMENTS * SortedBeans.NUM_ELEMENTS;
List<SortedBeanKey> result1b = dao.scanKeys(new Range<>(alp1, true, emu1, false), smallIterateBatchSize).list();
Assert.assertEquals(result1b.size(), expectedSize1b);
Assert.assertTrue(ComparableTool.isSorted(result1b));
}
use of io.datarouter.util.tuple.Range in project datarouter by hotpads.
the class BaseSortedNodeIntegrationTests method testIncrementalScan.
// small batch sizes to make sure we're resuming each batch from the correct spot
@Test
public void testIncrementalScan() {
var smallIterateBatchSize = new Config().setResponseBatchSize(3);
int expectedSize1 = SortedBeans.RANGE_LENGTH_alp_emu_inc * SortedBeans.NUM_ELEMENTS * SortedBeans.NUM_ELEMENTS * SortedBeans.NUM_ELEMENTS;
var alp1 = new SortedBeanKey(SortedBeans.RANGE_alp, null, null, null);
var emu1 = new SortedBeanKey(SortedBeans.RANGE_emu, null, null, null);
List<SortedBeanKey> result1 = dao.scanKeys(new Range<>(alp1, true, emu1, true), smallIterateBatchSize).list();
Assert.assertEquals(result1.size(), expectedSize1);
Assert.assertTrue(ComparableTool.isSorted(result1));
}
use of io.datarouter.util.tuple.Range in project datarouter by hotpads.
the class ClusterSettingsHandler method logsForAll.
@Handler
public Mav logsForAll(OptionalString explicitStartIso, OptionalBoolean inclusiveStart) {
Mav mav = new Mav(files.jsp.admin.datarouter.setting.clusterSettingsLogJsp);
mav.put("showingAllSettings", true);
long startCreatedMs = explicitStartIso.map(isoDate -> LocalDateTime.parse(isoDate, DateTimeFormatter.ISO_LOCAL_DATE_TIME)).map(localDate -> localDate.atZone(ZoneId.systemDefault())).map(ZonedDateTime::toInstant).map(Instant::toEpochMilli).orElseGet(System::currentTimeMillis);
long reverseStartCreatedMs = Long.MAX_VALUE - startCreatedMs;
Range<ClusterSettingLogByReversedCreatedMsKey> range = new Range<>(new ClusterSettingLogByReversedCreatedMsKey(reverseStartCreatedMs, null), inclusiveStart.orElse(false));
clusterSettingLogDao.scanByReversedCreatedMs(range, CLUSTER_SETTING_LOGS_PAGE_SIZE).map(setting -> new ClusterSettingLogJspDto(setting, getUserZoneId())).flush(logs -> mav.put("logs", logs)).flush(logs -> mav.put("hasNextPage", logs.size() == CLUSTER_SETTING_LOGS_PAGE_SIZE));
mav.put("hasPreviousPage", explicitStartIso.isPresent());
return mav;
}
use of io.datarouter.util.tuple.Range in project datarouter by hotpads.
the class ClusterSettingService method scanClusterSettingAndValidityWithPrefix.
public Scanner<ClusterSettingAndValidityJspDto> scanClusterSettingAndValidityWithPrefix(String prefix) {
WebappInstance currentWebappInstance = webappInstanceDao.get(webappInstanceService.buildCurrentWebappInstanceKey());
Range<ClusterSettingKey> range = prefix == null ? Range.everything() : KeyRangeTool.forPrefixWithWildcard(prefix, name -> new ClusterSettingKey(name, null, null, null));
return clusterSettingDao.scan(range).map(setting -> {
ClusterSettingValidity validity = getValidityForWebappInstance(setting, currentWebappInstance);
return new ClusterSettingAndValidityJspDto(setting, validity);
});
}
Aggregations