tests: Fix autopath tests
[sliver-openvswitch.git] / tests / ovs-ofctl.at
index 8e3c5f7..947f985 100644 (file)
@@ -187,7 +187,7 @@ actions=move:OXM_OF_ETH_DST[]->OXM_OF_ETH_SRC[]
 actions=autopath(5,NXM_NX_REG0[])
 vlan_tci=0x1123/0x1fff,actions=drop
 ]])
-AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout])
+AT_CHECK([ovs-ofctl -F nxm -mmm parse-flows flows.txt], [0], [stdout], [stderr])
 AT_CHECK([[sed 's/ (xid=0x[0-9a-fA-F]*)//' stdout]], [0],
 [[usable protocols: NXM
 chosen protocol: NXM-table_id
@@ -216,6 +216,9 @@ NXT_FLOW_MOD: ADD <any> actions=move:NXM_OF_ETH_DST[]->NXM_OF_ETH_SRC[]
 NXT_FLOW_MOD: ADD <any> actions=autopath(5,NXM_NX_REG0[])
 NXT_FLOW_MOD: ADD NXM_OF_VLAN_TCI_W(1123/1fff) actions=drop
 ]])
+AT_CHECK([[sed 's/^[^|]*|[^|]*|//' stderr]], [0], [dnl
+autopath|WARN|The autopath action is deprecated and may be removed in February 2013.  Please email dev@openvswitch.org with concerns.
+])
 AT_CLEANUP
 
 AT_SETUP([ovs-ofctl parse-nx-match])
@@ -730,55 +733,55 @@ AT_SETUP([ovs-ofctl parse-ofp10-match])
 AT_KEYWORDS([OF1.0])
 AT_DATA([test-data], [dnl
 # in_port=65534
-003820fe fffe 000000000000 000000000000 0000 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fe fffe xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_src=00:01:02:03:04:05
-003820fb 0000 000102030405 000000000000 0000 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fb xxxx 000102030405 xxxxxxxxxxxx xxxx xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_dst=10:20:30:40:50:60
-003820f7 0000 000000000000 102030405060 0000 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820f7 xxxx xxxxxxxxxxxx 102030405060 xxxx xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_vlan=291
-003820fd 0000 000000000000 000000000000 0123 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_vlan_pcp=5
-002820ff 0000 000000000000 000000000000 0000 05 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820ff xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx 05 xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_vlan=291,dl_vlan_pcp=4
-002820fd 0000 000000000000 000000000000 0123 04 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx 0123 04 xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # vlan_tci=0x0000
-003820fd 0000 000000000000 000000000000 ffff 00 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff xx xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl dl_vlan_pcp doesn't make sense when dl_vlan is "none", so
 dnl OVS ignores it and drops it on output.
 # vlan_tci=0x0000
 #  1: 28 -> 38
 # 20: 05 -> 00
-002820fd 0000 000000000000 000000000000 ffff 05 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx ffff 05 xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Invalid VID and PCP discards out-of-range bits:
 # dl_vlan=256,dl_vlan_pcp=7
 # 18: f1 -> 01
 # 20: ff -> 07
-002820fd 0000 000000000000 000000000000 f100 ff 00 0000 00 00 0000 dnl
-00000000 00000000 0000 0000
+002820fd xxxx xxxxxxxxxxxx xxxxxxxxxxxx f100 ff xx xxxx xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # dl_type=0x1234
-003820ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
-00000000 00000000 0000 0000
+003820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # ip,nw_proto=5
-003820cf 0000 000000000000 000000000000 0000 00 00 0800 00 05 0000 dnl
-00000000 00000000 0000 0000
+003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 05 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Ignore nw_proto if not IP or ARP:
 # dl_type=0x1234,nw_proto=5
@@ -787,12 +790,12 @@ dnl Ignore nw_proto if not IP or ARP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_proto=5
 & ofp_util|INFO|post: dl_type=0x1234
-003820cf 0000 000000000000 000000000000 0000 00 00 1234 00 05 0000 dnl
-00000000 00000000 0000 0000
+003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx 05 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # ip,nw_tos=252
-001820ef 0000 000000000000 000000000000 0000 00 00 0800 fc 00 0000 dnl
-00000000 00000000 0000 0000
+001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 fc xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Ignore nw_tos if not IP:
 # arp,nw_tos=4
@@ -802,54 +805,54 @@ dnl Ignore nw_tos if not IP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: arp,nw_tos=4
 & ofp_util|INFO|post: arp
-001820ef 0000 000000000000 000000000000 0000 00 00 0806 05 00 0000 dnl
-00000000 00000000 0000 0000
+001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 05 xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 dnl Low 2 bits of invalid TOS are forced to 0:
 # ip,nw_tos=48
 # 24: 31 -> 30
-001820ef 0000 000000000000 000000000000 0000 00 00 0800 31 00 0000 dnl
-00000000 00000000 0000 0000
+001820ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 31 xx xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # arp,arp_op=2
-003820cf 0000 000000000000 000000000000 0000 00 00 0806 00 02 0000 dnl
-00000000 00000000 0000 0000
+003820cf xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx 02 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx xxxx
 
 # ip,nw_src=192.168.128.85
-003800ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # ip,nw_src=192.168.128.0/24
 # 31: 55 -> 00
-003808ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # ip,nw_dst=192.168.128.85
-003020ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # ip,nw_dst=192.168.128.0/24
 # 35: 55 -> 00
-003220ef 0000 000000000000 000000000000 0000 00 00 0800 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # arp,nw_src=192.168.128.85
-003800ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003800ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # arp,nw_src=192.168.128.0/24
 # 31: 55 -> 00
-003808ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 # arp,nw_dst=192.168.128.85
-003020ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003020ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # arp,nw_dst=192.168.128.0/24
 # 35: 55 -> 00
-003220ef 0000 000000000000 000000000000 0000 00 00 0806 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0806 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 dnl Ignore nw_src if not IP or ARP:
 # dl_type=0x1234,nw_src=192.168.128.0/24
@@ -861,8 +864,8 @@ dnl Ignore nw_src if not IP or ARP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_src=192.168.128.0/24
 & ofp_util|INFO|post: dl_type=0x1234
-003808ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
-c0a88055 00000000 0000 0000
+003808ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
+c0a88055 xxxxxxxx xxxx xxxx
 
 dnl Ignore nw_dst if not IP or ARP:
 # dl_type=0x1234,nw_dst=192.168.128.0/24
@@ -874,32 +877,32 @@ dnl Ignore nw_dst if not IP or ARP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: dl_type=0x1234,nw_dst=192.168.128.0/24
 & ofp_util|INFO|post: dl_type=0x1234
-003220ef 0000 000000000000 000000000000 0000 00 00 1234 00 00 0000 dnl
-00000000 c0a88055 0000 0000
+003220ef xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 1234 xx xx xxxx dnl
+xxxxxxxx c0a88055 xxxx xxxx
 
 # tcp,tp_src=443
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 06 0000 dnl
-00000000 00000000 01bb 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
+xxxxxxxx xxxxxxxx 01bb xxxx
 
 # tcp,tp_dst=443
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 06 0000 dnl
-00000000 00000000 0000 01bb
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 06 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 01bb
 
 # udp,tp_src=443
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 11 0000 dnl
-00000000 00000000 01bb 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
+xxxxxxxx xxxxxxxx 01bb xxxx
 
 # udp,tp_dst=443
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 11 0000 dnl
-00000000 00000000 0000 01bb
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 11 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 01bb
 
 # icmp,icmp_type=5
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 01 0000 dnl
-00000000 00000000 0005 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
+xxxxxxxx xxxxxxxx 0005 xxxx
 
 # icmp,icmp_code=8
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 01 0000 dnl
-00000000 00000000 0000 0008
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 01 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 0008
 
 dnl Ignore tp_src if not TCP or UDP:
 # ip,nw_proto=21,tp_src=443
@@ -909,8 +912,8 @@ dnl Ignore tp_src if not TCP or UDP:
 & ofp_util|INFO|normalization changed ofp_match, details:
 & ofp_util|INFO| pre: ip,nw_proto=21,tp_src=443
 & ofp_util|INFO|post: ip,nw_proto=21
-0038208f 0000 000000000000 000000000000 0000 00 00 0800 00 15 0000 dnl
-00000000 00000000 01bb 0000
+0038208f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
+xxxxxxxx xxxxxxxx 01bb xxxx
 
 dnl Ignore tp_dst if not TCP or UDP:
 # ip,nw_proto=21,tp_dst=443
@@ -918,8 +921,8 @@ dnl Ignore tp_dst if not TCP or UDP:
 # normal: 38: 01 -> 00
 # normal: 39: bb -> 00
 dnl The normalization details are suppressed here due to rate-limiting.
-0038204f 0000 000000000000 000000000000 0000 00 00 0800 00 15 0000 dnl
-00000000 00000000 0000 01bb
+0038204f xxxx xxxxxxxxxxxx xxxxxxxxxxxx xxxx xx xx 0800 xx 15 xxxx dnl
+xxxxxxxx xxxxxxxx xxxx 01bb
 
 ])
 sed '/^[[#&]]/d' < test-data > input.txt
@@ -1934,14 +1937,6 @@ AT_CLEANUP
 AT_SETUP([ovs-ofctl diff-flows])
 OVS_VSWITCHD_START
 
-# Prints the integers from $1 to $2, increasing by $3 (default 1) on stdout.
-seq () {
-    while test $1 -le $2; do
-        echo $1
-        set `expr $1 + ${3-1}` $2 $3
-    done
-}
-
 # Add tons of flows to br0.
 for i in `seq 0 1023`; do echo "dl_vlan=$i,actions=drop"; done > add-flows.txt
 AT_CHECK([ovs-ofctl add-flows br0 add-flows.txt])
@@ -1962,3 +1957,28 @@ AT_CHECK([ovs-ofctl diff-flows add-flows.txt br0 | sort], [0], [expout])
 
 OVS_VSWITCHD_STOP
 AT_CLEANUP
+
+dnl ofpacts that differ bytewise don't necessarily differ when
+dnl converted to another representation, such as OpenFlow 1.0
+dnl or to a string.  "resubmit(,1)" is an example of an action
+dnl of this type: "ofpact_resubmit"s can differ in their "compat"
+dnl values even though this doesn't affect the string format.
+dnl
+dnl This test checks that "ovs-ofctl diff-flows" doesn't report
+dnl false ofpacts differences.
+AT_SETUP([ovs-ofctl diff-flows - suppress false differences])
+OVS_VSWITCHD_START
+AT_DATA([flows.txt], [actions=resubmit(,1)
+])
+AT_CHECK([ovs-ofctl add-flows br0 flows.txt])
+AT_CHECK([ovs-ofctl diff-flows br0 flows.txt])
+AT_CHECK([ovs-ofctl add-flow br0 idle_timeout=60,dl_vlan=9,actions=output:1])
+AT_CHECK([ovs-ofctl diff-flows br0 flows.txt], [2], [dnl
+-dl_vlan=9 idle_timeout=60 actions=output:1
+])
+AT_CHECK([ovs-ofctl add-flow br0 hard_timeout=120,cookie=1234,dl_vlan=9,actions=output:1])
+AT_CHECK([ovs-ofctl diff-flows flows.txt br0], [2], [dnl
++dl_vlan=9 cookie=0x4d2 hard_timeout=120 actions=output:1
+])
+OVS_VSWITCHD_STOP
+AT_CLEANUP