Update upstreams to Sulfur GA
[l2switch.git] / arphandler / src / test / java / org / opendaylight / l2switch / arphandler / core / ArpPacketHandlerTest.java
1 /*
2  * Copyright (c) 2014 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.l2switch.arphandler.core;
9
10 import static org.mockito.Mockito.times;
11 import static org.mockito.Mockito.verify;
12 import static org.mockito.Mockito.verifyNoInteractions;
13
14 import java.util.ArrayList;
15 import org.junit.Before;
16 import org.junit.Test;
17 import org.mockito.Mock;
18 import org.mockito.MockitoAnnotations;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.rev140528.ArpPacketReceived;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.rev140528.ArpPacketReceivedBuilder;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.arp.rev140528.arp.packet.received.packet.chain.packet.ArpPacketBuilder;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.basepacket.rev140528.packet.chain.grp.PacketChain;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.basepacket.rev140528.packet.chain.grp.PacketChainBuilder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.basepacket.rev140528.packet.chain.grp.packet.chain.packet.RawPacketBuilder;
25 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.basepacket.rev140528.packet.chain.grp.packet.chain.packet.raw.packet.RawPacketFieldsBuilder;
26 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.ethernet.rev140528.ethernet.packet.received.packet.chain.packet.EthernetPacketBuilder;
27
28 public class ArpPacketHandlerTest {
29
30     @Mock
31     private PacketDispatcher packetDispatcher;
32     private ArpPacketHandler arpPacketHandler;
33
34     @Before
35     public void initMocks() {
36         MockitoAnnotations.initMocks(this);
37         arpPacketHandler = new ArpPacketHandler(packetDispatcher);
38     }
39
40     @Test
41     public void onArpPacketReceivedTest() throws Exception {
42         ArrayList<PacketChain> packetChainList = new ArrayList<>();
43         packetChainList.add(new PacketChainBuilder()
44             .setPacket(new RawPacketBuilder().setRawPacketFields(new RawPacketFieldsBuilder().build()).build())
45             .build());
46         packetChainList.add(new PacketChainBuilder().setPacket(new EthernetPacketBuilder().build()).build());
47         packetChainList.add(new PacketChainBuilder().setPacket(new ArpPacketBuilder().build()).build());
48         ArpPacketReceived arpReceived = new ArpPacketReceivedBuilder().setPacketChain(packetChainList).build();
49         arpPacketHandler.onArpPacketReceived(arpReceived);
50
51         verify(packetDispatcher, times(1)).dispatchPacket(null, null, null, null);
52     }
53
54     @Test
55     public void onArpPacketReceivedTest_NullInput() throws Exception {
56         arpPacketHandler.onArpPacketReceived(null);
57         verifyNoInteractions(packetDispatcher);
58     }
59
60     @Test
61     public void onArpPacketReceivedTest_NullPacketChain() throws Exception {
62         ArpPacketReceived arpReceived = new ArpPacketReceivedBuilder().build();
63         arpPacketHandler.onArpPacketReceived(arpReceived);
64
65         verifyNoInteractions(packetDispatcher);
66     }
67
68     @Test
69     public void onArpPacketReceivedTest_EmptyPacketChain() throws Exception {
70         ArrayList<PacketChain> packetChainList = new ArrayList<>();
71         ArpPacketReceived arpReceived = new ArpPacketReceivedBuilder().setPacketChain(packetChainList).build();
72         arpPacketHandler.onArpPacketReceived(arpReceived);
73
74         verifyNoInteractions(packetDispatcher);
75     }
76
77     @Test
78     public void onArpPacketReceivedTest_NoRawPacket() throws Exception {
79         ArrayList<PacketChain> packetChainList = new ArrayList<>();
80         packetChainList.add(new PacketChainBuilder().setPacket(new EthernetPacketBuilder().build()).build());
81         packetChainList.add(new PacketChainBuilder().setPacket(new ArpPacketBuilder().build()).build());
82         ArpPacketReceived arpReceived = new ArpPacketReceivedBuilder().setPacketChain(packetChainList).build();
83         arpPacketHandler.onArpPacketReceived(arpReceived);
84
85         verifyNoInteractions(packetDispatcher);
86     }
87
88     @Test
89     public void onArpPacketReceivedTest_NoEthernetPacket() throws Exception {
90         ArrayList<PacketChain> packetChainList = new ArrayList<>();
91         packetChainList.add(new PacketChainBuilder().setPacket(new RawPacketBuilder().build()).build());
92         packetChainList.add(new PacketChainBuilder().setPacket(new ArpPacketBuilder().build()).build());
93         ArpPacketReceived arpReceived = new ArpPacketReceivedBuilder().setPacketChain(packetChainList).build();
94         arpPacketHandler.onArpPacketReceived(arpReceived);
95
96         verifyNoInteractions(packetDispatcher);
97     }
98
99     @Test
100     public void onArpPacketReceivedTest_NoArpPacket() throws Exception {
101         ArrayList<PacketChain> packetChainList = new ArrayList<>();
102         packetChainList.add(new PacketChainBuilder().setPacket(new RawPacketBuilder().build()).build());
103         packetChainList.add(new PacketChainBuilder().setPacket(new EthernetPacketBuilder().build()).build());
104         ArpPacketReceived arpReceived = new ArpPacketReceivedBuilder().setPacketChain(packetChainList).build();
105         arpPacketHandler.onArpPacketReceived(arpReceived);
106
107         verifyNoInteractions(packetDispatcher);
108     }
109 }