Bug 5540 - MeterStatsResponseConvertor, MeterConfigStatsResponseConvertor
[openflowplugin.git] / openflowplugin / src / test / java / org / opendaylight / openflowplugin / openflow / md / core / sal / convertor / match / MatchResponseConvertor2Test.java
1 /*\r
2  * Copyright (c) 2014 Pantheon Technologies s.r.o. and others. All rights reserved.\r
3  *\r
4  * This program and the accompanying materials are made available under the\r
5  * terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
6  * and is available at http://www.eclipse.org/legal/epl-v10.html\r
7  */\r
8 \r
9 package org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match;\r
10 \r
11 import java.math.BigInteger;\r
12 import java.util.ArrayList;\r
13 import java.util.List;\r
14 import java.util.Optional;\r
15 import org.junit.Assert;\r
16 import org.junit.Before;\r
17 import org.junit.Test;\r
18 import org.opendaylight.openflowplugin.api.OFConstants;\r
19 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.ConvertorManager;\r
20 import org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData;\r
21 import org.opendaylight.openflowplugin.openflow.md.util.OpenflowPortsUtil;\r
22 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Dscp;\r
23 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv4Address;\r
24 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6Address;\r
25 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.inet.types.rev130715.Ipv6FlowLabel;\r
26 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.MacAddress;\r
27 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.ArpMatch;\r
28 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4Match;\r
29 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv4MatchArbitraryBitMask;\r
30 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6Match;\r
31 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._3.match.Ipv6MatchArbitraryBitMask;\r
32 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.SctpMatch;\r
33 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.TcpMatch;\r
34 import org.opendaylight.yang.gen.v1.urn.opendaylight.model.match.types.rev131026.match.layer._4.match.UdpMatch;\r
35 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.EtherType;\r
36 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.Ipv6ExthdrFlags;\r
37 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.common.types.rev130731.PortNumber;\r
38 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpOp;\r
39 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSha;\r
40 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpSpa;\r
41 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTpa;\r
42 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthDst;\r
43 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthSrc;\r
44 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.EthType;\r
45 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Code;\r
46 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv4Type;\r
47 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Code;\r
48 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Icmpv6Type;\r
49 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpDscp;\r
50 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpEcn;\r
51 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.IpProto;\r
52 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Dst;\r
53 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv4Src;\r
54 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Dst;\r
55 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Exthdr;\r
56 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Flabel;\r
57 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdSll;\r
58 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTarget;\r
59 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6NdTll;\r
60 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Ipv6Src;\r
61 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsBos;\r
62 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsLabel;\r
63 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MplsTc;\r
64 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OpenflowBasicClass;\r
65 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.OxmMatchType;\r
66 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.PbbIsid;\r
67 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpDst;\r
68 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.SctpSrc;\r
69 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpDst;\r
70 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TcpSrc;\r
71 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.TunnelId;\r
72 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpDst;\r
73 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanPcp;\r
74 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.VlanVid;\r
75 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntry;\r
76 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entries.grouping.MatchEntryBuilder;\r
77 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpOpCaseBuilder;\r
78 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpShaCaseBuilder;\r
79 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpSpaCaseBuilder;\r
80 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpThaCaseBuilder;\r
81 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ArpTpaCaseBuilder;\r
82 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthDstCaseBuilder;\r
83 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthSrcCaseBuilder;\r
84 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.EthTypeCaseBuilder;\r
85 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4CodeCaseBuilder;\r
86 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv4TypeCaseBuilder;\r
87 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6CodeCaseBuilder;\r
88 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Icmpv6TypeCaseBuilder;\r
89 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPhyPortCaseBuilder;\r
90 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.InPortCaseBuilder;\r
91 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpDscpCaseBuilder;\r
92 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpEcnCaseBuilder;\r
93 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.IpProtoCaseBuilder;\r
94 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4DstCaseBuilder;\r
95 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv4SrcCaseBuilder;\r
96 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6DstCaseBuilder;\r
97 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6ExthdrCaseBuilder;\r
98 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6FlabelCaseBuilder;\r
99 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdSllCaseBuilder;\r
100 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTargetCaseBuilder;\r
101 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6NdTllCaseBuilder;\r
102 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.Ipv6SrcCaseBuilder;\r
103 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MetadataCaseBuilder;\r
104 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsBosCaseBuilder;\r
105 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsLabelCaseBuilder;\r
106 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.MplsTcCaseBuilder;\r
107 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.PbbIsidCaseBuilder;\r
108 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpDstCaseBuilder;\r
109 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.SctpSrcCaseBuilder;\r
110 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpDstCaseBuilder;\r
111 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TcpSrcCaseBuilder;\r
112 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.TunnelIdCaseBuilder;\r
113 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpDstCaseBuilder;\r
114 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.UdpSrcCaseBuilder;\r
115 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanPcpCaseBuilder;\r
116 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.VlanVidCaseBuilder;\r
117 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.op._case.ArpOpBuilder;\r
118 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.sha._case.ArpShaBuilder;\r
119 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.spa._case.ArpSpaBuilder;\r
120 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tha._case.ArpThaBuilder;\r
121 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.arp.tpa._case.ArpTpaBuilder;\r
122 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.dst._case.EthDstBuilder;\r
123 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.src._case.EthSrcBuilder;\r
124 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.eth.type._case.EthTypeBuilder;\r
125 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.code._case.Icmpv4CodeBuilder;\r
126 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv4.type._case.Icmpv4TypeBuilder;\r
127 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.code._case.Icmpv6CodeBuilder;\r
128 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.icmpv6.type._case.Icmpv6TypeBuilder;\r
129 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.phy.port._case.InPhyPortBuilder;\r
130 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.in.port._case.InPortBuilder;\r
131 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.dscp._case.IpDscpBuilder;\r
132 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.ecn._case.IpEcnBuilder;\r
133 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ip.proto._case.IpProtoBuilder;\r
134 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.dst._case.Ipv4DstBuilder;\r
135 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv4.src._case.Ipv4SrcBuilder;\r
136 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.dst._case.Ipv6DstBuilder;\r
137 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.exthdr._case.Ipv6ExthdrBuilder;\r
138 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.flabel._case.Ipv6FlabelBuilder;\r
139 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.sll._case.Ipv6NdSllBuilder;\r
140 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.target._case.Ipv6NdTargetBuilder;\r
141 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.nd.tll._case.Ipv6NdTllBuilder;\r
142 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.ipv6.src._case.Ipv6SrcBuilder;\r
143 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.bos._case.MplsBosBuilder;\r
144 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.label._case.MplsLabelBuilder;\r
145 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.mpls.tc._case.MplsTcBuilder;\r
146 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.pbb.isid._case.PbbIsidBuilder;\r
147 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.dst._case.SctpDstBuilder;\r
148 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.sctp.src._case.SctpSrcBuilder;\r
149 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.dst._case.TcpDstBuilder;\r
150 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tcp.src._case.TcpSrcBuilder;\r
151 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.tunnel.id._case.TunnelIdBuilder;\r
152 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.dst._case.UdpDstBuilder;\r
153 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.udp.src._case.UdpSrcBuilder;\r
154 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.pcp._case.VlanPcpBuilder;\r
155 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.vlan.vid._case.VlanVidBuilder;\r
156 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.Match;\r
157 import org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.grouping.MatchBuilder;\r
158 \r
159 /**\r
160  * @author michal.polkorab\r
161  */\r
162 public class MatchResponseConvertor2Test {\r
163 \r
164     /**\r
165      * Initializes OpenflowPortsUtil\r
166      */\r
167     @Before\r
168     public void startUp() {\r
169         OpenflowPortsUtil.init();\r
170     }\r
171 \r
172     /**\r
173      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
174      */\r
175     @Test(expected = NullPointerException.class)\r
176     public void testEmptyMatch() {\r
177         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0);\r
178         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
179         convert(new MatchBuilder().build(), datapathIdConvertorData);\r
180     }\r
181 \r
182     /**\r
183      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
184      */\r
185     @Test\r
186     public void testEmptyMatchEntry() {\r
187 \r
188         final MatchBuilder builder = new MatchBuilder();\r
189         builder.setType(OxmMatchType.class);\r
190         final List<MatchEntry> entries = new ArrayList<>();\r
191         builder.setMatchEntry(entries);\r
192         final Match match = builder.build();\r
193 \r
194         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0);\r
195         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
196 \r
197         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
198                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
199 \r
200         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
201 \r
202         Assert.assertEquals("Wrong match entries", null, builtMatch.getEthernetMatch());\r
203         Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv4Match());\r
204         Assert.assertEquals("Wrong match entries", null, builtMatch.getIcmpv6Match());\r
205         Assert.assertEquals("Wrong match entries", null, builtMatch.getInPhyPort());\r
206         Assert.assertEquals("Wrong match entries", null, builtMatch.getInPort());\r
207         Assert.assertEquals("Wrong match entries", null, builtMatch.getIpMatch());\r
208         Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer3Match());\r
209         Assert.assertEquals("Wrong match entries", null, builtMatch.getLayer4Match());\r
210         Assert.assertEquals("Wrong match entries", null, builtMatch.getMetadata());\r
211         Assert.assertEquals("Wrong match entries", null, builtMatch.getProtocolMatchFields());\r
212         Assert.assertEquals("Wrong match entries", null, builtMatch.getVlanMatch());\r
213         Assert.assertEquals("Wrong match entries", null, builtMatch.getTunnel());\r
214 \r
215     }\r
216 \r
217     /**\r
218      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
219      */\r
220     @Test\r
221     public void testWithMatchEntryNoMasks() {\r
222         final List<MatchEntry> entries = new ArrayList<>();\r
223         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
224         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
225         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPort.class);\r
226         entriesBuilder.setHasMask(false);\r
227         final InPortCaseBuilder caseBuilder = new InPortCaseBuilder();\r
228         final InPortBuilder portBuilder = new InPortBuilder();\r
229         portBuilder.setPortNumber(new PortNumber(1L));\r
230         caseBuilder.setInPort(portBuilder.build());\r
231         entriesBuilder.setMatchEntryValue(caseBuilder.build());\r
232         entries.add(entriesBuilder.build());\r
233 \r
234         final InPhyPortCaseBuilder inPhyPortCaseBuilder = new InPhyPortCaseBuilder();\r
235         entriesBuilder = new MatchEntryBuilder();\r
236         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
237         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.InPhyPort.class);\r
238         entriesBuilder.setHasMask(false);\r
239         final InPhyPortBuilder inPhyPortBuilder = new InPhyPortBuilder();\r
240         inPhyPortBuilder.setPortNumber(new PortNumber(2L));\r
241         inPhyPortCaseBuilder.setInPhyPort(inPhyPortBuilder.build());\r
242         entriesBuilder.setMatchEntryValue(inPhyPortCaseBuilder.build());\r
243         entries.add(entriesBuilder.build());\r
244 \r
245         entriesBuilder = new MatchEntryBuilder();\r
246         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
247         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
248         entriesBuilder.setHasMask(false);\r
249         final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();\r
250         final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder();\r
251         metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});\r
252         metadataCaseBuilder.setMetadata(metadataBuilder.build());\r
253         entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());\r
254         entries.add(entriesBuilder.build());\r
255 \r
256         entriesBuilder = new MatchEntryBuilder();\r
257         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
258         entriesBuilder.setOxmMatchField(EthDst.class);\r
259         entriesBuilder.setHasMask(false);\r
260         final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();\r
261         final EthDstBuilder ethDstBuilder = new EthDstBuilder();\r
262         ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));\r
263         ethDstCaseBuilder.setEthDst(ethDstBuilder.build());\r
264         entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());\r
265         entries.add(entriesBuilder.build());\r
266 \r
267         entriesBuilder = new MatchEntryBuilder();\r
268         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
269         entriesBuilder.setOxmMatchField(EthSrc.class);\r
270         entriesBuilder.setHasMask(false);\r
271         final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();\r
272         final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();\r
273         ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));\r
274         ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());\r
275         entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());\r
276         entries.add(entriesBuilder.build());\r
277 \r
278 \r
279         entriesBuilder = new MatchEntryBuilder();\r
280         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
281         entriesBuilder.setOxmMatchField(EthType.class);\r
282         entriesBuilder.setHasMask(false);\r
283         final EthTypeCaseBuilder ethTypeCaseBuilder = new EthTypeCaseBuilder();\r
284 \r
285         final EthTypeBuilder ethTypeBuilder = new EthTypeBuilder();\r
286         ethTypeBuilder.setEthType(new EtherType(3));\r
287         ethTypeCaseBuilder.setEthType(ethTypeBuilder.build());\r
288         entriesBuilder.setMatchEntryValue(ethTypeCaseBuilder.build());\r
289         entries.add(entriesBuilder.build());\r
290 \r
291 \r
292         entriesBuilder = new MatchEntryBuilder();\r
293         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
294         entriesBuilder.setOxmMatchField(VlanVid.class);\r
295         final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();\r
296         entriesBuilder.setHasMask(false);\r
297         final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();\r
298         vlanVidBuilder.setVlanVid(4);\r
299         vlanVidBuilder.setCfiBit(true);\r
300         vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());\r
301         entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());\r
302         entries.add(entriesBuilder.build());\r
303 \r
304         entriesBuilder = new MatchEntryBuilder();\r
305         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
306         entriesBuilder.setOxmMatchField(VlanPcp.class);\r
307         final VlanPcpCaseBuilder vlanPcpCaseBuilder = new VlanPcpCaseBuilder();\r
308         entriesBuilder.setHasMask(false);\r
309         final VlanPcpBuilder vlanPcpBuilder = new VlanPcpBuilder();\r
310         vlanPcpBuilder.setVlanPcp((short) 5);\r
311         vlanPcpCaseBuilder.setVlanPcp(vlanPcpBuilder.build());\r
312         entriesBuilder.setMatchEntryValue(vlanPcpCaseBuilder.build());\r
313         entries.add(entriesBuilder.build());\r
314 \r
315 \r
316         entriesBuilder = new MatchEntryBuilder();\r
317         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
318         entriesBuilder.setOxmMatchField(IpDscp.class);\r
319         entriesBuilder.setHasMask(false);\r
320         final IpDscpCaseBuilder ipDscpCaseBuilder = new IpDscpCaseBuilder();\r
321         final IpDscpBuilder ipDscpBuilder = new IpDscpBuilder();\r
322         ipDscpBuilder.setDscp(new Dscp((short) 6));\r
323         ipDscpCaseBuilder.setIpDscp(ipDscpBuilder.build());\r
324         entriesBuilder.setMatchEntryValue(ipDscpCaseBuilder.build());\r
325         entries.add(entriesBuilder.build());\r
326 \r
327 \r
328         entriesBuilder = new MatchEntryBuilder();\r
329         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
330         entriesBuilder.setOxmMatchField(IpEcn.class);\r
331         entriesBuilder.setHasMask(false);\r
332         final IpEcnCaseBuilder ipEcnCaseBuilder = new IpEcnCaseBuilder();\r
333         final IpEcnBuilder ipEcnBuilder = new IpEcnBuilder();\r
334         ipEcnBuilder.setEcn((short) 7);\r
335         ipEcnCaseBuilder.setIpEcn(ipEcnBuilder.build());\r
336         entriesBuilder.setMatchEntryValue(ipEcnCaseBuilder.build());\r
337         entries.add(entriesBuilder.build());\r
338 \r
339 \r
340         entriesBuilder = new MatchEntryBuilder();\r
341         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
342         entriesBuilder.setOxmMatchField(IpProto.class);\r
343         final IpProtoCaseBuilder ipProtoCaseBuilder = new IpProtoCaseBuilder();\r
344         entriesBuilder.setHasMask(false);\r
345         final IpProtoBuilder ipProtoBuilder = new IpProtoBuilder();\r
346         ipProtoBuilder.setProtocolNumber((short) 8);\r
347         ipProtoCaseBuilder.setIpProto(ipProtoBuilder.build());\r
348         entriesBuilder.setMatchEntryValue(ipProtoCaseBuilder.build());\r
349         entries.add(entriesBuilder.build());\r
350 \r
351 \r
352         entriesBuilder = new MatchEntryBuilder();\r
353         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
354         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
355         entriesBuilder.setHasMask(false);\r
356         final Ipv4SrcCaseBuilder ipv4AddressBuilder = new Ipv4SrcCaseBuilder();\r
357         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
358         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.1"));\r
359         ipv4AddressBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
360         entriesBuilder.setMatchEntryValue(ipv4AddressBuilder.build());\r
361         entries.add(entriesBuilder.build());\r
362 \r
363         entriesBuilder = new MatchEntryBuilder();\r
364         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
365         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
366         entriesBuilder.setHasMask(false);\r
367         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
368         final Ipv4DstBuilder ipv4DstBuilder = new Ipv4DstBuilder();\r
369         ipv4DstBuilder.setIpv4Address(new Ipv4Address("10.0.0.2"));\r
370         ipv4DstCaseBuilder.setIpv4Dst(ipv4DstBuilder.build());\r
371         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
372         entries.add(entriesBuilder.build());\r
373 \r
374         entriesBuilder = new MatchEntryBuilder();\r
375         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
376         entriesBuilder.setOxmMatchField(TcpSrc.class);\r
377         entriesBuilder.setHasMask(false);\r
378         final TcpSrcCaseBuilder tcpSrcCaseBuilder = new TcpSrcCaseBuilder();\r
379         final TcpSrcBuilder tcpSrcBuilder = new TcpSrcBuilder();\r
380         tcpSrcBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf\r
381                 .inet.types.rev130715.PortNumber(9));\r
382         tcpSrcCaseBuilder.setTcpSrc(tcpSrcBuilder.build());\r
383         entriesBuilder.setMatchEntryValue(tcpSrcCaseBuilder.build());\r
384         entries.add(entriesBuilder.build());\r
385 \r
386         entriesBuilder = new MatchEntryBuilder();\r
387         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
388         entriesBuilder.setOxmMatchField(TcpDst.class);\r
389         entriesBuilder.setHasMask(false);\r
390         final TcpDstCaseBuilder tcpDstCaseBuilder = new TcpDstCaseBuilder();\r
391         final TcpDstBuilder tcpDstBuilder = new TcpDstBuilder();\r
392         tcpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf\r
393                 .inet.types.rev130715.PortNumber(10));\r
394         tcpDstCaseBuilder.setTcpDst(tcpDstBuilder.build());\r
395         entriesBuilder.setMatchEntryValue(tcpDstCaseBuilder.build());\r
396         entries.add(entriesBuilder.build());\r
397 \r
398         entriesBuilder = new MatchEntryBuilder();\r
399         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
400         entriesBuilder.setOxmMatchField(Icmpv4Type.class);\r
401         entriesBuilder.setHasMask(false);\r
402         final Icmpv4TypeCaseBuilder icmpv4TypeCaseBuilder = new Icmpv4TypeCaseBuilder();\r
403         final Icmpv4TypeBuilder icmpv4TypeBuilder = new Icmpv4TypeBuilder();\r
404         icmpv4TypeBuilder.setIcmpv4Type((short) 15);\r
405         icmpv4TypeCaseBuilder.setIcmpv4Type(icmpv4TypeBuilder.build());\r
406         entriesBuilder.setMatchEntryValue(icmpv4TypeCaseBuilder.build());\r
407         entries.add(entriesBuilder.build());\r
408 \r
409         entriesBuilder = new MatchEntryBuilder();\r
410         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
411         entriesBuilder.setOxmMatchField(Icmpv4Code.class);\r
412         entriesBuilder.setHasMask(false);\r
413         final Icmpv4CodeCaseBuilder icmpv4CodeCaseBuilder = new Icmpv4CodeCaseBuilder();\r
414         final Icmpv4CodeBuilder icmpv4CodeBuilder = new Icmpv4CodeBuilder();\r
415         icmpv4CodeBuilder.setIcmpv4Code((short) 16);\r
416         icmpv4CodeCaseBuilder.setIcmpv4Code(icmpv4CodeBuilder.build());\r
417         entriesBuilder.setMatchEntryValue(icmpv4CodeCaseBuilder.build());\r
418         entries.add(entriesBuilder.build());\r
419 \r
420         entriesBuilder = new MatchEntryBuilder();\r
421         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
422         entriesBuilder.setOxmMatchField(Icmpv6Type.class);\r
423         entriesBuilder.setHasMask(false);\r
424         final Icmpv6TypeCaseBuilder icmpv6TypeCaseBuilder = new Icmpv6TypeCaseBuilder();\r
425         final Icmpv6TypeBuilder icmpv6TypeBuilder = new Icmpv6TypeBuilder();\r
426         icmpv6TypeBuilder.setIcmpv6Type((short) 19);\r
427         icmpv6TypeCaseBuilder.setIcmpv6Type(icmpv6TypeBuilder.build());\r
428         entriesBuilder.setMatchEntryValue(icmpv6TypeCaseBuilder.build());\r
429         entries.add(entriesBuilder.build());\r
430 \r
431         entriesBuilder = new MatchEntryBuilder();\r
432         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
433         entriesBuilder.setOxmMatchField(Icmpv6Code.class);\r
434         entriesBuilder.setHasMask(false);\r
435         final Icmpv6CodeCaseBuilder icmpv6CodeCaseBuilder = new Icmpv6CodeCaseBuilder();\r
436         final Icmpv6CodeBuilder icmpv6CodeBuilder = new Icmpv6CodeBuilder();\r
437         icmpv6CodeBuilder.setIcmpv6Code((short) 20);\r
438         icmpv6CodeCaseBuilder.setIcmpv6Code(icmpv6CodeBuilder.build());\r
439         entriesBuilder.setMatchEntryValue(icmpv6CodeCaseBuilder.build());\r
440         entries.add(entriesBuilder.build());\r
441 \r
442         entriesBuilder = new MatchEntryBuilder();\r
443         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
444         entriesBuilder.setOxmMatchField(MplsLabel.class);\r
445         entriesBuilder.setHasMask(false);\r
446         final MplsLabelCaseBuilder mplsLabelCaseBuilder = new MplsLabelCaseBuilder();\r
447 \r
448         final MplsLabelBuilder mplsLabelBuilder = new MplsLabelBuilder();\r
449         mplsLabelBuilder.setMplsLabel(21L);\r
450         mplsLabelCaseBuilder.setMplsLabel(mplsLabelBuilder.build());\r
451         entriesBuilder.setMatchEntryValue(mplsLabelCaseBuilder.build());\r
452         entries.add(entriesBuilder.build());\r
453 \r
454         entriesBuilder = new MatchEntryBuilder();\r
455         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
456         entriesBuilder.setOxmMatchField(MplsTc.class);\r
457         entriesBuilder.setHasMask(false);\r
458         final MplsTcCaseBuilder mplsTcCaseBuilder = new MplsTcCaseBuilder();\r
459         final MplsTcBuilder mplsTcBuilder = new MplsTcBuilder();\r
460         mplsTcBuilder.setTc((short) 22);\r
461         mplsTcCaseBuilder.setMplsTc(mplsTcBuilder.build());\r
462         entriesBuilder.setMatchEntryValue(mplsTcCaseBuilder.build());\r
463         entries.add(entriesBuilder.build());\r
464 \r
465         entriesBuilder = new MatchEntryBuilder();\r
466         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
467         entriesBuilder.setOxmMatchField(MplsBos.class);\r
468         entriesBuilder.setHasMask(false);\r
469         final MplsBosCaseBuilder mplsBosCaseBuilder = new MplsBosCaseBuilder();\r
470         final MplsBosBuilder mplsBosBuilder = new MplsBosBuilder();\r
471         mplsBosBuilder.setBos(true);\r
472         mplsBosCaseBuilder.setMplsBos(mplsBosBuilder.build());\r
473         entriesBuilder.setMatchEntryValue(mplsBosCaseBuilder.build());\r
474         entries.add(entriesBuilder.build());\r
475 \r
476         entriesBuilder = new MatchEntryBuilder();\r
477         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
478         entriesBuilder.setOxmMatchField(PbbIsid.class);\r
479         entriesBuilder.setHasMask(false);\r
480         final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();\r
481         final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();\r
482         pbbIsidBuilder.setIsid(23L);\r
483         pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());\r
484         entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());\r
485 \r
486         entries.add(entriesBuilder.build());\r
487         entriesBuilder = new MatchEntryBuilder();\r
488         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
489         entriesBuilder.setOxmMatchField(TunnelId.class);\r
490         entriesBuilder.setHasMask(false);\r
491         final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();\r
492         final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();\r
493         tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});\r
494         tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());\r
495         entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());\r
496         entries.add(entriesBuilder.build());\r
497 \r
498         final MatchBuilder builder = new MatchBuilder();\r
499         builder.setMatchEntry(entries);\r
500 \r
501         final Match match = builder.build();\r
502 \r
503         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0);\r
504         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
505 \r
506         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
507                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
508         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
509 \r
510         Assert.assertEquals("Wrong in port", "openflow:42:1", builtMatch.getInPort().getValue());\r
511         Assert.assertEquals("Wrong in phy port", "openflow:42:2", builtMatch.getInPhyPort().getValue());\r
512         Assert.assertEquals("Wrong metadata", new BigInteger(1, new byte[]{0, 1, 2, 3, 4, 5, 6, 7}), builtMatch.getMetadata().getMetadata());\r
513         Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"), builtMatch.getEthernetMatch().getEthernetDestination().getAddress());\r
514         Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"), builtMatch.getEthernetMatch().getEthernetSource().getAddress());\r
515         Assert.assertEquals("Wrong eth type", 3, builtMatch.getEthernetMatch().getEthernetType().getType().getValue().intValue());\r
516         Assert.assertEquals("Wrong vlan id", 4, builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());\r
517         Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().isVlanIdPresent());\r
518         Assert.assertEquals("Wrong vlan pcp", 5, builtMatch.getVlanMatch().getVlanPcp().getValue().intValue());\r
519         Assert.assertEquals("Wrong ip dscp", 6, builtMatch.getIpMatch().getIpDscp().getValue().intValue());\r
520         Assert.assertEquals("Wrong ip ecn", 7, builtMatch.getIpMatch().getIpEcn().intValue());\r
521         Assert.assertEquals("Wrong ip proto", null, builtMatch.getIpMatch().getIpProto());\r
522         Assert.assertEquals("Wrong ip protocol", 8, builtMatch.getIpMatch().getIpProtocol().intValue());\r
523 \r
524         final TcpMatch tcpMatch = (TcpMatch) builtMatch.getLayer4Match();\r
525         Assert.assertEquals("Wrong tcp src port", 9, tcpMatch.getTcpSourcePort().getValue().intValue());\r
526         Assert.assertEquals("Wrong tcp dst port", 10, tcpMatch.getTcpDestinationPort().getValue().intValue());\r
527         Assert.assertEquals("Wrong icmpv4 type", 15, builtMatch.getIcmpv4Match().getIcmpv4Type().intValue());\r
528         Assert.assertEquals("Wrong icmpv4 code", 16, builtMatch.getIcmpv4Match().getIcmpv4Code().intValue());\r
529         Assert.assertEquals("Wrong icmpv6 type", 19, builtMatch.getIcmpv6Match().getIcmpv6Type().intValue());\r
530         Assert.assertEquals("Wrong icmpv6 code", 20, builtMatch.getIcmpv6Match().getIcmpv6Code().intValue());\r
531 \r
532         final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();\r
533         Assert.assertEquals("Wrong ipv4 src address", "10.0.0.1/32", ipv4Match.getIpv4Source().getValue());\r
534         Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.2/32", ipv4Match.getIpv4Destination().getValue());\r
535         Assert.assertEquals("Wrong mpls label", 21, builtMatch.getProtocolMatchFields().getMplsLabel().intValue());\r
536         Assert.assertEquals("Wrong mpls bos", 1, builtMatch.getProtocolMatchFields().getMplsBos().intValue());\r
537         Assert.assertEquals("Wrong mpls tc", 22, builtMatch.getProtocolMatchFields().getMplsTc().intValue());\r
538         Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());\r
539         Assert.assertEquals("Wrong tunnel id", new BigInteger(1, new byte[]{1, 2, 3, 4, 5, 6, 7, 8}),\r
540                 builtMatch.getTunnel().getTunnelId());\r
541     }\r
542 \r
543     /**\r
544      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
545      */\r
546     @Test\r
547     public void testWithMatchEntryWithMasks() {\r
548         final MatchBuilder builder = new MatchBuilder();\r
549         builder.setType(OxmMatchType.class);\r
550         final List<MatchEntry> entries = new ArrayList<>();\r
551         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
552         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
553         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
554         entriesBuilder.setHasMask(true);\r
555 \r
556 \r
557         final MetadataCaseBuilder metadataCaseBuilder = new MetadataCaseBuilder();\r
558         final org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder metadataBuilder = new org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.match.entry.value.grouping.match.entry.value.metadata._case.MetadataBuilder();\r
559         metadataBuilder.setMetadata(new byte[]{0, 1, 2, 3, 4, 5, 6, 7});\r
560         metadataBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 1});\r
561         metadataCaseBuilder.setMetadata(metadataBuilder.build());\r
562         entriesBuilder.setMatchEntryValue(metadataCaseBuilder.build());\r
563         entries.add(entriesBuilder.build());\r
564 \r
565         entriesBuilder = new MatchEntryBuilder();\r
566         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
567         entriesBuilder.setOxmMatchField(EthDst.class);\r
568         entriesBuilder.setHasMask(true);\r
569         final EthDstCaseBuilder ethDstCaseBuilder = new EthDstCaseBuilder();\r
570         final EthDstBuilder ethDstBuilder = new EthDstBuilder();\r
571         ethDstBuilder.setMacAddress(new MacAddress("00:00:00:00:00:01"));\r
572         ethDstBuilder.setMask(new byte[]{0, 0, 0, 0, 1, 1});\r
573         ethDstCaseBuilder.setEthDst(ethDstBuilder.build());\r
574         entriesBuilder.setMatchEntryValue(ethDstCaseBuilder.build());\r
575         entries.add(entriesBuilder.build());\r
576 \r
577         entriesBuilder = new MatchEntryBuilder();\r
578         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
579         entriesBuilder.setOxmMatchField(EthSrc.class);\r
580         entriesBuilder.setHasMask(true);\r
581         final EthSrcCaseBuilder ethSrcCaseBuilder = new EthSrcCaseBuilder();\r
582         final EthSrcBuilder ethSrcBuilder = new EthSrcBuilder();\r
583         ethSrcBuilder.setMacAddress(new MacAddress("00:00:00:00:00:02"));\r
584         ethSrcBuilder.setMask(new byte[]{0, 0, 0, 0, 2, 2});\r
585         ethSrcCaseBuilder.setEthSrc(ethSrcBuilder.build());\r
586         entriesBuilder.setMatchEntryValue(ethSrcCaseBuilder.build());\r
587         entries.add(entriesBuilder.build());\r
588 \r
589         entriesBuilder = new MatchEntryBuilder();\r
590         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
591         entriesBuilder.setOxmMatchField(VlanVid.class);\r
592         entriesBuilder.setHasMask(true);\r
593         final VlanVidCaseBuilder vlanVidCaseBuilder = new VlanVidCaseBuilder();\r
594         final VlanVidBuilder vlanVidBuilder = new VlanVidBuilder();\r
595         vlanVidBuilder.setVlanVid(4);\r
596         vlanVidBuilder.setCfiBit(true);\r
597         vlanVidBuilder.setMask(new byte[]{0, 4});\r
598         vlanVidCaseBuilder.setVlanVid(vlanVidBuilder.build());\r
599         entriesBuilder.setMatchEntryValue(vlanVidCaseBuilder.build());\r
600         entries.add(entriesBuilder.build());\r
601 \r
602         entriesBuilder = new MatchEntryBuilder();\r
603         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
604         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
605         entriesBuilder.setHasMask(true);\r
606         final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();\r
607         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
608         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));\r
609         ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});\r
610         ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
611         entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());\r
612         entries.add(entriesBuilder.build());\r
613 \r
614         entriesBuilder = new MatchEntryBuilder();\r
615         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
616         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
617         entriesBuilder.setHasMask(true);\r
618         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
619         final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();\r
620         ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));\r
621         ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});\r
622         ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());\r
623         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
624         entries.add(entriesBuilder.build());\r
625 \r
626         entriesBuilder = new MatchEntryBuilder();\r
627         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
628         entriesBuilder.setOxmMatchField(PbbIsid.class);\r
629         entriesBuilder.setHasMask(true);\r
630         final PbbIsidCaseBuilder pbbIsidCaseBuilder = new PbbIsidCaseBuilder();\r
631 \r
632         final PbbIsidBuilder pbbIsidBuilder = new PbbIsidBuilder();\r
633         pbbIsidBuilder.setIsid(23L);\r
634         pbbIsidBuilder.setMask(new byte[]{0, 0, 7});\r
635         pbbIsidCaseBuilder.setPbbIsid(pbbIsidBuilder.build());\r
636         entriesBuilder.setMatchEntryValue(pbbIsidCaseBuilder.build());\r
637         entries.add(entriesBuilder.build());\r
638 \r
639         entriesBuilder = new MatchEntryBuilder();\r
640         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
641         entriesBuilder.setOxmMatchField(TunnelId.class);\r
642         entriesBuilder.setHasMask(true);\r
643         final TunnelIdCaseBuilder tunnelIdCaseBuilder = new TunnelIdCaseBuilder();\r
644         final TunnelIdBuilder tunnelIdBuilder = new TunnelIdBuilder();\r
645         tunnelIdBuilder.setTunnelId(new byte[]{1, 2, 3, 4, 5, 6, 7, 8});\r
646         tunnelIdBuilder.setMask(new byte[]{0, 0, 0, 0, 0, 0, 0, 8});\r
647         tunnelIdCaseBuilder.setTunnelId(tunnelIdBuilder.build());\r
648         entriesBuilder.setMatchEntryValue(tunnelIdCaseBuilder.build());\r
649         entries.add(entriesBuilder.build());\r
650         builder.setMatchEntry(entries);\r
651         final Match match = builder.build();\r
652 \r
653         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_0);\r
654         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
655 \r
656         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
657                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
658         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
659 \r
660         Assert.assertEquals("Wrong metadata", new BigInteger(1, new byte[]{0, 1, 2, 3, 4, 5, 6, 7}), builtMatch.getMetadata().getMetadata());\r
661         Assert.assertEquals("Wrong metadata mask", new BigInteger(1, new byte[]{0, 0, 0, 0, 0, 0, 0, 1}),\r
662                 builtMatch.getMetadata().getMetadataMask());\r
663         Assert.assertEquals("Wrong eth dst", new MacAddress("00:00:00:00:00:01"), builtMatch.getEthernetMatch().getEthernetDestination().getAddress());\r
664         Assert.assertEquals("Wrong eth dst mask", new MacAddress("00:00:00:00:01:01"), builtMatch.getEthernetMatch().getEthernetDestination().getMask());\r
665         Assert.assertEquals("Wrong eth src", new MacAddress("00:00:00:00:00:02"), builtMatch.getEthernetMatch().getEthernetSource().getAddress());\r
666         Assert.assertEquals("Wrong eth src mask", new MacAddress("00:00:00:00:02:02"), builtMatch.getEthernetMatch().getEthernetSource().getMask());\r
667         Assert.assertEquals("Wrong vlan id", 4, builtMatch.getVlanMatch().getVlanId().getVlanId().getValue().intValue());\r
668         Assert.assertEquals("Wrong vlan id entries", true, builtMatch.getVlanMatch().getVlanId().isVlanIdPresent());\r
669         final Ipv4Match ipv4Match = (Ipv4Match) builtMatch.getLayer3Match();\r
670         Assert.assertEquals("Wrong ipv4 src address", "10.0.0.0/24", ipv4Match.getIpv4Source().getValue());\r
671         Assert.assertEquals("Wrong ipv4 dst address", "10.0.0.0/20", ipv4Match.getIpv4Destination().getValue());\r
672         Assert.assertEquals("Wrong pbb isid", 23, builtMatch.getProtocolMatchFields().getPbb().getPbbIsid().intValue());\r
673         Assert.assertEquals("Wrong tunnel id", new BigInteger(1, new byte[]{1, 2, 3, 4, 5, 6, 7, 8}),\r
674                 builtMatch.getTunnel().getTunnelId());\r
675     }\r
676 \r
677     /**\r
678      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
679      */\r
680     @Test\r
681     public void testWithMatchEntryWithArbitraryMasks() {\r
682         final MatchBuilder builder = new MatchBuilder();\r
683         builder.setType(OxmMatchType.class);\r
684         final List<MatchEntry> entries = new ArrayList<>();\r
685         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
686         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
687         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
688         entriesBuilder.setHasMask(true);\r
689 \r
690         entriesBuilder = new MatchEntryBuilder();\r
691         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
692         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
693         entriesBuilder.setHasMask(true);\r
694         final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();\r
695         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
696         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));\r
697         ipv4SrcBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 255, 0});\r
698         ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
699         entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());\r
700         entries.add(entriesBuilder.build());\r
701 \r
702         entriesBuilder = new MatchEntryBuilder();\r
703         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
704         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
705         entriesBuilder.setHasMask(true);\r
706         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
707         final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();\r
708         ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));\r
709         ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});\r
710         ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());\r
711         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
712         entries.add(entriesBuilder.build());\r
713 \r
714         builder.setMatchEntry(entries);\r
715         final Match match = builder.build();\r
716 \r
717         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
718         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
719 \r
720         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
721                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
722         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
723 \r
724         final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
725         Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",\r
726                 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());\r
727         Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",\r
728                 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());\r
729     }\r
730 \r
731     /**\r
732      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
733      */\r
734     @Test\r
735     public void testWithMatchEntryWithSrcCidrMaskAndDstArbitraryBitMask() {\r
736         final MatchBuilder builder = new MatchBuilder();\r
737         builder.setType(OxmMatchType.class);\r
738         final List<MatchEntry> entries = new ArrayList<>();\r
739         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
740         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
741         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
742         entriesBuilder.setHasMask(true);\r
743 \r
744         entriesBuilder = new MatchEntryBuilder();\r
745         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
746         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
747         entriesBuilder.setHasMask(true);\r
748         final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();\r
749         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
750         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));\r
751         ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});\r
752         ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
753         entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());\r
754         entries.add(entriesBuilder.build());\r
755 \r
756         entriesBuilder = new MatchEntryBuilder();\r
757         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
758         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
759         entriesBuilder.setHasMask(true);\r
760         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
761         final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();\r
762         ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));\r
763         ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});\r
764         ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());\r
765         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
766         entries.add(entriesBuilder.build());\r
767 \r
768         builder.setMatchEntry(entries);\r
769         final Match match = builder.build();\r
770 \r
771         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
772         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
773 \r
774         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
775                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
776         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
777 \r
778         final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
779         Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",\r
780                 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());\r
781         Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",\r
782                 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());\r
783     }\r
784 \r
785     /**\r
786      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
787      */\r
788     @Test\r
789     public void testWithMatchEntryWithSrcArbitraryBitMaskAndDstCidrMask() {\r
790         final MatchBuilder builder = new MatchBuilder();\r
791         builder.setType(OxmMatchType.class);\r
792         final List<MatchEntry> entries = new ArrayList<>();\r
793         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
794         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
795         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
796         entriesBuilder.setHasMask(true);\r
797 \r
798         entriesBuilder = new MatchEntryBuilder();\r
799         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
800         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
801         entriesBuilder.setHasMask(true);\r
802         final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();\r
803         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
804         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));\r
805         ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});\r
806         ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
807         entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());\r
808         entries.add(entriesBuilder.build());\r
809 \r
810         entriesBuilder = new MatchEntryBuilder();\r
811         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
812         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
813         entriesBuilder.setHasMask(true);\r
814         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
815         final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();\r
816         ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));\r
817         ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});\r
818         ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());\r
819         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
820         entries.add(entriesBuilder.build());\r
821 \r
822         builder.setMatchEntry(entries);\r
823         final Match match = builder.build();\r
824 \r
825         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
826         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
827 \r
828         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
829                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
830         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
831 \r
832         final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
833         Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",\r
834                 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());\r
835         Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",\r
836                 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());\r
837     }\r
838 \r
839 \r
840     /**\r
841      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
842      */\r
843     @Test\r
844     public void testWithMatchEntryWithDstArbitraryBitMaskAndSrcCidrMask() {\r
845         final MatchBuilder builder = new MatchBuilder();\r
846         builder.setType(OxmMatchType.class);\r
847         final List<MatchEntry> entries = new ArrayList<>();\r
848         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
849         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
850         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
851         entriesBuilder.setHasMask(true);\r
852 \r
853         entriesBuilder = new MatchEntryBuilder();\r
854         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
855         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
856         entriesBuilder.setHasMask(true);\r
857         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
858         final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();\r
859         ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));\r
860         ipv4AddressBuilder.setMask(new byte[]{(byte) 255, 0, (byte) 240, 0});\r
861         ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());\r
862         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
863         entries.add(entriesBuilder.build());\r
864 \r
865         entriesBuilder = new MatchEntryBuilder();\r
866         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
867         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
868         entriesBuilder.setHasMask(true);\r
869         final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();\r
870         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
871         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));\r
872         ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});\r
873         ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
874         entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());\r
875         entries.add(entriesBuilder.build());\r
876 \r
877         builder.setMatchEntry(entries);\r
878         final Match match = builder.build();\r
879 \r
880         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
881         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
882 \r
883         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
884                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
885         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
886 \r
887         final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
888         Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",\r
889                 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());\r
890         Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",\r
891                 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());\r
892     }\r
893 \r
894     /**\r
895      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
896      */\r
897     @Test\r
898     public void testWithMatchEntryWithDstCidrMaskAndSrcArbitraryBitMask() {\r
899         final MatchBuilder builder = new MatchBuilder();\r
900         builder.setType(OxmMatchType.class);\r
901         final List<MatchEntry> entries = new ArrayList<>();\r
902         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
903         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
904         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
905         entriesBuilder.setHasMask(true);\r
906 \r
907         entriesBuilder = new MatchEntryBuilder();\r
908         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
909         entriesBuilder.setOxmMatchField(Ipv4Dst.class);\r
910         entriesBuilder.setHasMask(true);\r
911         final Ipv4DstCaseBuilder ipv4DstCaseBuilder = new Ipv4DstCaseBuilder();\r
912         final Ipv4DstBuilder ipv4AddressBuilder = new Ipv4DstBuilder();\r
913         ipv4AddressBuilder.setIpv4Address(new Ipv4Address("10.0.1.1"));\r
914         ipv4AddressBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 240, 0});\r
915         ipv4DstCaseBuilder.setIpv4Dst(ipv4AddressBuilder.build());\r
916         entriesBuilder.setMatchEntryValue(ipv4DstCaseBuilder.build());\r
917         entries.add(entriesBuilder.build());\r
918 \r
919         entriesBuilder = new MatchEntryBuilder();\r
920         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
921         entriesBuilder.setOxmMatchField(Ipv4Src.class);\r
922         entriesBuilder.setHasMask(true);\r
923         final Ipv4SrcCaseBuilder ipv4SrcCaseBuilder = new Ipv4SrcCaseBuilder();\r
924         final Ipv4SrcBuilder ipv4SrcBuilder = new Ipv4SrcBuilder();\r
925         ipv4SrcBuilder.setIpv4Address(new Ipv4Address("10.1.1.1"));\r
926         ipv4SrcBuilder.setMask(new byte[]{(byte) 255, (byte) 0, (byte) 255, 0});\r
927         ipv4SrcCaseBuilder.setIpv4Src(ipv4SrcBuilder.build());\r
928         entriesBuilder.setMatchEntryValue(ipv4SrcCaseBuilder.build());\r
929         entries.add(entriesBuilder.build());\r
930 \r
931         builder.setMatchEntry(entries);\r
932         final Match match = builder.build();\r
933 \r
934         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
935         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
936 \r
937         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
938                 .MatchBuilder salMatch = convert(match, datapathIdConvertorData);\r
939         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatch.build();\r
940 \r
941         final Ipv4MatchArbitraryBitMask ipv4MatchArbitraryBitMask = (Ipv4MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
942         Assert.assertEquals("Wrong ipv4 src address", "10.1.1.1",\r
943                 ipv4MatchArbitraryBitMask.getIpv4SourceAddressNoMask().getValue());\r
944         Assert.assertEquals("Wrong ipv4 dst address", "10.0.1.1",\r
945                 ipv4MatchArbitraryBitMask.getIpv4DestinationAddressNoMask().getValue());\r
946     }\r
947 \r
948     /**\r
949      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
950      */\r
951     @Test\r
952     public void testLayer4MatchUdp() {\r
953         final MatchBuilder builder = new MatchBuilder();\r
954         builder.setType(OxmMatchType.class);\r
955         final List<MatchEntry> entries = new ArrayList<>();\r
956         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
957         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
958         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.UdpSrc.class);\r
959         entriesBuilder.setHasMask(false);\r
960         final UdpSrcCaseBuilder udpSrcCaseBuilder = new UdpSrcCaseBuilder();\r
961         final UdpSrcBuilder portBuilder = new UdpSrcBuilder();\r
962         portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf\r
963                 .inet.types.rev130715.PortNumber(11));\r
964         udpSrcCaseBuilder.setUdpSrc(portBuilder.build());\r
965         entriesBuilder.setMatchEntryValue(udpSrcCaseBuilder.build());\r
966         entries.add(entriesBuilder.build());\r
967 \r
968 \r
969         entriesBuilder = new MatchEntryBuilder();\r
970         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
971         entriesBuilder.setOxmMatchField(UdpDst.class);\r
972         entriesBuilder.setHasMask(false);\r
973         final UdpDstCaseBuilder udpDstCaseBuilder = new UdpDstCaseBuilder();\r
974         final UdpDstBuilder udpDstBuilder = new UdpDstBuilder();\r
975         udpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf\r
976                 .inet.types.rev130715.PortNumber(12));\r
977         udpDstCaseBuilder.setUdpDst(udpDstBuilder.build());\r
978         entriesBuilder.setMatchEntryValue(udpDstCaseBuilder.build());\r
979         entries.add(entriesBuilder.build());\r
980 \r
981         builder.setMatchEntry(entries);\r
982 \r
983         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
984         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
985 \r
986         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
987                 .MatchBuilder builtMatch = convert(builder.build(), datapathIdConvertorData);\r
988 \r
989         final UdpMatch udpMatch = (UdpMatch) builtMatch.getLayer4Match();\r
990         Assert.assertEquals("Wrong udp src port", 11, udpMatch.getUdpSourcePort().getValue().intValue());\r
991         Assert.assertEquals("Wrong udp dst port", 12, udpMatch.getUdpDestinationPort().getValue().intValue());\r
992     }\r
993 \r
994     /**\r
995      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
996      */\r
997     @Test\r
998     public void testLayer4MatchSctp() {\r
999         final MatchBuilder builder = new MatchBuilder();\r
1000         builder.setType(OxmMatchType.class);\r
1001         final List<MatchEntry> entries = new ArrayList<>();\r
1002         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1003         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1004         entriesBuilder.setOxmMatchField(SctpSrc.class);\r
1005         entriesBuilder.setHasMask(false);\r
1006         final SctpSrcCaseBuilder sctpSrcCaseBuilder = new SctpSrcCaseBuilder();\r
1007         final SctpSrcBuilder portBuilder = new SctpSrcBuilder();\r
1008         portBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf\r
1009                 .inet.types.rev130715.PortNumber(13));\r
1010         sctpSrcCaseBuilder.setSctpSrc(portBuilder.build());\r
1011         entriesBuilder.setMatchEntryValue(sctpSrcCaseBuilder.build());\r
1012         entries.add(entriesBuilder.build());\r
1013 \r
1014 \r
1015         entriesBuilder = new MatchEntryBuilder();\r
1016         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1017         entriesBuilder.setOxmMatchField(SctpDst.class);\r
1018         entriesBuilder.setHasMask(false);\r
1019         final SctpDstCaseBuilder sctpDstCaseBuilder = new SctpDstCaseBuilder();\r
1020         final SctpDstBuilder sctpDstBuilder = new SctpDstBuilder();\r
1021         sctpDstBuilder.setPort(new org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf\r
1022                 .inet.types.rev130715.PortNumber(14));\r
1023         sctpDstCaseBuilder.setSctpDst(sctpDstBuilder.build());\r
1024         entriesBuilder.setMatchEntryValue(sctpDstCaseBuilder.build());\r
1025         entries.add(entriesBuilder.build());\r
1026         builder.setMatchEntry(entries);\r
1027 \r
1028         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1029         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1030 \r
1031         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1032                 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);\r
1033         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1034 \r
1035         final SctpMatch udpMatch = (SctpMatch) builtMatch.getLayer4Match();\r
1036         Assert.assertEquals("Wrong sctp src port", 13, udpMatch.getSctpSourcePort().getValue().intValue());\r
1037         Assert.assertEquals("Wrong sctp dst port", 14, udpMatch.getSctpDestinationPort().getValue().intValue());\r
1038     }\r
1039 \r
1040     /**\r
1041      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1042      */\r
1043     @Test\r
1044     public void testLayer3MatchIpv6() {\r
1045         final MatchBuilder builder = new MatchBuilder();\r
1046         builder.setType(OxmMatchType.class);\r
1047         final List<MatchEntry> entries = new ArrayList<>();\r
1048         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1049         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1050         entriesBuilder.setOxmMatchField(Ipv6Src.class);\r
1051         entriesBuilder.setHasMask(false);\r
1052         final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();\r
1053         final Ipv6SrcBuilder ipv6AddressBuilder = new Ipv6SrcBuilder();\r
1054         ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9657"));\r
1055         ipv6SrcCaseBuilder.setIpv6Src(ipv6AddressBuilder.build());\r
1056         entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());\r
1057         entries.add(entriesBuilder.build());\r
1058 \r
1059         entriesBuilder = new MatchEntryBuilder();\r
1060         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1061         entriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
1062         entriesBuilder.setHasMask(false);\r
1063         final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();\r
1064         final Ipv6DstBuilder ipv6DstBuilder = new Ipv6DstBuilder();\r
1065         ipv6DstBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9658"));\r
1066         ipv6DstCaseBuilder.setIpv6Dst(ipv6DstBuilder.build());\r
1067         entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());\r
1068         entries.add(entriesBuilder.build());\r
1069 \r
1070         entriesBuilder = new MatchEntryBuilder();\r
1071         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1072         entriesBuilder.setOxmMatchField(Ipv6Flabel.class);\r
1073         entriesBuilder.setHasMask(false);\r
1074         final Ipv6FlabelCaseBuilder ipv6FlabelCaseBuilder = new Ipv6FlabelCaseBuilder();\r
1075         final Ipv6FlabelBuilder ipv6FlabelBuilder = new Ipv6FlabelBuilder();\r
1076         ipv6FlabelBuilder.setIpv6Flabel(new Ipv6FlowLabel(18L));\r
1077         ipv6FlabelCaseBuilder.setIpv6Flabel(ipv6FlabelBuilder.build());\r
1078         entriesBuilder.setMatchEntryValue(ipv6FlabelCaseBuilder.build());\r
1079         entries.add(entriesBuilder.build());\r
1080 \r
1081         entriesBuilder = new MatchEntryBuilder();\r
1082         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1083         entriesBuilder.setOxmMatchField(Ipv6NdTarget.class);\r
1084         entriesBuilder.setHasMask(false);\r
1085         final Ipv6NdTargetCaseBuilder ipv6NdTargetCaseBuilder = new Ipv6NdTargetCaseBuilder();\r
1086         final Ipv6NdTargetBuilder ipv6NdTargetBuilder = new Ipv6NdTargetBuilder();\r
1087         ipv6NdTargetBuilder.setIpv6Address(new Ipv6Address("2001:cdba:0000:0000:0000:0000:3257:9659"));\r
1088         ipv6NdTargetCaseBuilder.setIpv6NdTarget(ipv6NdTargetBuilder.build());\r
1089         entriesBuilder.setMatchEntryValue(ipv6NdTargetCaseBuilder.build());\r
1090         entries.add(entriesBuilder.build());\r
1091 \r
1092         entriesBuilder = new MatchEntryBuilder();\r
1093         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1094         entriesBuilder.setOxmMatchField(Ipv6NdSll.class);\r
1095         entriesBuilder.setHasMask(false);\r
1096         final Ipv6NdSllCaseBuilder ipv6NdSllCaseBuilder = new Ipv6NdSllCaseBuilder();\r
1097         final Ipv6NdSllBuilder ipv6NdSllBuilder = new Ipv6NdSllBuilder();\r
1098         ipv6NdSllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:05"));\r
1099         ipv6NdSllCaseBuilder.setIpv6NdSll(ipv6NdSllBuilder.build());\r
1100         entriesBuilder.setMatchEntryValue(ipv6NdSllCaseBuilder.build());\r
1101         entries.add(entriesBuilder.build());\r
1102 \r
1103         entriesBuilder = new MatchEntryBuilder();\r
1104         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1105         entriesBuilder.setOxmMatchField(Ipv6NdTll.class);\r
1106         entriesBuilder.setHasMask(false);\r
1107         final Ipv6NdTllCaseBuilder ipv6NdTllCaseBuilder = new Ipv6NdTllCaseBuilder();\r
1108         final Ipv6NdTllBuilder ipv6NdTllBuilder = new Ipv6NdTllBuilder();\r
1109         ipv6NdTllBuilder.setMacAddress(new MacAddress("00:00:00:00:00:06"));\r
1110         ipv6NdTllCaseBuilder.setIpv6NdTll(ipv6NdTllBuilder.build());\r
1111         entriesBuilder.setMatchEntryValue(ipv6NdTllCaseBuilder.build());\r
1112         entries.add(entriesBuilder.build());\r
1113 \r
1114         entriesBuilder = new MatchEntryBuilder();\r
1115         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1116         entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);\r
1117         entriesBuilder.setHasMask(false);\r
1118         final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();\r
1119         final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();\r
1120         ipv6ExthdrBuilder.setPseudoField(new Ipv6ExthdrFlags(true, false, true, false, true, false, true, false, true));\r
1121         ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());\r
1122         entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());\r
1123         builder.setMatchEntry(entries);\r
1124         entries.add(entriesBuilder.build());\r
1125 \r
1126         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1127         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1128 \r
1129         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1130                 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);\r
1131         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1132 \r
1133         final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();\r
1134         Assert.assertEquals("Wrong ipv6 src address", "2001:cdba::3257:9657/128",\r
1135                 ipv6Match.getIpv6Source().getValue());\r
1136         Assert.assertEquals("Wrong ipv6 dst address", "2001:cdba::3257:9658/128",\r
1137                 ipv6Match.getIpv6Destination().getValue());\r
1138         Assert.assertEquals("Wrong ipv6 nd target", "2001:cdba:0000:0000:0000:0000:3257:9659",\r
1139                 ipv6Match.getIpv6NdTarget().getValue());\r
1140         Assert.assertEquals("Wrong ipv6 flabel", 18, ipv6Match.getIpv6Label().getIpv6Flabel().getValue().intValue());\r
1141         Assert.assertEquals("Wrong ipv6 nd sll", new MacAddress("00:00:00:00:00:05"), ipv6Match.getIpv6NdSll());\r
1142         Assert.assertEquals("Wrong ipv6 nd tll", new MacAddress("00:00:00:00:00:06"), ipv6Match.getIpv6NdTll());\r
1143         Assert.assertEquals("Wrong ipv6 ext header", 358, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());\r
1144     }\r
1145 \r
1146     /**\r
1147      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1148      */\r
1149     @Test\r
1150     public void testLayer3MatchIpv6ExtHeader2() {\r
1151         final MatchBuilder builder = new MatchBuilder();\r
1152         builder.setType(OxmMatchType.class);\r
1153         final List<MatchEntry> entries = new ArrayList<>();\r
1154         final MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1155         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1156         entriesBuilder.setOxmMatchField(Ipv6Exthdr.class);\r
1157         entriesBuilder.setHasMask(true);\r
1158         final Ipv6ExthdrCaseBuilder ipv6ExthdrCaseBuilder = new Ipv6ExthdrCaseBuilder();\r
1159         final Ipv6ExthdrBuilder ipv6ExthdrBuilder = new Ipv6ExthdrBuilder();\r
1160         ipv6ExthdrBuilder.setPseudoField(new Ipv6ExthdrFlags(false, true, false, true, false, true, false, true, false));\r
1161         ipv6ExthdrBuilder.setMask(new byte[]{1, 2});\r
1162         ipv6ExthdrCaseBuilder.setIpv6Exthdr(ipv6ExthdrBuilder.build());\r
1163         entriesBuilder.setMatchEntryValue(ipv6ExthdrCaseBuilder.build());\r
1164         entries.add(entriesBuilder.build());\r
1165         builder.setMatchEntry(entries);\r
1166 \r
1167         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1168         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1169 \r
1170         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1171                 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);\r
1172         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1173 \r
1174         final Ipv6Match ipv6Match = (Ipv6Match) builtMatch.getLayer3Match();\r
1175         Assert.assertEquals("Wrong ipv6 ext header", 153, ipv6Match.getIpv6ExtHeader().getIpv6Exthdr().intValue());\r
1176         Assert.assertEquals("Wrong ipv6 ext header mask", 258, ipv6Match.getIpv6ExtHeader().getIpv6ExthdrMask().intValue());\r
1177     }\r
1178 \r
1179     /**\r
1180      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1181      */\r
1182     @Test\r
1183     public void testLayer3MatchArp() {\r
1184         final MatchBuilder builder = new MatchBuilder();\r
1185         builder.setType(OxmMatchType.class);\r
1186         final List<MatchEntry> entries = new ArrayList<>();\r
1187         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1188         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1189         entriesBuilder.setOxmMatchField(ArpOp.class);\r
1190         entriesBuilder.setHasMask(false);\r
1191         final ArpOpCaseBuilder arpOpCaseBuilder = new ArpOpCaseBuilder();\r
1192         final ArpOpBuilder arpOpBuilder = new ArpOpBuilder();\r
1193         arpOpBuilder.setOpCode(17);\r
1194         arpOpCaseBuilder.setArpOp(arpOpBuilder.build());\r
1195         entriesBuilder.setMatchEntryValue(arpOpCaseBuilder.build());\r
1196         entries.add(entriesBuilder.build());\r
1197 \r
1198         entriesBuilder = new MatchEntryBuilder();\r
1199         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1200         entriesBuilder.setOxmMatchField(ArpSpa.class);\r
1201         entriesBuilder.setHasMask(false);\r
1202         final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();\r
1203         final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();\r
1204         arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));\r
1205         arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());\r
1206         entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());\r
1207         entries.add(entriesBuilder.build());\r
1208 \r
1209         entriesBuilder = new MatchEntryBuilder();\r
1210         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1211         entriesBuilder.setOxmMatchField(ArpTpa.class);\r
1212         entriesBuilder.setHasMask(false);\r
1213         final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();\r
1214         final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();\r
1215         arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.4"));\r
1216         arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());\r
1217         entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());\r
1218         entries.add(entriesBuilder.build());\r
1219 \r
1220         entriesBuilder = new MatchEntryBuilder();\r
1221         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1222         entriesBuilder.setOxmMatchField(ArpSha.class);\r
1223         entriesBuilder.setHasMask(false);\r
1224         final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();\r
1225         final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();\r
1226         arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));\r
1227         arpShaCaseBuilder.setArpSha(arpShaBuilder.build());\r
1228         entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());\r
1229         entries.add(entriesBuilder.build());\r
1230 \r
1231         entriesBuilder = new MatchEntryBuilder();\r
1232         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1233         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.class);\r
1234         entriesBuilder.setHasMask(false);\r
1235         final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();\r
1236         final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();\r
1237         arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));\r
1238         arpThaCaseBuilder.setArpTha(arpThaBuilder.build());\r
1239         entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());\r
1240         entries.add(entriesBuilder.build());\r
1241         builder.setMatchEntry(entries);\r
1242 \r
1243         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1244         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1245 \r
1246         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1247                 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);\r
1248         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1249 \r
1250         final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();\r
1251         Assert.assertEquals("Wrong arp op", 17, arpMatch.getArpOp().intValue());\r
1252         Assert.assertEquals("Wrong arp spa", "10.0.0.3/32", arpMatch.getArpSourceTransportAddress().getValue());\r
1253         Assert.assertEquals("Wrong arp tpa", "10.0.0.4/32", arpMatch.getArpTargetTransportAddress().getValue());\r
1254         Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03", arpMatch.getArpSourceHardwareAddress().getAddress().getValue());\r
1255         Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04", arpMatch.getArpTargetHardwareAddress().getAddress().getValue());\r
1256     }\r
1257 \r
1258     /**\r
1259      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1260      */\r
1261     @Test\r
1262     public void testLayer3MatchArpWithMasks() {\r
1263         final MatchBuilder builder = new MatchBuilder();\r
1264         builder.setType(OxmMatchType.class);\r
1265         final List<MatchEntry> entries = new ArrayList<>();\r
1266         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1267         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1268         entriesBuilder.setOxmMatchField(ArpSpa.class);\r
1269         entriesBuilder.setHasMask(true);\r
1270         final ArpSpaCaseBuilder arpSpaCaseBuilder = new ArpSpaCaseBuilder();\r
1271         final ArpSpaBuilder arpSpaBuilder = new ArpSpaBuilder();\r
1272         arpSpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.3"));\r
1273         arpSpaBuilder.setMask(new byte[]{(byte) 255, (byte) 255, (byte) 255, 0});\r
1274         arpSpaCaseBuilder.setArpSpa(arpSpaBuilder.build());\r
1275         entriesBuilder.setMatchEntryValue(arpSpaCaseBuilder.build());\r
1276         entries.add(entriesBuilder.build());\r
1277 \r
1278         entriesBuilder = new MatchEntryBuilder();\r
1279         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1280         entriesBuilder.setOxmMatchField(ArpTpa.class);\r
1281         entriesBuilder.setHasMask(true);\r
1282         final ArpTpaCaseBuilder arpTpaCaseBuilder = new ArpTpaCaseBuilder();\r
1283         final ArpTpaBuilder arpTpaBuilder = new ArpTpaBuilder();\r
1284         arpTpaBuilder.setIpv4Address(new Ipv4Address("10.0.0.0"));\r
1285         arpTpaBuilder.setMask(new byte[]{(byte) 255, (byte) 128, 0, 0});\r
1286         arpTpaCaseBuilder.setArpTpa(arpTpaBuilder.build());\r
1287         entriesBuilder.setMatchEntryValue(arpTpaCaseBuilder.build());\r
1288         entries.add(entriesBuilder.build());\r
1289 \r
1290         entriesBuilder = new MatchEntryBuilder();\r
1291         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1292         entriesBuilder.setOxmMatchField(ArpSha.class);\r
1293         entriesBuilder.setHasMask(true);\r
1294         final ArpShaCaseBuilder arpShaCaseBuilder = new ArpShaCaseBuilder();\r
1295         final ArpShaBuilder arpShaBuilder = new ArpShaBuilder();\r
1296         arpShaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:03"));\r
1297         arpShaBuilder.setMask(new byte[]{0, 0, 1, 0, 4, 0});\r
1298         arpShaCaseBuilder.setArpSha(arpShaBuilder.build());\r
1299         entriesBuilder.setMatchEntryValue(arpShaCaseBuilder.build());\r
1300         entries.add(entriesBuilder.build());\r
1301 \r
1302         entriesBuilder = new MatchEntryBuilder();\r
1303         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1304         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.ArpTha.class);\r
1305         entriesBuilder.setHasMask(true);\r
1306         final ArpThaCaseBuilder arpThaCaseBuilder = new ArpThaCaseBuilder();\r
1307         final ArpThaBuilder arpThaBuilder = new ArpThaBuilder();\r
1308         arpThaBuilder.setMacAddress(new MacAddress("00:00:00:00:00:04"));\r
1309         arpThaBuilder.setMask(new byte[]{1, 1, 1, 2, 2, 2});\r
1310         arpThaCaseBuilder.setArpTha(arpThaBuilder.build());\r
1311         entriesBuilder.setMatchEntryValue(arpThaCaseBuilder.build());\r
1312         entries.add(entriesBuilder.build());\r
1313 \r
1314         builder.setMatchEntry(entries);\r
1315 \r
1316         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1317         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1318 \r
1319         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1320                 .MatchBuilder salMatchBuilder = convert(builder.build(), datapathIdConvertorData);\r
1321         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1322 \r
1323         final ArpMatch arpMatch = (ArpMatch) builtMatch.getLayer3Match();\r
1324         Assert.assertEquals("Wrong arp spa", "10.0.0.3/24", arpMatch.getArpSourceTransportAddress().getValue());\r
1325         Assert.assertEquals("Wrong arp tpa", "10.0.0.0/9", arpMatch.getArpTargetTransportAddress().getValue());\r
1326         Assert.assertEquals("Wrong arp sha", "00:00:00:00:00:03", arpMatch.getArpSourceHardwareAddress().getAddress().getValue());\r
1327         Assert.assertEquals("Wrong arp sha mask", "00:00:01:00:04:00", arpMatch.getArpSourceHardwareAddress().getMask().getValue());\r
1328         Assert.assertEquals("Wrong arp tha", "00:00:00:00:00:04", arpMatch.getArpTargetHardwareAddress().getAddress().getValue());\r
1329         Assert.assertEquals("Wrong arp tha mask", "01:01:01:02:02:02", arpMatch.getArpTargetHardwareAddress().getMask().getValue());\r
1330     }\r
1331 \r
1332     /**\r
1333      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1334      */\r
1335     @Test\r
1336     public void testWithMatchEntryWithIpv6ArbitraryMasks() {\r
1337         final MatchBuilder builder = new MatchBuilder();\r
1338         builder.setType(OxmMatchType.class);\r
1339         final List<MatchEntry> entries = new ArrayList<>();\r
1340         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1341         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1342         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
1343         entriesBuilder.setHasMask(true);\r
1344 \r
1345         entriesBuilder = new MatchEntryBuilder();\r
1346         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1347         entriesBuilder.setOxmMatchField(Ipv6Src.class);\r
1348         entriesBuilder.setHasMask(true);\r
1349         final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();\r
1350         final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();\r
1351         ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));\r
1352         ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});\r
1353         ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());\r
1354         entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());\r
1355         entries.add(entriesBuilder.build());\r
1356 \r
1357         entriesBuilder = new MatchEntryBuilder();\r
1358         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1359         entriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
1360         entriesBuilder.setHasMask(true);\r
1361         final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();\r
1362         final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();\r
1363         ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));\r
1364         ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});\r
1365         ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());\r
1366         entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());\r
1367         entries.add(entriesBuilder.build());\r
1368 \r
1369         builder.setMatchEntry(entries);\r
1370         final Match match = builder.build();\r
1371 \r
1372         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1373         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1374 \r
1375         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1376                 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);\r
1377         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1378 \r
1379         final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask = (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
1380         Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",\r
1381                 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());\r
1382         Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",\r
1383                 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());\r
1384     }\r
1385 \r
1386     /**\r
1387      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1388      */\r
1389     @Test\r
1390     public void testWithMatchEntryWithIpv6SrcCidrlMaskAndDstArbitraryBitMask() {\r
1391         final MatchBuilder builder = new MatchBuilder();\r
1392         builder.setType(OxmMatchType.class);\r
1393         final List<MatchEntry> entries = new ArrayList<>();\r
1394         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1395         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1396         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
1397         entriesBuilder.setHasMask(true);\r
1398 \r
1399         entriesBuilder = new MatchEntryBuilder();\r
1400         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1401         entriesBuilder.setOxmMatchField(Ipv6Src.class);\r
1402         entriesBuilder.setHasMask(true);\r
1403         final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();\r
1404         final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();\r
1405         ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));\r
1406         ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});\r
1407         ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());\r
1408         entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());\r
1409         entries.add(entriesBuilder.build());\r
1410 \r
1411         entriesBuilder = new MatchEntryBuilder();\r
1412         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1413         entriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
1414         entriesBuilder.setHasMask(true);\r
1415         final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();\r
1416         final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();\r
1417         ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));\r
1418         ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});\r
1419         ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());\r
1420         entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());\r
1421         entries.add(entriesBuilder.build());\r
1422 \r
1423         builder.setMatchEntry(entries);\r
1424         final Match match = builder.build();\r
1425 \r
1426         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1427         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1428 \r
1429         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1430                 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);\r
1431         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1432 \r
1433         final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask = (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
1434         Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",\r
1435                 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());\r
1436         Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",\r
1437                 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());\r
1438     }\r
1439 \r
1440     /**\r
1441      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1442      */\r
1443     @Test\r
1444     public void testWithMatchEntryWithIpv6SrcArbitraryBitMaskAndDstCidrMask() {\r
1445         final MatchBuilder builder = new MatchBuilder();\r
1446         builder.setType(OxmMatchType.class);\r
1447         final List<MatchEntry> entries = new ArrayList<>();\r
1448         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1449         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1450         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
1451         entriesBuilder.setHasMask(true);\r
1452 \r
1453         entriesBuilder = new MatchEntryBuilder();\r
1454         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1455         entriesBuilder.setOxmMatchField(Ipv6Src.class);\r
1456         entriesBuilder.setHasMask(true);\r
1457         final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();\r
1458         final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();\r
1459         ipv6SrcBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));\r
1460         ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});\r
1461         ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());\r
1462         entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());\r
1463         entries.add(entriesBuilder.build());\r
1464 \r
1465         entriesBuilder = new MatchEntryBuilder();\r
1466         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1467         entriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
1468         entriesBuilder.setHasMask(true);\r
1469         final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();\r
1470         final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();\r
1471         ipv6AddressBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));\r
1472         ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});\r
1473         ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());\r
1474         entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());\r
1475         entries.add(entriesBuilder.build());\r
1476 \r
1477         builder.setMatchEntry(entries);\r
1478         final Match match = builder.build();\r
1479 \r
1480         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1481         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1482 \r
1483         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1484                 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);\r
1485         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1486 \r
1487         final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask = (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
1488         Assert.assertEquals("Wrong ipv6 src address", "1001:1001:1001:1001:1001:1001:1001:1001",\r
1489                 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());\r
1490         Assert.assertEquals("Wrong ipv6 dst address", "2002:2002:2002:2002:2002:2002:2002:2002",\r
1491                 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());\r
1492     }\r
1493 \r
1494 \r
1495     /**\r
1496      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1497      */\r
1498     @Test\r
1499     public void testWithMatchEntryWithIpv6DstArbitraryBitMaskAndSrcCidrMask() {\r
1500         final MatchBuilder builder = new MatchBuilder();\r
1501         builder.setType(OxmMatchType.class);\r
1502         final List<MatchEntry> entries = new ArrayList<>();\r
1503         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1504         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1505         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
1506         entriesBuilder.setHasMask(true);\r
1507 \r
1508         entriesBuilder = new MatchEntryBuilder();\r
1509         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1510         entriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
1511         entriesBuilder.setHasMask(true);\r
1512         final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();\r
1513         final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();\r
1514         ipv6AddressBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));\r
1515         ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});\r
1516         ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());\r
1517         entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());\r
1518         entries.add(entriesBuilder.build());\r
1519 \r
1520         entriesBuilder = new MatchEntryBuilder();\r
1521         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1522         entriesBuilder.setOxmMatchField(Ipv6Src.class);\r
1523         entriesBuilder.setHasMask(true);\r
1524         final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();\r
1525         final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();\r
1526         ipv6SrcBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));\r
1527         ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});\r
1528         ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());\r
1529         entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());\r
1530         entries.add(entriesBuilder.build());\r
1531 \r
1532         builder.setMatchEntry(entries);\r
1533         final Match match = builder.build();\r
1534 \r
1535         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1536         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1537 \r
1538         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1539                 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);\r
1540         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1541 \r
1542         final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask = (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
1543         Assert.assertEquals("Wrong ipv6 src address", "2002:2002:2002:2002:2002:2002:2002:2002",\r
1544                 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());\r
1545         Assert.assertEquals("Wrong ipv6 dst address", "1001:1001:1001:1001:1001:1001:1001:1001",\r
1546                 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());\r
1547     }\r
1548 \r
1549 \r
1550     /**\r
1551      * Test {@link org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.match.MatchResponseConvertor#convert(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.MatchEntriesGrouping, org.opendaylight.openflowplugin.openflow.md.core.sal.convertor.data.VersionDatapathIdConvertorData)}\r
1552      */\r
1553     @Test\r
1554     public void testWithMatchEntryWithIpv6DstCidrMaskAndSrcArbitraryBitMask() {\r
1555         final MatchBuilder builder = new MatchBuilder();\r
1556         builder.setType(OxmMatchType.class);\r
1557         final List<MatchEntry> entries = new ArrayList<>();\r
1558         MatchEntryBuilder entriesBuilder = new MatchEntryBuilder();\r
1559         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1560         entriesBuilder.setOxmMatchField(org.opendaylight.yang.gen.v1.urn.opendaylight.openflow.oxm.rev150225.Metadata.class);\r
1561         entriesBuilder.setHasMask(true);\r
1562 \r
1563         entriesBuilder = new MatchEntryBuilder();\r
1564         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1565         entriesBuilder.setOxmMatchField(Ipv6Dst.class);\r
1566         entriesBuilder.setHasMask(true);\r
1567         final Ipv6DstCaseBuilder ipv6DstCaseBuilder = new Ipv6DstCaseBuilder();\r
1568         final Ipv6DstBuilder ipv6AddressBuilder = new Ipv6DstBuilder();\r
1569         ipv6AddressBuilder.setIpv6Address(new Ipv6Address("1001:1001:1001:1001:1001:1001:1001:1001"));\r
1570         ipv6AddressBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0});\r
1571         ipv6DstCaseBuilder.setIpv6Dst(ipv6AddressBuilder.build());\r
1572         entriesBuilder.setMatchEntryValue(ipv6DstCaseBuilder.build());\r
1573         entries.add(entriesBuilder.build());\r
1574 \r
1575         entriesBuilder = new MatchEntryBuilder();\r
1576         entriesBuilder.setOxmClass(OpenflowBasicClass.class);\r
1577         entriesBuilder.setOxmMatchField(Ipv6Src.class);\r
1578         entriesBuilder.setHasMask(true);\r
1579         final Ipv6SrcCaseBuilder ipv6SrcCaseBuilder = new Ipv6SrcCaseBuilder();\r
1580         final Ipv6SrcBuilder ipv6SrcBuilder = new Ipv6SrcBuilder();\r
1581         ipv6SrcBuilder.setIpv6Address(new Ipv6Address("2002:2002:2002:2002:2002:2002:2002:2002"));\r
1582         ipv6SrcBuilder.setMask(new byte[]{(byte) 255,0,0,0,0,0,0,0,0,0,0,0,0,0,0,(byte) 255});\r
1583         ipv6SrcCaseBuilder.setIpv6Src(ipv6SrcBuilder.build());\r
1584         entriesBuilder.setMatchEntryValue(ipv6SrcCaseBuilder.build());\r
1585         entries.add(entriesBuilder.build());\r
1586 \r
1587         builder.setMatchEntry(entries);\r
1588         final Match match = builder.build();\r
1589 \r
1590         final VersionDatapathIdConvertorData datapathIdConvertorData = new VersionDatapathIdConvertorData(OFConstants.OFP_VERSION_1_3);\r
1591         datapathIdConvertorData.setDatapathId(new BigInteger("42"));\r
1592 \r
1593         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1594                 .MatchBuilder salMatchBuilder = convert(match, datapathIdConvertorData);\r
1595         final org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.Match builtMatch = salMatchBuilder.build();\r
1596 \r
1597         final Ipv6MatchArbitraryBitMask ipv6MatchArbitraryBitMask = (Ipv6MatchArbitraryBitMask) builtMatch.getLayer3Match();\r
1598         Assert.assertEquals("Wrong ipv6 src address", "2002:2002:2002:2002:2002:2002:2002:2002",\r
1599                 ipv6MatchArbitraryBitMask.getIpv6SourceAddressNoMask().getValue());\r
1600         Assert.assertEquals("Wrong ipv6 dst address", "1001:1001:1001:1001:1001:1001:1001:1001",\r
1601                 ipv6MatchArbitraryBitMask.getIpv6DestinationAddressNoMask().getValue());\r
1602     }\r
1603 \r
1604     private org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1605             .MatchBuilder convert(Match match, VersionDatapathIdConvertorData data) {\r
1606         final Optional<org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow\r
1607                 .MatchBuilder> salMatchOptional = ConvertorManager.getInstance().convert(match, data);\r
1608 \r
1609         return salMatchOptional\r
1610                 .orElse(new org.opendaylight.yang.gen.v1.urn.opendaylight.flow.types.rev131026.flow.MatchBuilder());\r
1611     }\r
1612 }\r