Search in sources :

Example 1 with Range

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));
}
Also used : SortedBeanKey(io.datarouter.storage.test.node.basic.sorted.SortedBeanKey) Range(io.datarouter.util.tuple.Range) Test(org.testng.annotations.Test)

Example 2 with Range

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));
}
Also used : Config(io.datarouter.storage.config.Config) Range(io.datarouter.util.tuple.Range) Test(org.testng.annotations.Test)

Example 3 with Range

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));
}
Also used : Config(io.datarouter.storage.config.Config) Range(io.datarouter.util.tuple.Range) Test(org.testng.annotations.Test)

Example 4 with Range

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;
}
Also used : Scanner(io.datarouter.scanner.Scanner) ServerTypes(io.datarouter.storage.servertype.ServerTypes) ServerType(io.datarouter.storage.servertype.ServerType) ClusterSettingLogKey(io.datarouter.clustersetting.storage.clustersettinglog.ClusterSettingLogKey) ObjectTool(io.datarouter.util.lang.ObjectTool) DatarouterHtmlEmailService(io.datarouter.web.email.DatarouterHtmlEmailService) ZonedDateTime(java.time.ZonedDateTime) CachedSetting(io.datarouter.storage.setting.cached.CachedSetting) OptionalString(io.datarouter.web.handler.types.optional.OptionalString) DatarouterClusterSettingRoot(io.datarouter.clustersetting.config.DatarouterClusterSettingRoot) DatarouterSettingTag(io.datarouter.storage.setting.DatarouterSettingTag) ClusterSettingLogAction(io.datarouter.clustersetting.ClusterSettingLogAction) ChangelogRecorder(io.datarouter.instrumentation.changelog.ChangelogRecorder) ClusterSetting(io.datarouter.clustersetting.storage.clustersetting.ClusterSetting) ClusterSettingEmailType(io.datarouter.email.type.DatarouterEmailTypes.ClusterSettingEmailType) DatarouterServerTypeDetector(io.datarouter.storage.servertype.DatarouterServerTypeDetector) Map(java.util.Map) J2HtmlDatarouterEmailBuilder(io.datarouter.email.html.J2HtmlDatarouterEmailBuilder) SimpleSettingCategory(io.datarouter.storage.setting.SettingCategory.SimpleSettingCategory) SettingRootFinder(io.datarouter.storage.setting.SettingRoot.SettingRootFinder) ClusterSettingLogByReversedCreatedMsKey(io.datarouter.clustersetting.storage.clustersettinglog.ClusterSettingLogByReversedCreatedMsKey) DatarouterEmailLinkBuilder(io.datarouter.email.email.DatarouterEmailLinkBuilder) ServerTypeDetector(io.datarouter.storage.servertype.ServerTypeDetector) DatarouterChangelogDtoBuilder(io.datarouter.instrumentation.changelog.ChangelogRecorder.DatarouterChangelogDtoBuilder) Set(java.util.Set) ClusterSettingValidity(io.datarouter.clustersetting.ClusterSettingValidity) Instant(java.time.Instant) Collectors(java.util.stream.Collectors) ZoneId(java.time.ZoneId) ContainerTag(j2html.tags.ContainerTag) Range(io.datarouter.util.tuple.Range) List(java.util.List) Setting(io.datarouter.storage.setting.Setting) ClusterSettingLogJspDto(io.datarouter.clustersetting.web.dto.ClusterSettingLogJspDto) SettingNode(io.datarouter.storage.setting.SettingNode) Entry(java.util.Map.Entry) Optional(java.util.Optional) DatarouterClusterSettingFiles(io.datarouter.clustersetting.config.DatarouterClusterSettingFiles) DatarouterClusterSettingPaths(io.datarouter.clustersetting.config.DatarouterClusterSettingPaths) SettingNameMatchResult(io.datarouter.clustersetting.service.ClusterSettingSearchService.SettingNameMatchResult) ClusterSettingService(io.datarouter.clustersetting.service.ClusterSettingService) TagCreator.text(j2html.TagCreator.text) SettingJspDto(io.datarouter.clustersetting.web.dto.SettingJspDto) ClusterSettingJspDto(io.datarouter.clustersetting.web.dto.ClusterSettingJspDto) LocalDateTime(java.time.LocalDateTime) DatarouterClusterSettingLogDao(io.datarouter.clustersetting.storage.clustersettinglog.DatarouterClusterSettingLogDao) HashMap(java.util.HashMap) ClusterSettingSearchService(io.datarouter.clustersetting.service.ClusterSettingSearchService) TreeSet(java.util.TreeSet) ClusterSettingScope(io.datarouter.clustersetting.ClusterSettingScope) ArrayList(java.util.ArrayList) LinkedHashMap(java.util.LinkedHashMap) Inject(javax.inject.Inject) SettingRoot(io.datarouter.storage.setting.SettingRoot) CachedClusterSettingTags(io.datarouter.storage.setting.cached.CachedClusterSettingTags) SettingNodeJspDto(io.datarouter.clustersetting.web.dto.SettingNodeJspDto) ClusterSettingKey(io.datarouter.clustersetting.storage.clustersetting.ClusterSettingKey) DatarouterWebPaths(io.datarouter.web.config.DatarouterWebPaths) StandardDatarouterEmailHeaderService(io.datarouter.web.email.StandardDatarouterEmailHeaderService) Mav(io.datarouter.web.handler.mav.Mav) SettingCategory(io.datarouter.storage.setting.SettingCategory) StringTool(io.datarouter.util.string.StringTool) TagCreator.a(j2html.TagCreator.a) ZonedDateFormatterTool(io.datarouter.util.time.ZonedDateFormatterTool) OptionalBoolean(io.datarouter.web.handler.types.optional.OptionalBoolean) DomContent(j2html.tags.DomContent) DatarouterClusterSettingDao(io.datarouter.clustersetting.storage.clustersetting.DatarouterClusterSettingDao) J2HtmlLegendTable(io.datarouter.web.html.j2html.J2HtmlLegendTable) ClusterSettingLog(io.datarouter.clustersetting.storage.clustersettinglog.ClusterSettingLog) DateTimeFormatter(java.time.format.DateTimeFormatter) BaseHandler(io.datarouter.web.handler.BaseHandler) Comparator(java.util.Comparator) Pair(io.datarouter.util.tuple.Pair) Mav(io.datarouter.web.handler.mav.Mav) ClusterSettingLogJspDto(io.datarouter.clustersetting.web.dto.ClusterSettingLogJspDto) ClusterSettingLogByReversedCreatedMsKey(io.datarouter.clustersetting.storage.clustersettinglog.ClusterSettingLogByReversedCreatedMsKey) ZonedDateTime(java.time.ZonedDateTime) Range(io.datarouter.util.tuple.Range) BaseHandler(io.datarouter.web.handler.BaseHandler)

Example 5 with Range

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);
    });
}
Also used : Scanner(io.datarouter.scanner.Scanner) DatarouterServerTypeSupplier(io.datarouter.storage.config.properties.DatarouterServerTypeSupplier) ServerTypes(io.datarouter.storage.servertype.ServerTypes) ServerType(io.datarouter.storage.servertype.ServerType) ClusterSettingFinder(io.datarouter.clustersetting.ClusterSettingFinder) CachedSetting(io.datarouter.storage.setting.cached.CachedSetting) DatarouterClusterSettingLogDao(io.datarouter.clustersetting.storage.clustersettinglog.DatarouterClusterSettingLogDao) Singleton(javax.inject.Singleton) DatarouterClusterSettingRoot(io.datarouter.clustersetting.config.DatarouterClusterSettingRoot) ServerName(io.datarouter.storage.config.properties.ServerName) Function(java.util.function.Function) DatarouterSettingTag(io.datarouter.storage.setting.DatarouterSettingTag) ClusterSettingScope(io.datarouter.clustersetting.ClusterSettingScope) ClusterSettingAndValidityJspDto(io.datarouter.clustersetting.web.dto.ClusterSettingAndValidityJspDto) Inject(javax.inject.Inject) ClusterSetting(io.datarouter.clustersetting.storage.clustersetting.ClusterSetting) CachedClusterSettingTags(io.datarouter.storage.setting.cached.CachedClusterSettingTags) Map(java.util.Map) KeyRangeTool(io.datarouter.storage.util.KeyRangeTool) SettingRootFinder(io.datarouter.storage.setting.SettingRoot.SettingRootFinder) ClusterSettingScopeComparator(io.datarouter.clustersetting.ClusterSettingScopeComparator) DefaultSettingValue(io.datarouter.storage.setting.DefaultSettingValue) WebappInstanceService(io.datarouter.webappinstance.service.WebappInstanceService) ClusterSettingKey(io.datarouter.clustersetting.storage.clustersetting.ClusterSettingKey) ClusterSettingValidity(io.datarouter.clustersetting.ClusterSettingValidity) WebappInstance(io.datarouter.webappinstance.storage.webappinstance.WebappInstance) StringTool(io.datarouter.util.string.StringTool) Objects(java.util.Objects) Range(io.datarouter.util.tuple.Range) List(java.util.List) EnvironmentName(io.datarouter.storage.config.properties.EnvironmentName) ClusterSettingComparisonTool(io.datarouter.clustersetting.ClusterSettingComparisonTool) DatarouterClusterSettingDao(io.datarouter.clustersetting.storage.clustersetting.DatarouterClusterSettingDao) DatarouterEnvironmentTypeSupplier(io.datarouter.storage.config.properties.DatarouterEnvironmentTypeSupplier) BooleanTool(io.datarouter.util.BooleanTool) Optional(java.util.Optional) DatarouterWebappInstanceDao(io.datarouter.webappinstance.storage.webappinstance.DatarouterWebappInstanceDao) ClusterSettingKey(io.datarouter.clustersetting.storage.clustersetting.ClusterSettingKey) ClusterSettingAndValidityJspDto(io.datarouter.clustersetting.web.dto.ClusterSettingAndValidityJspDto) ClusterSettingValidity(io.datarouter.clustersetting.ClusterSettingValidity) WebappInstance(io.datarouter.webappinstance.storage.webappinstance.WebappInstance)

Aggregations

Range (io.datarouter.util.tuple.Range)16 Config (io.datarouter.storage.config.Config)8 Test (org.testng.annotations.Test)7 Inject (javax.inject.Inject)5 Objects (java.util.Objects)3 Singleton (javax.inject.Singleton)3 Logger (org.slf4j.Logger)3 LoggerFactory (org.slf4j.LoggerFactory)3 ClusterSettingScope (io.datarouter.clustersetting.ClusterSettingScope)2 ClusterSettingValidity (io.datarouter.clustersetting.ClusterSettingValidity)2 DatarouterClusterSettingRoot (io.datarouter.clustersetting.config.DatarouterClusterSettingRoot)2 ClusterSetting (io.datarouter.clustersetting.storage.clustersetting.ClusterSetting)2 ClusterSettingKey (io.datarouter.clustersetting.storage.clustersetting.ClusterSettingKey)2 DatarouterClusterSettingDao (io.datarouter.clustersetting.storage.clustersetting.DatarouterClusterSettingDao)2 DatarouterClusterSettingLogDao (io.datarouter.clustersetting.storage.clustersettinglog.DatarouterClusterSettingLogDao)2 JobletRequestKey (io.datarouter.joblet.storage.jobletrequest.JobletRequestKey)2 Scanner (io.datarouter.scanner.Scanner)2 ServerType (io.datarouter.storage.servertype.ServerType)2 ServerTypes (io.datarouter.storage.servertype.ServerTypes)2 DatarouterSettingTag (io.datarouter.storage.setting.DatarouterSettingTag)2