Eliminate RouteDistinguisherBuilder
[bgpcep.git] / bgp / concepts / src / test / java / org / opendaylight / bgp / concepts / RouteDistinguisherUtilTest.java
1 /*
2  * Copyright (c) 2016 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.bgp.concepts;
9
10 import static org.junit.Assert.assertArrayEquals;
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertThrows;
13 import static org.opendaylight.bgp.concepts.RouteDistinguisherUtil.SEPARATOR;
14
15 import io.netty.buffer.Unpooled;
16 import org.junit.Test;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.RdAs;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.RdIpv4;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.RdTwoOctetAs;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.params.xml.ns.yang.bgp.types.rev200120.RouteDistinguisher;
21
22 public class RouteDistinguisherUtilTest {
23     private static final String IP_ADDRESS = "1.2.3.4";
24     private static final String IP_PORT = "10";
25     private static final String ADMIN = "55";
26     private static final String ASSIGNED_NUMBER = "65535";
27     private static final String ASSIGNED_NUMBER_BIG = "4294967295";
28     private static final byte[] AS_2B_BYTES = {0, 0, 0, 55, 0, 0, (byte) 0xff, (byte) 0xff};
29     private static final byte[] AS_2B_BYTES_BIG = {0, 0, 0, 55, (byte) 0xff, (byte) 0xff, (byte) 0xff, (byte) 0xff};
30     private static final byte[] IP_BYTES = {0, 1, 1, 2, 3, 4, 0, 10};
31     private static final byte[] AS_4B_BYTES = {0, 2, 0, 0, 0, 55, (byte) 0xff, (byte) 0xff};
32     private static final byte[] INVALID_RD_TYPE_BYTES = {0, 3, 0, 0, 0, 55, (byte) 0xff, (byte) 0xff};
33
34     @Test
35     public void testAs2BRouteDistinguisher() {
36         final var expected = new RouteDistinguisher(
37             new RdTwoOctetAs("0" + SEPARATOR + ADMIN + SEPARATOR + ASSIGNED_NUMBER));
38         assertEquals(expected,
39             RouteDistinguisherUtil.parseRouteDistinguisher("0" + SEPARATOR + ADMIN + SEPARATOR + ASSIGNED_NUMBER));
40
41         final var parsed = RouteDistinguisherUtil.parseRouteDistinguisher(Unpooled.copiedBuffer(AS_2B_BYTES));
42         assertEquals(expected, parsed);
43         final var byteAggregator = Unpooled.buffer(AS_2B_BYTES.length);
44         RouteDistinguisherUtil.serializeRouteDistinquisher(parsed, byteAggregator);
45         assertArrayEquals(AS_2B_BYTES, byteAggregator.array());
46     }
47
48     @Test
49     public void testAs2BLongRouteDistinguisher() {
50         final var expected = new RouteDistinguisher(new RdTwoOctetAs(
51             "0" + SEPARATOR + ADMIN + SEPARATOR + ASSIGNED_NUMBER_BIG));
52         assertEquals(expected,
53             RouteDistinguisherUtil.parseRouteDistinguisher("0" + SEPARATOR + ADMIN + SEPARATOR + ASSIGNED_NUMBER_BIG));
54
55         final var parsed = RouteDistinguisherUtil.parseRouteDistinguisher(Unpooled.copiedBuffer(AS_2B_BYTES_BIG));
56         assertEquals(expected, parsed);
57         final var byteAggregator = Unpooled.buffer(AS_2B_BYTES_BIG.length);
58         RouteDistinguisherUtil.serializeRouteDistinquisher(parsed, byteAggregator);
59         assertArrayEquals(AS_2B_BYTES_BIG, byteAggregator.array());
60     }
61
62     @Test
63     public void testIpv4RouteDistinguisher() {
64         final var expected = new RouteDistinguisher(new RdIpv4(IP_ADDRESS + SEPARATOR + IP_PORT));
65         assertEquals(expected, RouteDistinguisherUtil.parseRouteDistinguisher(IP_ADDRESS + SEPARATOR + IP_PORT));
66
67         final var parsed = RouteDistinguisherUtil.parseRouteDistinguisher(Unpooled.copiedBuffer(IP_BYTES));
68         assertEquals(expected, parsed);
69         final var byteAggregator = Unpooled.buffer(IP_BYTES.length);
70         RouteDistinguisherUtil.serializeRouteDistinquisher(parsed, byteAggregator);
71         assertArrayEquals(IP_BYTES, byteAggregator.array());
72     }
73
74     @Test
75     public void testAs4BRouteDistinguisher() {
76         final var expected = new RouteDistinguisher(new RdAs(ADMIN + SEPARATOR + ASSIGNED_NUMBER));
77         assertEquals(expected, RouteDistinguisherUtil.parseRouteDistinguisher(ADMIN + SEPARATOR + ASSIGNED_NUMBER));
78
79         final var parsed = RouteDistinguisherUtil.parseRouteDistinguisher(Unpooled.copiedBuffer(AS_4B_BYTES));
80         assertEquals(expected, parsed);
81         final var byteAggregator = Unpooled.buffer(AS_4B_BYTES.length);
82         RouteDistinguisherUtil.serializeRouteDistinquisher(parsed, byteAggregator);
83         assertArrayEquals(AS_4B_BYTES, byteAggregator.array());
84     }
85
86     @Test
87     public void testInvalidRDType() {
88         final var buf = Unpooled.copiedBuffer(INVALID_RD_TYPE_BYTES);
89         assertThrows(IllegalArgumentException.class, () -> RouteDistinguisherUtil.parseRouteDistinguisher(buf));
90     }
91 }