HONEYCOMB-154: update revison of models that changed since 16.09
[honeycomb.git] / lisp / lisp2vpp / src / test / java / io / fd / honeycomb / lisp / translate / read / trait / MappingProducerTest.java
1 package io.fd.honeycomb.lisp.translate.read.trait;
2
3
4 import static org.junit.Assert.assertTrue;
5 import static org.junit.Assert.fail;
6
7 import io.fd.honeycomb.translate.write.WriteFailedException;
8 import org.junit.Before;
9 import org.junit.Test;
10 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv4Afi;
11 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.Ipv6Afi;
12 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.lisp.address.types.rev151105.MacAfi;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.LocalMappings;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.RemoteMappings;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMapping;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.LocalMappingBuilder;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.local.mappings.local.mapping.EidBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.RemoteMapping;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.RemoteMappingBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.BridgeDomainSubtable;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.eid.table.grouping.eid.table.vni.table.VrfSubtable;
22 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
23
24 public class MappingProducerTest implements MappingProducer {
25
26     private InstanceIdentifier<LocalMapping> validVrfLocalMappingId;
27     private InstanceIdentifier<LocalMapping> validBridgeDomainLocalMappingId;
28     private InstanceIdentifier<RemoteMapping> validVrfRemoteMappingId;
29     private InstanceIdentifier<RemoteMapping> validBridgeDomainRemoteMappingId;
30
31     private LocalMapping ipv4LocalMapping;
32     private LocalMapping ipv6LocalMapping;
33     private LocalMapping macLocalMapping;
34
35     private RemoteMapping ipv4RemoteMapping;
36     private RemoteMapping ipv6RemoteMapping;
37     private RemoteMapping macRemoteMapping;
38
39     @Before
40     public void init() {
41         validVrfLocalMappingId = InstanceIdentifier.create(VrfSubtable.class)
42                 .child(LocalMappings.class)
43                 .child(LocalMapping.class);
44
45         validBridgeDomainLocalMappingId = InstanceIdentifier.create(BridgeDomainSubtable.class)
46                 .child(LocalMappings.class)
47                 .child(LocalMapping.class);
48
49         validVrfRemoteMappingId = InstanceIdentifier.create(VrfSubtable.class)
50                 .child(RemoteMappings.class)
51                 .child(RemoteMapping.class);
52
53         validBridgeDomainRemoteMappingId = InstanceIdentifier.create(BridgeDomainSubtable.class)
54                 .child(RemoteMappings.class)
55                 .child(RemoteMapping.class);
56
57         ipv4LocalMapping = new LocalMappingBuilder()
58                 .setEid(new EidBuilder()
59                         .setAddressType(Ipv4Afi.class)
60                         .build()).build();
61
62         ipv6LocalMapping = new LocalMappingBuilder()
63                 .setEid(new EidBuilder()
64                         .setAddressType(Ipv6Afi.class)
65                         .build()).build();
66         macLocalMapping = new LocalMappingBuilder()
67                 .setEid(new EidBuilder()
68                         .setAddressType(MacAfi.class)
69                         .build()).build();
70
71         ipv4RemoteMapping = new RemoteMappingBuilder()
72                 .setEid(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.remote.mapping.EidBuilder()
73                         .setAddressType(Ipv4Afi.class).build()).build();
74
75         ipv6RemoteMapping = new RemoteMappingBuilder()
76                 .setEid(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.remote.mapping.EidBuilder()
77                         .setAddressType(Ipv6Afi.class).build()).build();
78
79         macRemoteMapping = new RemoteMappingBuilder()
80                 .setEid(new org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.lisp.rev161214.dp.subtable.grouping.remote.mappings.remote.mapping.EidBuilder()
81                         .setAddressType(MacAfi.class).build()).build();
82     }
83
84     @Test
85     public void testValidVrfLocal() {
86         testPositiveCase(validVrfLocalMappingId, ipv4LocalMapping);
87         testPositiveCase(validVrfLocalMappingId, ipv6LocalMapping);
88     }
89
90     @Test
91     public void testValidBridgeDomainLocal() {
92         testPositiveCase(validBridgeDomainLocalMappingId, macLocalMapping);
93     }
94
95     @Test
96     public void testInvalidVrfLocal() {
97         testNegativeCase(validVrfLocalMappingId, macLocalMapping);
98     }
99
100     @Test
101     public void testInvalidBridgeDomainLocal() {
102         testNegativeCase(validBridgeDomainLocalMappingId, ipv4LocalMapping);
103         testNegativeCase(validBridgeDomainLocalMappingId, ipv6LocalMapping);
104     }
105
106
107     @Test
108     public void testValidVrfRemote() {
109         testPositiveCase(validVrfRemoteMappingId, ipv4RemoteMapping);
110         testPositiveCase(validVrfRemoteMappingId, ipv6RemoteMapping);
111     }
112
113     @Test
114     public void testValidBridgeDomainRemote() {
115         testPositiveCase(validBridgeDomainRemoteMappingId, macRemoteMapping);
116     }
117
118     @Test
119     public void testInvalidVrfRemote() {
120         testNegativeCase(validVrfRemoteMappingId, macRemoteMapping);
121     }
122
123     @Test
124     public void testInvalidBridgeDomainRemote() {
125         testNegativeCase(validBridgeDomainRemoteMappingId, ipv4RemoteMapping);
126         testNegativeCase(validBridgeDomainRemoteMappingId, ipv6RemoteMapping);
127     }
128
129     private void testNegativeCase(final InstanceIdentifier<LocalMapping> identifier, final LocalMapping data) {
130         try {
131             checkAllowedCombination(identifier, data);
132         } catch (WriteFailedException e) {
133             assertTrue(e instanceof WriteFailedException.CreateFailedException);
134             assertTrue(e.getCause() instanceof IllegalArgumentException);
135             return;
136         }
137
138         fail("Test should have failed");
139     }
140
141
142     private void testPositiveCase(final InstanceIdentifier<LocalMapping> identifier, final LocalMapping data) {
143         try {
144             checkAllowedCombination(identifier, data);
145         } catch (WriteFailedException e) {
146             fail("Test should have passed");
147         }
148     }
149
150     private void testNegativeCase(final InstanceIdentifier<RemoteMapping> identifier, final RemoteMapping data) {
151         try {
152             checkAllowedCombination(identifier, data);
153         } catch (WriteFailedException e) {
154             assertTrue(e instanceof WriteFailedException.CreateFailedException);
155             assertTrue(e.getCause() instanceof IllegalArgumentException);
156             return;
157         }
158
159         fail("Test should have failed");
160     }
161
162
163     private void testPositiveCase(final InstanceIdentifier<RemoteMapping> identifier, final RemoteMapping data) {
164         try {
165             checkAllowedCombination(identifier, data);
166         } catch (WriteFailedException e) {
167             fail("Test should have passed");
168         }
169     }
170 }