eaffaf4058f6d1fdfed9551ed447c76349203fd9
The CI fails sometimes, because some processes/threads are created in unpredictable order and if the client connects before the server is ready some tests fail, as seen in the following log: [UTIL] client/server iq-samples: launch sub-processes [UTIL] threadCreate() for time client: creating thread (no affinity, default priority) [UTIL] time manager configuration: [time source: server] [mode: client] [server IP: 127.0.0.1} [server port: 7374] [UTIL] time client: connection to 127.0.0.1:7374 failed, try again in 1s [UTIL] threadCreate() for time source iq samples: creating thread (no affinity, default priority) [UTIL] threadCreate() for time server: creating thread (no affinity, default priority) [UTIL] time manager configuration: [time source: iq_samples] [mode: server] [server IP: 127.0.0.1} [server port: 7374] [UTIL] client/server: rlc ticks: 1000 pdcp ticks: 1000 x2ap ticks: 1000 CMDLINE: "/oai-ran/build/common/utils/time_manager/tests/test_time_manager_auto" "--time_management.mode" "server" "--time_management.time_source" "iq_samples" [UTIL] client/server: rlc ticks: 0 pdcp ticks: 0 x2ap ticks: 0 CMDLINE: "/oai-ran/build/common/utils/time_manager/tests/test_time_manager_auto" "--time_management.mode" "client" [UTIL] client-server iq-samples: ERROR The client/server iq-samples test is started. Then we see this log: [UTIL] time manager configuration: [time source: server] [mode: client] [server IP: 127.0.0.1} [server port: 7374] Which means that the client is running. It tries to connect to the server (not running yet), but fails, so sleeps for 1 second before attempting another connection to the server: [UTIL] time client: connection to 127.0.0.1:7374 failed, try again in 1s The sleep is done by the time_client thread, the main thread of the test program continues and does a sleep(1). Then the server arrives: [UTIL] time manager configuration: [time source: iq_samples] [mode: server] [server IP: 127.0.0.1} [server port: 7374] It sends all the ticks (to no client, since the client is still sleeping). Then the test is over, the sleep(1) of the client finishes and the program exits. The client never connected to the server. We have this log: [UTIL] client/server: rlc ticks: 0 pdcp ticks: 0 x2ap ticks: 0 And the test fails. It's complicated to write an automatic test involving several uncoordinated programs. The operating system may create processes in any order. We use some sleeping to wait, but it may be too short or too long, leading to test failure. Let's see with more sleep if the CI fails less.
OpenAirInterface License
It is distributed under OAI Public License V1.1.
The license information is distributed under LICENSE file in the same directory.
Please see NOTICE file for third party software that is included in the sources.
Where to Start
- General overview of documentation
- The implemented features
- System Requirements for Using OAI Stack
- How to build
- How to run the modems
Not all information is available in a central place, and information for specific sub-systems might be available in the corresponding sub-directories. To find all READMEs, this command might be handy:
find . -iname "readme*"
RAN repository structure
The OpenAirInterface (OAI) software is composed of the following parts:
openairinterface5g
├── charts
├── ci-scripts : Meta-scripts used by the OSA CI process. Contains also configuration files used day-to-day by CI.
├── CMakeLists.txt : Top-level CMakeLists.txt for building
├── cmake_targets : Build utilities to compile (simulation, emulation and real-time platforms), and generated build files.
├── common : Some common OAI utilities, some other tools can be found at openair2/UTILS.
├── doc : Documentation
├── docker : Dockerfiles to build for Ubuntu and RHEL
├── executables : Top-level executable source files (gNB, eNB, ...)
├── maketags : Script to generate emacs tags.
├── nfapi : (n)FAPI code for MAC-PHY interface
├── openair1 : Layer 1 (3GPP LTE Rel-10/12 PHY, NR Rel-15 PHY)
├── openair2 : Layer 2 (3GPP LTE Rel-10 MAC/RLC/PDCP/RRC/X2AP, LTE Rel-14 M2AP, NR Rel-15+ MAC/RLC/PDCP/SDAP/RRC/X2AP/F1AP/E1AP), E2AP
├── openair3 : Layer 3 (3GPP LTE Rel-10 S1AP/GTP, NR Rel-15 NGAP/GTP)
├── openshift : OpenShift helm charts for some deployment options of OAI
├── radio : Drivers for various radios such as USRP, AW2S, RFsim, 7.2 FHI, ...
├── targets : Some configuration files; only historical relevance, and might be deleted in the future
└── tools : Tools for use by the developers/ci machines: code analysis and formatting
How to get support from the OAI Community
You can ask your question on the mailing lists.
Your email should contain below information:
- A clear subject in your email.
- For all the queries there should be [Query] in the subject of the email and for problems there should be [Problem].
- In case of a problem, add a small description.
- Do not share any photos unless you want to share a diagram.
- OAI gNB/DU/CU/CU-CP/CU-UP configuration file in
.confformat only. - Logs of OAI gNB/DU/CU/CU-CP/CU-UP in
.logor.txtformat only. - In case your question is related to performance, include a small description of the machine (Operating System, Kernel version, CPU, RAM and networking card) and diagram of your testing environment.
- Known/open issues are present on GitLab, so keep checking.
Always remember a structured email will help us understand your issues quickly.
Languages
C
91.8%
CMake
2.9%
C++
1.9%
TeX
1%
Python
1%
Other
1.1%
