2 * Copyright (c) 2017 Ericsson India Global Services Pvt Ltd. and others. All rights reserved.
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
8 package org.opendaylight.genius.arputil.test;
10 import static org.opendaylight.genius.arputil.test.ArpUtilTestUtil.INTERFACE_NAME;
13 import java.util.concurrent.Future;
14 import javax.inject.Inject;
15 import org.junit.Assert;
16 import org.junit.Rule;
17 import org.junit.Test;
18 import org.junit.rules.MethodRule;
19 import org.opendaylight.genius.arputil.internal.ArpUtilImpl;
20 import org.opendaylight.infrautils.inject.guice.testutils.GuiceRule;
21 import org.opendaylight.infrautils.testutils.LogCaptureRule;
22 import org.opendaylight.infrautils.testutils.LogRule;
23 import org.opendaylight.mdsal.binding.dom.adapter.test.AbstractConcurrentDataBrokerTest;
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.IpAddress;
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.PhysAddress;
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.GetMacInput;
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.GetMacInputBuilder;
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.GetMacOutput;
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpResponseInput;
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.SendArpResponseInputBuilder;
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddress;
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.genius.arputil.rev160406.interfaces.InterfaceAddressBuilder;
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.packet.service.rev130709.PacketReceived;
35 import org.opendaylight.yangtools.yang.common.RpcResult;
37 public class ArpUtilTest extends AbstractConcurrentDataBrokerTest {
39 public @Rule LogRule logRule = new LogRule();
40 public @Rule LogCaptureRule logCaptureRule = new LogCaptureRule();
41 public @Rule MethodRule guice = new GuiceRule(new ArpUtilTestModule());
43 @Inject ArpUtilImpl arpUtil;
46 public void testGetMac() throws Exception {
47 final InterfaceAddress interfaceAddress = new InterfaceAddressBuilder()
48 .setInterface(INTERFACE_NAME)
49 .setIpAddress(new IpAddress(Ipv4Address.getDefaultInstance("192.168.0.1")))
50 .setMacaddress(new PhysAddress("1F:1F:1F:1F:1F:1F")).build();
52 GetMacInput getMacInput = new GetMacInputBuilder()
53 .setIpaddress(new IpAddress(Ipv4Address.getDefaultInstance("192.168.0.2")))
54 .setInterfaceAddress(Map.of(interfaceAddress.key(), interfaceAddress)).build();
56 PacketReceived packetReceived = ArpUtilTestUtil.createPayload(0); //request payload
58 Future<RpcResult<GetMacOutput>> output = arpUtil.getMac(getMacInput);
60 arpUtil.onPacketReceived(packetReceived);
62 Assert.assertEquals("00:01:02:03:04:05", output.get().getResult().getMacaddress().getValue());
66 public void testSendArpResponse() throws Exception {
67 SendArpResponseInput builder = new SendArpResponseInputBuilder().setInterface(INTERFACE_NAME)
68 .setSrcIpaddress(new IpAddress(Ipv4Address.getDefaultInstance("192.168.0.1")))
69 .setDstIpaddress(new IpAddress(Ipv4Address.getDefaultInstance("192.168.0.2")))
70 .setSrcMacaddress(new PhysAddress("1F:1F:1F:1F:1F:1F"))
71 .setDstMacaddress(new PhysAddress("00:01:02:03:04:05")).build();
73 Assert.assertTrue(arpUtil.sendArpResponse(builder).get().isSuccessful());