3 * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved.
5 * This program and the accompanying materials are made available under the
6 * terms of the Eclipse Public License v1.0 which accompanies this distribution,
7 * and is available at http://www.eclipse.org/legal/epl-v10.html
10 package org.opendaylight.controller.sal.packet;
14 import junit.framework.Assert;
16 import org.junit.Test;
17 import org.opendaylight.controller.sal.packet.Ethernet;
19 public class PacketTest {
22 public void testDeserialize() throws NoSuchFieldException, Exception {
23 short startOffset, numBits;
25 Ethernet eth = new Ethernet();
26 byte[] data = { 10, 12, 14, 20, 55, 69, //DMAC
27 -90, -20, -100, -82, -78, -97, //SMAC
34 -90, -20, -100, -82, -78, -97, //src hw addr
35 9, 9, 9, 1, // src proto
36 0, 0, 0, 0, 0, 0, // target hw addr
37 9, 9, 9, -2 }; // target proto
41 eth.deserialize(data, startOffset, numBits);
43 byte[] dMAC = eth.getDestinationMACAddress();
44 byte[] sMAC = eth.getSourceMACAddress();
45 short etherType = eth.getEtherType();
47 Assert.assertTrue(dMAC[0] == 10);
48 Assert.assertTrue(dMAC[1] == 12);
49 Assert.assertTrue(dMAC[2] == 14);
50 Assert.assertTrue(dMAC[3] == 20);
51 Assert.assertTrue(dMAC[4] == 55);
52 Assert.assertTrue(dMAC[5] == 69);
54 Assert.assertTrue(sMAC[0] == -90);
55 Assert.assertTrue(sMAC[1] == -20);
56 Assert.assertTrue(sMAC[2] == -100);
57 Assert.assertTrue(sMAC[3] == -82);
58 Assert.assertTrue(sMAC[4] == -78);
59 Assert.assertTrue(sMAC[5] == -97);
61 Assert.assertTrue(etherType == 0x806);
63 ARP arpPacket = (ARP) eth.getPayload();
65 Assert.assertTrue(arpPacket.getHardwareType() == (byte)0x1);
66 Assert.assertTrue(arpPacket.getProtocolType() == 2048);
67 Assert.assertTrue(arpPacket.getHardwareAddressLength() == (byte)0x6);
68 Assert.assertTrue(arpPacket.getProtocolAddressLength() == (byte)0x4);
69 Assert.assertTrue(arpPacket.getOpCode() == 1);
71 byte[] senderHwAddress = arpPacket.getSenderHardwareAddress();
72 byte[] senderProtocolAddress = arpPacket.getSenderProtocolAddress();
74 byte[] targetHwAddress = arpPacket.getTargetHardwareAddress();
75 byte[] targetProtocolAddress = arpPacket.getTargetProtocolAddress();
78 Assert.assertTrue(senderHwAddress[0] == (byte)0xA6);
79 Assert.assertTrue(senderHwAddress[1] == (byte)0xEC);
80 Assert.assertTrue(senderHwAddress[2] == (byte)0x9C);
81 Assert.assertTrue(senderHwAddress[3] == (byte)0xAE);
82 Assert.assertTrue(senderHwAddress[4] == (byte)0xB2);
83 Assert.assertTrue(senderHwAddress[5] == (byte)0x9F);
85 Assert.assertTrue(senderProtocolAddress[0] == (byte)0x9);
86 Assert.assertTrue(senderProtocolAddress[1] == (byte)0x9);
87 Assert.assertTrue(senderProtocolAddress[2] == (byte)0x9);
88 Assert.assertTrue(senderProtocolAddress[3] == (byte)0x1);
90 Assert.assertTrue(targetHwAddress[0] == (byte)0x0);
91 Assert.assertTrue(targetHwAddress[1] == (byte)0x0);
92 Assert.assertTrue(targetHwAddress[2] == (byte)0x0);
93 Assert.assertTrue(targetHwAddress[3] == (byte)0x0);
94 Assert.assertTrue(targetHwAddress[4] == (byte)0x0);
95 Assert.assertTrue(targetHwAddress[5] == (byte)0x0);
97 Assert.assertTrue(senderProtocolAddress[0] == (byte)0x9);
98 Assert.assertTrue(senderProtocolAddress[1] == (byte)0x9);
99 Assert.assertTrue(senderProtocolAddress[2] == (byte)0x9);
100 Assert.assertTrue(senderProtocolAddress[3] == (byte)0x1);
102 Assert.assertTrue(targetProtocolAddress[0] == (byte)0x9);
103 Assert.assertTrue(targetProtocolAddress[1] == (byte)0x9);
104 Assert.assertTrue(targetProtocolAddress[2] == (byte)0x9);
105 Assert.assertTrue(targetProtocolAddress[3] == (byte)0xFE);
109 public void testSerialize() throws NoSuchFieldException, Exception {
110 Ethernet eth = new Ethernet();
111 Map<String, byte[]> fCValues = eth.hdrFieldsMap;
113 byte[] dMAC = { 10, 12, 14, 20, 55, 69 };
114 byte[] sMAC = { 82, 97, 109, 117, 127, -50 };
115 short etherType = 2054;
117 byte[] dMACdata, sMACdata, etherTypedata;
118 byte[] data = new byte[20];
120 eth.setDestinationMACAddress(dMAC);
121 eth.setSourceMACAddress(sMAC);
122 eth.setEtherType(etherType);
124 dMACdata = (byte[]) fCValues.get("DestinationMACAddress");
125 sMACdata = (byte[]) fCValues.get("SourceMACAddress");
126 etherTypedata = (byte[]) fCValues.get("EtherType");
128 Assert.assertTrue(dMACdata[0] == 10);
129 Assert.assertTrue(dMACdata[1] == 12);
130 Assert.assertTrue(dMACdata[2] == 14);
131 Assert.assertTrue(dMACdata[3] == 20);
132 Assert.assertTrue(dMACdata[4] == 55);
133 Assert.assertTrue(dMACdata[5] == 69);
135 Assert.assertTrue(sMACdata[0] == 82);
136 Assert.assertTrue(sMACdata[1] == 97);
137 Assert.assertTrue(sMACdata[2] == 109);
138 Assert.assertTrue(sMACdata[3] == 117);
139 Assert.assertTrue(sMACdata[4] == 127);
140 Assert.assertTrue(sMACdata[5] == -50);
142 Assert.assertTrue(etherTypedata[0] == 8);
143 Assert.assertTrue(etherTypedata[1] == 6);
144 data = eth.serialize();
146 Assert.assertTrue(data[0] == 10);
147 Assert.assertTrue(data[1] == 12);
148 Assert.assertTrue(data[2] == 14);
149 Assert.assertTrue(data[3] == 20);
150 Assert.assertTrue(data[4] == 55);
151 Assert.assertTrue(data[5] == 69);
153 Assert.assertTrue(data[6] == 82);
154 Assert.assertTrue(data[7] == 97);
155 Assert.assertTrue(data[8] == 109);
156 Assert.assertTrue(data[9] == 117);
157 Assert.assertTrue(data[10] == 127);
158 Assert.assertTrue(data[11] == -50);
160 Assert.assertTrue(data[12] == 8);
161 Assert.assertTrue(data[13] == 6);