Use uint types in arputil-impl tests
[genius.git] / arputil / arputil-impl / src / test / java / org / opendaylight / genius / arputil / test / ArpUtilTestUtil.java
1 /*
2  * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. 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.genius.arputil.test;
9
10 import java.util.ArrayList;
11 import java.util.List;
12 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorRef;
13 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeId;
14 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes;
15 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.Node;
16 import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.nodes.NodeKey;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceivedBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.SendToController;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.packet.received.MatchBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.table.types.rev131026.TableId;
23 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
24 import org.opendaylight.yangtools.yang.common.Uint32;
25 import org.opendaylight.yangtools.yang.common.Uint64;
26 import org.opendaylight.yangtools.yang.common.Uint8;
27
28 public final class ArpUtilTestUtil {
29
30     public static final Uint64 DPN_ID = Uint64.ONE;
31     public static final Uint64 META_DATA = Uint64.TEN;
32     public static final Uint32 PORT_NUMBER = Uint32.TWO;
33     public static final String URI = "2";
34     public static final String INTERFACE_NAME = "23701c04-7e58-4c65-9425-78a80d49a218";
35     private static final String[] OP_CODE = new String[]{"0 1", "0 2"}; //array to store opCodes
36
37     private ArpUtilTestUtil() {
38     }
39
40     public static PacketReceived createPayload(int oc) {
41
42         byte[] payload = bytePayload("1F 1F 1F 1F 1F 1F",                               // Destination MAC
43                                      "00 01 02 03 04 05",                               // Source MAC
44                                      "08 06",                                           // Ethernet type
45                                      "0 1",                                             // Hardware type
46                                      "8 0",                                             // Protocol type
47                                      "6",                                               // Hardware size
48                                      "4",                                               // Protocol size
49                                      OP_CODE[oc],                                       // Opcode
50                                      "00 01 02 03 04 05",                               // Sender MAC Address
51                                      "C0 A8 0 2",                                       // Sender IP Address
52                                      "00 01 02 03 04 05",                               // Target MAC Address
53                                      "C0 A8 0 2"                                        // Target IP Address
54         );
55         InstanceIdentifier<Node> iid = InstanceIdentifier.builder(Nodes.class)
56                 .child(Node.class, new NodeKey(new NodeId("openflow:12345"))).build();
57
58         return new PacketReceivedBuilder().setPacketInReason(SendToController.class).setTableId(new TableId(Uint8.TWO))
59                 .setPayload(payload).setIngress(new NodeConnectorRef(iid))
60                 .setMatch(new MatchBuilder().setMetadata(new MetadataBuilder().setMetadata(META_DATA).build()).build())
61                 .build();
62     }
63
64     private static byte[] bytePayload(String... contents) {
65
66         List<String[]> splitContents = new ArrayList<>();
67         int packetLength = 0;
68         for (String content : contents) {
69             String[] split = content.split(" ");
70             packetLength += split.length;
71             splitContents.add(split);
72         }
73         byte[] packet = new byte[packetLength];
74         int index = 0;
75         for (String[] split : splitContents) {
76             for (String component : split) {
77                 packet[index] = (byte) Integer.parseInt(component, 16);
78                 index++;
79             }
80         }
81         return packet;
82     }
83 }