2 * Copyright (c) 2013 Cisco Systems, Inc. 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.openflowplugin.openflow.md.core.sal.convertor.action;
10 import java.math.BigInteger;
11 import org.junit.Assert;
12 import org.junit.Before;
13 import org.junit.Test;
14 import org.opendaylight.openflowplugin.api.OFConstants;
15 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Prefix;
16 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Prefix;
17 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCase;
18 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.SetNwDstActionCaseBuilder;
19 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.action.action.set.nw.dst.action._case.SetNwDstActionBuilder;
20 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.Address;
21 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4;
22 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv4Builder;
23 import org.opendaylight.yang.gen.v1.urn.opendaylight.action.types.rev131112.address.address.Ipv6Builder;
24 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.action.rev150203.actions.grouping.ActionBuilder;
27 * match conversion and injection test
29 public class ActionSetNwDstReactorTest {
31 private Address[] addresses;
38 addresses = new Address[]{
39 new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.10.1/32")).build(),
40 new Ipv4Builder().setIpv4Address(new Ipv4Prefix("10.0.10.1/16")).build(),
41 new Ipv6Builder().setIpv6Address(new Ipv6Prefix("1234:5678:9abc:def1:2345:6789:abcd:ef12/128")).build(),
42 new Ipv6Builder().setIpv6Address(new Ipv6Prefix("1234:5678:9abc:def1:2345:6789:abcd:ef12/42")).build(),
47 * convert for OF-1.3, inject into {@link ActionBuilder}
50 public void testMatchConvertorV13_flow() {
51 final ActionBuilder target = new ActionBuilder();
52 for (final Address address : addresses) {
53 final SetNwDstActionCase action = prepareSetNwDstActionCase(address);
54 ActionSetNwDstReactor.getInstance().convert(action,
55 OFConstants.OFP_VERSION_1_3, target, BigInteger.ONE);
56 final Object mEntry = target.getActionChoice();
58 Assert.assertNotNull(mEntry);
59 if (address instanceof Ipv4) {
60 Ipv4DstCase ipv4DstCase = ((Ipv4DstCase) mEntry.getMatchEntryValue());
61 Assert.assertNotNull(ipv4DstCase.getIpv4Dst());
62 } else if (address instanceof Ipv6) {
63 Ipv6DstCase ipv6DstCase = ((Ipv6DstCase) mEntry.getMatchEntryValue());
64 Assert.assertNotNull(ipv6DstCase.getIpv6Dst());
66 Assert.fail("not tested yet: " + address.getClass().getName());
76 private static SetNwDstActionCase prepareSetNwDstActionCase(final Address address) {
77 return new SetNwDstActionCaseBuilder().setSetNwDstAction(
78 new SetNwDstActionBuilder().setAddress(address).build()).build();
82 * convert for OF-1.0, inject into {@link ActionBuilder}
85 public void testMatchConvertorV10_flow() {
86 final ActionBuilder target = new ActionBuilder();
87 for (final Address address : addresses) {
88 final SetNwDstActionCase action = prepareSetNwDstActionCase(address);
90 if (address instanceof Ipv4) {
91 ActionSetNwDstReactor.getInstance().convert(action,
92 OFConstants.OFP_VERSION_1_0, target, BigInteger.ONE);
93 // Assert.assertNotNull(target.getAugmentation(IpAddressAction.class).getIpAddress());
96 ActionSetNwDstReactor.getInstance().convert(action,
97 OFConstants.OFP_VERSION_1_0, target, BigInteger.ONE);
98 Assert.fail("address of this type must not pass the reactor: " + address.getClass().getName());
99 } catch (final Exception e) {
101 Assert.assertEquals(IllegalArgumentException.class, e.getClass());