Step-by-Step

Prerequisite

  1. Python: >= 3.11.

  2. Download prooject: Get`latest release <https://github.com/xenanetworks/cable-perf-test-suite/releases>`_.

  3. Install dependencies using pip:

pip install -r requirements.txt # For Windows
pip3 install -r requirements.txt # For Linux/macOS

The required packages are listed in the requirements.txt file.

Note

tdl-xoa-driver is developed by Teledyne LeCroy Xena. You can read more about this package in XOA Driver Documentation.

Change Test Configuration

Go to test/ directory, change the test_config.yml to meet your test setup and requirements.

test_config:
  chassis_ip: "10.165.136.60"
  username: "CPOM"
  password: "xena"
  tcp_port: 22606
  log_filename: "xena_cpom.log"
  csv_report_filename: "xena_cpom_report.csv
  rx_output_eq_test_config:
    module_list:
      - 3
      - 6
    port_pair_list:
      - tx: "3/0"
        rx: "6/0"
    module_media: "QSFPDD800"
    port_speed: "1x800G"
    lane: 1
    delay_after_reset: 2
    prbs_config:
      polynomial: "PRBS31"
      duration: 2
    rx_output_eq_range:
      amp_min: 0
      amp_max: 3
      pre_min: 0
      pre_max: 7
      post_min: 0
      post_max: 7
    delay_after_eq_write: 2
  tx_input_eq_test_config:
    module_list:
      - 3
      - 6
    port_pair_list:
      - tx: "3/0"
        rx: "6/0"
    module_media: "QSFPDD800"
    port_speed: "1x800G"
    lane: 1
    delay_after_reset: 2
    prbs_config:
      polynomial: "PRBS31"
      duration: 2
    tx_input_eq_range:
      min: 0
      max: 12
    delay_after_eq_write: 2
  • chassis_ip: the IP address of the chassis

  • username: the name used to connect to the chassis and reserve ports

  • password: the password used to connect to the chassis

  • tcp_port: the port number used to connect to the chassis

  • log_filename: the log filename

  • csv_report_filename: the CSV report filename

  • rx_output_eq_test_config: the test configuration of RX output equalization optimization

    • module_list: a list of module IDs to test

    • port_pair_list: a list of port pairs

      • tx: the ID (module/port) of the port that transmits PRBS

      • rx: the ID (module/port) of the port that measures PRBS BER

    • module_media: the module media mode to apply

    • port_speed: the port speed mode in the format of <port count>x<port speed>

    • lane: the lane index you want to test, from 1 to 8.

    • delay_after_reset: waiting time in seconds after port reset

    • prbs_config

      • polynomial: the PRBS polynomial to use

      • duration: PRBS BER measurement duration in seconds

    • rx_output_eq_range:

      • amp_min: the minimum amplitude cursor code value

      • amp_max: the maximum amplitude cursor code value

      • pre_min: the minimum pre-cursor code value

      • pre_max: the maximum pre-cursor code value

      • post_min: the minimum post-cursor code value

      • post_max: the maximum post-cursor code value

    • delay_after_eq_write: waiting time in seconds after writing the cursor values

  • tx_input_eq_test_config: the test configuration of TX input equalization optimization

    • module_list: a list of module IDs to test

    • port_pair_list: a list of port pairs

      • tx: the ID (module/port) of the port that transmits PRBS

      • rx: the ID (module/port) of the port that measures PRBS BER

    • module_media: the module media mode to apply

    • port_speed: the port speed mode in the format of <port count>x<port speed>

    • lane: the lane index you want to test, from 1 to 8.

    • delay_after_reset: waiting time in seconds after port reset

    • prbs_config

      • polynomial: the PRBS polynomial to use

      • duration: PRBS BER measurement duration in seconds

    • tx_input_eq_range:

      • min: the minimum code value

      • max: the maximum code value

    • delay_after_eq_write: waiting time in seconds after writing the cursor values

Run the Test

To start the test, run:

  • Windows: python test.py

  • Linux/macOS: python3 test.py

The test log and results will be saved in a different folder each time you run the test, and will also be printed on the console.

_images/test_in_process.png

Fig. 1 Test in process

_images/test_result.png

Fig. 2 Test results