Further migration of test code from legacy setters
[bgpcep.git] / pcep / segment-routing / src / test / java / org / opendaylight / protocol / pcep / segment / routing / SrEroSubobjectParserTest.java
1 /*
2  * Copyright (c) 2014 Cisco Systems, Inc. and others.  All rights reserved.
3  *
4  * This program and the accompanying materials are made available under the
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
6  * and is available at http://www.eclipse.org/legal/epl-v10.html
7  */
8 package org.opendaylight.protocol.pcep.segment.routing;
9
10 import static org.junit.Assert.assertArrayEquals;
11 import static org.junit.Assert.assertEquals;
12
13 import io.netty.buffer.ByteBuf;
14 import io.netty.buffer.Unpooled;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.opendaylight.protocol.pcep.spi.PCEPDeserializerException;
18 import org.opendaylight.protocol.pcep.spi.pojo.SimplePCEPExtensionProviderContext;
19 import org.opendaylight.protocol.util.ByteArray;
20 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddressNoZone;
21 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4AddressNoZone;
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6AddressNoZone;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.SidType;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.add.lsp.input.arguments.ero.subobject.subobject.type.SrEroTypeBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.sr.subobject.nai.IpAdjacencyBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.sr.subobject.nai.IpNodeIdBuilder;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.segment.routing.rev181109.sr.subobject.nai.UnnumberedAdjacencyBuilder;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.pcep.types.rev181109.explicit.route.object.ero.SubobjectBuilder;
29 import org.opendaylight.yangtools.yang.common.Uint32;
30
31 public class SrEroSubobjectParserTest {
32
33     private static final byte[] SR_ERO_SUBOBJECT_WITH_IPV4_NODEID = {
34         0x05,0x0c,(byte) 0x10,0x00,
35         0x00,0x01,(byte) 0xe2,0x40,
36         0x4A,0x7D,0x2b,0x63,
37     };
38
39     private static final byte[] SR_ERO_SUBOBJECT_WITH_IPV6_NODEID = {
40         0x05,0x18,(byte) 0x20,0x00,
41         0x00,0x01,(byte) 0xe2,0x40,
42         (byte) 0xFE,(byte) 0x80,(byte) 0xCD,0x00,
43         0x00,0x00,0x00,0x00,
44         0x00,0x00,0x00,0x00,
45         0x21,0x1E,0x72,(byte) 0x9C,
46     };
47
48     private static final byte[] SR_ERO_SUBOBJECT_WITH_IPV4_ADJ = {
49         0x05,0x10,(byte) 0x30,0x00,
50         0x00,0x01,(byte) 0xe2,0x40,
51         0x4A,0x7D,0x2b,0x63,
52         0x4A,0x7D,0x2b,0x64,
53     };
54
55     private static final byte[] SR_ERO_SUBOBJECT_WITH_IPV6_ADJ = {
56         0x05,0x28,(byte) 0x40,0x00,
57         0x00,0x01,(byte) 0xe2,0x40,
58         (byte) 0xFE,(byte) 0x80,(byte) 0xCD,0x00,
59         0x00,0x00,0x00,0x00,
60         0x00,0x00,0x00,0x00,
61         0x21,0x1E,0x72,(byte) 0x9C,
62         (byte) 0xFE,(byte) 0x80,(byte) 0xCD,0x00,
63         0x00,0x00,0x00,0x00,
64         0x00,0x00,0x00,0x00,
65         0x21,0x1E,0x72,(byte) 0x9D,
66     };
67
68     private static final byte[] SR_ERO_SUBOBJECT_WITH_UNNUMBERED = {
69         0x05,0x18,(byte) 0x50,0x00,
70         0x00,0x01,(byte) 0xe2,0x40,
71         0x00,0x00,0x00,0x01,
72         0x00,0x00,0x00,0x02,
73         0x00,0x00,0x00,0x03,
74         0x00,0x00,0x00,0x04
75     };
76
77     private static final byte[] SR_ERO_SUBOBJECT_WITHOUT_NAI = {
78         0x05,0x08,(byte) 0x10,0x08,
79         0x00,0x01,(byte) 0xe2,0x40
80     };
81
82     private static final byte[] SR_ERO_SUBOBJECT_WITHOUT_SID = {
83         0x05,0x08,(byte) 0x10,0x04,
84         0x4A,0x7D,0x2b,0x63,
85     };
86
87     private static final byte[] SR_ERO_SUBOBJECT_WITH_IPV4_NODEID_MFLAG = {
88         0x05,0x0c,(byte) 0x10,0x01,
89         0x07,0x5B,(byte) 0xCD,0x15,
90         0x4A,0x7D,0x2b,0x63,
91     };
92     private static final byte[] SR_ERO_SUBOBJECT_WITH_IPV4_NODEID_MFLAG_AFTER = {
93         0x05,0x0c,(byte) 0x10,0x01,
94         0x07,0x5B,(byte) 0xC0,0x00,
95         0x4A,0x7D,0x2b,0x63,
96     };
97
98     private SimplePCEPExtensionProviderContext ctx;
99     private SegmentRoutingActivator act;
100     private SrEroSubobjectParser parser;
101
102     @Before
103     public void setUp() {
104         this.ctx = new SimplePCEPExtensionProviderContext();
105         this.act = new SegmentRoutingActivator();
106         this.act.start(this.ctx);
107         final boolean isIanaAssignedType = false;
108         this.parser = new SrEroSubobjectParser(isIanaAssignedType);
109     }
110
111     @Test
112     public void testSrEroSubobjectIpv4NodeIdNAI() throws PCEPDeserializerException {
113         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
114                 .setSidType(SidType.Ipv4NodeId)
115                 .setSid(Uint32.valueOf(123456))
116                 .setCFlag(false)
117                 .setMFlag(false)
118                 .setNai(new IpNodeIdBuilder().setIpAddress(new IpAddressNoZone(new Ipv4AddressNoZone("74.125.43.99")))
119                     .build());
120         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
121
122         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
123             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITH_IPV4_NODEID, 2)), false));
124         final ByteBuf buffer = Unpooled.buffer();
125         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
126         assertArrayEquals(SR_ERO_SUBOBJECT_WITH_IPV4_NODEID, ByteArray.getAllBytes(buffer));
127     }
128
129     @Test
130     public void testSrEroSubobjectIpv6NodeIdNAI() throws PCEPDeserializerException {
131         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
132                 .setSidType(SidType.Ipv6NodeId)
133                 .setSid(Uint32.valueOf(123456))
134                 .setCFlag(false)
135                 .setMFlag(false)
136                 .setNai(new IpNodeIdBuilder().setIpAddress(new IpAddressNoZone(
137                     new Ipv6AddressNoZone("fe80:cd00::211e:729c"))).build());
138         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
139
140         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
141             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITH_IPV6_NODEID, 2)), false));
142         final ByteBuf buffer = Unpooled.buffer();
143         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
144         assertArrayEquals(SR_ERO_SUBOBJECT_WITH_IPV6_NODEID, ByteArray.getAllBytes(buffer));
145     }
146
147     @Test
148     public void testSrEroSubobjectIpv4AdjacencyNAI() throws PCEPDeserializerException {
149         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
150                 .setSidType(SidType.Ipv4Adjacency)
151                 .setSid(Uint32.valueOf(123456))
152                 .setCFlag(false)
153                 .setMFlag(false)
154                 .setNai(new IpAdjacencyBuilder().setLocalIpAddress(new IpAddressNoZone(
155                     new Ipv4AddressNoZone("74.125.43.99")))
156                     .setRemoteIpAddress(new IpAddressNoZone(new Ipv4AddressNoZone("74.125.43.100"))).build());
157         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
158
159         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
160             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITH_IPV4_ADJ, 2)), false));
161         final ByteBuf buffer = Unpooled.buffer();
162         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
163         assertArrayEquals(SR_ERO_SUBOBJECT_WITH_IPV4_ADJ, ByteArray.getAllBytes(buffer));
164     }
165
166     @Test
167     public void testSrEroSubobjectIpv6AdjacencyNAI() throws PCEPDeserializerException {
168         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
169                 .setSidType(SidType.Ipv6Adjacency)
170                 .setSid(Uint32.valueOf(123456))
171                 .setCFlag(false)
172                 .setMFlag(false)
173                 .setNai(new IpAdjacencyBuilder()
174                     .setLocalIpAddress(new IpAddressNoZone(new Ipv6AddressNoZone("fe80:cd00::211e:729c")))
175                     .setRemoteIpAddress(new IpAddressNoZone(new Ipv6AddressNoZone("fe80:cd00::211e:729d")))
176                     .build());
177         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
178
179         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
180             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITH_IPV6_ADJ, 2)), false));
181         final ByteBuf buffer = Unpooled.buffer();
182         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
183         assertArrayEquals(SR_ERO_SUBOBJECT_WITH_IPV6_ADJ, ByteArray.getAllBytes(buffer));
184     }
185
186     @Test
187     public void testSrEroSubobjectUnnumberedNAI() throws PCEPDeserializerException {
188         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
189                 .setSidType(SidType.Unnumbered)
190                 .setSid(Uint32.valueOf(123456))
191                 .setCFlag(false)
192                 .setMFlag(false)
193                 .setNai(new UnnumberedAdjacencyBuilder()
194                     .setLocalNodeId(Uint32.ONE).setLocalInterfaceId(Uint32.valueOf(2))
195                     .setRemoteNodeId(Uint32.valueOf(3)).setRemoteInterfaceId(Uint32.valueOf(4))
196                     .build());
197         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
198
199         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
200             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITH_UNNUMBERED, 2)), false));
201         final ByteBuf buffer = Unpooled.buffer();
202         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
203         assertArrayEquals(SR_ERO_SUBOBJECT_WITH_UNNUMBERED, ByteArray.getAllBytes(buffer));
204     }
205
206     @Test
207     public void testSrEroSubobjectWithoutNAI() throws PCEPDeserializerException {
208         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
209                 .setSidType(SidType.Ipv4NodeId)
210                 .setSid(Uint32.valueOf(123456))
211                 .setCFlag(false)
212                 .setMFlag(false);
213         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
214
215         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
216             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITHOUT_NAI, 2)), false));
217         final ByteBuf buffer = Unpooled.buffer();
218         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
219         assertArrayEquals(SR_ERO_SUBOBJECT_WITHOUT_NAI, ByteArray.getAllBytes(buffer));
220     }
221
222     @Test
223     public void testSrEroSubobjectWithoutBody() throws PCEPDeserializerException {
224         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
225                 .setSidType(SidType.Ipv4NodeId)
226                 .setCFlag(false)
227                 .setMFlag(false)
228                 .setNai(new IpNodeIdBuilder().setIpAddress(new IpAddressNoZone(
229                     new Ipv4AddressNoZone("74.125.43.99"))).build());
230         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
231
232         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
233             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITHOUT_SID, 2)), false));
234         final ByteBuf buffer = Unpooled.buffer();
235         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
236         assertArrayEquals(SR_ERO_SUBOBJECT_WITHOUT_SID, ByteArray.getAllBytes(buffer));
237     }
238
239     @Test
240     public void testSrEroSubobjectIpv4NodeIdNAIMFlag() throws PCEPDeserializerException {
241         final SrEroTypeBuilder builder = new SrEroTypeBuilder()
242                 .setCFlag(false)
243                 .setMFlag(true)
244                 .setSidType(SidType.Ipv4NodeId)
245                 .setSid(Uint32.valueOf(30140))
246                 .setNai(new IpNodeIdBuilder().setIpAddress(new IpAddressNoZone(new Ipv4AddressNoZone("74.125.43.99")))
247                     .build());
248         final SubobjectBuilder subobjBuilder = new SubobjectBuilder().setSubobjectType(builder.build()).setLoose(false);
249
250         assertEquals(subobjBuilder.build(), this.parser.parseSubobject(Unpooled.wrappedBuffer(
251             ByteArray.cutBytes(SR_ERO_SUBOBJECT_WITH_IPV4_NODEID_MFLAG, 2)), false));
252         final ByteBuf buffer = Unpooled.buffer();
253         this.parser.serializeSubobject(subobjBuilder.build(), buffer);
254         assertArrayEquals(SR_ERO_SUBOBJECT_WITH_IPV4_NODEID_MFLAG_AFTER, ByteArray.getAllBytes(buffer));
255     }
256 }