diff options
author | Tibor Král <tibor.kral@pantheon.tech> | 2019-01-31 14:33:42 +0100 |
---|---|---|
committer | Michal Cmarada <mcmarada@cisco.com> | 2019-03-26 10:13:27 +0000 |
commit | 54faeb360678987d873282bec5378f2650de29e4 (patch) | |
tree | 1a9c6f3c731158a9e622865b15bcf5d6d045d35e /dhcp/dhcp-impl/src/test/java | |
parent | 6c73ffb4e44c29278385f13fe05ebe550cc21e02 (diff) |
HC2VPP-382: Validation support for DHCP module
Change-Id: I4a5323179d62cfdf12f72e30036a26ab985487ab
Signed-off-by: Tibor Král <tibor.kral@pantheon.tech>
Diffstat (limited to 'dhcp/dhcp-impl/src/test/java')
-rw-r--r-- | dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayCustomizerTest.java | 6 | ||||
-rw-r--r-- | dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayValidatorTest.java | 88 |
2 files changed, 91 insertions, 3 deletions
diff --git a/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayCustomizerTest.java b/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayCustomizerTest.java index aed31140d..02a45b970 100644 --- a/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayCustomizerTest.java +++ b/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayCustomizerTest.java @@ -42,8 +42,8 @@ import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; @RunWith(HoneycombTestRunner.class) public class DhcpRelayCustomizerTest extends WriterCustomizerTest implements SchemaContextTestHelper { - private static final String RELAYS_PATH = "/dhcp:dhcp/dhcp:relays"; - private static final InstanceIdentifier<Relays> RELAYS_IID = + static final String RELAYS_PATH = "/dhcp:dhcp/dhcp:relays"; + static final InstanceIdentifier<Relays> RELAYS_IID = InstanceIdentifier.create(Dhcp.class).child(Relays.class); private DhcpRelayCustomizer customizer; @@ -107,7 +107,7 @@ public class DhcpRelayCustomizerTest extends WriterCustomizerTest implements Sch verify(api).dhcpProxyConfig(request); } - private InstanceIdentifier<Relay> getId(final long rxVrfId, final Class<? extends AddressFamilyIdentity> addressType) { + static InstanceIdentifier<Relay> getId(final long rxVrfId, final Class<? extends AddressFamilyIdentity> addressType) { return RELAYS_IID.child(Relay.class, new RelayKey(addressType, new VniReference(rxVrfId))); } } diff --git a/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayValidatorTest.java b/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayValidatorTest.java new file mode 100644 index 000000000..e64d3d0a5 --- /dev/null +++ b/dhcp/dhcp-impl/src/test/java/io/fd/hc2vpp/dhcp/write/DhcpRelayValidatorTest.java @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2019 PANTHEON.tech. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package io.fd.hc2vpp.dhcp.write; + +import static io.fd.hc2vpp.dhcp.write.DhcpRelayCustomizerTest.RELAYS_PATH; +import static io.fd.hc2vpp.dhcp.write.DhcpRelayCustomizerTest.getId; +import static org.mockito.MockitoAnnotations.initMocks; + +import io.fd.hc2vpp.dhcp.helpers.SchemaContextTestHelper; +import io.fd.honeycomb.test.tools.HoneycombTestRunner; +import io.fd.honeycomb.test.tools.annotations.InjectTestData; +import io.fd.honeycomb.translate.write.DataValidationFailedException; +import io.fd.honeycomb.translate.write.WriteContext; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; +import org.mockito.Mock; +import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.dhcp.rev180629.dhcp.attributes.Relays; +import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.dhcp.rev180629.dhcp.attributes.relays.Relay; +import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.dhcp.rev180629.dhcp.attributes.relays.RelayBuilder; +import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.Ipv4; +import org.opendaylight.yang.gen.v1.http.fd.io.hc2vpp.yang.vpp.fib.table.management.rev180521.Ipv6; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZoneBuilder; + +@RunWith(HoneycombTestRunner.class) +public class DhcpRelayValidatorTest implements SchemaContextTestHelper { + + @Mock + private WriteContext writeContext; + private DhcpRelayValidator validator; + + @Before + public void setUp() { + initMocks(this); + validator = new DhcpRelayValidator(); + } + + @Test + public void testWrite(@InjectTestData(resourcePath = "/relay/ipv4DhcpRelay.json", id = RELAYS_PATH) Relays relays) + throws DataValidationFailedException.CreateValidationFailedException { + final int rxVrfId = 0; + validator.validateWrite(getId(rxVrfId, Ipv4.class), extractRelay(relays), writeContext); + } + + @Test + public void testUpdate( + @InjectTestData(resourcePath = "/relay/ipv6DhcpRelayBefore.json", id = RELAYS_PATH) Relays relaysBefore, + @InjectTestData(resourcePath = "/relay/ipv6DhcpRelayAfter.json", id = RELAYS_PATH) Relays relayAfter) + throws DataValidationFailedException.UpdateValidationFailedException { + final int rxVrfId = 1; + validator.validateUpdate(getId(rxVrfId, Ipv6.class), extractRelay(relaysBefore), extractRelay(relayAfter), + writeContext); + } + + @Test + public void testDelete(@InjectTestData(resourcePath = "/relay/ipv4DhcpRelay.json", id = RELAYS_PATH) Relays relays) + throws DataValidationFailedException.DeleteValidationFailedException { + final int rxVrfId = 0; + validator.validateDelete(getId(rxVrfId, Ipv4.class), extractRelay(relays), writeContext); + } + + @Test(expected = IllegalArgumentException.class) + public void testMixedIpAddressFamilies( + @InjectTestData(resourcePath = "/relay/ipv4DhcpRelay.json", id = RELAYS_PATH) Relays relays) { + RelayBuilder builder = new RelayBuilder(); + builder.fieldsFrom(extractRelay(relays)); + builder.setGatewayAddress(IpAddressNoZoneBuilder.getDefaultInstance("2001::10")); + validator.validateRelay(builder.build()); + } + + private Relay extractRelay(Relays relays) { + return relays.getRelay().get(0); + } +} |