def mpls_push_two_tables_tests(parent, match_exp=True): """ @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ wildcards = 0 label = random.randint(16, 1048574) tc = random.randint(0, 6) ttl = 64 # Match condition on TBL0 (match) label_match_tbl0 = label tc_match_tbl0 = tc dl_type_match_tbl0 = ETHERTYPE_MPLS # Match or Unmatch depends on match_exp parameter # Expect same tag exp_label = label exp_tc = tc exp_ttl = ttl # Create action_list for TBL0 action_list_tbl0 = [] act = action.action_push_mpls() act.ethertype = ETHERTYPE_MPLS action_list_tbl0.append(act) if (match_exp): pass else: act = action.action_set_mpls_label() act.mpls_label = label + 1 action_list_tbl0.append(act) # Match condition on TBL1 label_match_tbl1 = exp_label tc_match_tbl1 = exp_tc dl_type_match_tbl1 = ETHERTYPE_MPLS # Output action for table1 will be set in the framework flow_match_test_mpls_two_tables(parent, pa_port_map, wildcards=wildcards, mpls_label=label, mpls_tc=tc, mpls_ttl=ttl, label_match_tbl0=label_match_tbl0, tc_match_tbl0=tc_match_tbl0, dl_type_match_tbl0=dl_type_match_tbl0, action_list_tbl0=action_list_tbl0, match_exp_tbl0=True, label_match_tbl1=label_match_tbl1, tc_match_tbl1=tc_match_tbl1, dl_type_match_tbl1=dl_type_match_tbl1, match_exp_tbl1=match_exp, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, add_tag_exp=True, max_test=1)
def mpls_push_act_tests(parent): """ Test mpls push action for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags >= 0) and (parent.num_tags <= 2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit( parent, "MPLS push action test. PUSH not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 if parent.num_tags == 0: exp_label = 0 exp_tc = 0 exp_ttl = parent.ip_ttl else: exp_label = parent.label exp_tc = parent.tc exp_ttl = parent.ttl match_exp = True add_tag_exp = parent.num_tags > 0 exp_msg = ofp.OFPT_FLOW_REMOVED exp_msg_type = 0 #NOT_EXPECTED exp_msg_code = 0 #NOT_EXPECTED action_list = [act] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, ip_ttl=parent.ip_ttl, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, match_exp=match_exp, add_tag_exp=add_tag_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def mpls_push_two_tables_tests(parent, match_exp = True): """ @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ wildcards = 0 label = random.randint(16, 1048574) tc = random.randint(0, 6) ttl = 64 # Match condition on TBL0 (match) label_match_tbl0 = label tc_match_tbl0 = tc dl_type_match_tbl0 = ETHERTYPE_MPLS # Match or Unmatch depends on match_exp parameter # Expect same tag exp_label = label exp_tc = tc exp_ttl = ttl # Create action_list for TBL0 action_list_tbl0 = [] act = action.action_push_mpls() act.ethertype = ETHERTYPE_MPLS action_list_tbl0.append(act) if (match_exp): pass else: act = action.action_set_mpls_label() act.mpls_label = label + 1 action_list_tbl0.append(act) # Match condition on TBL1 label_match_tbl1 = exp_label tc_match_tbl1 = exp_tc dl_type_match_tbl1 = ETHERTYPE_MPLS # Output action for table1 will be set in the framework flow_match_test_mpls_two_tables(parent, pa_port_map, wildcards=wildcards, mpls_label=label, mpls_tc=tc, mpls_ttl=ttl, label_match_tbl0=label_match_tbl0, tc_match_tbl0=tc_match_tbl0, dl_type_match_tbl0=dl_type_match_tbl0, action_list_tbl0 = action_list_tbl0, match_exp_tbl0 = True, label_match_tbl1=label_match_tbl1, tc_match_tbl1=tc_match_tbl1, dl_type_match_tbl1=dl_type_match_tbl1, match_exp_tbl1 = match_exp, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, add_tag_exp=True, max_test=1)
def runTest(self): of_ports = pa_port_map.keys() of_ports.sort() self.assertTrue(len(of_ports) > 2, "Not enough ports for test") # For making the test simpler... ing_port = of_ports[0] egr_port = of_ports[1] mpls_label = 0xa5f05 # no specific meaning mpls_tc = 5 mpls_ttl = 129 pkt = testutils.simple_tcp_packet_w_mpls(mpls_label=mpls_label, mpls_tc=mpls_tc, mpls_ttl=mpls_ttl) match = parse.packet_to_flow_match(pkt) wildcards = 0 exp_pkt = testutils.simple_tcp_packet_w_mpls( mpls_label_ext=mpls_label, mpls_tc_ext=mpls_tc, mpls_ttl_ext=mpls_ttl, mpls_label=mpls_label, mpls_tc=mpls_tc, mpls_ttl=mpls_ttl) # Create parameters for each table act_list = [] next_avail = [] chk_expire = [] #Table 0 act = action.action_output() act.port = egr_port act_list.append([act]) next_avail.append(True) chk_expire.append(False) #Table 1 act = action.action_copy_ttl_out() act_list.append([act]) next_avail.append(True) chk_expire.append(False) #Table 2 act = action.action_push_mpls() act.ethertype = ETHERTYPE_MPLS act_list.append([act]) next_avail.append(False) chk_expire.append(False) write_action_test_multi_tables(self, ing_port, egr_port, match = match, wildcards = wildcards, act_list = act_list, next_avail = next_avail, chk_expire = chk_expire, pkt = pkt, exp_pkt = exp_pkt)
def mpls_push_act_tests(parent): """ Test mpls push action for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags>=0) and (parent.num_tags<=2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit(parent, "MPLS push action test. PUSH not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 if parent.num_tags == 0: exp_label = 0 exp_tc = 0 exp_ttl = parent.ip_ttl else: exp_label = parent.label exp_tc = parent.tc exp_ttl = parent.ttl match_exp = True add_tag_exp = parent.num_tags > 0 exp_msg = ofp.OFPT_FLOW_REMOVED exp_msg_type = 0 #NOT_EXPECTED exp_msg_code = 0 #NOT_EXPECTED action_list=[act] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, ip_ttl=parent.ip_ttl, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, match_exp=match_exp, add_tag_exp=add_tag_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def runTest(self): of_ports = pa_port_map.keys() of_ports.sort() self.assertTrue(len(of_ports) > 2, "Not enough ports for test") # For making the test simpler... ing_port = of_ports[0] egr_port = of_ports[1] pktlen = 104 mpls_label = 0xa5f05 # no specific meaning mpls_tc = 5 mpls_ttl = 129 pkt = testutils.simple_tcp_packet_w_mpls(pktlen=pktlen, mpls_label=mpls_label, mpls_tc=mpls_tc, mpls_ttl=mpls_ttl) match = parse.packet_to_flow_match(pkt) wildcards = 0 exp_pkt = testutils.simple_tcp_packet_w_mpls(pktlen=pktlen+4, mpls_label_ext=mpls_label, mpls_tc_ext=mpls_tc, mpls_ttl_ext=mpls_ttl, mpls_label=mpls_label, mpls_tc=mpls_tc, mpls_ttl=mpls_ttl) # Create parameters for each table act_list = [] next_avail = [] chk_expire = [] #Table 0 act = action.action_output() act.port = egr_port act_list.append([act]) next_avail.append(True) chk_expire.append(False) #Table 1 act = action.action_copy_ttl_out() act_list.append([act]) next_avail.append(True) chk_expire.append(False) #Table 2 act = action.action_push_mpls() act.ethertype = ETHERTYPE_MPLS act_list.append([act]) next_avail.append(False) chk_expire.append(False) write_action_test_multi_tables(self, ing_port, egr_port, match = match, wildcards = wildcards, act_list = act_list, next_avail = next_avail, chk_expire = chk_expire, pkt = pkt, exp_pkt = exp_pkt)
def mpls_multipush3_act_tests(parent, test_condition=0): """ Test mpls push and set with out-of-range value actions for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags >= 0) and (parent.num_tags <= 2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. PUSH not supported") return if sup_mpls_act.has_key('sup_set_mpls_label') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. SET_LABEL not supported") return if sup_mpls_act.has_key('sup_set_mpls_tc') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. SET_TC not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 if test_condition == 0: #act2 = action.action_set_mpls_label() #act2.mpls_label = 1048576 #exp_label = act2.mpls_label act2 = action.action_set_field() act2.field = match.mpls_label(1048576) exp_label = 1048576 exp_tc = 0 exp_ttl = 0 # Not expected elif test_condition == 1: #act2 = action.action_set_mpls_tc() #act2.mpls_tc = 8 #exp_tc = act2.mpls_tc act2 = action.action_set_field() act2.field = match.mpls_tc(8) exp_tc = 8 exp_label = 0 exp_ttl = 0 # Not expected else: return match_exp = False exp_msg = ofp.OFPT_ERROR exp_msg_type = ofp.OFPET_BAD_ACTION exp_msg_code = ofp.OFPBAC_BAD_SET_ARGUMENT action_list = [act, act2] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, match_exp=match_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def mpls_multipush2_act_tests(parent, test_condition=0): """ Test mpls push and set actions for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags >= 0) and (parent.num_tags <= 2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. PUSH not supported") return if sup_mpls_act.has_key('sup_set_mpls_label') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. SET_LABEL not supported") return if sup_mpls_act.has_key('sup_set_mpls_tc') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. SET_TC not supported") return if sup_mpls_act.has_key('sup_set_mpls_ttl') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. SET_TTL not supported") return if sup_mpls_act.has_key('sup_dec_mpls_ttl') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. DEC_TTL not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 if test_condition == 0: #act2 = action.action_set_mpls_label() #act2.mpls_label = parent.label + 2 act2 = action.action_set_field() act2.field = match.mpls_label(parent.label + 2) exp_label = parent.label + 2 if parent.num_tags == 0: exp_tc = 0 exp_ttl = parent.ip_ttl else: exp_tc = parent.tc exp_ttl = parent.ttl elif test_condition == 1: #act2 = action.action_set_mpls_tc() #act2.mpls_tc = parent.tc + 2 #exp_tc = act2.mpls_tc act2 = action.action_set_field() act2.field = match.mpls_tc(parent.tc + 2) exp_tc = parent.tc + 2 if parent.num_tags == 0: exp_label = 0 exp_ttl = parent.ip_ttl else: exp_label = parent.label exp_ttl = parent.ttl elif test_condition == 2: act2 = action.action_set_mpls_ttl() act2.mpls_ttl = parent.ttl + 2 exp_ttl = act2.mpls_ttl if parent.num_tags == 0: exp_label = 0 exp_tc = 0 else: exp_label = parent.label exp_tc = parent.tc elif test_condition == 3: act2 = action.action_dec_mpls_ttl() if parent.num_tags == 0: exp_ttl = parent.ip_ttl - 1 exp_label = 0 exp_tc = 0 else: exp_ttl = parent.ttl - 1 exp_label = parent.label exp_tc = parent.tc else: return match_exp = True add_tag_exp = parent.num_tags > 0 exp_msg = ofp.OFPT_FLOW_REMOVED exp_msg_type = 0 #NOT_EXPECTED exp_msg_code = 0 #NOT_EXPECTED action_list = [act, act2] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, match_exp=match_exp, add_tag_exp=add_tag_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def mpls_multipush1_act_tests(parent, test_condition=0): """ Test mpls push and copy actions for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags >= 0) and (parent.num_tags <= 2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. PUSH not supported") return if sup_mpls_act.has_key('sup_copy_ttl_in') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. TTL_IN not supported") return if sup_mpls_act.has_key('sup_copy_ttl_out') == False: testutils.skip_message_emit( parent, "MPLS multipush action test. TTL_OUT not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 exp_mpls_ttl_int = 32 exp_ip_ttl = parent.ip_ttl if test_condition == 0: act2 = action.action_copy_ttl_in() if parent.num_tags == 1: exp_ip_ttl = parent.ttl elif parent.num_tags == 2: exp_mpls_ttl_int = parent.ttl #copy the outmost ttl to the second ttl else: return elif test_condition == 1: act2 = action.action_copy_ttl_out() else: return if parent.num_tags == 0: exp_label = 0 exp_tc = 0 exp_ttl = parent.ip_ttl else: exp_label = parent.label exp_tc = parent.tc exp_ttl = parent.ttl match_exp = True add_tag_exp = parent.num_tags > 0 exp_msg = ofp.OFPT_FLOW_REMOVED exp_msg_type = 0 #NOT_EXPECTED exp_msg_code = 0 #NOT_EXPECTED action_list = [act, act2] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, exp_mpls_ttl_int=exp_mpls_ttl_int, exp_ip_ttl=exp_ip_ttl, match_exp=match_exp, add_tag_exp=add_tag_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def nompls_push_set_two_tables_tests(parent): """ @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ wildcards = 0 label = -1 tc = 0 ttl = 0 ip_ttl = 192 exp_label = random.randint(16, 1048574) exp_tc = random.randint(0, 6) exp_ttl = ip_ttl exp_ip_ttl = ip_ttl # Match condition on TBL0 (match) label_match_tbl0 = 0 tc_match_tbl0 = 0 dl_type_match_tbl0 = ETHERTYPE_IP # Create action_list for TBL0 action_list_tbl0 = [] act = action.action_push_mpls() act.ethertype = ETHERTYPE_MPLS action_list_tbl0.append(act) act = action.action_set_mpls_label() act.mpls_label = exp_label action_list_tbl0.append(act) act = action.action_set_mpls_tc() act.mpls_tc = exp_tc action_list_tbl0.append(act) # Match condition on TBL1 (match) label_match_tbl1 = exp_label tc_match_tbl1 = exp_tc dl_type_match_tbl1 = ETHERTYPE_MPLS # Output action for table1 will be set in the framework flow_match_test_mpls_two_tables(parent, pa_port_map, wildcards=wildcards, mpls_label=label, mpls_tc=tc, mpls_ttl=ttl, ip_ttl=ip_ttl, label_match_tbl0=label_match_tbl0, tc_match_tbl0=tc_match_tbl0, dl_type_match_tbl0=dl_type_match_tbl0, action_list_tbl0=action_list_tbl0, match_exp_tbl0=True, label_match_tbl1=label_match_tbl1, tc_match_tbl1=tc_match_tbl1, dl_type_match_tbl1=dl_type_match_tbl1, match_exp_tbl1=True, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, exp_ip_ttl=exp_ip_ttl, add_tag_exp=False, max_test=1)
def mpls_multipush3_act_tests(parent, test_condition=0): """ Test mpls push and set with out-of-range value actions for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags>=0) and (parent.num_tags<=2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. PUSH not supported") return if sup_mpls_act.has_key('sup_set_mpls_label') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. SET_LABEL not supported") return if sup_mpls_act.has_key('sup_set_mpls_tc') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. SET_TC not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 if test_condition == 0: act2 = action.action_set_mpls_label() act2.mpls_label = 1048576 exp_label = act2.mpls_label exp_tc = 0 exp_ttl = 0 # Not expected elif test_condition == 1: act2 = action.action_set_mpls_tc() act2.mpls_tc = 8 exp_tc = act2.mpls_tc exp_label = 0 exp_ttl = 0 # Not expected else: return match_exp = False exp_msg = ofp.OFPT_ERROR exp_msg_type = ofp.OFPET_BAD_ACTION exp_msg_code = ofp.OFPBAC_BAD_ARGUMENT action_list=[act, act2] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, match_exp=match_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def mpls_multipush2_act_tests(parent, test_condition=0): """ Test mpls push and set actions for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags>=0) and (parent.num_tags<=2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. PUSH not supported") return if sup_mpls_act.has_key('sup_set_mpls_label') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. SET_LABEL not supported") return if sup_mpls_act.has_key('sup_set_mpls_tc') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. SET_TC not supported") return if sup_mpls_act.has_key('sup_set_mpls_ttl') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. SET_TTL not supported") return if sup_mpls_act.has_key('sup_dec_mpls_ttl') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. DEC_TTL not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 if test_condition == 0: act2 = action.action_set_mpls_label() act2.mpls_label = parent.label + 2 exp_label = act2.mpls_label if parent.num_tags == 0: exp_tc = 0 exp_ttl = parent.ip_ttl else: exp_tc = parent.tc exp_ttl = parent.ttl elif test_condition == 1: act2 = action.action_set_mpls_tc() act2.mpls_tc = parent.tc + 2 exp_tc = act2.mpls_tc if parent.num_tags == 0: exp_label = 0 exp_ttl = parent.ip_ttl else: exp_label = parent.label exp_ttl = parent.ttl elif test_condition == 2: act2 = action.action_set_mpls_ttl() act2.mpls_ttl = parent.ttl + 2 exp_ttl = act2.mpls_ttl if parent.num_tags == 0: exp_label = 0 exp_tc = 0 else: exp_label = parent.label exp_tc = parent.tc elif test_condition == 3: act2 = action.action_dec_mpls_ttl() if parent.num_tags == 0: exp_ttl = parent.ip_ttl - 1 exp_label = 0 exp_tc = 0 else: exp_ttl = parent.ttl - 1 exp_label = parent.label exp_tc = parent.tc else: return match_exp = True add_tag_exp = parent.num_tags > 0 exp_msg = ofp.OFPT_FLOW_REMOVED exp_msg_type = 0 #NOT_EXPECTED exp_msg_code = 0 #NOT_EXPECTED action_list=[act, act2] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, match_exp=match_exp, add_tag_exp=add_tag_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)
def nompls_push_set_two_tables_tests(parent): """ @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ wildcards = 0 label = -1 tc = 0 ttl = 0 ip_ttl = 192 exp_label = random.randint(16, 1048574) exp_tc = random.randint(0, 6) exp_ttl = ip_ttl exp_ip_ttl = ip_ttl # Match condition on TBL0 (match) label_match_tbl0 = 0 tc_match_tbl0 = 0 dl_type_match_tbl0 = ETHERTYPE_IP # Create action_list for TBL0 action_list_tbl0 = [] act = action.action_push_mpls() act.ethertype = ETHERTYPE_MPLS action_list_tbl0.append(act) act = action.action_set_mpls_label() act.mpls_label = exp_label action_list_tbl0.append(act) act = action.action_set_mpls_tc() act.mpls_tc = exp_tc action_list_tbl0.append(act) # Match condition on TBL1 (match) label_match_tbl1 = exp_label tc_match_tbl1 = exp_tc dl_type_match_tbl1 = ETHERTYPE_MPLS # Output action for table1 will be set in the framework flow_match_test_mpls_two_tables(parent, pa_port_map, wildcards=wildcards, mpls_label=label, mpls_tc=tc, mpls_ttl=ttl, ip_ttl=ip_ttl, label_match_tbl0=label_match_tbl0, tc_match_tbl0=tc_match_tbl0, dl_type_match_tbl0=dl_type_match_tbl0, action_list_tbl0 = action_list_tbl0, match_exp_tbl0 = True, label_match_tbl1=label_match_tbl1, tc_match_tbl1=tc_match_tbl1, dl_type_match_tbl1=dl_type_match_tbl1, match_exp_tbl1 = True, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, exp_ip_ttl=exp_ip_ttl, add_tag_exp=False, max_test=1)
def mpls_multipush1_act_tests(parent, test_condition=0): """ Test mpls push and copy actions for the packets with/without tags @param parent Must implement controller, dataplane, assertTrue, assertEqual and logger """ parent.assertTrue(((parent.num_tags>=0) and (parent.num_tags<=2)), "Parameter num_tags not within an acceptable range") sup_mpls_act = mpls_action_support_check(parent) if sup_mpls_act.has_key('sup_push_mpls') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. PUSH not supported") return if sup_mpls_act.has_key('sup_copy_ttl_in') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. TTL_IN not supported") return if sup_mpls_act.has_key('sup_copy_ttl_out') == False: testutils.skip_message_emit(parent, "MPLS multipush action test. TTL_OUT not supported") return act = action.action_push_mpls() act.ethertype = 0x8847 exp_mpls_ttl_int=32 exp_ip_ttl = parent.ip_ttl if test_condition == 0: act2 = action.action_copy_ttl_in() if parent.num_tags == 1: exp_ip_ttl = parent.ttl elif parent.num_tags == 2: exp_mpls_ttl_int=parent.ttl #copy the outmost ttl to the second ttl else: return elif test_condition == 1: act2 = action.action_copy_ttl_out() else: return if parent.num_tags == 0: exp_label = 0 exp_tc = 0 exp_ttl = parent.ip_ttl else: exp_label = parent.label exp_tc = parent.tc exp_ttl = parent.ttl match_exp = True add_tag_exp = parent.num_tags > 0 exp_msg = ofp.OFPT_FLOW_REMOVED exp_msg_type = 0 #NOT_EXPECTED exp_msg_code = 0 #NOT_EXPECTED action_list=[act, act2] testutils.flow_match_test_mpls(parent, pa_port_map, wildcards=0, mpls_label=parent.label, mpls_tc=parent.tc, mpls_label_int=parent.label_int, mpls_tc_int=parent.tc_int, label_match=parent.label_match, tc_match=parent.tc_match, dl_type_match=parent.dl_type_match, exp_mpls_label=exp_label, exp_mpls_tc=exp_tc, exp_mpls_ttl=exp_ttl, exp_mpls_ttl_int = exp_mpls_ttl_int, exp_ip_ttl = exp_ip_ttl, match_exp=match_exp, add_tag_exp=add_tag_exp, exp_msg=exp_msg, exp_msg_type=exp_msg_type, exp_msg_code=exp_msg_code, action_list=action_list, max_test=1)