Permalink: 2013-11-27 00:03:00+09:00 by ruy@ainoniwa.net in technical tags: oftest openvswitch social:

さまり

OpenFlow界隈では有名なfloodlightさんの作ったOpenflowスイッチのテストフレームワークです。

OpenFlow Switch Test Framework: https://github.com/floodlight/oftest

何かってーと、dissectorを書いてる最中に答え合わせとかしたくなるからpcap欲しいんですけど、ってなった時に丁度いいものが見つからなかったんですよね。

で、テスト実行してるところをキャプチャしようと思って使って見ることにしました。

それにしてもopenvswitch-2.0.0になっても対応してない機能結構あるんですねぇ...

Requirement

python製でscapy依存なので、これは最初に入れておきます。

# apt-get install scapy

それにしても、scapyは環境依存強くて好きになれないですねぇ。

Install

とくにすることはありません。gitから拾うだけです。

# git clone https://github.com/floodlight/oftest
# cd oftest
# ./oft --list

なんか色々一覧が出てきたら、とりあえず動きそうです。

動くかもしれない

特定のポートをopenflow switchに差し込んで、oftestはその逆側に挿さるイメージです。

が、面倒なのでそこは本家の図を見ましょう。

これね。

で、まぁなんかデフォルトで使うポートが決まってるとからしいので(適当)、まずOVSと一緒にそれを作ります。

oftest側はveth1,3,5,7を使うらしいので(適当)、逆側(veth0,2,4,6)をopenvswitchに挿しておきます。

# ip link add veth0 type veth peer name veth1
# ip link add veth2 type veth peer name veth3
# ip link add veth4 type veth peer name veth5
# ip link add veth6 type veth peer name veth7
# for i in `seq 0 7`; do ip link set veth$i up; done
# ovs-vsctl add-br br0
# ovs-vsctl add-port br0 veth0
# ovs-vsctl add-port br0 veth2
# ovs-vsctl add-port br0 veth4
# ovs-vsctl add-port br0 veth6
# ovs-vsctl set-controller br0 tcp:127.0.0.1:6653

後は、動かすだけです。OpenFlow 1.3を使うときは、明示的に指定します。allはテスト全部。

あ、あと裏でtcpdumpも動かしておきました。

# tcpdump -n -i lo -s 65535 -w oftest_1.3_all.pcap &
# ovs-vsctl set bridge br0 protocols=OpenFlow13
# ./oft all -V 1.3

無事にそれっぽい出力を得ることが出来ました。

oftest_001.png

(そして自作Dissectorのパースエラーが多発しているので修正を始めるのであった)

結果ログ

凄く長いけどとりあえず貼り付けておくます。FAILUREとか割と出ますねぇ。

# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:4a:0c:27 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:3d:8d:84 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 08:00:27:83:fe:03 brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 08:00:27:36:f4:3e brd ff:ff:ff:ff:ff:ff
6: ovs-system: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
    link/ether 5a:16:1e:0d:a3:a6 brd ff:ff:ff:ff:ff:ff
8: veth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 56:21:ee:2f:af:8f brd ff:ff:ff:ff:ff:ff
9: veth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 32:de:fa:b6:e5:6b brd ff:ff:ff:ff:ff:ff
10: veth3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 02:d1:31:79:2a:f3 brd ff:ff:ff:ff:ff:ff
11: veth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 96:20:2b:ed:be:28 brd ff:ff:ff:ff:ff:ff
12: veth5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 4e:bd:b1:4e:5c:2a brd ff:ff:ff:ff:ff:ff
13: veth4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether a6:8e:d8:ce:b0:c4 brd ff:ff:ff:ff:ff:ff
14: veth7: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 06:bc:aa:dc:89:01 brd ff:ff:ff:ff:ff:ff
15: veth6: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether b6:40:3d:f9:85:26 brd ff:ff:ff:ff:ff:ff
17: br0: <BROADCAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 3a:78:49:43:6e:47 brd ff:ff:ff:ff:ff:ff
# ovs-vsctl show
cf7b4728-6c31-4e90-af6d-6b7ac60b0844
    Bridge "br0"
        Controller "tcp:127.0.0.1:6653"
        Port "veth2"
            Interface "veth2"
        Port "veth4"
            Interface "veth4"
        Port "br0"
            Interface "br0"
                type: internal
        Port "veth6"
            Interface "veth6"
        Port "veth0"
            Interface "veth0"
    ovs_version: "2.0.0"
# ovs-ofctl dump-ports-desc br0 --protocol=OpenFlow13
OFPST_PORT_DESC reply (OF1.3) (xid=0x2):
 1(veth0): addr:32:de:fa:b6:e5:6b
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 2(veth2): addr:96:20:2b:ed:be:28
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 3(veth4): addr:a6:8e:d8:ce:b0:c4
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 4(veth6): addr:b6:40:3d:f9:85:26
     config:     0
     state:      0
     current:    10GB-FD COPPER
     speed: 10000 Mbps now, 0 Mbps max
 LOCAL(br0): addr:3a:78:49:43:6e:47
     config:     0
     state:      0
     speed: 0 Mbps now, 0 Mbps max
# ./oft all -V 1.3
WARNING: No route found for IPv6 destination :: (no default route?)
bsn_in_ports.MatchInPorts128 ... FAIL
actions.SetIpv4TTL ... FAIL
actions.SetVlanPcp ... FAIL
actions.SetEthDst ... ok
actions.SetIPv6Src ... ok
actions.SetUDPDst ... ok
actions.PushVlanPcp ... FAIL
actions.SetIPv4Src ... ok
actions.PushVlanVid ... FAIL
actions.SetEthSrc ... ok
actions.SetIpv4ECN_NonZeroDSCP ... ok
actions.SetIPv6Flabel ... FAIL
actions.SetIpv4ECN ... ok
actions.SetUDPSrc ... ok
actions.SetIpv6DSCP_NonZeroECNandFlabel ... ok
actions.PopVlan ... ok
actions.SetIPv6Dst ... ok
actions.SetTCPDst ... ok
actions.SetIpv4Dscp ... ok
actions.OutputMultiple ... ok
actions.SetIpv6ECN ... ok
actions.SetIPv6Flabel_NonZeroDSCPandECN ... FAIL
actions.DecIpv6HopLimit ... ok
actions.SetIpv6Dscp ... ok
actions.Output ... ok
actions.SetIpv6HopLimit ... FAIL
actions.SetIpv4DSCP_NonZeroECN ... ok
actions.SetTCPSrc ... ok
actions.SetVlanVid ... FAIL
actions.PushVlanVidPcp ... FAIL
actions.SetIpv6ECN_NonZeroDSCPandFlabel ... ok
actions.PushVlan ... FAIL
actions.SetIPv4Dst ... ok
actions.DecIpv4TTL ... ok
flow_stats.AllFlowStats ... FAIL
flow_stats.CookieFlowStats ... ok
pktin_match.VlanAbsent ... FAIL
pktin_match.VlanVid ... FAIL
groups.GroupDescStats ... FAIL
groups.GroupStatsNonexistent ... FAIL
groups.GroupAddIndirectWeight ... FAIL
groups.GroupAddInvalidAction ... FAIL
groups.GroupStatsAll ... FAIL
groups.GroupModifyEmpty ... FAIL
groups.SelectFwdSpread ... FAIL
groups.GroupFlowSelect ... ERROR
groups.GroupStats ... FAIL
groups.SelectFwdSingle ... FAIL
groups.GroupModifyLoop ... FAIL
groups.GroupDeleteAll ... FAIL
groups.GroupAdd ... FAIL
groups.GroupDeleteNonexisting ... FAIL
groups.GroupAddSelectNoWeight ... FAIL
groups.GroupAddMinimumInvalidID ... FAIL
groups.GroupAddInvalidID ... FAIL
groups.GroupDeleteExisting ... FAIL
groups.GroupModify ... FAIL
groups.GroupAddMaxID ... FAIL
groups.GroupAddIndirectBuckets ... FAIL
groups.GroupModifyInvalidID ... FAIL
groups.GroupModifyNonexisting ... FAIL
groups.GroupAddAllWeight ... FAIL
groups.SelectFwdEmpty ... FAIL
groups.GroupAddExisting ... FAIL
basic.GroupDescStats ... FAIL
basic.QueueStats ... ok
basic.PacketInMiss ... FAIL
basic.TableStats ... ok
basic.PortConfigMod ... ok
basic.AsyncConfigGet ... ERROR
basic.GroupStats ... FAIL
basic.PortDescStats ... ok
basic.DescStats ... ok
basic.OutputExact ... ok
basic.AggregateStats ... ok
basic.MeterFeaturesStats ... ok
basic.MeterStats ... ok
basic.EchoWithData ... ok
basic.PortStats ... ok
basic.GroupFeaturesStats ... ERROR
basic.PacketOut ... ok
basic.MeterConfigStats ... ok
basic.PacketInExact ... ok
basic.OutputWildcard ... ok
basic.PacketInWildcard ... ok
basic.DefaultDrop ... FAIL
basic.Echo ... ok
basic.FlowStats ... ok
basic.FeaturesRequest ... ok
basic.FlowRemoveAll ... ok
match.IPv4ICMPCode ... ok
match.VlanPCPAnyVID ... FAIL
match.EthSrcMasked ... ok
match.ArpOp ... ok
match.IPv4DstSubnetMasked ... ok
match.EthSrcMulticast ... ok
match.IPv6DstSubnetMasked ... ok
match.IPv4TCPDst ... ok
match.IPv6UDPDst ... ok
match.IPv6Dscp ... ok
match.IPv6TCPDst ... ok
match.IPv4Ecn ... ok
match.IPv6SrcMasked ... ok
match.IPv6Dst ... ok
match.IPv6ProtoUDP ... ok
match.IPv4ICMPType ... ok
match.IPv4DstMasked ... ok
match.VlanPresent ... FAIL
match.EthDst ... ok
match.VlanPCP ... FAIL
match.ArpTPA ... ok
match.EthTypeARP ... ok
match.IPv6ICMPCode ... ok
match.EthTypeNone ... ok
match.IPv4ProtoTCP ... ok
match.IPv4TCPSrc ... ok
match.EthDstBroadcast ... ok
match.VlanVID ... FAIL
match.IPv6DstMasked ... ok
match.IPv4ProtoICMP ... ok
match.VlanAbsent ... ok
match.EthSrc ... ok
match.IPv6Ecn ... ok
match.IPv4ProtoUDP ... ok
match.IPv4SrcSubnetMasked ... ok
match.IPv4UDPDst ... ok
match.IPv4SrcMasked ... ok
match.IPv6ProtoICMP ... ok
match.IPv6UDPSrc ... ok
match.VlanExact ... FAIL
match.IPv6Src ... ok
match.EthTypeIPv4 ... FAIL
match.IPv4Dst ... ok
match.IPv6ICMPType ... ok
match.IPv6ProtoTCP ... ok
match.EthDstMasked ... ok
match.InPort ... ok
match.ArpSPA ... ok
match.ArpSPAMasked ... ok
match.IPv4Src ... ok
match.ArpTPAMasked ... ok
match.ArpTPASubnetMasked ... ok
match.IPv6SrcSubnetMasked ... ok
match.EthTypeIPv6 ... FAIL
match.VlanVIDMasked ... FAIL
match.IPv4Dscp ... ok
match.IPv6TCPSrc ... ok
match.EthSrcBroadcast ... ok
match.IPv4UDPSrc ... ok
match.ArpSPASubnetMasked ... ok

======================================================================
ERROR: groups.GroupFlowSelect
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 733, in runTest
    self.assertEqual(response.flow_count, 2,
AttributeError: 'flow_mod_failed_error_msg' object has no attribute 'flow_count'

======================================================================
ERROR: basic.AsyncConfigGet
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/basic.py", line 563, in runTest
    self.assertEquals(response.packet_in_mask_equal_master & 0x07, 0x07)
AttributeError: 'bad_request_error_msg' object has no attribute 'packet_in_mask_equal_master'

======================================================================
ERROR: basic.GroupFeaturesStats
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/basic.py", line 441, in runTest
    self.assertEquals(response.flags, 0, "Unexpected bit set in group features stats reply flags")
AttributeError: 'bad_request_error_msg' object has no attribute 'flags'

======================================================================
FAIL: bsn_in_ports.MatchInPorts128
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/bsn_in_ports.py", line 69, in runTest
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 3

======================================================================
FAIL: actions.SetIpv4TTL
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 403, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.SetVlanPcp
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 193, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.PushVlanPcp
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 163, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.PushVlanVid
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 140, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.SetIPv6Flabel
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 363, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.SetIPv6Flabel_NonZeroDSCPandECN
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 393, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.SetIpv6HopLimit
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 413, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.SetVlanVid
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 183, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.PushVlanVidPcp
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 152, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: actions.PushVlan
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/actions.py", line 129, in runTest
    self.verify_modify(actions, pkt, exp_pkt)
  File "/root/oftest/tests-1.3/actions.py", line 118, in verify_modify
    verify_packets(self, str(exp_pkt), [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: flow_stats.AllFlowStats
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/flow_stats.py", line 114, in runTest
    self.assertEqual(seen_cookies, set([1,2,3]))
AssertionError: Items in the second set but not the first:
1
2
3

======================================================================
FAIL: pktin_match.VlanAbsent
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/pktin_match.py", line 71, in runTest
    optional=True)
  File "/root/oftest/tests-1.3/pktin_match.py", line 53, in verify_pktin_match
    msg = verify_packet_in(self, pktstr, in_port, ofp.OFPR_NO_MATCH)
  File "/root/oftest/src/python/oftest/testutils.py", line 1582, in verify_packet_in
    test.assertTrue(msg is not None, 'Packet in message not received on port %d' % in_port)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Packet in message not received on port 1

======================================================================
FAIL: pktin_match.VlanVid
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/pktin_match.py", line 81, in runTest
    optional=True)
  File "/root/oftest/tests-1.3/pktin_match.py", line 53, in verify_pktin_match
    msg = verify_packet_in(self, pktstr, in_port, ofp.OFPR_NO_MATCH)
  File "/root/oftest/src/python/oftest/testutils.py", line 1582, in verify_packet_in
    test.assertTrue(msg is not None, 'Packet in message not received on port %d' % in_port)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Packet in message not received on port 1

======================================================================
FAIL: groups.GroupDescStats
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 634, in runTest
    stats = sorted(get_stats(self, request), key=lambda x: x.group_id)
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupStatsNonexistent
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 504, in runTest
    stats = get_stats(self, request)
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupAddIndirectWeight
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 420, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a4c50> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupAddInvalidAction
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 90, in runTest
    self.assertIsInstance(response, ofp.message.bad_action_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a4b50> is not an instance of <class 'loxi.of13.message.bad_action_error_msg'>

======================================================================
FAIL: groups.GroupStatsAll
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 545, in runTest
    stats = sorted(get_stats(self, request), key=lambda x: x.group_id)
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupModifyEmpty
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 303, in runTest
    stats = get_stats(self, ofp.message.group_desc_stats_request())
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.SelectFwdSpread
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 829, in runTest
    verify_no_errors(self.controller)
  File "/root/oftest/src/python/oftest/testutils.py", line 1684, in verify_no_errors
    raise AssertionError("unexpected error type=%d code=%d" % (error.err_type, error.code))
AssertionError: unexpected error type=1 code=1

======================================================================
FAIL: groups.GroupStats
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 487, in runTest
    stats = get_stats(self, request)
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.SelectFwdSingle
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 793, in runTest
    verify_no_errors(self.controller)
  File "/root/oftest/src/python/oftest/testutils.py", line 1684, in verify_no_errors
    raise AssertionError("unexpected error type=%d code=%d" % (error.err_type, error.code))
AssertionError: unexpected error type=1 code=1

======================================================================
FAIL: groups.GroupModifyLoop
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 255, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x30c1ed0> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupDeleteAll
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 381, in runTest
    stats = get_stats(self, ofp.message.group_desc_stats_request())
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupAdd
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 44, in runTest
    stats = get_stats(self, ofp.message.group_desc_stats_request())
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupDeleteNonexisting
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 347, in runTest
    verify_no_errors(self.controller)
  File "/root/oftest/src/python/oftest/testutils.py", line 1684, in verify_no_errors
    raise AssertionError("unexpected error type=%d code=%d" % (error.err_type, error.code))
AssertionError: unexpected error type=1 code=1

======================================================================
FAIL: groups.GroupAddSelectNoWeight
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 460, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a4250> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupAddMinimumInvalidID
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 156, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a4250> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupAddInvalidID
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 137, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a4250> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupDeleteExisting
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 333, in runTest
    stats = get_stats(self, ofp.message.group_desc_stats_request())
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupModify
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 186, in runTest
    stats = get_stats(self, ofp.message.group_desc_stats_request())
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupAddMaxID
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 69, in runTest
    stats = get_stats(self, ofp.message.group_desc_stats_request())
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: groups.GroupAddIndirectBuckets
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 440, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a44d0> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupModifyInvalidID
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 274, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a44d0> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupModifyNonexisting
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 209, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a44d0> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.GroupAddAllWeight
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 401, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x31a4250> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: groups.SelectFwdEmpty
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 762, in runTest
    verify_no_errors(self.controller)
  File "/root/oftest/src/python/oftest/testutils.py", line 1684, in verify_no_errors
    raise AssertionError("unexpected error type=%d code=%d" % (error.err_type, error.code))
AssertionError: unexpected error type=1 code=1

======================================================================
FAIL: groups.GroupAddExisting
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/groups.py", line 118, in runTest
    self.assertIsInstance(response, ofp.message.group_mod_failed_error_msg)
AssertionError: <loxi.of13.message.bad_request_error_msg object at 0x30c1d10> is not an instance of <class 'loxi.of13.message.group_mod_failed_error_msg'>

======================================================================
FAIL: basic.GroupDescStats
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/basic.py", line 424, in runTest
    stats = get_stats(self, request)
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: basic.PacketInMiss
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/basic.py", line 262, in runTest
    verify_packet_in(self, pkt, of_port, ofp.OFPR_NO_MATCH)
  File "/root/oftest/src/python/oftest/testutils.py", line 1582, in verify_packet_in
    test.assertTrue(msg is not None, 'Packet in message not received on port %d' % in_port)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Packet in message not received on port 1

======================================================================
FAIL: basic.GroupStats
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/basic.py", line 410, in runTest
    stats = get_stats(self, request)
  File "/root/oftest/src/python/oftest/testutils.py", line 1322, in get_stats
    test.assertEquals(reply.type, msgtype, "Response had unexpected message type")
AssertionError: Response had unexpected message type

======================================================================
FAIL: basic.DefaultDrop
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/basic.py", line 75, in runTest
    verify_no_packet_in(self, pkt, None)
  File "/root/oftest/src/python/oftest/testutils.py", line 1614, in verify_no_packet_in
    test.assertTrue(msg == None, "Did not expect a packet-in message on any port")
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not expect a packet-in message on any port

======================================================================
FAIL: match.VlanPCPAnyVID
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 566, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.VlanPresent
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 587, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.VlanPCP
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 517, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.VlanVID
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 471, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.VlanExact
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 450, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.EthTypeIPv4
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 349, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.EthTypeIPv6
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 372, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

======================================================================
FAIL: match.VlanVIDMasked
----------------------------------------------------------------------
Traceback (most recent call last):
  File "/root/oftest/tests-1.3/match.py", line 496, in runTest
    self.verify_match(match, matching, nonmatching)
  File "/root/oftest/tests-1.3/match.py", line 77, in verify_match
    verify_packets(self, pktstr, [out_port])
  File "/root/oftest/src/python/oftest/testutils.py", line 1676, in verify_packets
    verify_packet(test, pkt, ofport)
  File "/root/oftest/src/python/oftest/testutils.py", line 1637, in verify_packet
    test.assertTrue(rcv_pkt != None, "Did not receive pkt on %r" % ofport)
  File "/root/oftest/src/python/oftest/base_tests.py", line 97, in assertTrue
    unittest.TestCase.assertTrue(self, cond, msg)
AssertionError: Did not receive pkt on 2

----------------------------------------------------------------------
Ran 151 tests in 1249.516s

FAILED (failures=51, errors=3)