Move integration tests to mdsal-it-parent
[lispflowmapping.git] / mappingservice / yangmodel / src / test / java / org / opendaylight / lispflowmapping / serializer / MapNotifySerializationTest.java
1 /*
2  * Copyright (c) 2014 Contextream, 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
9 package org.opendaylight.lispflowmapping.serializer;
10
11 import static org.junit.Assert.assertEquals;
12 import static org.junit.Assert.assertFalse;
13 import static org.junit.Assert.assertTrue;
14
15 import java.nio.ByteBuffer;
16 import java.util.ArrayList;
17
18 import junitx.framework.ArrayAssert;
19
20 import org.junit.Test;
21 import org.opendaylight.lispflowmapping.lisp.serializer.MapNotifySerializer;
22 import org.opendaylight.lispflowmapping.lisp.serializer.exception.LispSerializationException;
23 import org.opendaylight.lispflowmapping.lisp.type.AddressFamilyNumberEnum;
24 import org.opendaylight.lispflowmapping.lisp.util.LispAFIConvertor;
25 import org.opendaylight.lispflowmapping.tools.junit.BaseTestCase;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.EidToLocatorRecord.Action;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.MapNotify;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidtolocatorrecords.EidToLocatorRecord;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.eidtolocatorrecords.EidToLocatorRecordBuilder;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.lispaddress.lispaddresscontainer.address.no.NoAddressBuilder;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.locatorrecords.LocatorRecord;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.lfm.control.plane.rev150314.mapnotifymessage.MapNotifyBuilder;
33
34 public class MapNotifySerializationTest extends BaseTestCase {
35
36     @Test
37     public void serialize__Fields() throws Exception {
38         MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
39         mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
40         mnBuilder.getEidToLocatorRecord().add(
41                 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")))
42                         .build());
43         mnBuilder.getEidToLocatorRecord().add(
44                 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.73")))
45                         .build());
46
47         mnBuilder.setNonce(6161616161L);
48         mnBuilder.setKeyId((short) 0x0001);
49         byte[] authenticationData = new byte[] { (byte) 0x16, (byte) 0x98, (byte) 0x96, (byte) 0xeb, (byte) 0x88, (byte) 0x2d, (byte) 0x4d,
50                 (byte) 0x22, (byte) 0xe5, (byte) 0x8f, (byte) 0xe6, (byte) 0x89, (byte) 0x64, (byte) 0xb9, (byte) 0x17, (byte) 0xa4, (byte) 0xba,
51                 (byte) 0x4e, (byte) 0x8c, (byte) 0x41 };
52         mnBuilder.setAuthenticationData(authenticationData);
53
54         ByteBuffer bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
55         assertHexEquals((byte) 0x40, bb.get()); // Type + MSByte of reserved
56         assertEquals(0, bb.getShort()); // Rest of reserved
57         assertEquals(2, bb.get()); // Record Count
58         assertEquals(6161616161L, bb.getLong()); // Nonce
59         assertHexEquals((short) 0x0001, bb.getShort()); // Key ID
60         assertEquals(authenticationData.length, bb.getShort());
61
62         byte[] actualAuthenticationData = new byte[20];
63         bb.get(actualAuthenticationData);
64         ArrayAssert.assertEquals(authenticationData, actualAuthenticationData);
65
66         bb.position(bb.position() + 12); /* EID in first record */
67         assertEquals(0x1, bb.getInt());
68
69         bb.position(bb.position() + 12); /* EID in second record */
70         assertEquals(73, bb.getInt());
71
72         assertEquals(bb.position(), bb.capacity());
73     }
74
75     @Test
76     public void serialize__deserizlise() throws Exception {
77         MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
78         mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
79         mnBuilder.getEidToLocatorRecord().add(
80                 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1")))
81                         .build());
82         mnBuilder.getEidToLocatorRecord().add(
83                 new EidToLocatorRecordBuilder().setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.73")))
84                         .build());
85
86         mnBuilder.setNonce(6161616161L);
87         mnBuilder.setKeyId((short) 0x0001);
88         byte[] authenticationData = new byte[] { (byte) 0x16, (byte) 0x98, (byte) 0x96, (byte) 0xeb, (byte) 0x88, (byte) 0x2d, (byte) 0x4d,
89                 (byte) 0x22, (byte) 0xe5, (byte) 0x8f, (byte) 0xe6, (byte) 0x89, (byte) 0x64, (byte) 0xb9, (byte) 0x17, (byte) 0xa4, (byte) 0xba,
90                 (byte) 0x4e, (byte) 0x8c, (byte) 0x41 };
91         mnBuilder.setAuthenticationData(authenticationData);
92
93         MapNotify mn = mnBuilder.build();
94         ArrayAssert.assertEquals(
95                 MapNotifySerializer.getInstance().serialize(mn).array(),
96                 MapNotifySerializer.getInstance()
97                         .serialize(MapNotifySerializer.getInstance().deserialize(MapNotifySerializer.getInstance().serialize(mn))).array());
98
99     }
100
101     @Test
102     public void deserialize__AllFields() throws Exception {
103         // LISP(Type = 4 Map-Notify, I=1
104         // Record Counter: 1
105         // Nonce: (something)
106         // Key ID: 0x0000
107         // AuthDataLength: 00 Data:
108         // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
109         // No-Action
110         // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
111         // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
112         // xTR-ID 1
113         // Site-ID 1
114         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("48 00 00 01 FF BB "
115         //
116                 + "00 00 00 00 00 00 00 00 00 00 00 00 " //
117                 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
118                 + "ff 00 00 05 00 01 c0 a8 88 0a "
119                 + "00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 " // xTR-ID
120                 + "00 00 00 00 00 00 00 01 " // Site-ID
121                 ));
122
123
124         assertTrue(mn.isXtrSiteIdPresent());
125
126         assertEquals(1, mn.getEidToLocatorRecord().size());
127         assertEquals(0xFFBB000000000000L, mn.getNonce().longValue());
128         assertEquals(0x0000, mn.getKeyId().shortValue());
129         byte[] expectedAuthenticationData = {};
130         ArrayAssert.assertEquals(expectedAuthenticationData, mn.getAuthenticationData());
131     }
132
133     @Test
134     public void serialize__NoAuthenticationData() throws Exception {
135         MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
136         mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
137         mnBuilder.getEidToLocatorRecord().add(
138                 new EidToLocatorRecordBuilder().setRecordTtl(55)
139                         .setLispAddressContainer(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("0.0.0.1"))).build());
140
141         ByteBuffer bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
142         bb.position(bb.position() + 14); // jump to AuthenticationDataLength
143         assertEquals(0, bb.getShort());
144         assertEquals(55, bb.getInt());
145
146         mnBuilder.setAuthenticationData(null);
147
148         bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
149         bb.position(bb.position() + 14); // jump to AuthenticationDataLength
150         assertEquals(0, bb.getShort());
151         assertEquals(55, bb.getInt());
152
153         mnBuilder.setAuthenticationData(new byte[0]);
154
155         bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
156         bb.position(bb.position() + 14); // jump to AuthenticationDataLength
157         assertEquals(0, bb.getShort());
158         assertEquals(55, bb.getInt());
159     }
160
161     @Test
162     public void serialize__NoPrefixInEidToLocator() throws Exception {
163         MapNotifyBuilder mnBuilder = new MapNotifyBuilder();
164         mnBuilder.setEidToLocatorRecord(new ArrayList<EidToLocatorRecord>());
165         mnBuilder.getEidToLocatorRecord().add(new EidToLocatorRecordBuilder().build());
166         mnBuilder.getEidToLocatorRecord().add(new EidToLocatorRecordBuilder().setLispAddressContainer(null).build());
167         mnBuilder.getEidToLocatorRecord().add(
168                 new EidToLocatorRecordBuilder().setLispAddressContainer(
169                         LispAFIConvertor.toContainer(new NoAddressBuilder().setAfi(AddressFamilyNumberEnum.NO_ADDRESS.getIanaCode()).build())).build());
170
171         ByteBuffer bb = MapNotifySerializer.getInstance().serialize(mnBuilder.build());
172         bb.position(bb.position() + 16); // jump to first record prefix AFI
173         assertEquals(0, bb.getShort());
174
175         bb.position(bb.position() + 10); // jump to second record prefix AFI
176         assertEquals(0, bb.getShort());
177
178         bb.position(bb.position() + 10); // jump to third record prefix AFI
179         assertEquals(0, bb.getShort());
180     }
181
182     @Test
183     public void deserialize__MultipleRecords() throws Exception {
184         // LISP(Type = 4 Map-Notify, I=1
185         // Record Counter: 4
186         // EID prefixes: 153.16.254.1 -- 152.16.254.1 -- 151.16.254.1 --
187         // 150.16.254.1
188         // Local RLOCs: 192.168.136.10 -- 192.168.136.11 -- 192.168.136.12 --
189         // 192.168.136.13
190         //
191         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 "
192         //
193                 + "04 " // Record count
194                 + "FF BB 00 00 00 00 00 00 00 01 00 14 87 c1 33 cd " //
195                 + "d1 1e bc 80 fd 3e 71 11 81 17 40 74 26 25 44 bd " //
196                 + "00 00 00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " // Record
197                 // 1
198                 + "ff 00 00 05 00 01 c0 a8 88 0a " // contd
199                 + "00 00 00 0a 01 20 10 00 00 00 00 01 98 10 fe 01 01 64 " // Record
200                 // 2
201                 + "ff 00 00 05 00 01 c0 a8 88 0b " // contd
202                 + "00 00 00 0a 01 20 10 00 00 00 00 01 97 10 fe 01 01 64 " // Record
203                 // 3
204                 + "ff 00 00 05 00 01 c0 a8 88 0c " // contd
205                 + "00 00 00 0a 01 20 10 00 00 00 00 01 96 10 fe 01 01 64 " // Record
206                 // 4
207                 + "ff 00 00 05 00 01 c0 a8 88 0d " // contd
208         ));
209
210         assertEquals(4, mn.getEidToLocatorRecord().size());
211         assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("153.16.254.1")), mn.getEidToLocatorRecord().get(0)
212                 .getLispAddressContainer());
213         assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("151.16.254.1")), mn.getEidToLocatorRecord().get(2)
214                 .getLispAddressContainer());
215         assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.11")), mn.getEidToLocatorRecord().get(1)
216                 .getLocatorRecord().get(0).getLispAddressContainer());
217         assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.13")), mn.getEidToLocatorRecord().get(3)
218                 .getLocatorRecord().get(0).getLispAddressContainer());
219     }
220
221     @Test
222     public void deserialize__Locators() throws Exception {
223         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 01 01 "
224         //
225                 + "FF BB 00 00 00 00 00 00 00 01 00 14 f1 b8 ab f0 " //
226                 + "66 bb 2e ef 12 70 74 46 6f 6b 8e ca bf 1e 68 40 " //
227                 + "00 00 00 0a " //
228                 + "03 " // Locator Count
229                 + "20 10 00 00 00 00 01 99 10 fe 01 "
230                 // Locator 1
231                 + "01 64 1f 00 " // priorities + weights
232                 + "00 05 " // Flags
233                 + "00 01 c0 a8 88 0a " // Locator
234                 // Locator 2
235                 + "67 00 30 34 " // priorities + weights
236                 + "00 02 " // Flags
237                 + "00 01 cc aa AA 11 " // Locator
238                 // Locator 3
239                 + "60 11 34 A4 " // priorities + weights
240                 + "00 03 " // Flags
241                 + "00 01 c0 a8 88 0a " // Locator
242         ));
243
244         assertEquals(1, mn.getEidToLocatorRecord().size());
245         EidToLocatorRecord eidToLocator = mn.getEidToLocatorRecord().get(0);
246         assertEquals(3, eidToLocator.getLocatorRecord().size());
247         LocatorRecord loc0 = eidToLocator.getLocatorRecord().get(0);
248         LocatorRecord loc1 = eidToLocator.getLocatorRecord().get(1);
249         LocatorRecord loc2 = eidToLocator.getLocatorRecord().get(2);
250         assertEquals((byte) 0x01, loc0.getPriority().byteValue());
251         assertEquals((byte) 0x67, loc1.getPriority().byteValue());
252         assertEquals((byte) 0x60, loc2.getPriority().byteValue());
253
254         assertEquals((byte) 0x64, loc0.getWeight().byteValue());
255         assertEquals((byte) 0x00, loc1.getWeight().byteValue());
256         assertEquals((byte) 0x11, loc2.getWeight().byteValue());
257
258         assertEquals((byte) 0x1F, loc0.getMulticastPriority().byteValue());
259         assertEquals((byte) 0x30, loc1.getMulticastPriority().byteValue());
260         assertEquals((byte) 0x34, loc2.getMulticastPriority().byteValue());
261
262         assertEquals((byte) 0x00, loc0.getMulticastWeight().byteValue());
263         assertEquals((byte) 0x34, loc1.getMulticastWeight().byteValue());
264         assertEquals((byte) 0xA4, loc2.getMulticastWeight().byteValue());
265
266         assertTrue(loc0.isLocalLocator());
267         assertFalse(loc1.isLocalLocator());
268         assertFalse(loc2.isLocalLocator());
269
270         assertFalse(loc0.isRlocProbed());
271         assertTrue(loc1.isRlocProbed());
272         assertTrue(loc2.isRlocProbed());
273
274         assertTrue(loc0.isRouted());
275         assertFalse(loc1.isRouted());
276         assertTrue(loc2.isRouted());
277
278         assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("192.168.136.10")), loc0.getLispAddressContainer());
279         assertEquals(LispAFIConvertor.toContainer(LispAFIConvertor.asIPAfiAddress("204.170.170.17")), loc1.getLispAddressContainer());
280     }
281
282     @Test
283     public void deserialize__SomeEidToLocatorFiels() throws Exception {
284         // LISP(Type = 4 Map-Notify, I=0
285         // Record Counter: 4
286         // EID prefixes: 153.16.254.1 -- 152.16.254.1 -- 151.16.254.1 --
287         // 150.16.254.1
288         // Local RLOCs: 192.168.136.10 -- 192.168.136.11 -- 192.168.136.12 --
289         // 192.168.136.13
290         //
291         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 "
292         //
293                 + "04 " // Record count
294                 + "FF BB 00 00 00 00 00 00 00 01 00 14 b9 cd 7b 89 " //
295                 + "65 c2 56 03 be dd 81 20 47 e5 c3 4f 56 02 e1 59 " //
296                 + "00 00 00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " // Record
297                 // 0
298                 + "ff 00 00 05 00 01 c0 a8 88 0a " // contd
299                 + "00 00 00 0b 01 17 50 00 01 11 00 01 98 10 fe 01 01 64 " // Record
300                 // 1
301                 + "ff 00 00 05 00 01 c0 a8 88 0b " // contd
302                 + "00 00 00 0c 01 20 00 00 02 22 00 01 97 10 fe 01 01 64 " // Record
303                 // 2
304                 + "ff 00 00 05 00 01 c0 a8 88 0c " // contd
305                 + "00 00 00 0d 01 20 20 00 03 33 00 01 96 10 fe 01 01 64 " // Record
306                 // 3
307                 + "ff 00 00 05 00 01 c0 a8 88 0d " // contd
308         ));
309
310         assertEquals(4, mn.getEidToLocatorRecord().size());
311
312         EidToLocatorRecord record0 = mn.getEidToLocatorRecord().get(0);
313         EidToLocatorRecord record1 = mn.getEidToLocatorRecord().get(1);
314         EidToLocatorRecord record2 = mn.getEidToLocatorRecord().get(2);
315         EidToLocatorRecord record3 = mn.getEidToLocatorRecord().get(3);
316
317         assertEquals(10, record0.getRecordTtl().intValue());
318         assertEquals(13, record3.getRecordTtl().intValue());
319
320         assertEquals(32, record0.getMaskLength().intValue());
321         assertEquals(23, record1.getMaskLength().intValue());
322
323         assertEquals(Action.NoAction, record0.getAction());
324         assertEquals(Action.SendMapRequest, record1.getAction());
325         assertEquals(Action.NoAction, record2.getAction());
326         assertEquals(Action.NativelyForward, record3.getAction());
327
328         assertTrue(record0.isAuthoritative());
329         assertTrue(record1.isAuthoritative());
330         assertFalse(record2.isAuthoritative());
331         assertFalse(record3.isAuthoritative());
332
333         assertEquals(0x000, record0.getMapVersion().shortValue());
334         assertEquals(0x111, record1.getMapVersion().shortValue());
335         assertEquals(0x222, record2.getMapVersion().shortValue());
336         assertEquals(0x333, record3.getMapVersion().shortValue());
337     }
338
339     @Test
340     public void deserialize__IllegalAction() throws Exception {
341         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 01 01 FF BB "
342         //
343                 + "00 00 00 00 00 00 00 01 00 14 ec 47 1e 53 25 91 " //
344                 + "2f 68 10 75 13 dd 2c e8 6e 3c ac 94 ed e4 00 00 " //
345                 + "00 0a 01 20 F0 00 00 00 00 01 99 10 fe 01 01 64 " //
346                 + "ff 00 00 05 00 01 c0 a8 88 0a"));
347
348         assertEquals(1, mn.getEidToLocatorRecord().size());
349         assertEquals(Action.NoAction, mn.getEidToLocatorRecord().get(0).getAction());
350     }
351
352     @Test(expected = LispSerializationException.class)
353     public void deserialize_WrongAuthenticationLength() throws Exception {
354         // LISP(Type = 4 Map-Notify, I=0
355         // Record Counter: 1
356         // Nonce: (something)
357         // Key ID: 0x0000
358         // AuthDataLength: 20 Data:
359         // e8:f5:0b:c5:c5:f2:b0:21:27:a8:a5:68:89:ec
360         // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
361         // No-Action
362         // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
363         // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
364         //
365         MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("48 00 00 01 FF BB "
366         //
367                 + "00 00 00 00 00 00 00 00 00 14 e8 f5 0b c5 c5 f2 " //
368                 + "b0 21 27 a8 21 a5 68 89 ec 00 00 " //
369                 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
370                 + "ff 00 00 05 00 01 c0 a8 88 0a"));
371     }
372
373     @Test
374     public void deserialize__SHA1() throws Exception {
375         // LISP(Type = 4 Map-Notify, I=0
376         // Record Counter: 1
377         // Nonce: (something)
378         // Key ID: 0x0001
379         // AuthDataLength: 20 Data:
380         // b2:dd:1a:25:c0:60:b1:46:e8:dc:6d:a6:ae:2e:92:92:a6:ca:b7:9d
381         // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
382         // No-Action
383         // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
384         // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
385         //
386         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 01 FF BB "
387         //
388                 + "00 00 00 00 00 00 00 01 00 14 2c 61 b9 c9 9a 20 " //
389                 + "ba d8 f5 40 d3 55 6f 5f 6e 5a b2 0a bf b5 00 00 " //
390                 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
391                 + "ff 00 00 05 00 01 c0 a8 88 0a"));
392
393         assertFalse(mn.isXtrSiteIdPresent());
394
395         assertEquals(1, mn.getEidToLocatorRecord().size());
396         assertEquals(0xFFBB000000000000L, mn.getNonce().longValue());
397         assertEquals(0x0001, mn.getKeyId().shortValue());
398         byte[] expectedAuthenticationData = { (byte) 0x2c, (byte) 0x61, (byte) 0xb9, (byte) 0xc9, (byte) 0x9a, (byte) 0x20, (byte) 0xba, (byte) 0xd8, //
399                 (byte) 0xf5, (byte) 0x40, (byte) 0xd3, (byte) 0x55, (byte) 0x6f, (byte) 0x5f, (byte) 0x6e, (byte) 0x5a, //
400                 (byte) 0xb2, (byte) 0x0a, (byte) 0xbf, (byte) 0xb5 };
401         ArrayAssert.assertEquals(expectedAuthenticationData, mn.getAuthenticationData());
402     }
403
404     @Test
405     public void deserialize__SHA256() throws Exception {
406         // LISP(Type = 4 Map-Notify, I=0
407         // Record Counter: 1
408         // Nonce: (something)
409         // Key ID: 0x0002
410         // AuthDataLength: 32 Data:
411         // 70 30 d4 c6 10 44 0d 83 be 4d bf fd a9 8c 57 6d 68 a5 bf 32 11 c9 7b
412         // 58 c4 b9 9f 06 11 23 b9 38
413         // EID prefix: 153.16.254.1/32 (EID=0x9910FE01), TTL: 10, Authoritative,
414         // No-Action
415         // Local RLOC: 192.168.136.10 (RLOC=0xC0A8880A), Reachable,
416         // Priority/Weight: 1/100, Multicast Priority/Weight: 255/0
417         //
418         MapNotify mn = MapNotifySerializer.getInstance().deserialize(hexToByteBuffer("40 00 00 01 FF BB "
419         //
420                 + "00 00 00 00 00 00 00 02 00 20 70 30 d4 c6 10 44 0d 83 be 4d bf fd a9 8c 57 6d 68 a5 bf 32 "
421                 //
422                 + "11 c9 7b 58 c4 b9 9f 06 11 23 b9 38 00 00 " //
423                 + "00 0a 01 20 10 00 00 00 00 01 99 10 fe 01 01 64 " //
424                 + "ff 00 00 05 00 01 c0 a8 88 0a"));
425
426         assertFalse(mn.isXtrSiteIdPresent());
427
428         assertEquals(1, mn.getEidToLocatorRecord().size());
429         assertEquals(0xFFBB000000000000L, mn.getNonce().longValue());
430         assertEquals(0x0002, mn.getKeyId().shortValue());
431         byte[] expectedAuthenticationData = { (byte) 0x70, (byte) 0x30, (byte) 0xd4, (byte) 0xc6, (byte) 0x10, (byte) 0x44, (byte) 0x0d, (byte) 0x83,
432                 (byte) 0xbe, (byte) 0x4d, (byte) 0xbf, (byte) 0xfd, (byte) 0xa9, (byte) 0x8c, (byte) 0x57, (byte) 0x6d, (byte) 0x68, (byte) 0xa5,
433                 (byte) 0xbf, (byte) 0x32, (byte) 0x11, (byte) 0xc9, (byte) 0x7b, (byte) 0x58, (byte) 0xc4, (byte) 0xb9, (byte) 0x9f, (byte) 0x06,
434                 (byte) 0x11, (byte) 0x23, (byte) 0xb9, (byte) 0x38 };
435         ArrayAssert.assertEquals(expectedAuthenticationData, mn.getAuthenticationData());
436     }
437 }