This added test should fail. Next patch fixes OVS to pass this test. Signed-off-by: Jarno Rajahalme <jrajaha...@nicira.com> --- lib/nx-match.c | 2 +- tests/ofproto-dpif.at | 52 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-)
diff --git a/lib/nx-match.c b/lib/nx-match.c index fd0e0c8..721fce5 100644 --- a/lib/nx-match.c +++ b/lib/nx-match.c @@ -1518,7 +1518,7 @@ nxm_execute_stack_pop(const struct ofpact_stack *pop, } else { if (!VLOG_DROP_WARN(&rl)) { char *flow_str = flow_to_string(flow); - VLOG_WARN_RL(&rl, "Failed to pop from an empty stack. On flow \n" + VLOG_WARN_RL(&rl, "Failed to pop from an empty stack. On flow\n" " %s", flow_str); free(flow_str); } diff --git a/tests/ofproto-dpif.at b/tests/ofproto-dpif.at index 6c396ea..725cfb6 100644 --- a/tests/ofproto-dpif.at +++ b/tests/ofproto-dpif.at @@ -5519,6 +5519,58 @@ OFPST_PORT reply (xid=0x4): 1 ports OVS_VSWITCHD_STOP AT_CLEANUP +AT_SETUP([ofproto-dpif - patch ports - stack]) +OVS_VSWITCHD_START([add-br br1 \ +-- set bridge br1 datapath-type=dummy fail-mode=secure \ +-- add-port br1 pbr1 -- set int pbr1 type=patch options:peer=pbr0 \ +-- add-port br0 pbr0 -- set int pbr0 type=patch options:peer=pbr1]) + +ADD_OF_PORTS([br0], [2]) +ADD_OF_PORTS([br1], [3]) + +AT_CHECK([ovs-appctl upcall/disable-ufid], [0], [Datapath dumping tersely using UFID disabled +], []) +AT_CHECK([ovs-appctl time/stop]) +AT_CHECK([ovs-appctl vlog/set dpif:dbg dpif_netdev:dbg]) + +AT_CHECK([ovs-ofctl add-flow br0 "ip actions=push:OXM_OF_IN_PORT[[0..31]],output:1,pop:OXM_OF_IPV4_SRC[[0..31]],output:2"]) +# Try to pop from empty stack, and push and leave data to stack. +AT_CHECK([ovs-ofctl add-flow br1 "ip actions=pop:OXM_OF_IPV4_DST[[0..31]],push:NXM_NX_REG1[[0..31]],LOCAL"]) + +ovs-appctl netdev-dummy/receive br0 'in_port(100),eth(src=50:54:00:00:00:05,dst=50:54:00:00:00:07),eth_type(0x0800),ipv4(src=192.168.0.1,dst=192.168.0.2,proto=1,tos=0,ttl=64,frag=no),icmp(type=8,code=0)' + +AT_CHECK([ovs-appctl time/warp 500], [0], +[warped +]) +sleep 1 # wait for log writer + +AT_CHECK([ovs-appctl dpif/show], [0], [dnl +dummy@ovs-dummy: hit:0 missed:1 + br0: + br0 65534/100: (dummy) + p2 2/2: (dummy) + pbr0 1/none: (patch: peer=pbr1) + br1: + br1 65534/101: (dummy) + p3 3/3: (dummy) + pbr1 1/none: (patch: peer=pbr0) +]) + +AT_CHECK([cat ovs-vswitchd.log | STRIP_UFID | FILTER_FLOW_INSTALL | STRIP_USED], [0], [dnl +recirc_id=0,ip,in_port=100,nw_src=192.168.0.1,nw_frag=no, actions:101,set(ipv4(src=255.255.255.254)),2 +]) + +AT_CHECK([cat ovs-vswitchd.log | grep -e '|nx_match|WARN|' | sed "s/^.*|WARN|//"], [0], [dnl +Failed to pop from an empty stack. On flow +]) + +# The WARN was intended, remove it +rm ovs-vswitchd.log +touch ovs-vswitchd.log + +OVS_VSWITCHD_STOP +AT_CLEANUP + AT_SETUP([ofproto-dpif - port duration]) OVS_VSWITCHD_START([set Bridge br0 protocols=OpenFlow13]) ADD_OF_PORTS([br0], 1, 2) -- 1.7.10.4 _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev