add mpls forwarding group
diff --git a/accton/group_test.py b/accton/group_test.py
index cb25ba3..255027b 100755
--- a/accton/group_test.py
+++ b/accton/group_test.py
@@ -648,7 +648,6 @@
     """

 	create mpls intf group 

 	1. ref l2_intf_group

-	

 	"""

     def runTest(self):

         delete_all_flows(self.controller)    

@@ -699,4 +698,170 @@
         verify_group_stats=sorted(verify_group_stats, key=getkey("group_id")) 

         stats=sorted(stats, key=getkey("group_id"))  

         self.assertEquals(stats, verify_group_stats)       

-		

+

+

+class mpls_forwarding_group_fastfailover(base_tests.SimpleDataPlane):

+    def runTest(self):

+        delete_all_flows(self.controller)    

+        delete_all_groups(self.controller) 

+

+        test_vid=1

+        test_port=config["port_map"].keys()[0]

+        #ref l2_intf_group

+        l2_intf_gid, l2_intf_msg = add_one_l2_interface_grouop(self.controller, test_port, test_vid,  False, False)

+        mpls_intf_gid, mpls_intf_msg=add_mpls_intf_group(self.controller, l2_intf_gid, [0x00,0x11,0x11,0x11,0x11,0x11], [0x00,0x22,0x22,0x22,0x22,0x22], vid=test_vid, index=1)                                

+        mpls_label_gid, mpls_label_msg=add_mpls_label_group(self.controller, subtype=OFDPA_MPLS_GROUP_SUBTYPE_SWAP_LABEL, 

+		                                                  index=1, 

+														  ref_gid=mpls_intf_gid, 

+                                                          push_l2_header=True,

+                                                          push_vlan=True,

+                                                          push_mpls_header=True,

+                                                          push_cw=True,

+                                                          set_mpls_label=10,

+                                                          set_bos=0,

+                                                          set_tc=7,

+                                                          set_tc_from_table=False,

+														  cpy_tc_outward=False,														  

+                                                          set_ttl=250,

+                                                          cpy_ttl_outward=False,

+                                                          oam_lm_tx_count=False,

+                                                          set_pri_from_table=False

+                                                          )        

+        mpls_fwd_gid, mpls_fwd_msg=add_mpls_forwarding_group(self.controller, 

+                                                             subtype=OFDPA_MPLS_GROUP_SUBTYPE_FAST_FAILOVER_GROUP, 

+                                                             index=1, 

+                                                             ref_gids=[mpls_label_gid], 

+                                                             watch_port=test_port, 

+                                                             watch_group=ofp.OFPP_ANY, 

+                                                             push_vlan=None,

+                                                             pop_van=None,

+                                                             set_vid=None)

+            

+        stats = get_stats(self, ofp.message.group_desc_stats_request())

+        

+        verify_group_stats=[]

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=l2_intf_msg.group_type,

+                                  group_id=l2_intf_msg.group_id,

+                                  buckets=l2_intf_msg.buckets)

+                                  )

+        

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=mpls_intf_msg.group_type,

+                                  group_id=mpls_intf_msg.group_id,

+                                  buckets=mpls_intf_msg.buckets)

+                                  )

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=mpls_label_msg.group_type,

+                                  group_id=mpls_label_msg.group_id,

+                                  buckets=mpls_label_msg.buckets)

+                                  )

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=mpls_fwd_msg.group_type,

+                                  group_id=mpls_fwd_msg.group_id,

+                                  buckets=mpls_fwd_msg.buckets)

+                                  )                                    

+        verify_group_stats=sorted(verify_group_stats, key=getkey("group_id")) 

+        stats=sorted(stats, key=getkey("group_id"))  

+        self.assertEquals(stats, verify_group_stats)       

+

+

+class mpls_forwarding_group_ecmp(base_tests.SimpleDataPlane):

+    """chip not support to bind flow on trident2 

+    """

+    def runTest(self):

+        delete_all_flows(self.controller)    

+        delete_all_groups(self.controller) 

+

+        test_vid=1

+        mpls_intf_msgs=[]

+        mpls_intf_gids=[]

+        l2_intf_msgs=[]

+        index=1

+        #ref l2_intf_group

+        for port in config["port_map"].keys():

+            l2_intf_gid, l2_intf_msg = add_one_l2_interface_grouop(self.controller, port, test_vid,  False, False)

+            l2_intf_msgs.append(l2_intf_msg)            

+            mpls_intf_gid, mpls_intf_msg=add_mpls_intf_group(self.controller, l2_intf_gid, [0x00,0x11,0x11,0x11,0x11,0x11], [0x00,0x22,0x22,0x22,0x22,0x22], vid=test_vid, index=index)

+            index=index+1

+            mpls_intf_msgs.append(mpls_intf_msg)

+            mpls_intf_gids.append(mpls_intf_gid)

+            

+        mpls_fwd_gid, mpls_fwd_msg=add_mpls_forwarding_group(self.controller, 

+                                                             subtype=OFDPA_MPLS_GROUP_SUBTYPE_ECMP, 

+                                                             index=1, 

+                                                             ref_gids=mpls_intf_gids, 

+                                                             watch_port=None, 

+                                                             watch_group=None,

+                                                             push_vlan=None,

+                                                             pop_van=None,

+                                                             set_vid=None)

+            

+        stats = get_stats(self, ofp.message.group_desc_stats_request())

+        

+        verify_group_stats=[]

+        for msg in l2_intf_msgs:

+            verify_group_stats.append(ofp.group_desc_stats_entry(

+                                      group_type=msg.group_type,

+                                      group_id=msg.group_id,

+                                      buckets=msg.buckets)

+                                      )

+        

+        for msg in mpls_intf_msgs:

+            verify_group_stats.append(ofp.group_desc_stats_entry(

+                                      group_type=msg.group_type,

+                                      group_id=msg.group_id,

+                                      buckets=msg.buckets)

+                                      )

+

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=mpls_fwd_msg.group_type,

+                                  group_id=mpls_fwd_msg.group_id,

+                                  buckets=mpls_fwd_msg.buckets)

+                                  )                                    

+        verify_group_stats=sorted(verify_group_stats, key=getkey("group_id")) 

+        stats=sorted(stats, key=getkey("group_id"))  

+        self.assertEquals(stats, verify_group_stats)       

+

+

+class mpls_forwarding_group_l2tag(base_tests.SimpleDataPlane):

+    """chip not support

+    """

+    def runTest(self):

+        delete_all_flows(self.controller)    

+        delete_all_groups(self.controller) 

+

+        test_vid=1

+        test_port=config["port_map"].keys()[0]

+        index=1

+        #ref l2_intf_group        

+        l2_intf_gid, l2_intf_msg = add_one_l2_interface_grouop(self.controller, test_port, test_vid,  False, False)

+

+        mpls_fwd_gid, mpls_fwd_msg=add_mpls_forwarding_group(self.controller, 

+                                                             subtype=OFDPA_MPLS_GROUP_SUBTYPE_L2_TAG, 

+                                                             index=1, 

+                                                             ref_gids=l2_intf_gid, 

+                                                             watch_port=None, 

+                                                             watch_group=None,

+                                                             push_vlan=None,

+                                                             pop_vlan=None,

+                                                             set_vid=1)

+            

+        stats = get_stats(self, ofp.message.group_desc_stats_request())

+        

+        verify_group_stats=[]

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=l2_intf_msg.group_type,

+                                  group_id=l2_intf_msg.group_id,

+                                  buckets=l2_intf_msg.buckets)

+                                  )

+        

+        verify_group_stats.append(ofp.group_desc_stats_entry(

+                                  group_type=mpls_fwd_msg.group_type,

+                                  group_id=mpls_fwd_msg.group_id,

+                                  buckets=mpls_fwd_msg.buckets)

+                                  )                                    

+        verify_group_stats=sorted(verify_group_stats, key=getkey("group_id")) 

+        stats=sorted(stats, key=getkey("group_id"))  

+

+        self.assertEquals(stats, verify_group_stats)  
\ No newline at end of file