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