Skip to content

Commit 7366335

Browse files
committed
Test: Replace hardcoded IPs with dynamic IP pool
1 parent 4698934 commit 7366335

File tree

9 files changed

+134
-103
lines changed

9 files changed

+134
-103
lines changed

.github/workflows/nightly-tests.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,15 @@ jobs:
2727
python3 -m venv .venv
2828
source .venv/bin/activate
2929
pip install -r requirements.txt
30+
- name: Create session ID
31+
run: |
32+
runner_name=${{ runner.name }}
33+
echo "SESSION_ID=${runner_name##*-}" >> "$GITHUB_ENV"
3034
- name: Generate test framework config files
3135
working-directory: tests/validation/configs
3236
run: |
3337
python3 gen_config.py \
38+
--session_id ${{ env.SESSION_ID }} \
3439
--build ${{ secrets.RUNNER_BUILD }} \
3540
--mtl_path ${{ secrets.RUNNER_MTL_PATH }} \
3641
--ip_address 127.0.0.1 \

.github/workflows/smoke-tests.yml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,10 +32,15 @@ jobs:
3232
python3 -m venv .venv
3333
source .venv/bin/activate
3434
pip install -r requirements.txt
35+
- name: Create session ID
36+
run: |
37+
runner_name=${{ runner.name }}
38+
echo "SESSION_ID=${runner_name##*-}" >> "$GITHUB_ENV"
3539
- name: Generate test framework config files
3640
working-directory: tests/validation/configs
3741
run: |
3842
python3 gen_config.py \
43+
--session_id ${{ env.SESSION_ID }} \
3944
--build ${{ secrets.RUNNER_BUILD }} \
4045
--mtl_path ${{ secrets.RUNNER_MTL_PATH }} \
4146
--ip_address 127.0.0.1 \

tests/validation/configs/examples/test_config.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
session_id: 0
12
build: /path/to/mtl
23
mtl_path: /path/to/mtl
34
media_path: /mnt/media

tests/validation/configs/gen_config.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,9 @@
33
import yaml
44

55

6-
def gen_test_config(build: str, mtl_path: str) -> str:
6+
def gen_test_config(session_id: int, build: str, mtl_path: str) -> str:
77
test_config = {
8+
"session_id": session_id,
89
"build": build,
910
"mtl_path": mtl_path,
1011
"media_path": "/mnt/media",
@@ -62,6 +63,13 @@ def main() -> None:
6263
parser = argparse.ArgumentParser(
6364
description="Generate example test and topology configs for the test framework."
6465
)
66+
parser.add_argument(
67+
"--session_id",
68+
type=int,
69+
choices=range(0, 256),
70+
required=True,
71+
help="specify session ID (0 - 255)",
72+
)
6573
parser.add_argument(
6674
"--build",
6775
type=str,
@@ -102,7 +110,11 @@ def main() -> None:
102110
if args.password == "None" and args.key_path == "None":
103111
parser.error("one of the arguments --password --key_path is required")
104112
with open("test_config.yaml", "w") as file:
105-
file.write(gen_test_config(build=args.build, mtl_path=args.mtl_path))
113+
file.write(
114+
gen_test_config(
115+
session_id=args.session_id, build=args.build, mtl_path=args.mtl_path
116+
)
117+
)
106118
with open("topology_config.yaml", "w") as file:
107119
file.write(
108120
gen_topology_config(

tests/validation/conftest.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
import os
88
import shutil
99
import time
10-
from typing import Dict
10+
from typing import Any, Dict
1111

1212
import pytest
1313
from common.mtl_manager.mtlManager import MtlManager
@@ -17,6 +17,7 @@
1717
from mfd_common_libs.custom_logger import add_logging_level
1818
from mfd_common_libs.log_levels import TEST_FAIL, TEST_INFO, TEST_PASS
1919
from mfd_connect.exceptions import ConnectionCalledProcessError
20+
from mtl_engine import ip_pools
2021
from mtl_engine.const import FRAMES_CAPTURE, LOG_FOLDER, TESTCMD_LVL
2122
from mtl_engine.csv_report import (
2223
csv_add_test,
@@ -381,3 +382,9 @@ def fail_test(stage):
381382
)
382383

383384
clear_result_note()
385+
386+
387+
@pytest.fixture(scope="session", autouse=True)
388+
def init_ip_address_pools(test_config: dict[Any, Any]) -> None:
389+
session_id = int(test_config["session_id"])
390+
ip_pools.init(session_id=session_id)

tests/validation/mtl_engine/GstreamerApp.py

Lines changed: 28 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
import re
77
import time
88

9+
from mtl_engine import ip_pools
10+
911
from .execute import is_process_running, log_fail, run
1012

1113
logger = logging.getLogger(__name__)
@@ -27,8 +29,8 @@ def capture_stdout(process, process_name):
2729
def create_connection_params(
2830
dev_port: str,
2931
payload_type: str,
30-
dev_ip: str = "192.168.96.3",
31-
ip: str = "192.168.96.2",
32+
dev_ip: str,
33+
ip: str,
3234
udp_port: int = 20000,
3335
is_tx: bool = True,
3436
) -> dict:
@@ -111,7 +113,12 @@ def setup_gstreamer_st20p_tx_pipeline(
111113
tx_fps: int = None,
112114
):
113115
connection_params = create_connection_params(
114-
dev_port=nic_port_list, payload_type=tx_payload_type, udp_port=20000, is_tx=True
116+
dev_port=nic_port_list,
117+
payload_type=tx_payload_type,
118+
dev_ip=ip_pools.tx[0],
119+
ip=ip_pools.rx[0],
120+
udp_port=20000,
121+
is_tx=True,
115122
)
116123

117124
framerate = fract_format(framerate)
@@ -168,6 +175,8 @@ def setup_gstreamer_st20p_rx_pipeline(
168175
connection_params = create_connection_params(
169176
dev_port=nic_port_list,
170177
payload_type=rx_payload_type,
178+
dev_ip=ip_pools.tx[0],
179+
ip=ip_pools.rx[0],
171180
udp_port=20000,
172181
is_tx=False,
173182
)
@@ -210,7 +219,12 @@ def setup_gstreamer_st30_tx_pipeline(
210219
sampling: int,
211220
):
212221
connection_params = create_connection_params(
213-
dev_port=nic_port_list, payload_type=tx_payload_type, udp_port=30000, is_tx=True
222+
dev_port=nic_port_list,
223+
payload_type=tx_payload_type,
224+
dev_ip=ip_pools.tx[0],
225+
ip=ip_pools.rx[0],
226+
udp_port=30000,
227+
is_tx=True,
214228
)
215229

216230
# st30 tx GStreamer command line
@@ -245,6 +259,8 @@ def setup_gstreamer_st30_rx_pipeline(
245259
connection_params = create_connection_params(
246260
dev_port=nic_port_list,
247261
payload_type=rx_payload_type,
262+
dev_ip=ip_pools.tx[0],
263+
ip=ip_pools.rx[0],
248264
udp_port=30000,
249265
is_tx=False,
250266
)
@@ -287,7 +303,12 @@ def setup_gstreamer_st40p_tx_pipeline(
287303
tx_user_controlled_pacing_offset: int = 0,
288304
):
289305
connection_params = create_connection_params(
290-
dev_port=nic_port_list, payload_type=tx_payload_type, udp_port=40000, is_tx=True
306+
dev_port=nic_port_list,
307+
payload_type=tx_payload_type,
308+
dev_ip=ip_pools.tx[0],
309+
ip=ip_pools.rx[0],
310+
udp_port=40000,
311+
is_tx=True,
291312
)
292313

293314
pipeline_command = ["gst-launch-1.0"]
@@ -336,6 +357,8 @@ def setup_gstreamer_st40p_rx_pipeline(
336357
connection_params = create_connection_params(
337358
dev_port=nic_port_list,
338359
payload_type=rx_payload_type,
360+
dev_ip=ip_pools.tx[0],
361+
ip=ip_pools.rx[0],
339362
udp_port=40000,
340363
is_tx=False,
341364
)

tests/validation/mtl_engine/RxTxApp.py

Lines changed: 21 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,10 @@
66
import os
77
import re
88
import subprocess
9-
import sys
109
import time
1110

1211
from mfd_connect import SSHConnection
12+
from mtl_engine import ip_pools
1313

1414
from . import rxtxapp_config
1515
from .execute import log_fail, run
@@ -18,28 +18,6 @@
1818
logger = logging.getLogger(__name__)
1919

2020

21-
unicast_ip_dict = dict(
22-
tx_interfaces="192.168.17.101",
23-
rx_interfaces="192.168.17.102",
24-
tx_sessions="192.168.17.102",
25-
rx_sessions="192.168.17.101",
26-
)
27-
28-
multicast_ip_dict = dict(
29-
tx_interfaces="192.168.17.101",
30-
rx_interfaces="192.168.17.102",
31-
tx_sessions="239.168.48.9",
32-
rx_sessions="239.168.48.9",
33-
)
34-
35-
kernel_ip_dict = dict(
36-
tx_interfaces="192.168.17.101",
37-
rx_interfaces="192.168.17.102",
38-
tx_sessions="127.0.0.1",
39-
rx_sessions="127.0.0.1",
40-
)
41-
42-
4321
def capture_stdout(proc, proc_name: str):
4422
"""Capture and log stdout from a process"""
4523
try:
@@ -74,18 +52,18 @@ def add_interfaces(config: dict, nic_port_list: list, test_mode: str) -> dict:
7452
config["interfaces"][1]["name"] = nic_port_list[1]
7553

7654
if test_mode == "unicast":
77-
config["interfaces"][0]["ip"] = unicast_ip_dict["tx_interfaces"]
78-
config["interfaces"][1]["ip"] = unicast_ip_dict["rx_interfaces"]
79-
config["tx_sessions"][0]["dip"][0] = unicast_ip_dict["tx_sessions"]
80-
config["rx_sessions"][0]["ip"][0] = unicast_ip_dict["rx_sessions"]
55+
config["interfaces"][0]["ip"] = ip_pools.tx[0]
56+
config["interfaces"][1]["ip"] = ip_pools.rx[0]
57+
config["tx_sessions"][0]["dip"][0] = ip_pools.rx[0]
58+
config["rx_sessions"][0]["ip"][0] = ip_pools.tx[0]
8159
elif test_mode == "multicast":
82-
config["interfaces"][0]["ip"] = multicast_ip_dict["tx_interfaces"]
83-
config["interfaces"][1]["ip"] = multicast_ip_dict["rx_interfaces"]
84-
config["tx_sessions"][0]["dip"][0] = multicast_ip_dict["tx_sessions"]
85-
config["rx_sessions"][0]["ip"][0] = multicast_ip_dict["rx_sessions"]
60+
config["interfaces"][0]["ip"] = ip_pools.tx[0]
61+
config["interfaces"][1]["ip"] = ip_pools.rx[0]
62+
config["tx_sessions"][0]["dip"][0] = ip_pools.rx_multicast[0]
63+
config["rx_sessions"][0]["ip"][0] = ip_pools.rx_multicast[0]
8664
elif test_mode == "kernel":
87-
config["tx_sessions"][0]["dip"][0] = kernel_ip_dict["tx_sessions"]
88-
config["rx_sessions"][0]["ip"][0] = kernel_ip_dict["rx_sessions"]
65+
config["tx_sessions"][0]["dip"][0] = "127.0.0.1"
66+
config["rx_sessions"][0]["ip"][0] = "127.0.0.1"
8967
else:
9068
log_fail(f"wrong test_mode {test_mode}")
9169

@@ -1161,22 +1139,18 @@ def add_dual_interfaces(
11611139
rx_config["interfaces"][0]["name"] = rx_nic_port_list[0]
11621140

11631141
if test_mode == "unicast":
1164-
tx_config["interfaces"][0]["ip"] = unicast_ip_dict["tx_interfaces"]
1165-
rx_config["interfaces"][0]["ip"] = unicast_ip_dict["rx_interfaces"]
1166-
tx_config["tx_sessions"][0]["dip"][0] = unicast_ip_dict[
1167-
"rx_interfaces"
1168-
] # TX sends to RX IP
1169-
rx_config["rx_sessions"][0]["ip"][0] = unicast_ip_dict[
1170-
"tx_interfaces"
1171-
] # RX listens for TX IP
1142+
tx_config["interfaces"][0]["ip"] = ip_pools.tx[0]
1143+
rx_config["interfaces"][0]["ip"] = ip_pools.rx[0]
1144+
tx_config["tx_sessions"][0]["dip"][0] = ip_pools.rx[0]
1145+
rx_config["rx_sessions"][0]["ip"][0] = ip_pools.tx[0]
11721146
elif test_mode == "multicast":
1173-
tx_config["interfaces"][0]["ip"] = multicast_ip_dict["tx_interfaces"]
1174-
rx_config["interfaces"][0]["ip"] = multicast_ip_dict["rx_interfaces"]
1175-
tx_config["tx_sessions"][0]["dip"][0] = multicast_ip_dict["tx_sessions"]
1176-
rx_config["rx_sessions"][0]["ip"][0] = multicast_ip_dict["rx_sessions"]
1147+
tx_config["interfaces"][0]["ip"] = ip_pools.tx[0]
1148+
rx_config["interfaces"][0]["ip"] = ip_pools.rx[0]
1149+
tx_config["tx_sessions"][0]["dip"][0] = ip_pools.rx_multicast[0]
1150+
rx_config["rx_sessions"][0]["ip"][0] = ip_pools.rx_multicast[0]
11771151
elif test_mode == "kernel":
1178-
tx_config["tx_sessions"][0]["dip"][0] = kernel_ip_dict["tx_sessions"]
1179-
rx_config["rx_sessions"][0]["ip"][0] = kernel_ip_dict["rx_sessions"]
1152+
tx_config["tx_sessions"][0]["dip"][0] = "127.0.0.1"
1153+
rx_config["rx_sessions"][0]["ip"][0] = "127.0.0.1"
11801154
else:
11811155
log_fail(f"wrong test_mode {test_mode}")
11821156

0 commit comments

Comments
 (0)