diff --git a/DAQAggregator_example.properties b/DAQAggregator_example.properties index b79d59a2..5c25269c 100644 --- a/DAQAggregator_example.properties +++ b/DAQAggregator_example.properties @@ -111,4 +111,7 @@ persistence.flashlist.format = json # logfile = /tmp/daqaggregator.log comment = Test -sortpriority = 1 \ No newline at end of file +sortpriority = 1 + +# network domain to shorten/expand hostnames +network.domain = .cms diff --git a/src/main/java/rcms/utilities/daqaggregator/Application.java b/src/main/java/rcms/utilities/daqaggregator/Application.java index eada0ccf..c2d69bb3 100644 --- a/src/main/java/rcms/utilities/daqaggregator/Application.java +++ b/src/main/java/rcms/utilities/daqaggregator/Application.java @@ -13,6 +13,7 @@ import rcms.utilities.daqaggregator.datasource.FlashlistConfigurationReader; import rcms.utilities.daqaggregator.datasource.FlashlistType; import rcms.utilities.daqaggregator.datasource.LiveAccessServiceExplorer; +import rcms.utilities.daqaggregator.mappers.helper.ContextHelper; public class Application { @@ -36,6 +37,9 @@ public static Application get() { public static void initialize(String propertiesFile) { instance = new Application(propertiesFile); checkRequiredSettings(); + + ContextHelper.setNetworkSuffix(instance.getProp(Settings.NETWORK_DOMAIN)); + configureFlashlists(); /* diff --git a/src/main/java/rcms/utilities/daqaggregator/Settings.java b/src/main/java/rcms/utilities/daqaggregator/Settings.java index 32e26f8e..91902052 100644 --- a/src/main/java/rcms/utilities/daqaggregator/Settings.java +++ b/src/main/java/rcms/utilities/daqaggregator/Settings.java @@ -47,7 +47,11 @@ public enum Settings { PERSISTENCE_SNAPSHOT_DIR("persistence.snapshot.dir"), PERSISTENCE_FLASHLIST_FORMAT("persistence.flashlist.format"), PERSISTENCE_SNAPSHOT_FORMAT("persistence.snapshot.format"), - PERSISTENCE_LIMIT("persistence.flashlist.explore.start"), ; + PERSISTENCE_LIMIT("persistence.flashlist.explore.start"), + + // network domain + NETWORK_DOMAIN("network.domain", true), + ; private Settings(String key, boolean required) { this.key = key; diff --git a/src/main/java/rcms/utilities/daqaggregator/data/mixin/IdGenerators.java b/src/main/java/rcms/utilities/daqaggregator/data/mixin/IdGenerators.java index 28977b9a..00abf21a 100644 --- a/src/main/java/rcms/utilities/daqaggregator/data/mixin/IdGenerators.java +++ b/src/main/java/rcms/utilities/daqaggregator/data/mixin/IdGenerators.java @@ -170,7 +170,7 @@ public String generateId(Object forPojo) { BU bu = (BU) forPojo; String buHostname = bu.getHostname(); - buHostname = ContextHelper.removeSuffixFromHostname(buHostname, ".cms"); + buHostname = ContextHelper.removeNetworkSuffix(buHostname); StringBuilder sb = new StringBuilder(prefix.length() + buHostname.length()); @@ -224,7 +224,7 @@ public String generateId(Object forPojo) { RU ru = (RU) forPojo; String ruHostname = ru.getHostname(); - ruHostname = ContextHelper.removeSuffixFromHostname(ruHostname, ".cms"); + ruHostname = ContextHelper.removeNetworkSuffix(ruHostname); StringBuilder sb = new StringBuilder(prefix.length() + ruHostname.length()); @@ -276,7 +276,7 @@ public String generateId(Object forPojo) { FRLPc frlpc = (FRLPc) forPojo; String frlpcHostname = frlpc.getHostname(); - frlpcHostname = ContextHelper.removeSuffixFromHostname(frlpcHostname, ".cms"); + frlpcHostname = ContextHelper.removeNetworkSuffix(frlpcHostname); StringBuilder sb = new StringBuilder(prefix.length() + frlpcHostname.length()); @@ -537,7 +537,7 @@ public String generateId(Object forPojo) { FMMApplication fmmapp = (FMMApplication) forPojo; String fmmappHostname = fmmapp.getHostname(); - fmmappHostname = ContextHelper.removeSuffixFromHostname(fmmappHostname, ".cms"); + fmmappHostname = ContextHelper.removeNetworkSuffix(fmmappHostname); StringBuilder sb = new StringBuilder(prefix.length() + fmmappHostname.length()); @@ -647,7 +647,7 @@ public String generateId(Object forPojo) { String fedBuilderName = sfb.getFedBuilder().getName(); String ttcpName = sfb.getTtcPartition().getName(); String frlpcHostname = sfb.getFrlPc() != null ? sfb.getFrlPc().getHostname() : "-"; - frlpcHostname = ContextHelper.removeSuffixFromHostname(frlpcHostname, ".cms"); + frlpcHostname = ContextHelper.removeNetworkSuffix(frlpcHostname); StringBuilder sb = new StringBuilder(prefix.length() + fedBuilderName.length() + delimiter.length() + ttcpName.length() + delimiter.length() + frlpcHostname.length()); @@ -707,7 +707,7 @@ public String generateId(Object forPojo) { String frlGeoslot = String.valueOf(frl.getGeoSlot()); String frlpcHostname = frl.getFrlPc().getHostname(); - frlpcHostname = ContextHelper.removeSuffixFromHostname(frlpcHostname, ".cms"); + frlpcHostname = ContextHelper.removeNetworkSuffix(frlpcHostname); StringBuilder sb = new StringBuilder(prefix.length() + frlGeoslot.length() + delimiter.length() + frlpcHostname.length()); diff --git a/src/main/java/rcms/utilities/daqaggregator/data/mixin/ref/IdGenerators.java b/src/main/java/rcms/utilities/daqaggregator/data/mixin/ref/IdGenerators.java index b1cb1b03..05ffee91 100644 --- a/src/main/java/rcms/utilities/daqaggregator/data/mixin/ref/IdGenerators.java +++ b/src/main/java/rcms/utilities/daqaggregator/data/mixin/ref/IdGenerators.java @@ -166,7 +166,7 @@ public String generateId(Object forPojo) { BU bu = (BU) forPojo; String buHostname = bu.getHostname(); - buHostname = ContextHelper.removeSuffixFromHostname(buHostname, ".cms"); + buHostname = ContextHelper.removeNetworkSuffix(buHostname); StringBuilder sb = new StringBuilder(prefix.length() + buHostname.length()); @@ -219,7 +219,7 @@ public String generateId(Object forPojo) { RU ru = (RU) forPojo; String ruHostname = ru.getHostname(); - ruHostname = ContextHelper.removeSuffixFromHostname(ruHostname, ".cms"); + ruHostname = ContextHelper.removeNetworkSuffix(ruHostname); StringBuilder sb = new StringBuilder(prefix.length() + ruHostname.length()); @@ -272,7 +272,7 @@ public String generateId(Object forPojo) { FRLPc frlpc = (FRLPc) forPojo; String frlpcHostname = frlpc.getHostname(); - frlpcHostname = ContextHelper.removeSuffixFromHostname(frlpcHostname, ".cms"); + frlpcHostname = ContextHelper.removeNetworkSuffix(frlpcHostname); StringBuilder sb = new StringBuilder(prefix.length() + frlpcHostname.length()); @@ -533,7 +533,7 @@ public String generateId(Object forPojo) { FMMApplication fmmapp = (FMMApplication) forPojo; String fmmappHostname = fmmapp.getHostname(); - fmmappHostname = ContextHelper.removeSuffixFromHostname(fmmappHostname, ".cms"); + fmmappHostname = ContextHelper.removeNetworkSuffix(fmmappHostname); StringBuilder sb = new StringBuilder(prefix.length() + fmmappHostname.length()); @@ -643,7 +643,7 @@ public String generateId(Object forPojo) { String fedBuilderName = sfb.getFedBuilder().getName(); String ttcpName = sfb.getTtcPartition().getName(); String frlpcHostname = sfb.getFrlPc() != null ? sfb.getFrlPc().getHostname() : "-"; - frlpcHostname = ContextHelper.removeSuffixFromHostname(frlpcHostname, ".cms"); + frlpcHostname = ContextHelper.removeNetworkSuffix(frlpcHostname); StringBuilder sb = new StringBuilder(prefix.length() + fedBuilderName.length() + delimiter.length() + ttcpName.length() + delimiter.length() + frlpcHostname.length()); @@ -703,7 +703,7 @@ public String generateId(Object forPojo) { String frlGeoslot = String.valueOf(frl.getGeoSlot()); String frlpcHostname = frl.getFrlPc().getHostname(); - frlpcHostname = ContextHelper.removeSuffixFromHostname(frlpcHostname, ".cms"); + frlpcHostname = ContextHelper.removeNetworkSuffix(frlpcHostname); StringBuilder sb = new StringBuilder(prefix.length() + frlGeoslot.length() + delimiter.length() + frlpcHostname.length()); diff --git a/src/main/java/rcms/utilities/daqaggregator/mappers/RelationMapper.java b/src/main/java/rcms/utilities/daqaggregator/mappers/RelationMapper.java index af0474e0..82f654b1 100644 --- a/src/main/java/rcms/utilities/daqaggregator/mappers/RelationMapper.java +++ b/src/main/java/rcms/utilities/daqaggregator/mappers/RelationMapper.java @@ -27,6 +27,7 @@ import rcms.utilities.daqaggregator.data.TCDSPartitionInfo; import rcms.utilities.daqaggregator.data.TTCPartition; import rcms.utilities.daqaggregator.datasource.TCDSFMInfoRetriever; +import rcms.utilities.daqaggregator.mappers.helper.ContextHelper; import rcms.utilities.hwcfg.HardwareConfigurationException; import rcms.utilities.hwcfg.dp.DAQPartition; import rcms.utilities.hwcfg.dp.DAQPartitionStructureExtractor.HalfFMM; @@ -385,6 +386,8 @@ private TCDSPartitionInfo getTCDSInfo(DAQPartition dp, String ttcpName) { TCDSPartitionInfo tcdsPartitionInfo = new TCDSPartitionInfo(); + final String networkSuffix = ContextHelper.getNetworkSuffix(); + if (ttcpName.toLowerCase().startsWith("cpm")|| ttcpName.toLowerCase().startsWith("lpm") ||ttcpName.toLowerCase().startsWith("dvcpm")|| @@ -398,7 +401,7 @@ private TCDSPartitionInfo getTCDSInfo(DAQPartition dp, String ttcpName) { if(tcdsFmInfoRetriever.isInfoAvailable()){ String pmUrl = tcdsFmInfoRetriever.getTcdsfm_pmContext().toLowerCase(); - pmUrl = pmUrl.split("//|.cms")[1]; + pmUrl = pmUrl.split("//|" + networkSuffix)[1]; if (!pmUrl.endsWith("-pri")){ //hack to make it work before the suffix integration in tcdsfm and also afterwards @@ -414,7 +417,7 @@ private TCDSPartitionInfo getTCDSInfo(DAQPartition dp, String ttcpName) { for (Entry ePm: eTrig.getValue().getPMs().entrySet()){ String hwcfg_PmHostname = ePm.getValue().getHostName().toLowerCase(); - hwcfg_PmHostname = hwcfg_PmHostname.split(".cms")[0]; + hwcfg_PmHostname = hwcfg_PmHostname.split(networkSuffix)[0]; String hwcfg_pmService = ePm.getValue().getServiceName().toLowerCase(); if (pmUrl.equalsIgnoreCase(hwcfg_PmHostname)&&pmService.equalsIgnoreCase(hwcfg_pmService)){ diff --git a/src/main/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelper.java b/src/main/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelper.java index a4eb7ba9..ba9b92d3 100644 --- a/src/main/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelper.java +++ b/src/main/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelper.java @@ -12,6 +12,9 @@ public class ContextHelper { private static final Logger logger = Logger.getLogger(ContextHelper.class); + /** network suffix including dot at the beginning */ + private static String networkSuffix = null; + public static Integer getPortFromContext(String context) { String hostname = new String(context); String portString; @@ -44,8 +47,8 @@ public static String getHostnameFromContext(String context) { if (hostname.contains(":")) { hostname = hostname.substring(0, hostname.indexOf(":")); } - if (!hostname.endsWith(".cms")) { - hostname = hostname + ".cms"; + if (!hostname.endsWith(networkSuffix)) { + hostname = hostname + networkSuffix; } return hostname; } @@ -74,4 +77,30 @@ public static String removeSuffixFromHostname(String hostname, String suffix) { } } + + /** checks if the given host name ends with the network domain + * (which is configured application wide) and if yes, removes + * it. Otherwise returns the hostname unchanged. + */ + public static String removeNetworkSuffix(String hostname) { + return removeSuffixFromHostname(hostname, networkSuffix); + } + + /** @return the network suffix including the leading dot. */ + public static String getNetworkSuffix() { + return networkSuffix; + } + + public static void setNetworkSuffix(String networkSuffix) { + + // ensure lower case + networkSuffix = networkSuffix.toLowerCase(); + + if (! networkSuffix.startsWith(".")) { + networkSuffix = "." + networkSuffix; + } + + ContextHelper.networkSuffix = networkSuffix; + } + } diff --git a/src/test/java/rcms/utilities/daqaggregator/datasource/FlashlistDispatcherIT.java b/src/test/java/rcms/utilities/daqaggregator/datasource/FlashlistDispatcherIT.java index d7e5ead3..b0020a61 100644 --- a/src/test/java/rcms/utilities/daqaggregator/datasource/FlashlistDispatcherIT.java +++ b/src/test/java/rcms/utilities/daqaggregator/datasource/FlashlistDispatcherIT.java @@ -28,6 +28,7 @@ import rcms.utilities.daqaggregator.data.TCDSTriggerRates; import rcms.utilities.daqaggregator.mappers.MappingManager; import rcms.utilities.daqaggregator.mappers.MappingReporter; +import rcms.utilities.daqaggregator.mappers.helper.ContextHelper; import rcms.utilities.daqaggregator.persistence.PersistenceFormat; import rcms.utilities.hwcfg.HardwareConfigurationException; import rcms.utilities.hwcfg.InvalidNodeTypeException; @@ -83,6 +84,8 @@ private DAQ runDispatch(String flashlistDir, boolean forceIgnoreAutomaticSession String filter1 = prop.getProperty(Settings.SESSION_L0FILTER1.getKey()); String filter2 = prop.getProperty(Settings.SESSION_L0FILTER2.getKey()); + ContextHelper.setNetworkSuffix(prop.getProperty(Settings.NETWORK_DOMAIN.getKey())); + // connect to the hardware database hardwareConnector.initialize(prop); diff --git a/src/test/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelperTest.java b/src/test/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelperTest.java index 06f2208a..b0fab6d8 100644 --- a/src/test/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelperTest.java +++ b/src/test/java/rcms/utilities/daqaggregator/mappers/helper/ContextHelperTest.java @@ -1,31 +1,37 @@ package rcms.utilities.daqaggregator.mappers.helper; import org.junit.Assert; +import org.junit.BeforeClass; import org.junit.Test; public class ContextHelperTest { + @BeforeClass + public static void setup() { + ContextHelper.setNetworkSuffix(".tld"); + } + @Test public void hostnameSimpleTest() { - String actual = ContextHelper.getHostnameFromContext("abc.cms:123"); - Assert.assertEquals("abc.cms", actual); + String actual = ContextHelper.getHostnameFromContext("abc.tld:123"); + Assert.assertEquals("abc.tld", actual); } @Test public void hostnameProtocolHttpTest() { - String actual = ContextHelper.getHostnameFromContext("http://abc.cms:123"); - Assert.assertEquals("abc.cms", actual); + String actual = ContextHelper.getHostnameFromContext("http://abc.tld:123"); + Assert.assertEquals("abc.tld", actual); } @Test public void hostnameProtocolHttpsTest() { - String actual = ContextHelper.getHostnameFromContext("https://abc.cms:123"); - Assert.assertEquals("abc.cms", actual); + String actual = ContextHelper.getHostnameFromContext("https://abc.tld:123"); + Assert.assertEquals("abc.tld", actual); } @Test public void portTest() { - int actual = ContextHelper.getPortFromContext("https://abc.cms:123"); + int actual = ContextHelper.getPortFromContext("https://abc.tld:123"); Assert.assertEquals(123, actual); } } diff --git a/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TcdsTtsPiMatcherTest.java b/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TcdsTtsPiMatcherTest.java index 831c8316..f50109fe 100644 --- a/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TcdsTtsPiMatcherTest.java +++ b/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TcdsTtsPiMatcherTest.java @@ -11,17 +11,24 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; +import org.junit.BeforeClass; import rcms.utilities.daqaggregator.data.FED; import rcms.utilities.daqaggregator.data.FMM; import rcms.utilities.daqaggregator.data.FMMApplication; import rcms.utilities.daqaggregator.datasource.Flashlist; import rcms.utilities.daqaggregator.datasource.FlashlistType; +import rcms.utilities.daqaggregator.mappers.helper.ContextHelper; public class TcdsTtsPiMatcherTest { final JsonNodeFactory factory = JsonNodeFactory.instance; + @BeforeClass + public static void setup() { + ContextHelper.setNetworkSuffix(".tld"); + } + @Test public void testNonSessionContextFlaslhist() { @@ -31,8 +38,8 @@ public void testNonSessionContextFlaslhist() { ArrayNode rowsNode = factory.arrayNode(); Collection objects = new ArrayList<>(); - appendTestDataToFlashlist(1, rowsNode, "http://a.cms:1000", "service1", 1); - objects.add(generateTestFed(1, "a.cms", 1000, "service1", 1)); + appendTestDataToFlashlist(1, rowsNode, "http://a.tld:1000", "service1", 1); + objects.add(generateTestFed(1, "a.tld", 1000, "service1", 1)); testFlashlist.setRowsNode(rowsNode); Map a = sut.match(testFlashlist, objects); diff --git a/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TwoElementGeoMatcherTest.java b/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TwoElementGeoMatcherTest.java index 2f10f89d..a9ef3487 100644 --- a/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TwoElementGeoMatcherTest.java +++ b/src/test/java/rcms/utilities/daqaggregator/mappers/matcher/TwoElementGeoMatcherTest.java @@ -12,13 +12,20 @@ import com.fasterxml.jackson.databind.node.ArrayNode; import com.fasterxml.jackson.databind.node.JsonNodeFactory; import com.fasterxml.jackson.databind.node.ObjectNode; +import org.junit.BeforeClass; import rcms.utilities.daqaggregator.datasource.Flashlist; import rcms.utilities.daqaggregator.datasource.FlashlistType; +import rcms.utilities.daqaggregator.mappers.helper.ContextHelper; public class TwoElementGeoMatcherTest { final JsonNodeFactory factory = JsonNodeFactory.instance; + @BeforeClass + public static void setup() { + ContextHelper.setNetworkSuffix(".tld"); + } + @Test public void testNonSessionContextFlaslhist() { @@ -26,23 +33,23 @@ public void testNonSessionContextFlaslhist() { Flashlist testFlashlist = new Flashlist(FlashlistType.JOB_CONTROL); ArrayNode rowsNode = factory.arrayNode(); - appendTestDataToFlashlist(rowsNode, 1, "a.cms"); - appendTestDataToFlashlist(rowsNode, 2, "b.cms"); + appendTestDataToFlashlist(rowsNode, 1, "a.tld"); + appendTestDataToFlashlist(rowsNode, 2, "b.tld"); testFlashlist.setRowsNode(rowsNode); Collection> objects = new ArrayList<>(); - objects.add(Pair.of("a.cms", 1)); - objects.add(Pair.of("c.cms", 3)); + objects.add(Pair.of("a.tld", 1)); + objects.add(Pair.of("c.tld", 3)); Map, JsonNode> a = sut.match(testFlashlist, objects); Assert.assertEquals(1, a.size()); Assert.assertEquals(1, a.values().iterator().next().get("number").asInt()); - Assert.assertEquals("a.cms", a.values().iterator().next().get("text").asText()); + Assert.assertEquals("a.tld", a.values().iterator().next().get("text").asText()); Assert.assertEquals(1, a.keySet().iterator().next().getRight().intValue()); - Assert.assertEquals("a.cms", a.keySet().iterator().next().getLeft()); + Assert.assertEquals("a.tld", a.keySet().iterator().next().getLeft()); } @@ -53,26 +60,26 @@ public void testSessionContextFlaslhist() { Flashlist testFlashlist = new Flashlist(FlashlistType.BU); ArrayNode rowsNode = factory.arrayNode(); - appendTestDataWithSessionToFlashlist(rowsNode, 1, "a.cms", 1234); - appendTestDataWithSessionToFlashlist(rowsNode, 2, "b.cms", 1234); + appendTestDataWithSessionToFlashlist(rowsNode, 1, "a.tld", 1234); + appendTestDataWithSessionToFlashlist(rowsNode, 2, "b.tld", 1234); - appendTestDataWithSessionToFlashlist(rowsNode, 1, "a.cms", 123456); - appendTestDataWithSessionToFlashlist(rowsNode, 2, "b.cms", 123456); + appendTestDataWithSessionToFlashlist(rowsNode, 1, "a.tld", 123456); + appendTestDataWithSessionToFlashlist(rowsNode, 2, "b.tld", 123456); testFlashlist.setRowsNode(rowsNode); Collection> objects = new ArrayList<>(); - objects.add(Pair.of("a.cms", 1)); - objects.add(Pair.of("c.cms", 3)); + objects.add(Pair.of("a.tld", 1)); + objects.add(Pair.of("c.tld", 3)); Map, JsonNode> a = sut.match(testFlashlist, objects); Assert.assertEquals(1, a.size()); Assert.assertEquals(1, a.values().iterator().next().get("number").asInt()); - Assert.assertEquals("a.cms", a.values().iterator().next().get("text").asText()); + Assert.assertEquals("a.tld", a.values().iterator().next().get("text").asText()); Assert.assertEquals(1, a.keySet().iterator().next().getRight().intValue()); - Assert.assertEquals("a.cms", a.keySet().iterator().next().getLeft()); + Assert.assertEquals("a.tld", a.keySet().iterator().next().getLeft()); }