/**
* Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.openflowplugin.applications.statistics.manager.impl.helper;
import static org.junit.Assert.assertEquals;
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.EtherType;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.ethernet.match.fields.EthernetTypeBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.EthernetMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.Icmpv4MatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.NodeConnectorId;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.IpMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.PortNumber;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatchBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.MetadataBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.ProtocolMatchFieldsBuilder;
import java.math.BigInteger;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.TunnelBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.VlanMatchBuilder;
import org.junit.Test;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match;
import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder;
import org.junit.BeforeClass;
import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.vlan.match.fields.VlanIdBuilder;
import org.opendaylight.yang.gen.v1.urn.opendaylight.l2.types.rev130827.VlanId;
public class MatchComparatorFactoryTest {
private static Match nullMatch;
private static Match storedMatch;
private static Match statsMatch;
@BeforeClass
public static void initialization() {
statsMatch = prepareMatch(1, (long) 1, (short) 1, (long) 1, 1, 1, (short) 1, "1", (short) 1, (long)1);
// copyStatsMatch = prepareMatch(1);
storedMatch = prepareMatch(2, (long) 2, (short) 2, (long) 2, 2, 2, (short) 2, "2", (short) 2, (long)2);
nullMatch = new MatchBuilder().build();
}
private static Match prepareMatch(int vlanId, long tunelId, short mplsBos, long metadata, int portNumber,
int arpOp, short ipEcn, String nodeConnector, short icpmV4Code, long etherType) {
final MatchBuilder matchBuilder = new MatchBuilder();
matchBuilder.setVlanMatch(new VlanMatchBuilder().setVlanId(
new VlanIdBuilder().setVlanId(new VlanId(vlanId)).build()).build());
matchBuilder.setTunnel(new TunnelBuilder().setTunnelId(BigInteger.valueOf(tunelId)).build());
matchBuilder.setProtocolMatchFields(new ProtocolMatchFieldsBuilder().setMplsBos(mplsBos).build());
matchBuilder.setMetadata(new MetadataBuilder().setMetadata(BigInteger.valueOf(metadata)).build());
matchBuilder.setLayer4Match(new SctpMatchBuilder().setSctpSourcePort(new PortNumber(portNumber)).build());
matchBuilder.setLayer3Match(new ArpMatchBuilder().setArpOp(arpOp).build());
matchBuilder.setIpMatch(new IpMatchBuilder().setIpEcn(ipEcn).build());
matchBuilder.setInPort(new NodeConnectorId(nodeConnector));
matchBuilder.setInPhyPort(new NodeConnectorId(nodeConnector));
matchBuilder.setIcmpv4Match(new Icmpv4MatchBuilder().setIcmpv4Code(icpmV4Code).build());
matchBuilder.setEthernetMatch(new EthernetMatchBuilder().setEthernetType(
new EthernetTypeBuilder().setType(new EtherType(etherType)).build()).build());
return matchBuilder.build();
}
@Test
public void ethernetComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createEthernet();
compareViaComparator(simpleComparator);
}
@Test
public void nullComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createNull();
assertEquals(true, simpleComparator.areObjectsEqual(null, null));
assertEquals(false, simpleComparator.areObjectsEqual(null, storedMatch));
assertEquals(false, simpleComparator.areObjectsEqual(statsMatch, null));
}
@Test
public void icmpv4ComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createIcmpv4();
compareViaComparator(simpleComparator);
}
@Test
public void inPhyPortComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createInPhyPort();
compareViaComparator(simpleComparator);
}
@Test
public void inPortComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createInPort();
compareViaComparator(simpleComparator);
}
@Test
public void ipComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createIp();
compareViaComparator(simpleComparator);
}
@Test
public void l3ComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createL3();
compareViaComparator(simpleComparator);
}
@Test
public void l4ComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createL4();
compareViaComparator(simpleComparator);
}
@Test
public void metadataComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createMetadata();
compareViaComparator(simpleComparator);
}
@Test
public void protocolMatchFieldsComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createProtocolMatchFields();
compareViaComparator(simpleComparator);
}
@Test
public void tunnelComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createTunnel();
compareViaComparator(simpleComparator);
}
@Test
public void vlanComparationTest() {
final SimpleComparator<Match> simpleComparator = MatchComparatorFactory.createVlan();
compareViaComparator(simpleComparator);
}
private void compareViaComparator(SimpleComparator<Match> simpleComparator) {
assertEquals(true, simpleComparator.areObjectsEqual(nullMatch, nullMatch));
assertEquals(false, simpleComparator.areObjectsEqual(statsMatch, nullMatch));
assertEquals(false, simpleComparator.areObjectsEqual(statsMatch, storedMatch));
assertEquals(true, simpleComparator.areObjectsEqual(statsMatch, statsMatch));
}
}