hyper-wireless 1.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- hyper_wireless-1.0.0/PKG-INFO +160 -0
- hyper_wireless-1.0.0/README.md +144 -0
- hyper_wireless-1.0.0/pyproject.toml +35 -0
- hyper_wireless-1.0.0/setup.cfg +4 -0
- hyper_wireless-1.0.0/tools/hyper_wireless.egg-info/PKG-INFO +160 -0
- hyper_wireless-1.0.0/tools/hyper_wireless.egg-info/SOURCES.txt +9 -0
- hyper_wireless-1.0.0/tools/hyper_wireless.egg-info/dependency_links.txt +1 -0
- hyper_wireless-1.0.0/tools/hyper_wireless.egg-info/entry_points.txt +3 -0
- hyper_wireless-1.0.0/tools/hyper_wireless.egg-info/requires.txt +2 -0
- hyper_wireless-1.0.0/tools/hyper_wireless.egg-info/top_level.txt +1 -0
- hyper_wireless-1.0.0/tools/ttcn3_cloud_cli.py +994 -0
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hyper-wireless
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Hyper Wireless - Cloud Testing Platform for 3GPP 5G NR Conformance
|
|
5
|
+
Author-email: Hyper Wireless Team <dev@hyper-wireless.com>
|
|
6
|
+
Project-URL: Homepage, https://hyper-wireless.com
|
|
7
|
+
Project-URL: Dashboard, https://app.hyper-wireless.com
|
|
8
|
+
Project-URL: API, https://cloud-api.hyper-wireless.com
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Topic :: Software Development :: Testing
|
|
11
|
+
Classifier: Topic :: System :: Networking
|
|
12
|
+
Requires-Python: >=3.8
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: requests>=2.28.0
|
|
15
|
+
Requires-Dist: websockets>=12.0
|
|
16
|
+
|
|
17
|
+
# TTCPP (TTCN-3 C++ Test Suite)
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
**TTCPP** is a C++ implementation of the 3GPP 5G test suite, originally written in TTCN-3. It is designed to test the 5G UE stack (specifically using `srsRAN_5G`'s `srsue` implementation). By transpiling the TTCN-3 test cases and components into C++, TTCPP offers a native, performant environment for 5G testing, completely bypassing the need for a traditional TTCN-3 compiler or heavy runtime environment.
|
|
22
|
+
|
|
23
|
+
The test suite acts as the network (AMF/gNB) and communicates with the Device Under Test (DUT), the `srsue` stack (packaged as `ttcn3_dut`), exchanging RRC, NAS, and IP packets to validate compliance against 3GPP specifications (such as TS 24.501 and TS 38.331).
|
|
24
|
+
|
|
25
|
+
## Key Features
|
|
26
|
+
|
|
27
|
+
- **Native C++ Execution:** The test cases are transpiled from TTCN-3 to modern C++ (`src/TTCN_TestSuite`), enabling standard debugging (GDB, LLDB) and high performance.
|
|
28
|
+
- **5G UE Testing:** Directly integrates with `srsRAN_5G` to validate UE behavior.
|
|
29
|
+
- **Custom Port Handlers:** C++ implementations for standard TTCN-3 port operations (handling sockets, threading, and system-level IPC) in `src/components/` and `src/common/`.
|
|
30
|
+
- **Message Sequence Charts (MSC):** Automatic parsing of test logs to render visual sequence diagrams of test execution.
|
|
31
|
+
- **Web GUI:** A modern Next.js-based graphical dashboard for managing, executing, and reviewing tests.
|
|
32
|
+
|
|
33
|
+
## Directory Structure
|
|
34
|
+
|
|
35
|
+
- `src/` - Source code for the transpiled test suite, custom components, codecs, and security algorithms.
|
|
36
|
+
- `src/suites/<version>/` - Isolated C++ transpiled test suite packages (e.g. `NR5GC_IWD_25wk50`).
|
|
37
|
+
- `src/TTCN_TestSuite/` - Symlink pointing to the active suite's transpiled modules.
|
|
38
|
+
- `src/components/` - TTCN-3 port and component handlers.
|
|
39
|
+
- `src/main.cpp` - The entry point for the `ttcn3_runner` test executor.
|
|
40
|
+
- `ttcn/` - Contains raw TTCN-3 packages organized by deliverable version (e.g. `ttcn/NR5GC_IWD_25wk50/`).
|
|
41
|
+
- `configs/` - Modular configuration repository:
|
|
42
|
+
- `configs/transpiler/` - Base transpiler configurations and transforms for `TTCN3-X`.
|
|
43
|
+
- `configs/suites/` - Per-suite transpiler overlay configurations.
|
|
44
|
+
- `configs/modulepars/` - Per-suite module parameters (PICS/PIXIT).
|
|
45
|
+
- `srsRAN_5G/` - The full-stack 5G RAN and UE source code repository, which compiles the `ttcn3_dut` UE simulator executable.
|
|
46
|
+
- `tools/` - Utility scripts and tools.
|
|
47
|
+
- `tools/suite_manager.py` - Test suite version manager (list, info, switch, transpile).
|
|
48
|
+
- `logs/` - Directory where test execution logs and artifacts are stored.
|
|
49
|
+
- `usim.cfg` - Configuration for the simulated USIM (Home PLMN, Equivalent PLMNs, etc.).
|
|
50
|
+
|
|
51
|
+
## Prerequisites & System Dependencies
|
|
52
|
+
|
|
53
|
+
To compile and run the test suite (specifically the virtual USIM smartcard integration), the following system dependencies and packages are required:
|
|
54
|
+
|
|
55
|
+
### 1. Host Packages
|
|
56
|
+
Install PC/SC daemon, PCSC-Lite development headers, and tools:
|
|
57
|
+
```bash
|
|
58
|
+
sudo apt-get install pcscd libpcsclite-dev pcsc-tools
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. Virtual Smartcard Simulator (`onomondo-uicc`)
|
|
62
|
+
- Implements the softsim smartcard that simulates physical UICC/USIM behavior over PC/SC.
|
|
63
|
+
- Should be cloned and built in a sibling directory (e.g., `../onomondo-uicc` relative to this repository). Respository URL: https://github.com/onomondo/onomondo-uicc.git
|
|
64
|
+
- The test runner defaults to this sibling directory, but you can override it by exporting the `ONOMONDO_UICC_DIR` environment variable.
|
|
65
|
+
- Ensure it is compiled before running tests:
|
|
66
|
+
```bash
|
|
67
|
+
cd ../onomondo-uicc
|
|
68
|
+
make # or standard build commands for softsim
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 3. SIM Card Configuration Utility (`pySim`)
|
|
72
|
+
- Used by the test suite to configure the softsim smartcard (programming IMSIs, security parameters, resetting SQNs, etc.).
|
|
73
|
+
- Should be set up in a sibling directory (e.g., `../pysim` relative to this repository). Respository URL: https://github.com/osmocom/pysim.git
|
|
74
|
+
- The test runner defaults to this sibling directory, but you can override it by exporting the `PYSIM_DIR` environment variable.
|
|
75
|
+
- Ensure the virtual environment and requirements are prepared:
|
|
76
|
+
```bash
|
|
77
|
+
cd ../pysim
|
|
78
|
+
python3 -m venv venv
|
|
79
|
+
./venv/bin/pip install -r requirements.txt
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Building the Project
|
|
83
|
+
|
|
84
|
+
This project uses CMake for its build system. Only the LLVM Clang compiler is supported for building the C++ test runner due to GCC's high CPU consumption during parallel compilation.
|
|
85
|
+
|
|
86
|
+
### 1. Build the C++ Test Runner (`ttcn3_runner`)
|
|
87
|
+
Configure and build the runner using the Clang preset:
|
|
88
|
+
```bash
|
|
89
|
+
cmake --preset clang
|
|
90
|
+
cmake --build build-clang -j$(nproc) --target ttcn3_runner
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 2. Build the UE Simulator (`ttcn3_dut`)
|
|
94
|
+
Build the simulator inside the `srsRAN_5G` subdirectory:
|
|
95
|
+
```bash
|
|
96
|
+
cd srsRAN_5G
|
|
97
|
+
mkdir -p build
|
|
98
|
+
cd build
|
|
99
|
+
cmake .. -G Ninja -DENABLE_TTCN3=ON -DENABLE_TTCN3_NR=ON
|
|
100
|
+
ninja ttcn3_dut
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Managing TTCN-3 Test Suite Versions
|
|
104
|
+
|
|
105
|
+
TTCPP supports multiple co-existing versions of the 3GPP TTCN-3 test suite. Use `./tools/suite_manager.py` to inspect, switch, and transpile test suite versions:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# List all available raw and transpiled test suite versions
|
|
109
|
+
./tools/suite_manager.py list
|
|
110
|
+
|
|
111
|
+
# View detailed information about a specific suite
|
|
112
|
+
./tools/suite_manager.py info NR5GC_IWD_25wk50
|
|
113
|
+
|
|
114
|
+
# Switch the active test suite profile
|
|
115
|
+
./tools/suite_manager.py switch NR5GC_IWD_25wk50
|
|
116
|
+
|
|
117
|
+
# Transpile a new TTCN-3 deliverable package
|
|
118
|
+
./tools/suite_manager.py transpile NR5GC_IWD_26wk08
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Running Tests
|
|
122
|
+
|
|
123
|
+
Test execution is orchestrated using the provided bash script, `./tools/scripts/run_test.sh`. This script handles launching the `ttcn3_dut` and the `ttcn3_runner` processes, establishing their communication via sockets.
|
|
124
|
+
|
|
125
|
+
To run a specific test case (using the active suite):
|
|
126
|
+
```bash
|
|
127
|
+
./tools/scripts/run_test.sh <TEST_CASE_NAME>
|
|
128
|
+
|
|
129
|
+
# Example:
|
|
130
|
+
./tools/scripts/run_test.sh TC_6_1_1_1_NR5GC
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
To run a test case against a specific test suite version:
|
|
134
|
+
```bash
|
|
135
|
+
./tools/scripts/run_test.sh --suite NR5GC_IWD_25wk50 TC_6_1_1_1_NR5GC
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Test logs (such as `tc_runner.log` and `ttcn3_ue.log`) will be populated in a subfolder corresponding to the test case inside the `logs/` directory (e.g., `logs/<TEST_CASE_NAME>/`).
|
|
139
|
+
|
|
140
|
+
## Upper Tester (UT) Integration
|
|
141
|
+
|
|
142
|
+
The test suite orchestrates testcase execution and logs via Upper Tester (UT) interface messages exchanged between the runner (`ttcn3_runner`) and the simulator (`ttcn3_dut`).
|
|
143
|
+
|
|
144
|
+
In addition to standard MMI commands, the runner sends the following native UT control messages:
|
|
145
|
+
- **`TC_START`**: Sent at the start of a test run to initialize the simulator's logging sink and parameterize the simulator logs (e.g., `logs/<TEST_CASE_NAME>/<TEST_CASE_NAME>_run0_ttcn3_ue.log`) dynamically with the active testcase name.
|
|
146
|
+
- JSON payload: `{"Cmd": {"TC_START": {"Name": "<TEST_CASE_NAME>"}}}`
|
|
147
|
+
- **`TC_END`**: Sent at the end of a test run to finalize the simulator's test case context.
|
|
148
|
+
- JSON payload: `{"Cmd": {"TC_END": null}}`
|
|
149
|
+
|
|
150
|
+
## GUI Dashboard
|
|
151
|
+
|
|
152
|
+
A graphical web dashboard is provided to easily manage test execution, view historical test runs, and visualize signaling logs using Mermaid.js MSCs.
|
|
153
|
+
|
|
154
|
+
To start the GUI:
|
|
155
|
+
```bash
|
|
156
|
+
cd tools/gui
|
|
157
|
+
npm install
|
|
158
|
+
npm run dev
|
|
159
|
+
```
|
|
160
|
+
Navigate to `http://localhost:3000` to access the dashboard.
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
# TTCPP (TTCN-3 C++ Test Suite)
|
|
2
|
+
|
|
3
|
+
## Overview
|
|
4
|
+
|
|
5
|
+
**TTCPP** is a C++ implementation of the 3GPP 5G test suite, originally written in TTCN-3. It is designed to test the 5G UE stack (specifically using `srsRAN_5G`'s `srsue` implementation). By transpiling the TTCN-3 test cases and components into C++, TTCPP offers a native, performant environment for 5G testing, completely bypassing the need for a traditional TTCN-3 compiler or heavy runtime environment.
|
|
6
|
+
|
|
7
|
+
The test suite acts as the network (AMF/gNB) and communicates with the Device Under Test (DUT), the `srsue` stack (packaged as `ttcn3_dut`), exchanging RRC, NAS, and IP packets to validate compliance against 3GPP specifications (such as TS 24.501 and TS 38.331).
|
|
8
|
+
|
|
9
|
+
## Key Features
|
|
10
|
+
|
|
11
|
+
- **Native C++ Execution:** The test cases are transpiled from TTCN-3 to modern C++ (`src/TTCN_TestSuite`), enabling standard debugging (GDB, LLDB) and high performance.
|
|
12
|
+
- **5G UE Testing:** Directly integrates with `srsRAN_5G` to validate UE behavior.
|
|
13
|
+
- **Custom Port Handlers:** C++ implementations for standard TTCN-3 port operations (handling sockets, threading, and system-level IPC) in `src/components/` and `src/common/`.
|
|
14
|
+
- **Message Sequence Charts (MSC):** Automatic parsing of test logs to render visual sequence diagrams of test execution.
|
|
15
|
+
- **Web GUI:** A modern Next.js-based graphical dashboard for managing, executing, and reviewing tests.
|
|
16
|
+
|
|
17
|
+
## Directory Structure
|
|
18
|
+
|
|
19
|
+
- `src/` - Source code for the transpiled test suite, custom components, codecs, and security algorithms.
|
|
20
|
+
- `src/suites/<version>/` - Isolated C++ transpiled test suite packages (e.g. `NR5GC_IWD_25wk50`).
|
|
21
|
+
- `src/TTCN_TestSuite/` - Symlink pointing to the active suite's transpiled modules.
|
|
22
|
+
- `src/components/` - TTCN-3 port and component handlers.
|
|
23
|
+
- `src/main.cpp` - The entry point for the `ttcn3_runner` test executor.
|
|
24
|
+
- `ttcn/` - Contains raw TTCN-3 packages organized by deliverable version (e.g. `ttcn/NR5GC_IWD_25wk50/`).
|
|
25
|
+
- `configs/` - Modular configuration repository:
|
|
26
|
+
- `configs/transpiler/` - Base transpiler configurations and transforms for `TTCN3-X`.
|
|
27
|
+
- `configs/suites/` - Per-suite transpiler overlay configurations.
|
|
28
|
+
- `configs/modulepars/` - Per-suite module parameters (PICS/PIXIT).
|
|
29
|
+
- `srsRAN_5G/` - The full-stack 5G RAN and UE source code repository, which compiles the `ttcn3_dut` UE simulator executable.
|
|
30
|
+
- `tools/` - Utility scripts and tools.
|
|
31
|
+
- `tools/suite_manager.py` - Test suite version manager (list, info, switch, transpile).
|
|
32
|
+
- `logs/` - Directory where test execution logs and artifacts are stored.
|
|
33
|
+
- `usim.cfg` - Configuration for the simulated USIM (Home PLMN, Equivalent PLMNs, etc.).
|
|
34
|
+
|
|
35
|
+
## Prerequisites & System Dependencies
|
|
36
|
+
|
|
37
|
+
To compile and run the test suite (specifically the virtual USIM smartcard integration), the following system dependencies and packages are required:
|
|
38
|
+
|
|
39
|
+
### 1. Host Packages
|
|
40
|
+
Install PC/SC daemon, PCSC-Lite development headers, and tools:
|
|
41
|
+
```bash
|
|
42
|
+
sudo apt-get install pcscd libpcsclite-dev pcsc-tools
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### 2. Virtual Smartcard Simulator (`onomondo-uicc`)
|
|
46
|
+
- Implements the softsim smartcard that simulates physical UICC/USIM behavior over PC/SC.
|
|
47
|
+
- Should be cloned and built in a sibling directory (e.g., `../onomondo-uicc` relative to this repository). Respository URL: https://github.com/onomondo/onomondo-uicc.git
|
|
48
|
+
- The test runner defaults to this sibling directory, but you can override it by exporting the `ONOMONDO_UICC_DIR` environment variable.
|
|
49
|
+
- Ensure it is compiled before running tests:
|
|
50
|
+
```bash
|
|
51
|
+
cd ../onomondo-uicc
|
|
52
|
+
make # or standard build commands for softsim
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 3. SIM Card Configuration Utility (`pySim`)
|
|
56
|
+
- Used by the test suite to configure the softsim smartcard (programming IMSIs, security parameters, resetting SQNs, etc.).
|
|
57
|
+
- Should be set up in a sibling directory (e.g., `../pysim` relative to this repository). Respository URL: https://github.com/osmocom/pysim.git
|
|
58
|
+
- The test runner defaults to this sibling directory, but you can override it by exporting the `PYSIM_DIR` environment variable.
|
|
59
|
+
- Ensure the virtual environment and requirements are prepared:
|
|
60
|
+
```bash
|
|
61
|
+
cd ../pysim
|
|
62
|
+
python3 -m venv venv
|
|
63
|
+
./venv/bin/pip install -r requirements.txt
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
## Building the Project
|
|
67
|
+
|
|
68
|
+
This project uses CMake for its build system. Only the LLVM Clang compiler is supported for building the C++ test runner due to GCC's high CPU consumption during parallel compilation.
|
|
69
|
+
|
|
70
|
+
### 1. Build the C++ Test Runner (`ttcn3_runner`)
|
|
71
|
+
Configure and build the runner using the Clang preset:
|
|
72
|
+
```bash
|
|
73
|
+
cmake --preset clang
|
|
74
|
+
cmake --build build-clang -j$(nproc) --target ttcn3_runner
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### 2. Build the UE Simulator (`ttcn3_dut`)
|
|
78
|
+
Build the simulator inside the `srsRAN_5G` subdirectory:
|
|
79
|
+
```bash
|
|
80
|
+
cd srsRAN_5G
|
|
81
|
+
mkdir -p build
|
|
82
|
+
cd build
|
|
83
|
+
cmake .. -G Ninja -DENABLE_TTCN3=ON -DENABLE_TTCN3_NR=ON
|
|
84
|
+
ninja ttcn3_dut
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Managing TTCN-3 Test Suite Versions
|
|
88
|
+
|
|
89
|
+
TTCPP supports multiple co-existing versions of the 3GPP TTCN-3 test suite. Use `./tools/suite_manager.py` to inspect, switch, and transpile test suite versions:
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
# List all available raw and transpiled test suite versions
|
|
93
|
+
./tools/suite_manager.py list
|
|
94
|
+
|
|
95
|
+
# View detailed information about a specific suite
|
|
96
|
+
./tools/suite_manager.py info NR5GC_IWD_25wk50
|
|
97
|
+
|
|
98
|
+
# Switch the active test suite profile
|
|
99
|
+
./tools/suite_manager.py switch NR5GC_IWD_25wk50
|
|
100
|
+
|
|
101
|
+
# Transpile a new TTCN-3 deliverable package
|
|
102
|
+
./tools/suite_manager.py transpile NR5GC_IWD_26wk08
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
## Running Tests
|
|
106
|
+
|
|
107
|
+
Test execution is orchestrated using the provided bash script, `./tools/scripts/run_test.sh`. This script handles launching the `ttcn3_dut` and the `ttcn3_runner` processes, establishing their communication via sockets.
|
|
108
|
+
|
|
109
|
+
To run a specific test case (using the active suite):
|
|
110
|
+
```bash
|
|
111
|
+
./tools/scripts/run_test.sh <TEST_CASE_NAME>
|
|
112
|
+
|
|
113
|
+
# Example:
|
|
114
|
+
./tools/scripts/run_test.sh TC_6_1_1_1_NR5GC
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
To run a test case against a specific test suite version:
|
|
118
|
+
```bash
|
|
119
|
+
./tools/scripts/run_test.sh --suite NR5GC_IWD_25wk50 TC_6_1_1_1_NR5GC
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Test logs (such as `tc_runner.log` and `ttcn3_ue.log`) will be populated in a subfolder corresponding to the test case inside the `logs/` directory (e.g., `logs/<TEST_CASE_NAME>/`).
|
|
123
|
+
|
|
124
|
+
## Upper Tester (UT) Integration
|
|
125
|
+
|
|
126
|
+
The test suite orchestrates testcase execution and logs via Upper Tester (UT) interface messages exchanged between the runner (`ttcn3_runner`) and the simulator (`ttcn3_dut`).
|
|
127
|
+
|
|
128
|
+
In addition to standard MMI commands, the runner sends the following native UT control messages:
|
|
129
|
+
- **`TC_START`**: Sent at the start of a test run to initialize the simulator's logging sink and parameterize the simulator logs (e.g., `logs/<TEST_CASE_NAME>/<TEST_CASE_NAME>_run0_ttcn3_ue.log`) dynamically with the active testcase name.
|
|
130
|
+
- JSON payload: `{"Cmd": {"TC_START": {"Name": "<TEST_CASE_NAME>"}}}`
|
|
131
|
+
- **`TC_END`**: Sent at the end of a test run to finalize the simulator's test case context.
|
|
132
|
+
- JSON payload: `{"Cmd": {"TC_END": null}}`
|
|
133
|
+
|
|
134
|
+
## GUI Dashboard
|
|
135
|
+
|
|
136
|
+
A graphical web dashboard is provided to easily manage test execution, view historical test runs, and visualize signaling logs using Mermaid.js MSCs.
|
|
137
|
+
|
|
138
|
+
To start the GUI:
|
|
139
|
+
```bash
|
|
140
|
+
cd tools/gui
|
|
141
|
+
npm install
|
|
142
|
+
npm run dev
|
|
143
|
+
```
|
|
144
|
+
Navigate to `http://localhost:3000` to access the dashboard.
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "hyper-wireless"
|
|
7
|
+
version = "1.0.0"
|
|
8
|
+
description = "Hyper Wireless - Cloud Testing Platform for 3GPP 5G NR Conformance"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.8"
|
|
11
|
+
authors = [
|
|
12
|
+
{ name = "Hyper Wireless Team", email = "dev@hyper-wireless.com" }
|
|
13
|
+
]
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Programming Language :: Python :: 3",
|
|
16
|
+
"Topic :: Software Development :: Testing",
|
|
17
|
+
"Topic :: System :: Networking",
|
|
18
|
+
]
|
|
19
|
+
dependencies = [
|
|
20
|
+
"requests>=2.28.0",
|
|
21
|
+
"websockets>=12.0",
|
|
22
|
+
]
|
|
23
|
+
|
|
24
|
+
[project.urls]
|
|
25
|
+
Homepage = "https://hyper-wireless.com"
|
|
26
|
+
Dashboard = "https://app.hyper-wireless.com"
|
|
27
|
+
API = "https://cloud-api.hyper-wireless.com"
|
|
28
|
+
|
|
29
|
+
[project.scripts]
|
|
30
|
+
hyper-wireless = "ttcn3_cloud_cli:main"
|
|
31
|
+
hyper = "ttcn3_cloud_cli:main"
|
|
32
|
+
|
|
33
|
+
[tool.setuptools]
|
|
34
|
+
py-modules = ["ttcn3_cloud_cli"]
|
|
35
|
+
package-dir = {"" = "tools"}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: hyper-wireless
|
|
3
|
+
Version: 1.0.0
|
|
4
|
+
Summary: Hyper Wireless - Cloud Testing Platform for 3GPP 5G NR Conformance
|
|
5
|
+
Author-email: Hyper Wireless Team <dev@hyper-wireless.com>
|
|
6
|
+
Project-URL: Homepage, https://hyper-wireless.com
|
|
7
|
+
Project-URL: Dashboard, https://app.hyper-wireless.com
|
|
8
|
+
Project-URL: API, https://cloud-api.hyper-wireless.com
|
|
9
|
+
Classifier: Programming Language :: Python :: 3
|
|
10
|
+
Classifier: Topic :: Software Development :: Testing
|
|
11
|
+
Classifier: Topic :: System :: Networking
|
|
12
|
+
Requires-Python: >=3.8
|
|
13
|
+
Description-Content-Type: text/markdown
|
|
14
|
+
Requires-Dist: requests>=2.28.0
|
|
15
|
+
Requires-Dist: websockets>=12.0
|
|
16
|
+
|
|
17
|
+
# TTCPP (TTCN-3 C++ Test Suite)
|
|
18
|
+
|
|
19
|
+
## Overview
|
|
20
|
+
|
|
21
|
+
**TTCPP** is a C++ implementation of the 3GPP 5G test suite, originally written in TTCN-3. It is designed to test the 5G UE stack (specifically using `srsRAN_5G`'s `srsue` implementation). By transpiling the TTCN-3 test cases and components into C++, TTCPP offers a native, performant environment for 5G testing, completely bypassing the need for a traditional TTCN-3 compiler or heavy runtime environment.
|
|
22
|
+
|
|
23
|
+
The test suite acts as the network (AMF/gNB) and communicates with the Device Under Test (DUT), the `srsue` stack (packaged as `ttcn3_dut`), exchanging RRC, NAS, and IP packets to validate compliance against 3GPP specifications (such as TS 24.501 and TS 38.331).
|
|
24
|
+
|
|
25
|
+
## Key Features
|
|
26
|
+
|
|
27
|
+
- **Native C++ Execution:** The test cases are transpiled from TTCN-3 to modern C++ (`src/TTCN_TestSuite`), enabling standard debugging (GDB, LLDB) and high performance.
|
|
28
|
+
- **5G UE Testing:** Directly integrates with `srsRAN_5G` to validate UE behavior.
|
|
29
|
+
- **Custom Port Handlers:** C++ implementations for standard TTCN-3 port operations (handling sockets, threading, and system-level IPC) in `src/components/` and `src/common/`.
|
|
30
|
+
- **Message Sequence Charts (MSC):** Automatic parsing of test logs to render visual sequence diagrams of test execution.
|
|
31
|
+
- **Web GUI:** A modern Next.js-based graphical dashboard for managing, executing, and reviewing tests.
|
|
32
|
+
|
|
33
|
+
## Directory Structure
|
|
34
|
+
|
|
35
|
+
- `src/` - Source code for the transpiled test suite, custom components, codecs, and security algorithms.
|
|
36
|
+
- `src/suites/<version>/` - Isolated C++ transpiled test suite packages (e.g. `NR5GC_IWD_25wk50`).
|
|
37
|
+
- `src/TTCN_TestSuite/` - Symlink pointing to the active suite's transpiled modules.
|
|
38
|
+
- `src/components/` - TTCN-3 port and component handlers.
|
|
39
|
+
- `src/main.cpp` - The entry point for the `ttcn3_runner` test executor.
|
|
40
|
+
- `ttcn/` - Contains raw TTCN-3 packages organized by deliverable version (e.g. `ttcn/NR5GC_IWD_25wk50/`).
|
|
41
|
+
- `configs/` - Modular configuration repository:
|
|
42
|
+
- `configs/transpiler/` - Base transpiler configurations and transforms for `TTCN3-X`.
|
|
43
|
+
- `configs/suites/` - Per-suite transpiler overlay configurations.
|
|
44
|
+
- `configs/modulepars/` - Per-suite module parameters (PICS/PIXIT).
|
|
45
|
+
- `srsRAN_5G/` - The full-stack 5G RAN and UE source code repository, which compiles the `ttcn3_dut` UE simulator executable.
|
|
46
|
+
- `tools/` - Utility scripts and tools.
|
|
47
|
+
- `tools/suite_manager.py` - Test suite version manager (list, info, switch, transpile).
|
|
48
|
+
- `logs/` - Directory where test execution logs and artifacts are stored.
|
|
49
|
+
- `usim.cfg` - Configuration for the simulated USIM (Home PLMN, Equivalent PLMNs, etc.).
|
|
50
|
+
|
|
51
|
+
## Prerequisites & System Dependencies
|
|
52
|
+
|
|
53
|
+
To compile and run the test suite (specifically the virtual USIM smartcard integration), the following system dependencies and packages are required:
|
|
54
|
+
|
|
55
|
+
### 1. Host Packages
|
|
56
|
+
Install PC/SC daemon, PCSC-Lite development headers, and tools:
|
|
57
|
+
```bash
|
|
58
|
+
sudo apt-get install pcscd libpcsclite-dev pcsc-tools
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### 2. Virtual Smartcard Simulator (`onomondo-uicc`)
|
|
62
|
+
- Implements the softsim smartcard that simulates physical UICC/USIM behavior over PC/SC.
|
|
63
|
+
- Should be cloned and built in a sibling directory (e.g., `../onomondo-uicc` relative to this repository). Respository URL: https://github.com/onomondo/onomondo-uicc.git
|
|
64
|
+
- The test runner defaults to this sibling directory, but you can override it by exporting the `ONOMONDO_UICC_DIR` environment variable.
|
|
65
|
+
- Ensure it is compiled before running tests:
|
|
66
|
+
```bash
|
|
67
|
+
cd ../onomondo-uicc
|
|
68
|
+
make # or standard build commands for softsim
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 3. SIM Card Configuration Utility (`pySim`)
|
|
72
|
+
- Used by the test suite to configure the softsim smartcard (programming IMSIs, security parameters, resetting SQNs, etc.).
|
|
73
|
+
- Should be set up in a sibling directory (e.g., `../pysim` relative to this repository). Respository URL: https://github.com/osmocom/pysim.git
|
|
74
|
+
- The test runner defaults to this sibling directory, but you can override it by exporting the `PYSIM_DIR` environment variable.
|
|
75
|
+
- Ensure the virtual environment and requirements are prepared:
|
|
76
|
+
```bash
|
|
77
|
+
cd ../pysim
|
|
78
|
+
python3 -m venv venv
|
|
79
|
+
./venv/bin/pip install -r requirements.txt
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Building the Project
|
|
83
|
+
|
|
84
|
+
This project uses CMake for its build system. Only the LLVM Clang compiler is supported for building the C++ test runner due to GCC's high CPU consumption during parallel compilation.
|
|
85
|
+
|
|
86
|
+
### 1. Build the C++ Test Runner (`ttcn3_runner`)
|
|
87
|
+
Configure and build the runner using the Clang preset:
|
|
88
|
+
```bash
|
|
89
|
+
cmake --preset clang
|
|
90
|
+
cmake --build build-clang -j$(nproc) --target ttcn3_runner
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
### 2. Build the UE Simulator (`ttcn3_dut`)
|
|
94
|
+
Build the simulator inside the `srsRAN_5G` subdirectory:
|
|
95
|
+
```bash
|
|
96
|
+
cd srsRAN_5G
|
|
97
|
+
mkdir -p build
|
|
98
|
+
cd build
|
|
99
|
+
cmake .. -G Ninja -DENABLE_TTCN3=ON -DENABLE_TTCN3_NR=ON
|
|
100
|
+
ninja ttcn3_dut
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Managing TTCN-3 Test Suite Versions
|
|
104
|
+
|
|
105
|
+
TTCPP supports multiple co-existing versions of the 3GPP TTCN-3 test suite. Use `./tools/suite_manager.py` to inspect, switch, and transpile test suite versions:
|
|
106
|
+
|
|
107
|
+
```bash
|
|
108
|
+
# List all available raw and transpiled test suite versions
|
|
109
|
+
./tools/suite_manager.py list
|
|
110
|
+
|
|
111
|
+
# View detailed information about a specific suite
|
|
112
|
+
./tools/suite_manager.py info NR5GC_IWD_25wk50
|
|
113
|
+
|
|
114
|
+
# Switch the active test suite profile
|
|
115
|
+
./tools/suite_manager.py switch NR5GC_IWD_25wk50
|
|
116
|
+
|
|
117
|
+
# Transpile a new TTCN-3 deliverable package
|
|
118
|
+
./tools/suite_manager.py transpile NR5GC_IWD_26wk08
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## Running Tests
|
|
122
|
+
|
|
123
|
+
Test execution is orchestrated using the provided bash script, `./tools/scripts/run_test.sh`. This script handles launching the `ttcn3_dut` and the `ttcn3_runner` processes, establishing their communication via sockets.
|
|
124
|
+
|
|
125
|
+
To run a specific test case (using the active suite):
|
|
126
|
+
```bash
|
|
127
|
+
./tools/scripts/run_test.sh <TEST_CASE_NAME>
|
|
128
|
+
|
|
129
|
+
# Example:
|
|
130
|
+
./tools/scripts/run_test.sh TC_6_1_1_1_NR5GC
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
To run a test case against a specific test suite version:
|
|
134
|
+
```bash
|
|
135
|
+
./tools/scripts/run_test.sh --suite NR5GC_IWD_25wk50 TC_6_1_1_1_NR5GC
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
Test logs (such as `tc_runner.log` and `ttcn3_ue.log`) will be populated in a subfolder corresponding to the test case inside the `logs/` directory (e.g., `logs/<TEST_CASE_NAME>/`).
|
|
139
|
+
|
|
140
|
+
## Upper Tester (UT) Integration
|
|
141
|
+
|
|
142
|
+
The test suite orchestrates testcase execution and logs via Upper Tester (UT) interface messages exchanged between the runner (`ttcn3_runner`) and the simulator (`ttcn3_dut`).
|
|
143
|
+
|
|
144
|
+
In addition to standard MMI commands, the runner sends the following native UT control messages:
|
|
145
|
+
- **`TC_START`**: Sent at the start of a test run to initialize the simulator's logging sink and parameterize the simulator logs (e.g., `logs/<TEST_CASE_NAME>/<TEST_CASE_NAME>_run0_ttcn3_ue.log`) dynamically with the active testcase name.
|
|
146
|
+
- JSON payload: `{"Cmd": {"TC_START": {"Name": "<TEST_CASE_NAME>"}}}`
|
|
147
|
+
- **`TC_END`**: Sent at the end of a test run to finalize the simulator's test case context.
|
|
148
|
+
- JSON payload: `{"Cmd": {"TC_END": null}}`
|
|
149
|
+
|
|
150
|
+
## GUI Dashboard
|
|
151
|
+
|
|
152
|
+
A graphical web dashboard is provided to easily manage test execution, view historical test runs, and visualize signaling logs using Mermaid.js MSCs.
|
|
153
|
+
|
|
154
|
+
To start the GUI:
|
|
155
|
+
```bash
|
|
156
|
+
cd tools/gui
|
|
157
|
+
npm install
|
|
158
|
+
npm run dev
|
|
159
|
+
```
|
|
160
|
+
Navigate to `http://localhost:3000` to access the dashboard.
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
README.md
|
|
2
|
+
pyproject.toml
|
|
3
|
+
tools/ttcn3_cloud_cli.py
|
|
4
|
+
tools/hyper_wireless.egg-info/PKG-INFO
|
|
5
|
+
tools/hyper_wireless.egg-info/SOURCES.txt
|
|
6
|
+
tools/hyper_wireless.egg-info/dependency_links.txt
|
|
7
|
+
tools/hyper_wireless.egg-info/entry_points.txt
|
|
8
|
+
tools/hyper_wireless.egg-info/requires.txt
|
|
9
|
+
tools/hyper_wireless.egg-info/top_level.txt
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
ttcn3_cloud_cli
|