diff options
Diffstat (limited to 'acl/acl-impl/src/test/java/io/fd/hc2vpp/acl/util/ace/extractor/MacIpAceDataExtractorTest.java')
-rw-r--r-- | acl/acl-impl/src/test/java/io/fd/hc2vpp/acl/util/ace/extractor/MacIpAceDataExtractorTest.java | 218 |
1 files changed, 218 insertions, 0 deletions
diff --git a/acl/acl-impl/src/test/java/io/fd/hc2vpp/acl/util/ace/extractor/MacIpAceDataExtractorTest.java b/acl/acl-impl/src/test/java/io/fd/hc2vpp/acl/util/ace/extractor/MacIpAceDataExtractorTest.java new file mode 100644 index 000000000..5eb733c1e --- /dev/null +++ b/acl/acl-impl/src/test/java/io/fd/hc2vpp/acl/util/ace/extractor/MacIpAceDataExtractorTest.java @@ -0,0 +1,218 @@ +/* + * Copyright (c) 2017 Cisco and/or its affiliates. + * + * 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.acl.util.ace.extractor; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertFalse; +import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertTrue; + +import io.fd.hc2vpp.common.test.util.CommonTests; +import io.fd.vpp.jvpp.acl.types.MacipAclRule; +import java.util.Arrays; +import org.junit.Test; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.AceBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.ace.ActionsBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.ace.MatchesBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.ace.actions.packet.handling.DenyBuilder; +import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.access.control.list.rev160708.access.lists.acl.access.list.entries.ace.actions.packet.handling.PermitBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.VppMacipAce; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.VppMacipAceBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.vpp.macip.ace.VppMacipAceNodesBuilder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.vpp.macip.ace.vpp.macip.ace.nodes.AceIpVersion; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.vpp.macip.ace.vpp.macip.ace.nodes.ace.ip.version.AceIpv4; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.vpp.macip.ace.vpp.macip.ace.nodes.ace.ip.version.AceIpv4Builder; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.vpp.macip.ace.vpp.macip.ace.nodes.ace.ip.version.AceIpv6; +import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.vpp.acl.rev161214.access.lists.acl.access.list.entries.ace.matches.ace.type.vpp.macip.ace.vpp.macip.ace.nodes.ace.ip.version.AceIpv6Builder; + +public class MacIpAceDataExtractorTest extends AceDataExtractorTestCase implements MacIpAceDataExtractor, CommonTests { + + @Test + public void testFromMacIpAce() { + verifyExceptionalCase(() -> fromMacIpAce(new AceBuilder().build()), IllegalArgumentException.class); + verifyExceptionalCase(() -> fromMacIpAce(new AceBuilder().setMatches(new MatchesBuilder().build()).build()), + IllegalArgumentException.class); + + final VppMacipAce macipAce = new VppMacipAceBuilder().build(); + assertEquals(macipAce, fromMacIpAce(new AceBuilder().setMatches(new MatchesBuilder() + .setAceType(macipAce).build()).build())); + } + + @Test + public void testMacIpIsIpv6() { + assertFalse(macIpIsIpv6(new VppMacipAceBuilder().build())); + assertFalse(macIpIsIpv6( + new VppMacipAceBuilder().setVppMacipAceNodes(new VppMacipAceNodesBuilder().build()).build())); + assertFalse(macIpIsIpv6(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv4Builder().build()).build()).build())); + assertTrue(macIpIsIpv6(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv6Builder().build()).build()).build())); + } + + @Test + public void testSourceMacAsBytes() { + assertTrue(Arrays.equals(DEFAULT_MAC_ADDRESS_BYTES, sourceMacAsBytes(new VppMacipAceBuilder().build()))); + assertTrue( + Arrays.equals(DEFAULT_MAC_ADDRESS_BYTES, sourceMacAsBytes(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().build()).build()))); + assertTrue(Arrays.equals(MAC_ADDRESS_BYTES, + sourceMacAsBytes(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setSourceMacAddress(MAC_ADDRESS).build()) + .build()))); + } + + @Test + public void sourceMacMaskAsBytes() { + assertTrue(Arrays.equals(DEFAULT_MAC_ADDRESS_BYTES, sourceMacMaskAsBytes(new VppMacipAceBuilder().build()))); + assertTrue(Arrays.equals(DEFAULT_MAC_ADDRESS_BYTES, + sourceMacMaskAsBytes(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().build()).build()))); + assertTrue(Arrays.equals(MAC_ADDRESS_BYTES, + sourceMacMaskAsBytes(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setSourceMacAddressMask(MAC_ADDRESS).build()) + .build()))); + } + + @Test + public void testIpv4Address() { + assertTrue(Arrays.equals(DEFAULT_IPV4_ADDRESS_BYTES, ipv4Address(new VppMacipAceBuilder().build()))); + assertTrue(Arrays.equals(DEFAULT_IPV4_ADDRESS_BYTES, ipv4Address( + new VppMacipAceBuilder().setVppMacipAceNodes(new VppMacipAceNodesBuilder().build()).build()))); + assertTrue(Arrays.equals(DEFAULT_IPV4_ADDRESS_BYTES, ipv4Address(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv4Builder().build()).build()).build()))); + assertTrue(Arrays.equals(IPV4_PREFIX_BYTES, ipv4Address(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv4Builder() + .setSourceIpv4Network(IPV4_PREFIX).build()).build()).build()))); + } + + @Test + public void testIpv4AddressPrefix() { + assertEquals(DEFAULT_IPV4_PREFIX_VALUE, ipv4AddressPrefix(new VppMacipAceBuilder().build())); + assertEquals(DEFAULT_IPV4_PREFIX_VALUE, ipv4AddressPrefix( + new VppMacipAceBuilder().setVppMacipAceNodes(new VppMacipAceNodesBuilder().build()).build())); + assertEquals(DEFAULT_IPV4_PREFIX_VALUE, ipv4AddressPrefix(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv4Builder().build()).build()).build())); + assertEquals(IPV4_PREFIX_VALUE, ipv4AddressPrefix(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv4Builder() + .setSourceIpv4Network(IPV4_PREFIX).build()).build()).build())); + } + + @Test + public void testIpv6Address() { + assertTrue(Arrays.equals(DEFAULT_IPV6_ADDRESS_BYTES, ipv6Address(new VppMacipAceBuilder().build()))); + assertTrue(Arrays.equals(DEFAULT_IPV6_ADDRESS_BYTES, ipv6Address( + new VppMacipAceBuilder().setVppMacipAceNodes(new VppMacipAceNodesBuilder().build()).build()))); + assertTrue(Arrays.equals(DEFAULT_IPV6_ADDRESS_BYTES, ipv6Address(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv6Builder().build()).build()).build()))); + assertTrue(Arrays.equals(IPV6_PREFIX_BYTES, ipv6Address(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv6Builder() + .setSourceIpv6Network(IPV6_PREFIX).build()).build()).build()))); + } + + @Test + public void testIpv6AddressPrefix() { + assertEquals(DEFAULT_IPV6_PREFIX_VALUE, ipv6AddressPrefix(new VppMacipAceBuilder().build())); + assertEquals(DEFAULT_IPV6_PREFIX_VALUE, ipv6AddressPrefix( + new VppMacipAceBuilder().setVppMacipAceNodes(new VppMacipAceNodesBuilder().build()).build())); + assertEquals(DEFAULT_IPV6_PREFIX_VALUE, ipv6AddressPrefix(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv6Builder().build()).build()).build())); + assertEquals(IPV6_PREFIX_VALUE, ipv6AddressPrefix(new VppMacipAceBuilder().setVppMacipAceNodes( + new VppMacipAceNodesBuilder().setAceIpVersion(new AceIpv6Builder() + .setSourceIpv6Network(IPV6_PREFIX).build()).build()).build())); + } + + @Test + public void testMacIpAction() { + verifyExceptionalCase(() -> macIpAction(new AceBuilder().build()), IllegalArgumentException.class); + verifyExceptionalCase(() -> macIpAction(new AceBuilder().setActions(new ActionsBuilder().build()).build()), + IllegalArgumentException.class); + // this one must pass even if deny is not fully set, because of default value definition + assertEquals((byte) 0, macIpAction(new AceBuilder().setActions(new ActionsBuilder().setPacketHandling( + new DenyBuilder().build()).build()).build())); + + assertEquals((byte) 1, macIpAction(new AceBuilder().setActions(new ActionsBuilder().setPacketHandling( + new PermitBuilder().setPermit(true).build()).build()).build())); + } + + @Test + public void testIpVersionV4Defined() { + MacipAclRule rule = new MacipAclRule(); + + rule.isIpv6 = 0; + rule.srcIpAddr = IPV4_PREFIX_BYTES; + rule.srcIpPrefixLen = IPV4_PREFIX_VALUE; + + final AceIpVersion result = ipVersion(rule); + assertTrue(result instanceof AceIpv4); + assertEquals(IPV4_PREFIX, AceIpv4.class.cast(result).getSourceIpv4Network()); + } + + @Test + public void testIpVersionV4Undefined() { + MacipAclRule rule = new MacipAclRule(); + + rule.isIpv6 = 0; + + final AceIpVersion result = ipVersion(rule); + assertTrue(result instanceof AceIpv4); + assertNull(AceIpv4.class.cast(result).getSourceIpv4Network()); + } + + @Test + public void testIpVersionV6Defined() { + MacipAclRule rule = new MacipAclRule(); + + rule.isIpv6 = 1; + rule.srcIpAddr = IPV6_PREFIX_BYTES; + rule.srcIpPrefixLen = IPV6_PREFIX_VALUE; + + final AceIpVersion result = ipVersion(rule); + assertTrue(result instanceof AceIpv6); + assertEquals(IPV6_PREFIX, AceIpv6.class.cast(result).getSourceIpv6Network()); + } + + @Test + public void testIpVersionV6Undefined() { + MacipAclRule rule = new MacipAclRule(); + + rule.isIpv6 = 1; + + final AceIpVersion result = ipVersion(rule); + assertTrue(result instanceof AceIpv6); + assertNull(AceIpv6.class.cast(result).getSourceIpv6Network()); + } + + @Test + public void testSourceMac() { + assertEquals(DEFAULT_MAC_ADDRESS, sourceMac(new MacipAclRule())); + + + MacipAclRule rule = new MacipAclRule(); + rule.srcMac = MAC_ADDRESS_BYTES; + assertEquals(MAC_ADDRESS, sourceMac(rule)); + } + + @Test + public void testSourceMacMask() { + assertEquals(DEFAULT_MAC_MASK_ADDRESS, sourceMacMask(new MacipAclRule())); + + + MacipAclRule rule = new MacipAclRule(); + rule.srcMac = MAC_ADDRESS_MASK_BYTES; + assertEquals(MAC_ADDRESS_MASK, sourceMac(rule)); + } +}
\ No newline at end of file |