single vlan pair at a time
diff --git a/olt.py b/olt.py
index d2856b5..12232f4 100644
--- a/olt.py
+++ b/olt.py
@@ -918,141 +918,142 @@
 
     def runTest(self):
         logging.info("Running cycling vlan test")
-        delete_all_flows(self.controller)
         self.cookie = 42
 
-        self.vlan_pairs = []
-
         for stag in xrange(2, 4000, 100):
             for ctag in xrange(2, 4000, 100):
+                delete_all_flows(self.controller)
+                time.sleep(5)
                 self.installDoubleTaggingRule(stag, ctag)
-                self.vlan_pairs.append((stag, ctag))
-                time.sleep(1)
+                self.vlan_pairs = (stag, ctag)
+                time.sleep(5)
                 self.testPacketFlow()
 
     def testPacketFlow(self):
-        for (s_vlan_id, c_vlan_id) in self.vlan_pairs:
-            incorrectTagPkt = simple_udp_packet(pktlen=100, dl_vlan_enable=True, vlan_vid=100, vlan_pcp=0)
-            untaggedPkt = simple_udp_packet(pktlen=100, dl_vlan_enable=True, vlan_vid=0, vlan_pcp=0)
+        (s_vlan_id, c_vlan_id) = self.vlan_pairs
+        
+        incorrectTagPkt = simple_udp_packet(pktlen=100, dl_vlan_enable=True, vlan_vid=100, vlan_pcp=0)
+        untaggedPkt = simple_udp_packet(pktlen=100, dl_vlan_enable=True, vlan_vid=0, vlan_pcp=0)
 
-            upstreamDoubleTaggedPkt = double_vlan_udp_packet(pktlen=104, dl_vlan_enable=True,
-                                                             c_vlan_vid=c_vlan_id,
-                                                             s_vlan_vid=s_vlan_id,
-                                                             c_vlan_pcp=0, s_vlan_pcp=0)
+        upstreamDoubleTaggedPkt = double_vlan_udp_packet(pktlen=104, dl_vlan_enable=True,
+                                                         c_vlan_vid=c_vlan_id,
+                                                         s_vlan_vid=s_vlan_id,
+                                                         c_vlan_pcp=0, s_vlan_pcp=0)
 
-            logging.info("Testing s-tag %d, c-tag %d" % (s_vlan_id, c_vlan_id))
+        logging.info("Testing s-tag %d, c-tag %d" % (s_vlan_id, c_vlan_id))
 
-            self.dataplane.send(onu_port, str(untaggedPkt))
-            verify_packet(self, upstreamDoubleTaggedPkt, olt_port)
+        self.dataplane.send(onu_port, str(untaggedPkt))
+        verify_packet(self, upstreamDoubleTaggedPkt, olt_port)
 
-            # test downstream doubletagged packet got untagged at ONU
-            self.dataplane.send(olt_port, str(upstreamDoubleTaggedPkt))
-            verify_packet(self, untaggedPkt, onu_port)
+        # test downstream doubletagged packet got untagged at ONU
+        self.dataplane.send(olt_port, str(upstreamDoubleTaggedPkt))
+        verify_packet(self, untaggedPkt, onu_port)
 
-            # test upstream doubletagged packet got dropped
-            self.dataplane.send(onu_port, str(upstreamDoubleTaggedPkt))
-            verify_no_packet(self, upstreamDoubleTaggedPkt, olt_port)
+        # test upstream doubletagged packet got dropped
+        self.dataplane.send(onu_port, str(upstreamDoubleTaggedPkt))
+        verify_no_packet(self, upstreamDoubleTaggedPkt, olt_port)
 
-            # test downstream untagged packet got dropped at ONU
-            self.dataplane.send(olt_port, str(untaggedPkt))
-            verify_no_packet(self, untaggedPkt, onu_port)
+        # test downstream untagged packet got dropped at ONU
+        self.dataplane.send(olt_port, str(untaggedPkt))
+        verify_no_packet(self, untaggedPkt, onu_port)
 
-            # test upstream icorrectly tagged packet; should get dropped
-            self.dataplane.send(onu_port, str(incorrectTagPkt))
-            verify_no_packet(self, upstreamDoubleTaggedPkt, olt_port)
+        # test upstream icorrectly tagged packet; should get dropped
+        self.dataplane.send(onu_port, str(incorrectTagPkt))
+        verify_no_packet(self, upstreamDoubleTaggedPkt, olt_port)
 
-    def installDoubleTaggingRule(self, s_vlan_id, c_vlan_id):
-        # upstream flow rule
-        match = ofp.match()
-        match.oxm_list.append(ofp.oxm.in_port(onu_port))
-        match.oxm_list.append(ofp.oxm.vlan_vid(value=ofp.OFPVID_PRESENT))
-        match.oxm_list.append(ofp.oxm.vlan_pcp(value=0))
-        self.cookie += 1
 
-        # push inner vlan (c-vlan) for upstream
-        request = ofp.message.flow_add(
-            table_id=test_param_get("table", 0),
-            cookie=self.cookie,
-            match=match,
-            instructions=[
-                ofp.instruction.apply_actions(
-                    actions=[
-                        ofp.action.set_field(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | c_vlan_id))]),
-                ofp.instruction.goto_table(1)],
-            buffer_id=ofp.OFP_NO_BUFFER,
-            priority=1000)
+def installDoubleTaggingRule(self, s_vlan_id, c_vlan_id):
+    # upstream flow rule
+    match = ofp.match()
+    match.oxm_list.append(ofp.oxm.in_port(onu_port))
+    match.oxm_list.append(ofp.oxm.vlan_vid(value=ofp.OFPVID_PRESENT))
+    match.oxm_list.append(ofp.oxm.vlan_pcp(value=0))
+    self.cookie += 1
 
-        self.controller.message_send(request)
-        do_barrier(self.controller)
-        verify_no_errors(self.controller)
+    # push inner vlan (c-vlan) for upstream
+    request = ofp.message.flow_add(
+        table_id=test_param_get("table", 0),
+        cookie=self.cookie,
+        match=match,
+        instructions=[
+            ofp.instruction.apply_actions(
+                actions=[
+                    ofp.action.set_field(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | c_vlan_id))]),
+            ofp.instruction.goto_table(1)],
+        buffer_id=ofp.OFP_NO_BUFFER,
+        priority=1000)
 
-        # push outer vlan (s-vlan) for upstream
-        match = ofp.match()
-        match.oxm_list.append(ofp.oxm.in_port(onu_port))
-        match.oxm_list.append(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | c_vlan_id))
-        match.oxm_list.append(ofp.oxm.vlan_pcp(0))
-        self.cookie += 1
+    self.controller.message_send(request)
+    do_barrier(self.controller)
+    verify_no_errors(self.controller)
 
-        request = ofp.message.flow_add(
-            table_id=test_param_get("table", 1),
-            cookie=self.cookie,
-            match=match,
-            instructions=[
-                ofp.instruction.apply_actions(
-                    actions=[
-                        ofp.action.push_vlan(ethertype=0x8100),
-                        ofp.action.set_field(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | s_vlan_id)),
-                        ofp.action.set_field(ofp.oxm.vlan_pcp(0)),
-                        ofp.action.output(port=olt_port)]),
-            ],
-            buffer_id=ofp.OFP_NO_BUFFER,
-            priority=1000)
+    # push outer vlan (s-vlan) for upstream
+    match = ofp.match()
+    match.oxm_list.append(ofp.oxm.in_port(onu_port))
+    match.oxm_list.append(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | c_vlan_id))
+    match.oxm_list.append(ofp.oxm.vlan_pcp(0))
+    self.cookie += 1
 
-        self.controller.message_send(request)
-        do_barrier(self.controller)
-        verify_no_errors(self.controller)
-        self.cookie += 1
+    request = ofp.message.flow_add(
+        table_id=test_param_get("table", 1),
+        cookie=self.cookie,
+        match=match,
+        instructions=[
+            ofp.instruction.apply_actions(
+                actions=[
+                    ofp.action.push_vlan(ethertype=0x8100),
+                    ofp.action.set_field(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | s_vlan_id)),
+                    ofp.action.set_field(ofp.oxm.vlan_pcp(0)),
+                    ofp.action.output(port=olt_port)]),
+        ],
+        buffer_id=ofp.OFP_NO_BUFFER,
+        priority=1000)
 
-        # strip outer vlan (s-vlan) for downstream
-        match = ofp.match()
-        match.oxm_list.append(ofp.oxm.in_port(olt_port))
-        match.oxm_list.append(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | s_vlan_id))
-        match.oxm_list.append(ofp.oxm.vlan_pcp(0))
-        request = ofp.message.flow_add(
-            table_id=test_param_get("table", 0),
-            cookie=self.cookie,
-            match=match,
-            instructions=[
-                ofp.instruction.apply_actions(
-                    actions=[ofp.action.pop_vlan()]),
-                ofp.instruction.goto_table(1)],
-            buffer_id=ofp.OFP_NO_BUFFER,
-            priority=1000)
+    self.controller.message_send(request)
+    do_barrier(self.controller)
+    verify_no_errors(self.controller)
+    self.cookie += 1
 
-        self.controller.message_send(request)
-        do_barrier(self.controller)
-        verify_no_errors(self.controller)
+    # strip outer vlan (s-vlan) for downstream
+    match = ofp.match()
+    match.oxm_list.append(ofp.oxm.in_port(olt_port))
+    match.oxm_list.append(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | s_vlan_id))
+    match.oxm_list.append(ofp.oxm.vlan_pcp(0))
+    request = ofp.message.flow_add(
+        table_id=test_param_get("table", 0),
+        cookie=self.cookie,
+        match=match,
+        instructions=[
+            ofp.instruction.apply_actions(
+                actions=[ofp.action.pop_vlan()]),
+            ofp.instruction.goto_table(1)],
+        buffer_id=ofp.OFP_NO_BUFFER,
+        priority=1000)
 
-        # rewrite inner vlan (c-vlan) to default (0) for downstream
-        match = ofp.match()
-        match.oxm_list.append(ofp.oxm.in_port(olt_port))
-        match.oxm_list.append(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | c_vlan_id))
-        match.oxm_list.append(ofp.oxm.vlan_pcp(0))
-        self.cookie += 1
+    self.controller.message_send(request)
+    do_barrier(self.controller)
+    verify_no_errors(self.controller)
 
-        request = ofp.message.flow_add(
-            table_id=test_param_get("table", 1),
-            cookie=self.cookie,
-            match=match,
-            instructions=[
-                ofp.instruction.apply_actions(
-                    actions=[
-                        ofp.action.pop_vlan(),
-                        ofp.action.output(port=onu_port)])
-            ],
-            buffer_id=ofp.OFP_NO_BUFFER,
-            priority=1000)
+    # rewrite inner vlan (c-vlan) to default (0) for downstream
+    match = ofp.match()
+    match.oxm_list.append(ofp.oxm.in_port(olt_port))
+    match.oxm_list.append(ofp.oxm.vlan_vid(ofp.OFPVID_PRESENT | c_vlan_id))
+    match.oxm_list.append(ofp.oxm.vlan_pcp(0))
+    self.cookie += 1
 
-        self.controller.message_send(request)
-        do_barrier(self.controller)
-        verify_no_errors(self.controller)
+    request = ofp.message.flow_add(
+        table_id=test_param_get("table", 1),
+        cookie=self.cookie,
+        match=match,
+        instructions=[
+            ofp.instruction.apply_actions(
+                actions=[
+                    ofp.action.pop_vlan(),
+                    ofp.action.output(port=onu_port)])
+        ],
+        buffer_id=ofp.OFP_NO_BUFFER,
+        priority=1000)
+
+    self.controller.message_send(request)
+    do_barrier(self.controller)
+    verify_no_errors(self.controller)