Test Bed Configuration

A Testbed parameter file is a Python script which defines the testbed parameters as variables. Testbed files are available in the ~/testbeds folder.

Full Mesh 4 DUTs Topology

All test scripts except Chaos can be run with full mesh 4 DUTs topology

Use the following sample script and steps to create your own testbed file.

//Sample TestBed file
LEAF01_Ports = {"s2_p1": "Ethernet32", "s2_p1_speed": 100000,
                "s2_p2": "Ethernet36", "s2_p2_speed": 100000,
                "s1_p1": "Ethernet0", "s1_p1_speed": 100000,
                "s1_p2": "Ethernet4", "s1_p2_speed": 100000,
                "l2_p1": "Ethernet16", "l2_p1_speed": 100000,
                "l2_p2": "Ethernet20", "l2_p2_speed": 100000,
                "ixia_p1": "Ethernet60", "ixia_p1_speed": 100000,
                "ixia_p2": "Ethernet48", "ixia_p2_speed": 100000,
                "port_mtu": 9100
                }
LEAF01 = {"IP": "10.4.4.66", 
          "PROTO": "http", "REST_PORT": 6002, "SSH_PORT": 22,
          "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP, "cliWarnings": params.CLI_WARN_REGEXP,
          "ssh_user": "admin",
          "ssh_passwd": "YourPaSsWoRd",
          "Timeout": 30, "ports": LEAF01_Ports, "name": "MLNX-LEAF01",
          "backup_cfg_file": "clean_config.json"
          }
  • Update the above details in the testbed file with your DUTs - DUT connections, Management IP, Login credentials, Link Speed etc.

  • The "name" parameter is very important. Provide a string to identify the respective for this parameter. This name is displayed in logs for easy identification of devices.

  • Refer to the topology diagram to find the link variables and update their values

  • All testbed files can be found in the folder "~/testbeds/"

Testbed file variables

There are two variables to control the cleanup after each test run in the testbed file.

They are CLEANUP_BY_REBOOT and CLEANUP_BY_CFG_RELOAD:

  • CLEANUP_BY_REBOOT = True, The script will restore the switch's configuration from the /etc/sonic/clean_config.json file and then reboot the switch. This process consumes additional execution time, but it ensures that the DUTs (Devices Under Test) are consistently configured in a clean and proper manner for subsequent test scripts.

  • CLEANUP_BY_CFG_RELOAD = True, The script will restore the switch's configuration from the /etc/sonic/clean_config.json file and then issue the sudo config load command to load the clean config file. This method takes less time to have a clean configuration on switches but may not work correctly sometimes.

  • If both CLEANUP_BY_REBOOT and CLEANUP_BY_CFG_RELOAD are set to False, The scripts use the SONiC CLI procedure to un-configure whatever was configured on the switches by the scripts.

  • CFG_RELOAD_BY_REBOOT = False
  • Ideally, the below three parameters should be set to False

    • CLEANUP_BY_REBOOT = False

    • CLEANUP_BY_CFG_RELOAD = False

    • CFG_RELOAD_BY_REBOOT = False

  • CLEANUP_BEFORE_TEST_RUN = False, It can be used to do the forceful clean-up of all the devices before the test run

    • The following configuration will be cleaned up.

    - ACL rules and table
    - IPv4 routes 
    - IPv4 interfaces 
    - VLAN
    - Port-channel
    - All ports will be shut down

Apart from these, the following variables are specified in the testbed file:

  • CFG_RELOAD_BY_REBOOT = True, The scripts initiate device reboots in instances where the config reload command fails on the DUT due to certain reasons. This measure is taken as a workaround for such situations.

  • REBOOT_WAIT_TIME = 0, Maximum wait time for the device to be rebooted

  • NTP_SERVER = <FTAS VM IP>, FTAS VM serves as NTP server.

  • SYSLOG_SRVS = {"Servers": ["<FTAS VM IP>", "10.4.5.6"], "Log_Folder": "/var/log/sonic_logs"}, first list member should be set to the FTAS VM IP

  • MAX_V4_ACL , Maximum IPv4 ACL rules supported on the platform

  • MAX_V6_ACL , Maximum IPv6 ACL rules supported on the platform

  • MAX_SECONDARY_SUBNET, Maximum secondary subnets supported for SVI interface

  • MAX_IPV4_HOST_ROUTES, Maximum IPv4 host routes supported on the platform

  • MAX_IPV6_HOST_ROUTES, Maximum IPv6 host routes supported on the platform

  • MAX_IPV4_PREFIX_ROUTES, Maximum IPv4 prefix routes supported on the platform

  • MAX_IPV6_PREFIX_ROUTES, Maximum IPv6 prefix routes supported on the platform

  • TECHSUPPORT = True, Takes techsupport dump (If True) for the DUTs in case of failures

  • TECHSUPPORT_SINCE = "hour ago", Specifies the argument to the show techsupport command, in case TECHSUPPORT = True

  • TECHSUPPORT_TIMEOUT = 300, specifies the worst case timeout value for techsupport dump generation, in case TECHSUPPORT = True

Variable with Default valuesDescription

INTF_UP_WAIT_TIME = 30

Timeout for the interface to be 'Operationally UP'

CLI_TIMEOUT = 0

Assign an integer value to this variable if the command execution on the device experiences slowness or takes longer than 30 seconds to respond. If the value is not explicitly set, the default will be 0, implying a 30-second wait time for the command execution output.

MAX_V4_ACL = 64

The maximum number of supported IPV4 ACL rules. The variable used in the testcase test_v4_acl_scale_max_supported in test script scalability/taas_qual_scale.py

MAX_V6_ACL = 64

The maximum number of supported IPV6 ACL rules. The variable used in the testcase test_qual_v6_acl_scale_max_supported in test script scalability/taas_qual_scale.py

MAX_SECONDARY_SUBNET = 25

The maximum number of supported secondary subnets under a vlan. The variable used in the testcase test_max_secondary_subnet_under_vlan in test script scalability/taas_qual_scale.py

MAX_IPV4_HOST_ROUTES = 1000

The maximum number of IPv4 host routes supported. The variable used in the testcase test_v4_host_routes_scale_max_supported in test script scalability/taas_qual_scale.py

MAX_IPV6_HOST_ROUTES = 1000

The maximum number of IPV6 host routes supported. The variable used in the testcase test_v6_host_routes_scale_max_supported in test script scalability/taas_qual_scale.py

MAX_IPV4_PREFIX_ROUTES = 1000

The maximum number of IPV4 prefix routes supported. The variable used in the testcase test_v4_prefix_routes_scale_max_supported in test script scalability/taas_qual_scale.py

MAX_IPV4_NEXTHOPS = 256

The maximum number of IPV4 next-hop supported. The variable used in the testcase test_v4_nexthops_scale_max_supported in test script scalability/taas_qual_scale.py

Configuring Ixia Variables

For UHD Chassis:

IXIA_Ports = {"s1_p1": "<port_no>", "s1_p2": "<port_no>", "s1_p3": "<port_no>", 
              "media": "fiber", "speed": "100G",
              "port_configs": {
              "<localuhd>/<8>": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
  • Specify the port connected to the DUT like this: "s1_p1": "8" , where the port number 8 is connected to Spine01_Port01 for Ixia traffic.

  • For example, Ixia port 8 can be configured like this: "localuhd/8", where localuhd refers to the Ixia chassis and 8 is the UHD port number.

For Novus Chassis:

IXIA_Ports = {"s1_p1": "<card_no>;<Port_no>", "s1_p2": "<card_no>;<Port_no>", "s1_p3": "<card_no>;<Port_no>", 
              "media": "fiber", "speed": "100G",
              "port_configs": {
              "<chassis_ip>;<card_no>;<Port_no>": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
  • Specify the port connected to the DUT like this: "s1_p1": "1;8" , where the port number 8 on Ixia card 1 is connected to Spine01_Port01 for Ixia traffic.

  • For example, Ixia port 1;8 can be configured like this: "<chassis_ip>;<card_no>;<Port_no>", where <chassis_ip> refers to the Ixia chassis IP and 1;8 is the port with the card number.

The FTAS VM has been extensively tested with UHD version 1.3.3003.118, It is recommended to use UHD with the same version for smooth operations.

Ixia port format varies and depends on the Ixia Chassis type

Control Ixia traffic rate globally

For the testbeds where links between DUTs have less bandwidth than Ixia ports traffic tests may fail due to traffic drops on the least bandwidth links (i.e. DUTs may be connected with 1G ports and the Ixia link maybe 100G).

To avoid this situation a global parameter for the ixia traffic rate "global_traffic_rate" in percentage could be used to enforce traffic rate in all tests.

When the global_traffic_rate parameter is defined as a sub-parameter in the "Ixia_Ports" all traffic streams in all test scripts would override their own rate value with global_traffic_rate value configured.

When global_traffic_rate is not defined all traffic streams in all test scripts would use their own static values for the traffic rate.

# Ixia Parameters #
IXIA_Ports = {"s1_p1": "8", "s1_p2": "9", "s1_p3": "10", 
              "s2_p1": "11", "s2_p2": "12",
              "l1_p1": "8", "l1_p2": "9", "l1_p3": "10",
              "l2_p1": "11", "l2_p2": "12",
              "media": "fiber", "speed": "100G", "global_traffic_rate": 25,
              ...

Here the "global_traffic_rate": 25 referrers to 25% speed for all Ixia ports

CLI_TIMEOUT, set the integer value for this variable when the command execution is slow or taking more than 30 sec to respond. Set the default value to 0 in the testbed file.

full_mesh_topo.py
"""
    Description: Testbed information
"""
from genlibs import params
from genlibs import const

gParams = params.GLOBAL_PARAMS
pParams = params.PLATFORM_PARAMS
# =================================================
ALL_DUTS = ['SPINE01', 'SPINE02', 'LEAF01', 'LEAF02']
# =================================================
CLEANUP_BY_REBOOT = False
CLEANUP_BY_CFG_RELOAD = False 
CFG_RELOAD_BY_REBOOT = False
CHECK_COMPATIBILITY = False
CLEANUP_BEFORE_TEST_RUN = False

NTP_SERVER = "10.4.5.4"

INTF_UP_WAIT_TIME = 30
REBOOT_WAIT_TIME = 120
CLI_TIMEOUT = 0

MAX_V4_ACL = 64
MAX_V6_ACL = 64
MAX_SECONDARY_SUBNET = 25
MAX_IPV4_HOST_ROUTES = 1000
MAX_IPV6_HOST_ROUTES = 1000
MAX_IPV4_PREFIX_ROUTES = 1000
MAX_IPV4_NEXTHOPS = 256

ZTP_PARAMS = {"ZTP_HTTP_SRV_ADDR": "<VM-IP>", "ZTP_HTTP_SRV_PORT": "8090", "ZTP_FOLDER": "/home/oper/reports/ztp",
              "DHCP_CONTAINER": "ztp_dhcp"}

NET_SERVICES_CONTAINER_NAME = "net_services"

SYSLOG_SRVS = {"Servers": ["<SYSLOG server IP1>", "<SYSLOG server IP2>"], 'Log_Folder': "/var/log/sonic_logs"}
TACACS_SRVS = [{"address": "<IP address1>", "secret_key": "T@c@csSonic123"},
               {"address": "<IP address2>", "secret_key": "T@c@csSonic123"}]
TACACS_USERS = {"admin_user": "tacadmin", "admin_passwd": "sadmin@123",
                "oper_user": "tacuser", "oper_passwd": "suser@123"}

# Ixia Parameters #
IXIA_Ports = {"s1_p1": "8", "s1_p2": "9", "s1_p3": "10",
              "s2_p1": "11", "s2_p2": "12",
              "l1_p1": "13", "l1_p2": "14",
              "l2_p1": "15", "l2_p2": "16",
              "media": "fiber", "speed": "100G",
              "port_configs": {
                  "localuhd/8": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/9": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/10": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/11": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/12": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/13": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/14": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/15": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/16": {"speed": "100G", "auto_negotiation": False, "rs_fec": True}
              }}

IXIA = {"IP": "<Ixia IP>", "username": "<ix username>", "password": "<Ixia passwd>", "ports": IXIA_Ports}

LOGSRV1 = {"IP": "10.1.1.11", "SSH_PORT": 22, "ssh_user": "aviz", "ssh_passwd": "IxiaAviz2020", "Timeout": 30,
           "name": "Syslog1", "CLI_PROMPTS": params.LINUX_PROMPTS}

# Linux Server to host services likes: NTP, Syslog, Tac_plus, etc. avtest user is in sudo group and no password
TESTSRV1 = {"IP": "10.109.9.112", "SSH_PORT": 22, "ssh_user": "avtest", "ssh_passwd": "avtest@123", "Timeout": 30,
            "name": "TestSrv1", "CLI_PROMPTS": params.LINUX_PROMPTS}

# DUTs Parameters #
SPINE01_Ports = {"s2_p1": "Ethernet0", "s2_p1_speed": 100000,
                 "s2_p2": "Ethernet8", "s2_p2_speed": 100000,
                 "l1_p1": "Ethernet16", "l1_p1_speed": 100000,
                 "l1_p2": "Ethernet24", "l1_p2_speed": 100000,
                 "l2_p1": "Ethernet32", "l2_p1_speed": 100000,
                 "l2_p2": "Ethernet40", "l2_p2_speed": 100000,
                 "ixia_p1": "Ethernet232",
                 "ixia_p2": "Ethernet240",
                 "port_mtu": 9100
                 }

SPINE01 = {"IP": "<SPINE1 IP>", 'SSH_PORT': 22, "CLI_PROMPTS": params.CLI_PROMPTS,
           "cliErrors": params.CLI_ERROR_REGEXP,
           "cliWarnings": params.CLI_WARN_REGEXP,
           "climode": const.CliModes.SONiC_CLI, "ports": SPINE01_Ports,
           "ssh_user": "admin", "ssh_passwd": "Innovium123",
           "Timeout": 30, "name": "Spine1",
           "backup_cfg_file": "clean_config.json"}

SPINE02_Ports = {"s1_p1": "Ethernet0", "s1_p1_speed": 100000,
                 "s1_p2": "Ethernet8", "s1_p2_speed": 100000,
                 "l1_p1": "Ethernet16", "l1_p1_speed": 100000,
                 "l1_p2": "Ethernet24", "l1_p2_speed": 100000,
                 "l2_p1": "Ethernet32", "l2_p1_speed": 100000,
                 "l2_p2": "Ethernet40", "l2_p2_speed": 100000,
                 "ixia_p1": "Ethernet240",
                 "ixia_p2": "Ethernet248",
                 "port_mtu": 9100
                 }
SPINE02 = {"IP": "<SPINE2 IP>", 'SSH_PORT': 22, "CLI_PROMPTS": params.CLI_PROMPTS,
           "cliErrors": params.CLI_ERROR_REGEXP,
           "cliWarnings": params.CLI_WARN_REGEXP,
           "climode": const.CliModes.SONiC_CLI, "ports": SPINE02_Ports,
           "ssh_user": "admin", "ssh_passwd": "Innovium123",
           "Timeout": 30, "name": "Spine2",
           "backup_cfg_file": "clean_config.json"}

LEAF01_Ports = {"l2_p1": "Ethernet32", "l2_p1_speed": 100000,
                "l2_p2": "Ethernet40", "l2_p2_speed": 100000,
                "s1_p1": "Ethernet32", "s1_p1_speed": 100000,
                "s1_p2": "Ethernet40", "s1_p2_speed": 100000,
                "s2_p1": "Ethernet32", "s2_p1_speed": 100000,
                "s2_p2": "Ethernet40", "s2_p1_speed": 100000,
                "ixia_p1": "Ethernet240",
                "ixia_p2": "Ethernet248",
                "port_mtu": 9100
                }

LEAF01 = {"IP": "<LEAF1 IP>", 'SSH_PORT': 22, "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP,
          "cliWarnings": params.CLI_WARN_REGEXP,
          "climode": const.CliModes.SONiC_CLI, "ports": LEAF01_Ports,
          "ssh_user": "admin", "ssh_passwd": "Innovium123",
          "Timeout": 30, "name": "Leaf1",
          "backup_cfg_file": "clean_config.json"}

LEAF02_Ports = {"l1_p1": "Ethernet32", "l1_p1_speed": 100000,
                "l1_p2": "Ethernet40", "l1_p2_speed": 100000,
                "s1_p1": "Ethernet32", "s1_p1_speed": 100000,
                "s1_p2": "Ethernet40", "s1_p2_speed": 100000,
                "s2_p1": "Ethernet32", "s2_p1_speed": 100000,
                "s2_p2": "Ethernet40", "s2_p2_speed": 100000,
                "ixia_p1": "Ethernet240",
                "ixia_p2": "Ethernet248",
                "port_mtu": 9100
                }

LEAF02 = {"IP": "<LEAF2 IP>", 'SSH_PORT': 22,
          "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP,
          "cliWarnings": params.CLI_WARN_REGEXP,
          "climode": const.CliModes.SONiC_CLI, "ports": LEAF02_Ports,
          "ssh_user": "admin", "ssh_passwd": "Innovium123",
          "Timeout": 30, "name": "Leaf2",
          "backup_cfg_file": "clean_config.json"}

2 DUTs Topology

If you don't have 4 DUTs topology and want to run scripts that require only 2 DUTs, You can use 2dut_topo.py testbed parameter file

There are two physical DUTs in the topology but the script might pick the name Spine and Leaf interchangeably. So in the testbed file, we should define parameters for both but they point to the same physical Spine and Leaf DUTs.

2dut_topo.py
"""
    Description: Testbed information
"""
from genlibs import params
from genlibs import const

gParams = params.GLOBAL_PARAMS
pParams = params.PLATFORM_PARAMS

# =================================================
ALL_DUTS = ['SPINE01', 'SPINE02']
# =================================================
CLEANUP_BY_REBOOT = False
CLEANUP_BY_CFG_RELOAD = False 
CFG_RELOAD_BY_REBOOT = False
CHECK_COMPATIBILITY = False
CLEANUP_BEFORE_TEST_RUN = False

NTP_SERVER = "10.4.5.4"

INTF_UP_WAIT_TIME = 30
REBOOT_WAIT_TIME = 120
CLI_TIMEOUT = 0

MAX_V4_ACL = 64
MAX_V6_ACL = 64
MAX_SECONDARY_SUBNET = 25
MAX_IPV4_HOST_ROUTES = 1000
MAX_IPV6_HOST_ROUTES = 1000
MAX_IPV4_PREFIX_ROUTES = 1000
MAX_IPV4_NEXTHOPS = 256

ZTP_PARAMS = {"ZTP_HTTP_SRV_ADDR": "10.4.5.177", "ZTP_HTTP_SRV_PORT": "8090", "ZTP_FOLDER": "/home/oper/reports/ztp",
              "DHCP_CONTAINER": "ztp_dhcp"}

NET_SERVICES_CONTAINER_NAME = "net_services"

SYSLOG_SRVS = {"Servers": ["<SYSLOG server IP1>", "<SYSLOG server IP2>"], 'Log_Folder': "/var/log/sonic_logs"}
TACACS_SRVS = [{"address": "<IP address1>", "secret_key": "T@c@csSonic123"},
               {"address": "<IP address2>", "secret_key": "T@c@csSonic123"}]
TACACS_USERS = {"admin_user": "tacadmin", "admin_passwd": "sadmin@123",
                "oper_user": "tacuser", "oper_passwd": "suser@123"}

# Ixia Parameters #
IXIA_Ports = {"s1_p1": "8", "s1_p2": "9", "s1_p3": "10",
              "s2_p1": "11", "s2_p2": "12",
              "l1_p1": "8", "l1_p2": "9", "l1_p3": "10",
              "l2_p1": "11", "l2_p2": "12",
              "media": "fiber", "speed": "100G",
              "port_configs": {
                  "localuhd/8": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/9": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/10": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/11": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
                  "localuhd/12": {"speed": "100G", "auto_negotiation": False, "rs_fec": True},
              }}

IXIA = {"IP": "<Ixia IP>", "username": "<ix username>", "password": "<Ixia passwd>", "ports": IXIA_Ports}

# DUTs Parameters #
SPINE01_Ports = {"s2_p1": "Ethernet0", "s2_p1_speed": 100000,
                 "s2_p2": "Ethernet8", "s2_p2_speed": 100000,
                 "ixia_p1": "Ethernet232",
                 "ixia_p2": "Ethernet240",
                 "ixia_p3": "Ethernet248"}

SPINE01 = {"IP": "<SPINE1 IP>", 'SSH_PORT': 22, "CLI_PROMPTS": params.CLI_PROMPTS,
           "cliErrors": params.CLI_ERROR_REGEXP,
           "cliWarnings": params.CLI_WARN_REGEXP,
           "climode": const.CliModes.SONiC_CLI, "ports": SPINE01_Ports,
           "ssh_user": "admin", "ssh_passwd": "Innovium123",
           "Timeout": 30, "name": "Spine1",
           "backup_cfg_file": "clean_config.json"}

SPINE02_Ports = {"s1_p1": "Ethernet0", "s1_p1_speed": 100000,
                 "s1_p2": "Ethernet8", "s1_p2_speed": 100000,
                 "ixia_p1": "Ethernet240",
                 "ixia_p2": "Ethernet248"}
SPINE02 = {"IP": "<SPINE2 IP>", 'SSH_PORT': 22, "CLI_PROMPTS": params.CLI_PROMPTS,
           "cliErrors": params.CLI_ERROR_REGEXP,
           "cliWarnings": params.CLI_WARN_REGEXP,
           "climode": const.CliModes.SONiC_CLI, "ports": SPINE02_Ports,
           "ssh_user": "admin", "ssh_passwd": "Innovium123",
           "Timeout": 30, "name": "Spine2",
           "backup_cfg_file": "clean_config.json"}

LEAF01_Ports = {"l2_p1": "Ethernet32", "l2_p1_speed": 100000,
                "l2_p2": "Ethernet40", "l2_p2_speed": 100000,
                "ixia_p1": "Ethernet240",
                "ixia_p2": "Ethernet248"}

LEAF01 = {"IP": "<SPINE1 IP>", 'SSH_PORT': 22, "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP,
          "cliWarnings": params.CLI_WARN_REGEXP,
          "climode": const.CliModes.SONiC_CLI, "ports": LEAF01_Ports,
          "ssh_user": "admin", "ssh_passwd": "Innovium123",
          "Timeout": 30, "name": "Leaf1",
          "backup_cfg_file": "clean_config.json"}

LEAF02_Ports = {"l1_p1": "Ethernet32", "l1_p1_speed": 100000,
                "l1_p2": "Ethernet40", "l1_p2_speed": 100000,
                "ixia_p1": "Ethernet240",
                "ixia_p2": "Ethernet248"}

LEAF02 = {"IP": "<SPINE2 IP>", 'SSH_PORT': 22,
          "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP,
          "cliWarnings": params.CLI_WARN_REGEXP,
          "climode": const.CliModes.SONiC_CLI, "ports": LEAF02_Ports,
          "ssh_user": "admin", "ssh_passwd": "Innovium123",
          "Timeout": 30, "name": "Leaf2",
          "backup_cfg_file": "clean_config.json"}

Full Mesh 4 DUTs Topology for Chaos

ftas_chaos_topo.py (sample topology file) the testbed parameter file is used for Chaos test scripts only.

A new parameter PCH_CONFIGURATION = False, has been added. This parameter determines if the tests are to be run on routed port (if False) or routed PortChannel (if True) configuration for the interfaces connecting DUTs.

ftas_chaos_topo.py
"""
    Description: Testbed information
"""
from genlibs import params
from genlibs import const

gParams = params.GLOBAL_PARAMS
pParams = params.PLATFORM_PARAMS

# =================================================
ALL_DUTS = ['SPINE01', 'SPINE02', 'LEAF01', 'LEAF02']
# =================================================
result_dir = "/home/oper/reports"

CLEANUP_BY_REBOOT = False
CLEANUP_BY_CFG_RELOAD = False

West_Ixia_Params = {"ports": [21], "ixmedia": "fiber", "ixspeed": "100G", "peer": "leaf1"}

East_Ixia_Params = {"ports": [22], "ixmedia": "fiber", "ixspeed": "100G", "peer": "leaf2"}
IXIA = {"IP": "10.4.4.10", "username": "aviz", "password": "aviz@123", "ixmedia": "fiber", "ixspeed": "100G"}
INTF_UP_WAIT_TIME = 30
REBOOT_WAIT_TIME = 300
CLI_TIMEOUT = 0
PCH_CONFIGURATION = False  # to disable the PCH configuration in chaos scripts, default is True
TECHSUPPORT = False
TECHSUPPORT_SINCE = "hour ago"
TECHSUPPORT_TIMEOUT = 120


# Use a network with prefixlen = 24
MASTER_NETWORK = "172.16.1.0/24"

S1_Ports = [
    # Links from Spine1 to Leaf1
    {"s1": "Ethernet0", "l1": "Ethernet0", "speed": 100000,
     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf1"},
#    {"s1": "Ethernet4", "l1": "Ethernet4", "speed": 100000,
#     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf1"},
    # Links from Spine1 to Leaf2
    {"s1": "Ethernet32", "l2": "Ethernet32", "speed": 100000,
     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf2"}]
#    {"s1": "Ethernet36", "l2": "Ethernet36", "speed": 100000,
#     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf2"}]

S2_Ports = [
    # Links from Spine1 to Leaf1
    {"s2": "Ethernet32", "l1": "Ethernet32", "speed": 100000,
     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf1"},
#    {"s2": "Ethernet36", "l1": "Ethernet36", "speed": 100000,
#     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf1"},
    # Links from Spine2 to Leaf2
    {"s2": "Ethernet0", "l2": "Ethernet0", "speed": 100000,
     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf2"}]
#    {"s2": "Ethernet4", "l2": "Ethernet4", "speed": 100000,
#     "netinfo": {"spine_ip": "", "leaf_ip": ""}, "peer": "leaf2"}]

L1_Ixia_Ports = [
    # Links from Leaf1 to Ixia
    {"ixia": "21", "l1_ixia": "Ethernet60", "speed": 100000,
     "netinfo": {"ixia_ip": "", "leaf_ip": ""},
     "port_configs": {"localuhd/21": {"speed": "100G", "auto_negotiation": False, "rs_fec": True}}}]

L2_Ixia_Ports = [
    # Links from Leaf1 to Ixia
    {"ixia": "22", "l2_ixia": "Ethernet60", "speed": 100000,
     "netinfo": {"ixia_ip": "", "leaf_ip": ""},
     "port_configs": {"localuhd/22": {"speed": "100G", "auto_negotiation": False, "rs_fec": True}}}]
#    {"ixia": "10", "l2_ixia": "Ethernet100", "speed": 1000000,
#     "netinfo": {"ixia_ip": "", "leaf_ip": ""}}]

SPINE01 = {"IP": "10.4.4.65", 'SSH_PORT': 22,
           "CLI_PROMPTS": params.CLI_PROMPTS,
           "cliErrors": params.CLI_ERROR_REGEXP,
           "cliWarnings": params.CLI_WARN_REGEXP,
           "climode": const.CliModes.SONiC_CLI,
           "ssh_user": "admin", "ssh_passwd": "YourPaSsWoRd",
           "Timeout": 30, "ports": S1_Ports, "name": "Spine1",
           "backup_cfg_file": "clean_config.json"}

SPINE02 = {"IP": "10.4.4.67", 'SSH_PORT': 22,
           "CLI_PROMPTS": params.CLI_PROMPTS,
           "cliErrors": params.CLI_ERROR_REGEXP,
           "cliWarnings": params.CLI_WARN_REGEXP,
           "climode": const.CliModes.SONiC_CLI,
           "ssh_user": "admin", "ssh_passwd": "YourPaSsWoRd",
           "Timeout": 30, "ports": S1_Ports, "name": "Spine2",
           "backup_cfg_file": "clean_config.json"}

LEAF01 = {"IP": "10.4.4.66", 'SSH_PORT': 22,
          "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP,
          "cliWarnings": params.CLI_WARN_REGEXP,
          "climode": const.CliModes.SONiC_CLI,
          "ssh_user": "admin", "ssh_passwd": "YourPaSsWoRd",
          "Timeout": 30, "ports": S1_Ports + S2_Ports, "name": "Leaf1",
          "backup_cfg_file": "clean_config.json"}

LEAF02 = {"IP": "10.4.4.68", 'SSH_PORT': 22,
          "CLI_PROMPTS": params.CLI_PROMPTS,
          "cliErrors": params.CLI_ERROR_REGEXP,
          "cliWarnings": params.CLI_WARN_REGEXP,
          "climode": const.CliModes.SONiC_CLI,
          "ssh_user": "admin", "ssh_passwd": "YourPaSsWoRd",
          "Timeout": 30, "ports": S1_Ports + S2_Ports, "name": "Leaf2",
          "backup_cfg_file": "clean_config.json"}

Last updated