+ @Test
+ void testUpdateSoftConstraintsForCustomerCode() {
+ // test no addition when hard customer-code is null or empty
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getCustomerCode(),
+ "updated soft constraints should contain no customer code");
+ Set<String> softCustomerCode = Set.of("soft-customer-code 3", "soft-customer-code 4");
+ initialSoftConstraints =
+ buildSoftConstraint(softCustomerCode, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getCustomerCode(), generatedSoftConstraints.getCustomerCode());
+
+ // test addition of hard customer-code when no soft customer-code
+ Set<String> hardCustomerCode = Set.of("hard-customer-code 1", "hard-customer-code 2");
+ initialHardConstraints =
+ buildHardConstraint(hardCustomerCode, false, null, null, null, null, false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(generatedSoftConstraints.getCustomerCode(),initialHardConstraints.getCustomerCode(),
+ "updated soft constraints should contain the customer code of hard constraint");
+ // test addition of hard customer-code when existing soft customer-code
+ initialSoftConstraints =
+ buildSoftConstraint(softCustomerCode, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertThat("updated soft constraints should contain 4 customer code",
+ generatedSoftConstraints.getCustomerCode(), hasSize(4));
+ assertThat(generatedSoftConstraints.getCustomerCode(),
+ containsInAnyOrder("hard-customer-code 1", "hard-customer-code 2", "soft-customer-code 3",
+ "soft-customer-code 4"));
+ }
+
+ @Test
+ void testUpdateSoftConstraintsForDiversity() {
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getDiversity(),
+ "updated soft constraints should contain no diversity constraint");
+ Set<String> softDiversityServiceid = Set.of("soft-service 3");
+ initialSoftConstraints =
+ buildSoftConstraint(null, false, softDiversityServiceid, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getDiversity(), generatedSoftConstraints.getDiversity());
+
+ // test addition of hard diversity when no soft diversity
+ Set<String> hardDiversityServiceid = Set.of("hard-service 1", "hard-service 2");
+ initialHardConstraints =
+ buildHardConstraint(null, false, hardDiversityServiceid, null, null, null, false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(generatedSoftConstraints.getDiversity(), initialHardConstraints.getDiversity(),
+ "updated soft constraints should contain the diversity of hard constraint");
+
+ // test addition of hard diversity when existing soft diversity
+ initialSoftConstraints =
+ buildSoftConstraint(null, false, softDiversityServiceid, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertThat("updated soft constraints should contain diversity with 3 services",
+ generatedSoftConstraints.getDiversity().getServiceIdentifierList().size(), is(3));
+ assertEquals(DiversityType.Serial, generatedSoftConstraints.getDiversity().getDiversityType(),
+ "updated soft constraints should have diversity type of serial");
+ assertThat(generatedSoftConstraints.getDiversity().getServiceIdentifierList(),
+ IsMapContaining.hasKey(new ServiceIdentifierListKey("hard-service 1")));
+ assertThat(generatedSoftConstraints.getDiversity().getServiceIdentifierList(),
+ IsMapContaining.hasKey(new ServiceIdentifierListKey("hard-service 2")));
+ assertThat(generatedSoftConstraints.getDiversity().getServiceIdentifierList(),
+ IsMapContaining.hasKey(new ServiceIdentifierListKey("soft-service 3")));
+ }
+
+ @Test
+ void testUpdateSoftConstraintsForExclude() {
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getExclude(),
+ "updated soft constraints should contain no exclude constraint");
+
+ initialSoftConstraints = buildSoftConstraint(null, false, null, "link", null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getExclude(), generatedSoftConstraints.getExclude(),
+ "updated soft constraints should not be changed");
+
+ // test addition of hard exclude with fiber list when no soft exclude
+ initialHardConstraints =
+ buildHardConstraint(null, false, null, "fiber1", null, null, false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(generatedSoftConstraints.getExclude(), initialHardConstraints.getExclude(),
+ "updated soft constraints should contain the exclude constraint of hard constraint");
+
+ // test addition of hard exclude with fiber list when existing soft
+ // exclude with fiber list
+ initialSoftConstraints =
+ buildSoftConstraint(null, false, null, "fiber2", null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertThat("updated soft constraints should contain exclude with 3 fiber bundles",
+ generatedSoftConstraints.getExclude().getFiberBundle().size(), is(3));
+ assertThat(generatedSoftConstraints.getExclude().getFiberBundle(),
+ containsInAnyOrder("fiber-1", "fiber-2", "fiber-3"));
+
+ // test addition of hard exclude with link list when no soft exclude
+ initialHardConstraints = buildHardConstraint(null, false, null, "link1", null, null, false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(generatedSoftConstraints.getExclude(), initialHardConstraints.getExclude(),
+ "updated soft constraints should contain the exclude constraint of hard constraint");
+
+ // test addition of hard exclude with link list when existing soft
+ // exclude with link list
+ initialSoftConstraints = buildSoftConstraint(null, false, null, "link2", null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertThat("updated soft constraints should contain exclude with 3 links",
+ generatedSoftConstraints.getExclude().getLinkIdentifier().size(), is(3));
+ assertThat(generatedSoftConstraints.getExclude().getLinkIdentifier(), hasItems(new LinkIdentifierBuilder()
+ .setLinkId("link-id 1").setLinkNetworkId("openroadm-topology").build()));
+ assertThat(generatedSoftConstraints.getExclude().getLinkIdentifier(), hasItems(new LinkIdentifierBuilder()
+ .setLinkId("link-id 2").setLinkNetworkId("openroadm-topology").build()));
+ assertThat(generatedSoftConstraints.getExclude().getLinkIdentifier(), hasItems(new LinkIdentifierBuilder()
+ .setLinkId("link-id 3").setLinkNetworkId("openroadm-topology").build()));
+ }
+
+ @Test
+ void testUpdateSoftConstraintsForInclude() {
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getInclude(),
+ "updated soft constraints should contain no include constraint");
+
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, "link", null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getInclude(), generatedSoftConstraints.getInclude(),
+ "updated soft constraints should not be changed");
+
+ // test addition of hard include with fiber list when no soft include
+ initialHardConstraints =
+ buildHardConstraint(null, false, null, null, "fiber1", null, false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(generatedSoftConstraints.getInclude(), initialHardConstraints.getInclude(),
+ "updated soft constraints should contain the include constraint of hard constraint");
+
+ // test addition of hard include with fiber list when existing soft
+ // include with fiber list
+ initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, "fiber2", null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertThat("updated soft constraints should contain exclude with 3 fiber bundles",
+ generatedSoftConstraints.getInclude().getFiberBundle().size(), is(3));
+ assertThat(generatedSoftConstraints.getInclude().getFiberBundle(),
+ containsInAnyOrder("fiber-1", "fiber-2", "fiber-3"));
+
+ // test addition of hard include with link list when no soft include
+ initialHardConstraints = buildHardConstraint(null, false, null, null, "link1", null, false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(generatedSoftConstraints.getInclude(), initialHardConstraints.getInclude(),
+ "updated soft constraints should contain the include constraint of hard constraint");
+
+ // test addition of hard include with link list when existing soft
+ // include with link list
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, "link2", null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertThat("updated soft constraints should contain include with 3 links",
+ generatedSoftConstraints.getInclude().getLinkIdentifier().size(), is(3));
+ assertThat(generatedSoftConstraints.getInclude().getLinkIdentifier(), hasItems(new LinkIdentifierBuilder()
+ .setLinkId("link-id 1").setLinkNetworkId("openroadm-topology").build()));
+ assertThat(generatedSoftConstraints.getInclude().getLinkIdentifier(), hasItems(new LinkIdentifierBuilder()
+ .setLinkId("link-id 2").setLinkNetworkId("openroadm-topology").build()));
+ assertThat(generatedSoftConstraints.getInclude().getLinkIdentifier(), hasItems(new LinkIdentifierBuilder()
+ .setLinkId("link-id 3").setLinkNetworkId("openroadm-topology").build()));
+ }
+
+ @Test
+ void testUpdateSoftConstraintsForLatency() {
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getLatency(),
+ "updated soft constraints should contain no latency constraint");
+
+ initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, Double.valueOf(12.2), false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getLatency(), generatedSoftConstraints.getLatency(),
+ "updated soft constraints should not be changed");
+ assertEquals((float) 12.2, generatedSoftConstraints.getLatency().getMaxLatency().floatValue(), 0.0f,
+ "updated soft constraints value should be '12.2'");
+
+ // test addition of hard latency when no soft latency
+ initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, Double.valueOf(16.59), false, false, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals((float) 16.59, generatedSoftConstraints.getLatency().getMaxLatency().floatValue(), 0.0f,
+ "updated soft constraints value should be '16.59'");
+
+ // test addition of hard latency when existing different soft latency
+ initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, Double.valueOf(12.2), false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals((float) 12.2, generatedSoftConstraints.getLatency().getMaxLatency().floatValue(), 0.0f,
+ "updated soft constraints value should be '12.2'");
+ }
+
+ @Test
+ void testUpdateSoftConstraintsForDistance() {
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getDistance(),
+ "updated soft constraints should contain no distance constraint");
+
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, "750.2", null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getDistance(), generatedSoftConstraints.getDistance(),
+ "updated soft constraints should not be changed");
+ assertEquals((float) 750.2, generatedSoftConstraints.getDistance().getMaxDistance().floatValue(), 0.0f,
+ "updated soft constraints value should be '750.2'");
+
+ // test addition of hard distance when no soft distance
+ initialHardConstraints = buildHardConstraint(null, false, null, null, null, null, false, false, "555.5", null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals((float) 555.5, generatedSoftConstraints.getDistance().getMaxDistance().floatValue(), 0.0f,
+ "updated soft constraints value should be '555.5'");
+
+ // test addition of hard distance when existing different soft distance
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, "750.2", null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals((float) 555.5, generatedSoftConstraints.getDistance().getMaxDistance().floatValue(), 0.0f,
+ "updated soft constraints value should be '555.5'");
+ }
+
+ @Test
+ void testUpdateSoftConstraintsForHopCountAndTEmetric() {
+ HardConstraints initialHardConstraints =
+ buildHardConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints initialSoftConstraints =
+ buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ SoftConstraints generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertNull(generatedSoftConstraints.getHopCount(),
+ "updated soft constraints should contain no hop-count constraint");
+
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, true, true, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialSoftConstraints.getHopCount(), generatedSoftConstraints.getHopCount(),
+ "updated soft constraints should not be changed");
+ assertEquals(3, generatedSoftConstraints.getHopCount().getMaxWdmHopCount().intValue(),
+ "updated soft constraints max-wdm-hop-count should be '3'");
+ assertEquals(5, generatedSoftConstraints.getHopCount().getMaxOtnHopCount().intValue(),
+ "updated soft constraints max-otn-hop-count should be '5'");
+ assertEquals(8, generatedSoftConstraints.getTEMetric().getMaxWdmTEMetric().intValue(),
+ "updated soft constraints max-wdm-TE-metric should be '8'");
+ assertEquals(11, generatedSoftConstraints.getTEMetric().getMaxOtnTEMetric().intValue(),
+ "updated soft constraints max-otn-TE-metric should be '11'");
+
+ // test addition of hard hop-count when no soft hop-count
+ initialHardConstraints = buildHardConstraint(null, false, null, null, null, null, true, true, null, null);
+ initialSoftConstraints = buildSoftConstraint(null, false, null, null, null, null, false, false, null, null);
+ generatedSoftConstraints = DowngradeConstraints.updateSoftConstraints(
+ initialHardConstraints, initialSoftConstraints);
+ assertEquals(initialHardConstraints.getHopCount(), generatedSoftConstraints.getHopCount(),
+ "updated soft constraints should contain hard constraint");
+ assertEquals(3, generatedSoftConstraints.getHopCount().getMaxWdmHopCount().intValue(),
+ "updated soft constraints max-wdm-hop-count should be '3'");
+ assertEquals(5, generatedSoftConstraints.getHopCount().getMaxOtnHopCount().intValue(),
+ "updated soft constraints max-otn-hop-count should be '5'");
+ assertEquals(8, generatedSoftConstraints.getTEMetric().getMaxWdmTEMetric().intValue(),
+ "updated soft constraints max-wdm-TE-metric should be '8'");
+ assertEquals(11, generatedSoftConstraints.getTEMetric().getMaxOtnTEMetric().intValue(),
+ "updated soft constraints max-otn-TE-metric should be '11'");