aboutsummaryrefslogtreecommitdiffstats
path: root/.ci/templates/job-uhd-streaming-tests.yml
blob: a5387a4032d11e1325c04e3649ade6daef8d623f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
parameters:
- name: suiteName
  type: string
- name: testOS
  type: string
  values:
    - ubuntu2004
- name: toolset
  type: string
  values:
    - make
- name: uhdSrcDir
  type: string
- name: dutMatrix
  type: object
- name: testLength
  type: string
  values:
    - 'smoke'
    - 'full'
    - 'stress'

jobs:
- job: uhd_streaming_tests_${{ parameters.suiteName }}
  displayName:  uhd streaming tests ${{ parameters.suiteName }}
  timeoutInMinutes: 180
  pool:
    name: de-dre-lab
    demands:
    - suiteName -equals ${{ parameters.suiteName }}
  strategy:
    matrix: ${{ parameters.dutMatrix }}
  workspace:
    clean: outputs
  steps:
  - checkout: self
    clean: true
  - download: current
    artifact: uhddev-${{ parameters.testOS }}-${{ parameters.toolset }}
    displayName: download pipeline artifact ${{ parameters.testOS }}-${{ parameters.toolset }}
  - task: ExtractFiles@1
    inputs:
      archiveFilePatterns: $(Pipeline.Workspace)/uhddev-${{ parameters.testOS }}-${{ parameters.toolset }}/uhddev-${{ parameters.testOS }}-${{ parameters.toolset }}.tar.gz
      destinationFolder: $(Build.BinariesDirectory)
      cleanDestinationFolder: true
  - script: |
        ssh-keygen -f ~/.ssh/known_hosts -R $(dutMgmtAddr)
        ssh -o StrictHostKeyChecking=no -tt root@$(dutMgmtAddr) "uhd_image_loader --args addr=localhost,type=$(dutType),fpga=$(dutFPGA)"
        sleep 60
    displayName: Flash FPGA $(dutFPGA)
  - script: |
      ssh-keygen -f ~/.ssh/known_hosts -R $(dutMgmtAddr)
      ssh -o StrictHostKeyChecking=no -tt root@$(dutMgmtAddr) "ethtool -A sfp0 tx on"
      ssh -o StrictHostKeyChecking=no -tt root@$(dutMgmtAddr) "ethtool -A sfp1 tx on"
    displayName: Enable Tx Pause Frames on sfp0 and sfp1
    condition: and(succeeded(), eq(variables.dutType, 'x4xx'), eq(variables.dutFPGA, 'CG_400'))
  # - script: |
  #     cd ${{ parameters.uhdSrcDir }}/host/tests/streaming_performance
  #     sudo ./setup.sh --auto
  #     sleep 5
  #   displayName: setup interfaces for use without DPDK
  # - script: |
  #     set -x
  #     export PYTHONPATH=${{ parameters.uhdSrcDir }}/host/tests/streaming_performance
  #     cd ${{ parameters.uhdSrcDir }}/host/tests/pytests
  #     sudo python3 -m pytest -s test_streaming.py -m "not dpdk" --dut_type $(dutType) --test_length ${{ parameters.testLength }} \
  #       --addr $(dutAddr) --second_addr $(dutSecondAddr) --mgmt_addr $(dutMgmtAddr) \
  #       --uhd_build_dir $(Build.BinariesDirectory)/uhddev/build --junitxml $(Common.TestResultsDirectory)/TEST-$(dutName).xml
  #   continueOnError: true
  #   displayName: Run streaming tests on $(dutName)
  - script: |
      cd ${{ parameters.uhdSrcDir }}/host/tests/streaming_performance
      sudo ./setup.sh --auto --dpdk
      sleep 5
    displayName: setup interfaces for use with DPDK
  - script: |
      set -x
      export PYTHONPATH=${{ parameters.uhdSrcDir }}/host/tests/streaming_performance
      cd ${{ parameters.uhdSrcDir }}/host/tests/pytests
      # Disable creation of __pycache__ files using -B to avoid errors on clean up during next run
      # as using sudo below creates them with root priveleges.
      sudo --preserve-env=PYTHONPATH python3 -B -m pytest -s test_streaming.py -m "dpdk" --dut_type $(dutType) --test_length ${{ parameters.testLength }} \
        --addr $(dutAddr) --second_addr $(dutSecondAddr) --mgmt_addr $(dutMgmtAddr) \
        --uhd_build_dir $(Build.BinariesDirectory)/uhddev/build --junitxml $(Common.TestResultsDirectory)/TEST-$(dutName)-dpdk.xml
    continueOnError: true
    displayName: Run streaming tests with DPDK on $(dutName)
  - task: PublishTestResults@2
    inputs:
      testResultsFormat: 'JUnit'
      testResultsFiles: '$(Common.TestResultsDirectory)/TEST-*.xml'
      testRunTitle: $(dutName) streaming tests
      buildConfiguration: 'Release'
      mergeTestResults: true
      failTaskOnFailedTests: false
    displayName: Upload streaming test results