Skip to content

Commit 7b38849

Browse files
committed
Ci: clean up perf-pytest workflow to match existing patterns
Signed-off-by: Wilczynski, Andrzej <andrzej.wilczynski@intel.com>
1 parent d32ff32 commit 7b38849

3 files changed

Lines changed: 66 additions & 60 deletions

File tree

.github/workflows/perf-pytest.yml

Lines changed: 24 additions & 49 deletions
Original file line numberDiff line numberDiff line change
@@ -30,47 +30,41 @@ on:
3030
default: '120'
3131
schedule:
3232
- cron: '0 22 * * *'
33+
3334
permissions:
3435
contents: read
35-
env:
36-
PCI_DEVICE: '8086:12d2,8086:12d2'
37-
MARKER: ${{ inputs.marker || 'performance' }}
36+
3837
jobs:
3938
run-perf-tests:
4039
runs-on: [self-hosted, perf, sut]
4140
timeout-minutes: 720
4241
steps:
4342
- name: Harden-Runner
44-
uses: step-security/harden-runner@6c439dc8bdf85cadbbce9ed30d1c7b959517bc49 # v2.12.2
43+
uses: step-security/harden-runner@ec9f2d5744a09debf3a187a3f4f675c53b671911 # v2.13.0
4544
with:
4645
egress-policy: audit
4746
- name: Set current date
4847
run: echo "CURRENT_DATE=$(date '+%y%m%d-%H%M%S')" >> "$GITHUB_ENV"
49-
- name: Fix ownership of root-owned files
50-
run: sudo chown -R $(id -u):$(id -g) "$GITHUB_WORKSPACE" || true
5148
- name: Checkout MTL
5249
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
5350
with:
5451
ref: '${{ inputs.branch || github.ref }}'
5552
fetch-depth: 0
5653
- name: Overlay test framework from workflow branch
57-
if: ${{ inputs.branch != '' }}
54+
if: inputs.branch != ''
5855
run: |
5956
echo "MTL source: ${{ inputs.branch }}"
6057
echo "Test framework: ${{ github.sha }} (${{ github.ref_name }})"
6158
git checkout ${{ github.sha }} -- tests/validation/ .github/
6259
- uses: ./.github/actions/build
6360
- name: Build MTL on second host via SSH
6461
run: |
65-
CLIENT_IP="${{ secrets.PERF_CLIENT_IP }}"
66-
CLIENT_USER="${{ secrets.RUNNER_USERNAME }}"
67-
CLIENT_MTL="${{ secrets.PERF_CLIENT_MTL_PATH }}"
68-
BRANCH="${{ inputs.branch || github.ref }}"
69-
ssh -o StrictHostKeyChecking=no "${CLIENT_USER}@${CLIENT_IP}" bash -s -- \
70-
"${CLIENT_MTL}" "${BRANCH}" <<'REMOTE_SCRIPT'
62+
ssh -o StrictHostKeyChecking=no \
63+
"${{ secrets.RUNNER_USERNAME }}@${{ secrets.PERF_CLIENT_IP }}" bash -s -- \
64+
"${{ secrets.PERF_CLIENT_MTL_PATH }}" "${{ inputs.branch || github.ref }}" <<'REMOTE_SCRIPT'
7165
set -ex
7266
MTL_DIR="$1"
73-
BRANCH="$2"
67+
BRANCH="${2#refs/heads/}"
7468
if [ ! -d "${MTL_DIR}/.git" ]; then
7569
git clone https://github.com/OpenVisualCloud/Media-Transport-Library.git "${MTL_DIR}"
7670
fi
@@ -79,6 +73,14 @@ jobs:
7973
git fetch --all --prune
8074
git checkout "${BRANCH}" 2>/dev/null || git checkout "origin/${BRANCH}" 2>/dev/null || true
8175
git reset --hard "origin/${BRANCH}" 2>/dev/null || git reset --hard "${BRANCH}"
76+
sudo killall -SIGKILL gtest.sh KahawaiTest KahawaiUfdTest KahawaiUplTest ffmpeg RxTxApp 2>/dev/null || true
77+
sudo killall -SIGINT pytest MtlManager phc2sys ptp4l netsniff-ng 2>/dev/null || true
78+
sleep 2
79+
export CICD_BUILD=1
80+
export SETUP_BUILD_AND_INSTALL_DPDK=0
81+
export SETUP_BUILD_AND_INSTALL_ICE_DRIVER=0
82+
export SETUP_BUILD_AND_INSTALL_EBPF_XDP=0
83+
export SETUP_BUILD_AND_INSTALL_GPU_DIRECT=0
8284
export MTL_BUILD_AND_INSTALL=1
8385
export ECOSYSTEM_BUILD_AND_INSTALL_FFMPEG_PLUGIN=1
8486
export ECOSYSTEM_BUILD_AND_INSTALL_GSTREAMER_PLUGIN=1
@@ -96,33 +98,8 @@ jobs:
9698
run: |
9799
runner_name="${{ runner.name }}"
98100
echo "SESSION_ID=${runner_name##*-}" >> "$GITHUB_ENV"
99-
- name: Detect SSH key path
100-
run: |
101-
# Try common key locations for the configured user and root
102-
FOUND=""
103-
USER_HOME="/home/${{ secrets.RUNNER_USERNAME }}"
104-
for key in \
105-
"$USER_HOME/.ssh/id_ed25519" \
106-
"$USER_HOME/.ssh/id_rsa" \
107-
"$USER_HOME/.ssh/id_ecdsa" \
108-
"$HOME/.ssh/id_ed25519" \
109-
"$HOME/.ssh/id_rsa" \
110-
"$HOME/.ssh/id_ecdsa" \
111-
"/root/.ssh/id_ed25519" \
112-
"/root/.ssh/id_rsa"; do
113-
if [ -f "$key" ]; then
114-
echo "SSH_KEY_PATH=$key" >> "$GITHUB_ENV"
115-
echo "Found SSH key: $key"
116-
FOUND="$key"
117-
break
118-
fi
119-
done
120-
if [ -z "$FOUND" ]; then
121-
echo "::warning::No SSH key found. Listing available keys:"
122-
ls -la "$USER_HOME/.ssh/" 2>/dev/null || echo " $USER_HOME/.ssh/ does not exist"
123-
ls -la "$HOME/.ssh/" 2>/dev/null || echo " $HOME/.ssh/ does not exist"
124-
ls -la /root/.ssh/ 2>/dev/null || echo " /root/.ssh/ does not exist"
125-
fi
101+
- name: Set PCI device
102+
run: echo "PCI_DEVICE=${{ secrets.PERF_PCI_DEVICE || '8086:12d2,8086:12d2' }}" >> "$GITHUB_ENV"
126103
- name: Generate pytest configuration files
127104
working-directory: ./tests/validation/configs
128105
run: |
@@ -134,7 +111,7 @@ jobs:
134111
--pci_device "${{ env.PCI_DEVICE }}" \
135112
--ip_address "${{ secrets.PERF_SUT_IP }}" \
136113
--username "${{ secrets.RUNNER_USERNAME }}" \
137-
--key_path "${{ env.SSH_KEY_PATH }}" \
114+
--key_path "/home/$USER/.ssh/id_ed25519" \
138115
--second_host_ip "${{ secrets.PERF_CLIENT_IP }}" \
139116
--second_host_pci_device "${{ env.PCI_DEVICE }}" \
140117
--second_host_mtl_path "${{ secrets.PERF_CLIENT_MTL_PATH }}" \
@@ -145,19 +122,17 @@ jobs:
145122
ssh-keyscan -H "${{ secrets.PERF_SUT_IP }}" >> ~/.ssh/known_hosts 2>/dev/null
146123
ssh-keyscan -H "${{ secrets.PERF_CLIENT_IP }}" >> ~/.ssh/known_hosts 2>/dev/null
147124
chmod 644 ~/.ssh/known_hosts
125+
- name: Export workflow tag for PCAP naming
126+
run: echo "MTL_GITHUB_WORKFLOW=${{ github.workflow }}" >> "$GITHUB_ENV"
148127
- name: Start MtlManager
149-
run: |
150-
echo "MTL_GITHUB_WORKFLOW=${{ github.workflow }}" >> "$GITHUB_ENV"
151-
- name: Start MtlManager
152-
run: |
153-
sudo MtlManager &
128+
run: sudo MtlManager &
154129
- name: Run performance tests
155130
working-directory: ./tests/validation
156131
run: |
157132
./.venv/bin/python3 -m pytest \
158133
--test_config=./configs/test_config.yaml \
159134
--topology_config=./configs/topology_config.yaml \
160-
-m "${{ env.MARKER }}" \
135+
-m "${{ inputs.marker || 'performance' }}" \
161136
${{ inputs.test_filter && format('-k "{0}"', inputs.test_filter) || '' }} \
162137
--template=html/index.html \
163138
--report=./report.html \
@@ -183,7 +158,7 @@ jobs:
183158
path: |
184159
./tests/validation/report.html
185160
./tests/validation/performance_report.html
186-
- name: Clean up root-owned files
161+
- name: Clean up
187162
if: always()
188163
run: |
189164
sudo pkill -f MtlManager || true

build.sh

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -94,8 +94,6 @@ do_install() {
9494
ninja install
9595
else
9696
sudo ninja install
97-
# sudo ninja install may rebuild targets as root, fix ownership
98-
sudo chown -R "$user":"$user" .
9997
fi
10098
}
10199

tests/validation/configs/gen_config.py

Lines changed: 42 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -211,17 +211,50 @@ def main() -> None:
211211
# EBU args — required only in validation mode
212212
parser.add_argument("--ebu_ip", type=str, default=None, help="EBU LIST server IP")
213213
parser.add_argument("--ebu_user", type=str, default=None, help="EBU LIST username")
214-
parser.add_argument("--ebu_password", type=str, default=None, help="EBU LIST password")
214+
parser.add_argument(
215+
"--ebu_password", type=str, default=None, help="EBU LIST password"
216+
)
215217
# Second host — required for dual-host perf tests
216-
parser.add_argument("--second_host_ip", type=str, default=None, help="second host IP")
217-
parser.add_argument("--second_host_pci_device", type=str, default=None, help="second host PCI BDF(s)")
218-
parser.add_argument("--second_host_username", type=str, default=None, help="second host SSH username")
219-
parser.add_argument("--second_host_password", type=str, default=None, help="second host SSH password")
220-
parser.add_argument("--second_host_key_path", type=str, default=None, help="second host SSH key path")
221-
parser.add_argument("--second_host_mtl_path", type=str, default=None, help="MTL path on the second host (defaults to --mtl_path)")
218+
parser.add_argument(
219+
"--second_host_ip", type=str, default=None, help="second host IP"
220+
)
221+
parser.add_argument(
222+
"--second_host_pci_device",
223+
type=str,
224+
default=None,
225+
help="second host PCI BDF(s)",
226+
)
227+
parser.add_argument(
228+
"--second_host_username",
229+
type=str,
230+
default=None,
231+
help="second host SSH username",
232+
)
233+
parser.add_argument(
234+
"--second_host_password",
235+
type=str,
236+
default=None,
237+
help="second host SSH password",
238+
)
239+
parser.add_argument(
240+
"--second_host_key_path",
241+
type=str,
242+
default=None,
243+
help="second host SSH key path",
244+
)
245+
parser.add_argument(
246+
"--second_host_mtl_path",
247+
type=str,
248+
default=None,
249+
help="MTL path on the second host (defaults to --mtl_path)",
250+
)
222251
# Perf-specific options
223-
parser.add_argument("--test_time", type=int, default=120, help="test duration in seconds")
224-
parser.add_argument("--media_path", type=str, default="/mnt/media", help="path to media files")
252+
parser.add_argument(
253+
"--test_time", type=int, default=120, help="test duration in seconds"
254+
)
255+
parser.add_argument(
256+
"--media_path", type=str, default="/mnt/media", help="path to media files"
257+
)
225258

226259
args = parser.parse_args()
227260
if not args.password and not args.key_path:

0 commit comments

Comments
 (0)