2 * Copyright (c) 2016 Cisco and/or its affiliates.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at:
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
17 package io.fd.honeycomb.lisp.translate.read.trait;
20 import static org.junit.Assert.assertTrue;
21 import static org.junit.Assert.fail;
23 import io.fd.honeycomb.translate.write.WriteFailedException;
24 import org.junit.Before;
25 import org.junit.Test;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
27 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
28 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.LocalMappings;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.RemoteMappings;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMappingBuilder;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.local.mapping.EidBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.RemoteMapping;
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.RemoteMappingBuilder;
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
38 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
40 public class MappingProducerTest implements MappingProducer {
42 private InstanceIdentifier<LocalMapping> validVrfLocalMappingId;
43 private InstanceIdentifier<LocalMapping> validBridgeDomainLocalMappingId;
44 private InstanceIdentifier<RemoteMapping> validVrfRemoteMappingId;
45 private InstanceIdentifier<RemoteMapping> validBridgeDomainRemoteMappingId;
47 private LocalMapping ipv4LocalMapping;
48 private LocalMapping ipv6LocalMapping;
49 private LocalMapping macLocalMapping;
51 private RemoteMapping ipv4RemoteMapping;
52 private RemoteMapping ipv6RemoteMapping;
53 private RemoteMapping macRemoteMapping;
57 validVrfLocalMappingId = InstanceIdentifier.create(VrfSubtable.class)
58 .child(LocalMappings.class)
59 .child(LocalMapping.class);
61 validBridgeDomainLocalMappingId = InstanceIdentifier.create(BridgeDomainSubtable.class)
62 .child(LocalMappings.class)
63 .child(LocalMapping.class);
65 validVrfRemoteMappingId = InstanceIdentifier.create(VrfSubtable.class)
66 .child(RemoteMappings.class)
67 .child(RemoteMapping.class);
69 validBridgeDomainRemoteMappingId = InstanceIdentifier.create(BridgeDomainSubtable.class)
70 .child(RemoteMappings.class)
71 .child(RemoteMapping.class);
73 ipv4LocalMapping = new LocalMappingBuilder()
74 .setEid(new EidBuilder()
75 .setAddressType(Ipv4Afi.class)
78 ipv6LocalMapping = new LocalMappingBuilder()
79 .setEid(new EidBuilder()
80 .setAddressType(Ipv6Afi.class)
82 macLocalMapping = new LocalMappingBuilder()
83 .setEid(new EidBuilder()
84 .setAddressType(MacAfi.class)
87 ipv4RemoteMapping = new RemoteMappingBuilder()
88 .setEid(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.remote.mapping.EidBuilder()
89 .setAddressType(Ipv4Afi.class).build()).build();
91 ipv6RemoteMapping = new RemoteMappingBuilder()
92 .setEid(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.remote.mapping.EidBuilder()
93 .setAddressType(Ipv6Afi.class).build()).build();
95 macRemoteMapping = new RemoteMappingBuilder()
96 .setEid(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.remote.mapping.EidBuilder()
97 .setAddressType(MacAfi.class).build()).build();
101 public void testValidVrfLocal() {
102 testPositiveCase(validVrfLocalMappingId, ipv4LocalMapping);
103 testPositiveCase(validVrfLocalMappingId, ipv6LocalMapping);
107 public void testValidBridgeDomainLocal() {
108 testPositiveCase(validBridgeDomainLocalMappingId, macLocalMapping);
112 public void testInvalidVrfLocal() {
113 testNegativeCase(validVrfLocalMappingId, macLocalMapping);
117 public void testInvalidBridgeDomainLocal() {
118 testNegativeCase(validBridgeDomainLocalMappingId, ipv4LocalMapping);
119 testNegativeCase(validBridgeDomainLocalMappingId, ipv6LocalMapping);
124 public void testValidVrfRemote() {
125 testPositiveCase(validVrfRemoteMappingId, ipv4RemoteMapping);
126 testPositiveCase(validVrfRemoteMappingId, ipv6RemoteMapping);
130 public void testValidBridgeDomainRemote() {
131 testPositiveCase(validBridgeDomainRemoteMappingId, macRemoteMapping);
135 public void testInvalidVrfRemote() {
136 testNegativeCase(validVrfRemoteMappingId, macRemoteMapping);
140 public void testInvalidBridgeDomainRemote() {
141 testNegativeCase(validBridgeDomainRemoteMappingId, ipv4RemoteMapping);
142 testNegativeCase(validBridgeDomainRemoteMappingId, ipv6RemoteMapping);
145 private void testNegativeCase(final InstanceIdentifier<LocalMapping> identifier, final LocalMapping data) {
147 checkAllowedCombination(identifier, data);
148 } catch (WriteFailedException e) {
149 assertTrue(e instanceof WriteFailedException.CreateFailedException);
150 assertTrue(e.getCause() instanceof IllegalArgumentException);
154 fail("Test should have failed");
158 private void testPositiveCase(final InstanceIdentifier<LocalMapping> identifier, final LocalMapping data) {
160 checkAllowedCombination(identifier, data);
161 } catch (WriteFailedException e) {
162 fail("Test should have passed");
166 private void testNegativeCase(final InstanceIdentifier<RemoteMapping> identifier, final RemoteMapping data) {
168 checkAllowedCombination(identifier, data);
169 } catch (WriteFailedException e) {
170 assertTrue(e instanceof WriteFailedException.CreateFailedException);
171 assertTrue(e.getCause() instanceof IllegalArgumentException);
175 fail("Test should have failed");
179 private void testPositiveCase(final InstanceIdentifier<RemoteMapping> identifier, final RemoteMapping data) {
181 checkAllowedCombination(identifier, data);
182 } catch (WriteFailedException e) {
183 fail("Test should have passed");