Added support for router IP based config in regression, and changed TRex Dan to use it
authorIdo Barnea <[email protected]>
Tue, 25 Oct 2016 17:28:00 +0000 (20:28 +0300)
committerIdo Barnea <[email protected]>
Tue, 25 Oct 2016 17:28:00 +0000 (20:28 +0300)
Signed-off-by: Ido Barnea <[email protected]>
scripts/automation/regression/CPlatform.py
scripts/automation/regression/platform_cmd_link.py
scripts/automation/regression/setups/trex-dan/config.yaml

index dc5418c..bc9d3c4 100755 (executable)
@@ -121,18 +121,21 @@ class CPlatform(object):
                 if mode == 'config':
                     conf_t_command_set.append('set ip next-hop {next_hop}'.format(
                          next_hop = server_net_next_hop) )
+                conf_t_command_set.append('exit')
 
                 # config global arp to interfaces net address and vrf
-                conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str,
-                    dup = dual_if.get_vrf_name(), 
-                    next_hop = server_net_next_hop, 
-                    dest_mac = dual_if.client_if.get_dest_mac()))
-                conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str, 
-                    dup = dual_if.get_vrf_name(), 
-                    next_hop = client_net_next_hop, 
-                    dest_mac = dual_if.server_if.get_dest_mac()))
+                if dual_if.client_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str,
+                        dup = dual_if.get_vrf_name(), 
+                        next_hop = server_net_next_hop, 
+                        dest_mac = dual_if.client_if.get_dest_mac()))
+                if dual_if.server_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str, 
+                        dup = dual_if.get_vrf_name(), 
+                        next_hop = client_net_next_hop, 
+                        dest_mac = dual_if.server_if.get_dest_mac()))
             else:
                 # config interfaces with relevant route-map
                 client_if_command_set.append ('{mode}ip policy route-map {p1}_to_{p2}'.format( 
@@ -155,16 +158,19 @@ class CPlatform(object):
                 if mode == 'config':
                     conf_t_command_set.append('set ip next-hop {next_hop}'.format(
                          next_hop = server_net_next_hop) )
+                conf_t_command_set.append('exit')
 
                 # config global arp to interfaces net address
-                conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str,
-                    next_hop = server_net_next_hop, 
-                    dest_mac = dual_if.client_if.get_dest_mac()))
-                conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str,
-                    next_hop = client_net_next_hop, 
-                    dest_mac = dual_if.server_if.get_dest_mac()))
+                if dual_if.client_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str,
+                        next_hop = server_net_next_hop, 
+                        dest_mac = dual_if.client_if.get_dest_mac()))
+                if dual_if.server_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str,
+                        next_hop = client_net_next_hop, 
+                        dest_mac = dual_if.server_if.get_dest_mac()))
 
             # assign generated config list to cache
             cache.add('IF', server_if_command_set, dual_if.server_if.get_name())
@@ -247,16 +253,18 @@ class CPlatform(object):
                     next_hop = server_net_next_hop))
 
                 # config global arp to interfaces net address and vrf
-                conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str,
-                    dup = dual_if.get_vrf_name(), 
-                    next_hop = server_net_next_hop, 
-                    dest_mac = dual_if.client_if.get_dest_mac()))
-                conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str, 
-                    dup = dual_if.get_vrf_name(), 
-                    next_hop = client_net_next_hop, 
-                    dest_mac = dual_if.server_if.get_dest_mac()))
+                if dual_if.client_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str,
+                        dup = dual_if.get_vrf_name(), 
+                        next_hop = server_net_next_hop, 
+                        dest_mac = dual_if.client_if.get_dest_mac()))
+                if dual_if.server_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp vrf {dup} {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str, 
+                        dup = dual_if.get_vrf_name(), 
+                        next_hop = client_net_next_hop, 
+                        dest_mac = dual_if.server_if.get_dest_mac()))
 
                 # assign generated interfaces config list to cache
                 cache.add('IF', server_if_command_set, dual_if.server_if.get_name())
@@ -275,14 +283,16 @@ class CPlatform(object):
                     next_hop = client_net_next_hop))
 
                 # config global arp to interfaces net address
-                conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str,
-                    next_hop = server_net_next_hop, 
-                    dest_mac = dual_if.client_if.get_dest_mac()))
-                conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
-                    mode = unconfig_str,
-                    next_hop = client_net_next_hop, 
-                    dest_mac = dual_if.server_if.get_dest_mac()))
+                if dual_if.client_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str,
+                        next_hop = server_net_next_hop, 
+                        dest_mac = dual_if.client_if.get_dest_mac()))
+                if dual_if.server_if.get_dest_mac():
+                    conf_t_command_set.append('{mode}arp {next_hop} {dest_mac} arpa'.format(
+                        mode = unconfig_str,
+                        next_hop = client_net_next_hop, 
+                        dest_mac = dual_if.server_if.get_dest_mac()))
 
             # bump up to the next client network address
             client_net = misc_methods.get_single_net_client_addr(client_net, stat_route_obj.net_increment)
@@ -510,12 +520,14 @@ class CPlatform(object):
                 p1 = 'p'+str(idx), p2 = 'p'+str(idx+1) ) )
 
             # config global arp to interfaces net address and vrf
-            conf_t_command_set.append('{mode}ipv6 neighbor {next_hop} {intf} {dest_mac}'.format(
+            if dual_if.client_if.get_dest_mac():
+                conf_t_command_set.append('{mode}ipv6 neighbor {next_hop} {intf} {dest_mac}'.format(
                     mode = unconfig_str,
                     next_hop = server_net_next_hop, 
                     intf = dual_if.client_if.get_name(),
                     dest_mac = dual_if.client_if.get_dest_mac()))
-            conf_t_command_set.append('{mode}ipv6 neighbor {next_hop} {intf} {dest_mac}'.format(
+            if dual_if.server_if.get_dest_mac():
+                conf_t_command_set.append('{mode}ipv6 neighbor {next_hop} {intf} {dest_mac}'.format(
                     mode = unconfig_str,
                     next_hop = client_net_next_hop, 
                     intf = dual_if.server_if.get_name(),
index 72295c7..8162e29 100755 (executable)
@@ -308,22 +308,30 @@ class CIfManager(object):
             tmp_ipv4_addr = self.__get_ipv4_net_client_addr (next(CIfManager._ipv4_gen)[0])
             tmp_ipv6_addr = self.__get_ipv6_net_client_addr (next(CIfManager._ipv6_gen))
 
+            if 'dest_mac_addr' in intf_pair['client']:
+                client_dest_mac = intf_pair['client']['dest_mac_addr']
+            else:
+                client_dest_mac = 0
             client_obj = CIfObj(if_name = intf_pair['client']['name'],
                 ipv4_addr = tmp_ipv4_addr,
                 ipv6_addr = tmp_ipv6_addr,
                 src_mac_addr  = intf_pair['client']['src_mac_addr'],
-                dest_mac_addr = intf_pair['client']['dest_mac_addr'],
+                dest_mac_addr = client_dest_mac,
                 if_type   = IFType.Client)
 
             # generate network addresses for server side, and initialize server if object
             tmp_ipv4_addr = self.__get_ipv4_net_client_addr (next(CIfManager._ipv4_gen)[0])
             tmp_ipv6_addr = self.__get_ipv6_net_client_addr (next(CIfManager._ipv6_gen))
-            
+
+            if 'dest_mac_addr' in intf_pair['server']:
+                server_dest_mac = intf_pair['server']['dest_mac_addr']
+            else:
+                server_dest_mac = 0
             server_obj = CIfObj(if_name = intf_pair['server']['name'],
                 ipv4_addr = tmp_ipv4_addr,
                 ipv6_addr = tmp_ipv6_addr,
                 src_mac_addr  = intf_pair['server']['src_mac_addr'],
-                dest_mac_addr = intf_pair['server']['dest_mac_addr'],
+                dest_mac_addr = server_dest_mac,
                 if_type   = IFType.Server)
 
             dual_intf_obj = CDualIfObj(vrf_name = intf_pair['vrf_name'],
index c95dfa3..be97200 100644 (file)
@@ -54,11 +54,11 @@ router:
     - client : 
         name          : GigabitEthernet0/0/1
         src_mac_addr  : 0000.0001.0000
-        dest_mac_addr : 0000.0001.0000
+#        dest_mac_addr : 0000.0001.0000
       server : 
         name          : GigabitEthernet0/0/2
         src_mac_addr  : 0000.0001.0000
-        dest_mac_addr : 0000.0001.0000
+#        dest_mac_addr : 0000.0001.0000
       vrf_name      : null    
 
 tftp: