Compare commits

..

711 Commits

Author SHA1 Message Date
Remi Hardy
ccd6a0ee12 Integration 2021 wk20
MR !1161 : Improvements on CCE-to-REG mapping and interleaver
- Improvements on CCE-to-REG mapping and interleaver to support coresets with more than 1 symbol duration

MR !1153 : Nr cleanup pucch resources
- Removing unused PUCCH resources and accordingly increasing the PUCCH symbol allocation by 1 unit (now 13 symbols in regular slot)

MR !1162 : [CI] nsa and benetel pipelines with quectel
-adapt iperf routines for quectel 
-change quectel NIC name 
-new NSA test markers for eNB and gNB 
-several bugfixes (CI python)

MR !1164 : fix compile
- Fix several compilation issues nr-ittisim, uescope, telnetsrv, 
- fixed also the F1AP asn1c recompilation 
- some compilation warnings struct members "Status" is a problem as long as we use a Xwindow include

MR !1154 : implementation of handling csi and harq in the same pucch2
- Implementation of multiplexing CSI report and ACKs in the same PUCCH (format 2)

MR !1158 : Fix nr_ulsim
- fix call nr_ue_pusch_common_procedures() in nr_ulsim. This means there was no actual PUSCH transmission and all LLR were 0

MR !1159 : physim-deploy-handle-error-cases
-When failing, physim test on openshift cluster is not properly creating HTML report 
-Removing trailing / in xxx.git/ 
-Increased timeout of git checkout -f calls

MR !1165 : [CI] fixing test retry for module UE
- CI hotfix for module UE ip addresses mgt

MR !1166 : [CI] NSA uplink + benetel longrun
-fix moduleUE UL iperf implem
-add UL test for benetel
-xml file cleaning
-new benetel long run test
2021-05-20 20:38:16 +00:00
hardy
aef47088b1 Merge remote-tracking branch 'origin/ci_nsa_uplink' into integration_2021_wk20_a 2021-05-19 23:52:06 +02:00
hardy
c3f429b022 update for benetel long run 2021-05-19 23:48:26 +02:00
hardy
a06e5041b2 Merge remote-tracking branch 'origin/ci_nsa_uplink' into integration_2021_wk20_a 2021-05-19 15:26:45 +02:00
hardy
5af1e3fc97 adding nsa benetel long run 2x20min test 2021-05-19 15:15:15 +02:00
hardy
dc0260697d update nsa benetel with UL test step 2021-05-19 15:12:05 +02:00
hardy
c8acf1baa7 solve iperf UL implementation for module UE 2021-05-19 14:53:01 +02:00
Laurent THOMAS
d40486b100 fix again RU compilation case 2021-05-19 12:08:51 +02:00
Laurent THOMAS
b719f5712e fix constant in weird case 'NO_RRC', linked to 'RU' compilation case 2021-05-19 09:52:09 +02:00
Raphael Defosseux
a8691d5d22 CI: increased timeouts on uhd_find_devices commands
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-18 13:37:05 +02:00
hardy
2067d79a2d Merge remote-tracking branch 'origin/ci_hotfix_module_ue_ip_address' into integration_2021_wk20_a 2021-05-17 18:39:24 +02:00
hardy
ff31beac07 fixing test retry with different IP adresses assigned to module UE 2021-05-17 18:35:32 +02:00
hardy
ab125e0320 Merge remote-tracking branch 'origin/physim-deploy-handle-error-cases' into integration_2021_wk20_a 2021-05-17 15:44:29 +02:00
hardy
ed814c0fef Merge remote-tracking branch 'origin/fix_nr_ulsim' into integration_2021_wk20_a 2021-05-17 15:24:27 +02:00
Raphael Defosseux
bee7e57b4b RHEL8-UHD support: revert back to 4.0.0.0 version
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-17 14:55:20 +02:00
Thomas Schlichter
61de3bf995 Merge remote-tracking branch 'origin/develop' into fix_nr_ulsim 2021-05-17 11:52:07 +02:00
hardy
ca60a69fc6 Merge remote-tracking branch 'origin/NR_multiplexing_HARQ_CSI_PUCCH' into integration_2021_wk20_a 2021-05-17 10:13:39 +02:00
hardy
568af88807 Merge remote-tracking branch 'origin/fix-compile' into integration_2021_wk20_a 2021-05-17 10:12:27 +02:00
Laurent THOMAS
b5bbfdade3 after merge, remain compile errors 2021-05-16 23:57:35 +02:00
hardy
a07e39593c Merge remote-tracking branch 'origin/ci_test_nsa_fix_quectel_nic' into integration_2021_wk20_a 2021-05-16 21:25:26 +02:00
hardy
a362493cce Merge remote-tracking branch 'origin/NR_cleanup_PUCCH_resources' into integration_2021_wk20_a 2021-05-16 21:24:38 +02:00
hardy
6c23cb6591 Merge remote-tracking branch 'origin/develop-CCE' into integration_2021_wk20_a 2021-05-16 21:24:19 +02:00
Remi Hardy
df6b6a723f Integration 2021 wk19
MR !1028 : oairu
-standalone RRU executable for quick building on simple platforms (no building of L1/L2 procedures) 
-small changes for improving eNB in outdoor deployment scenarios - power control loop, bugfixes, gathering of statistics (L1,MAC,PDCP,RRC), UL measurement procedures, 2/4 antenna reception testing for LTE eNB 
-x300/n300 eNB testing and minor improvements 
-level shifting for x300/n300 
-minimizing L1 variables in MAC 
-removal of RC in RU code sections, minimizing use of RC in L1 code sections

MR !1141 : nr-dmrs-fixes
-NR fixes, identified by UXM tests
2021-05-15 06:51:03 +00:00
Francesco Mani
e15231264a Update description of function nr_acknack_scheduling 2021-05-14 07:10:40 +00:00
Remi Hardy
985d02f8e1 align nsa-usrp and nsa-benetel tests 2021-05-12 13:36:15 +02:00
Remi Hardy
59bbef3b2f change NSA test trigger (tag) 2021-05-12 10:57:40 +02:00
Remi Hardy
318d4c08c9 several bugfixes + make pipelines work for DL, iperf UL KO 2021-05-12 10:40:00 +02:00
hardy
3d908be3a1 new nsa markers for enb and gnb when terminating 2021-05-12 10:40:00 +02:00
hardy
9769fb6231 fix a bug in IperfNoS1, from moduleUE related work 2021-05-12 10:39:59 +02:00
francescomani
052f254306 fix in a condition for pucch2 2021-05-12 10:23:58 +02:00
hardy
a2574a9397 fix a bug in IperfNoS1, from moduleUE related work 2021-05-11 10:21:04 +02:00
hardy
681beefd76 Merge remote-tracking branch 'origin/nr-dmrs-fixes' into integration_2021_wk19 2021-05-10 21:41:44 +02:00
rmagueta
657bcd8f46 CCE-to-REG mapping extended for 2 or more DCI symbols at UE 2021-05-10 20:11:26 +01:00
Raphael Defosseux
df084c5825 CI: some cosmetics changes and better handling physim cluster deployment errors
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-10 14:04:51 +02:00
rmagueta
2c52a71587 Merge remote-tracking branch 'origin/develop' into develop-CCE 2021-05-10 11:09:47 +01:00
hardy
71b0818327 added cleaning of module ue iperf artifacts 2021-05-10 09:58:05 +02:00
Raymond Knopp
83ccc50f18 Merge remote-tracking branch 'origin/develop' into oairu 2021-05-10 00:39:55 +02:00
Remi Hardy
0aff278472 CI fix quectel nic name 2021-05-09 17:51:02 +02:00
francescomani
74e2ea96cf Merge remote-tracking branch 'origin/develop' into NR_multiplexing_HARQ_CSI_PUCCH 2021-05-08 11:39:04 +02:00
Remi Hardy
6d1bc204f0 Integration 2021 wk18 b
MR !1156 : bugfix_gnb_rt_stats_html
-bugfix for 5G NR phy test: the rt report in html shall be displayed only for gNB

MR !1155 : fix-physim-deploy
-The pexpect method has echo issues and is not reliable when we do the polling.
-added a few wait states when pushing the image to the cluster.
-first step also for giving up on remote hosts credentials as the used method implies SSH key authentication.

MR !1146: ci_quectel_support
-Support for quectel module as UE for NSA and Benetel tests
-First step for UE infra / testbench infra as code
2021-05-08 06:51:00 +00:00
rmagueta
eed0c89feb CCE-to-REG mapping extended for 2 or more DCI symbols 2021-05-07 20:13:17 +01:00
Parminder Singh
8c023d7c66 Added uplink processing check to avoid false detection in ULSIM.
- In case no signal is received then energy of ULSCH is zero,
  the phy_procedures_gNB_uespec_RX will return 1 as an error.
2021-05-07 11:23:38 +02:00
hardy
c374cda62d Merge remote-tracking branch 'origin/ci_quectel_support' into integration_2021_wk18_b 2021-05-07 11:04:04 +02:00
hardy
4881275269 Merge remote-tracking branch 'origin/fix-physim-deploy' into integration_2021_wk18_b 2021-05-07 11:03:39 +02:00
hardy
f5a76d7983 fix test retry due to N310 init issue 2021-05-06 23:41:15 +02:00
hardy
405bbac936 CI hotfix for rt stats table in HTML 2021-05-06 23:01:54 +02:00
Parminder Singh
9f16383331 Call common pusch procedure in ulsim
- The TX signal is prepared but not sent which leads to all 0's TX signal.
2021-05-06 11:31:30 +02:00
Raphael Defosseux
f75d0126d2 CI: fix renaming artifact
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-06 11:18:01 +02:00
hardy
3dc9e3d19c [CI] hotfix, gNB N310 conf file update 2021-05-06 10:49:30 +02:00
Raphael Defosseux
e5498d21a2 CI: fixing the detection for the end of execution on pods
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-05 16:46:15 +02:00
Raphael Defosseux
668bb056df CI: hotfix on the target creation detection
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-05 10:59:02 +02:00
francescomani
ffca5124b5 Revert "fix warning"
This reverts commit 1c2c00f260.
2021-05-05 10:06:42 +02:00
hardy
4f64703d5a adding review form column to dashb 2021-05-04 16:01:23 +02:00
francescomani
1c2c00f260 fix warning 2021-05-04 13:46:17 +02:00
Thomas Schlichter
e04e09e5d4 fix warnings about missing const in polar_encoder_fast() parameter list
make t_nrPolar_params a constant input to all nr polar encoders and nr polar decoders
2021-05-04 13:24:00 +02:00
francescomani
13acbd1d82 Merge remote-tracking branch 'origin/develop' into NR_cleanup_PUCCH_resources 2021-05-04 12:00:19 +02:00
francescomani
64e42cacf2 implementation of handling csi and harq in the same pucch2 2021-05-04 11:47:48 +02:00
Thomas Schlichter
0ac5fcbfad Merge remote-tracking branch 'origin/develop' into nr-dmrs-fixes 2021-05-04 11:32:07 +02:00
hardy
e0960c35d3 removed in code comments 2021-05-04 08:37:30 +02:00
Remi Hardy
cf1822be64 Integration 2021 wk18 a
MR !1145 NR_FR2_initsync_fixes
-bug fixes that caused failure in PBCH detection after initial sync in FR2

MR !1100 NR_scheduling_request
-per-UE PUCCH F0 resource, CSI, Preamble 
-Scheduling Request 
-MAC scheduler fixes

MR !1150  rh_ci_phy_test_improve
-beautified HTML report for 5G NR phy test

MR !1113 hack-exit-gnb-when-no-enb-nsa
-Exit gNB if connection to eNB failed - to be modified if needed. We may want to try to connect over and over again until we succeed but the modifications to the code to get this behavior are complex
2021-05-04 06:28:37 +00:00
francescomani
ad10ef0dfe to remove unused PUCCH resources and extend PUSCH tda allocation to 13 symbols 2021-05-03 17:59:08 +02:00
Raphael Defosseux
158c0639d6 CI: fix pipeline
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-05-03 17:36:02 +02:00
Remi Hardy
4489aa0894 Merge branch 'integration_2021_wk17_b' into 'develop'
MR #1148 : Fix coreset dmrs idx
 -- Fix coreset dmrs idx for coresets with more than 1 symbol duration

MR #1139 : bugfix for sib1 in case of ssb different from 0
 -- solving a small bug in handling sib1 relative to ssb other than 0

MR #1136 : CI: Migration of the physical-simulators to OpenShift
 -- switch to a parallel pod deployment on the OpenShift Cluster
 -- Huge gain in time : 1h30m down to 25 minutes

MR #1134 : Docker improvements 2021 april
 -- updated the LTE-UE image generation.
    * Proper configuration file in nfapi case
    * Proper entrypoint

MR #1131 : Removing deprecated dl and ul_bwp_dedicated in config request at UE

MR #1091 : Ue pdsch pusch parallel
 -- The UE code for now is unfit to process more than 1 slot in parallel.
    This is why the PUCCH signal is not transmitted most of the time.
    Hence, the following changes are made:

    * Process only one slot at a time. Previously it was 2 slots in parallel.
    * Now we do parallelization with the slot i.e., PUSCH and PDSCH are processed in parallel.
    * Option for the UE to go back to sync mode instead of stopping if it loses sync with gNB. Command line parameter --non-stop enables it.
    * New feature: Included a mechanism to detect false DCIs.

MR #1147 : benetel conf files fix
2021-05-03 17:35:34 +02:00
hardy
ba3bea88e7 Merge remote-tracking branch 'origin/develop' into ci_quectel_support 2021-05-03 15:55:21 +02:00
hardy
c2acb9e9e5 Merge remote-tracking branch 'origin/NR_FR2_initsync_fixes' into integration_2021_wk18_a 2021-05-03 15:45:39 +02:00
hardy
010d39c9ab Merge remote-tracking branch 'origin/NR_scheduling_request' into integration_2021_wk18_a 2021-05-03 15:44:31 +02:00
hardy
4525e10257 Merge remote-tracking branch 'origin/hack-exit-gnb-when-no-enb-nsa' into integration_2021_wk18_a 2021-05-03 15:44:05 +02:00
hardy
b370494cf7 Merge remote-tracking branch 'origin/rh_ci_phy_test_improve' into integration_2021_wk18_a 2021-05-03 15:43:16 +02:00
Remi Hardy
d81b0ce9ae Merge branch 'integration_2021_wk17_b' into 'develop'
WIP : Integration 2021 wk17 b

See merge request oai/openairinterface5g!1149
2021-05-03 13:30:21 +00:00
hardy
4ae5ac690c missing parameter in InitializeUE 2021-05-03 13:47:08 +02:00
Remi Hardy
1d07f25595 update ssPBCH_BlockPower in conf file for N310 2021-05-03 11:42:51 +02:00
hardy
d18a7e219c Merge remote-tracking branch 'origin/benetel_config_file_fix' into integration_2021_wk17_b 2021-05-03 09:18:31 +02:00
Robert Schmidt
2319b4e76f Introduce configuration for maximum UE ULSCH inactivity 2021-04-30 16:40:59 +02:00
Remi Hardy
4b23e6a7bf adding HTML row for detach 2021-04-30 15:45:39 +02:00
Remi Hardy
7d03c14ece logging fix -> pass 2021-04-30 15:04:11 +02:00
hardy
7050044fcd improve understanding of results 2021-04-30 10:24:44 +02:00
hardy
7ca8872216 fix test status fail/pass + test update + cleaning 2021-04-29 23:31:13 +02:00
Raymond Knopp
c66f7da278 missing declarations in main_ru.c 2021-04-29 22:45:23 +02:00
hardy
37cc4d6033 fixing html columns 2021-04-29 22:02:04 +02:00
Remi Hardy
9581b5cce2 adding conf file for n310 2021-04-29 14:01:53 +02:00
Remi Hardy
9d50c5ea02 update of ci nsa and benetel jenkins pipelines 2021-04-29 13:25:20 +02:00
francescomani
d2f1e41bcb using n_frames to compute init_sync_frame 2021-04-29 12:02:51 +02:00
hardy
273c6ff39f Merge remote-tracking branch 'origin/ue-pdsch-pusch-parallel' into integration_2021_wk17_b 2021-04-29 11:55:17 +02:00
hardy
af1735059e Merge remote-tracking branch 'origin/NR_UE_CONFIG_REQ_FIXES' into integration_2021_wk17_b 2021-04-29 11:54:37 +02:00
hardy
44672c4c4c Merge remote-tracking branch 'origin/docker-improvements-2021-april' into integration_2021_wk17_b 2021-04-29 11:53:12 +02:00
hardy
13113e5049 Merge remote-tracking branch 'origin/physim-build-deploy' into integration_2021_wk17_b 2021-04-29 11:52:33 +02:00
hardy
47fee08a0c Merge remote-tracking branch 'origin/multiple_ssb_sib1_bugfix' into integration_2021_wk17_b 2021-04-29 11:49:29 +02:00
hardy
6b45eb8210 update of the AT-based module control for automation 2021-04-29 11:41:53 +02:00
hardy
bad3e98301 need to update dummy UE for CI 2021-04-29 11:41:53 +02:00
hardy
a8bbd77087 fixing auto termination 2021-04-29 11:41:53 +02:00
Raymond Knopp
6d1a92275f usrp_tx_thread redefinition in nr_ulsim::wq 2021-04-29 11:38:48 +02:00
hardy
ccf6624f79 changing col name in html report 2021-04-29 10:26:10 +02:00
Raymond Knopp
e203120477 usrp_tx_thread flag in nr_dlsim 2021-04-28 21:29:58 +02:00
hardy
67b9e92a5c improving stats appearance 2021-04-28 17:50:39 +02:00
francescomani
cc15ac25b9 simplification of previous fix 2021-04-28 17:49:27 +02:00
luis_pereira87
401151bff4 Fix dmrs_idx for coreset with duration > 1 symbol 2021-04-28 16:39:10 +01:00
Raphael Defosseux
285650d354 CI: Adding missing reason for image build failure
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-28 10:54:02 +02:00
Raphael Defosseux
1041a6d807 CI: better silent and resync optional arguments
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-28 09:39:27 +02:00
Raymond Knopp
146f38af16 build for nr_pbchsim after merge with develop 2021-04-27 20:41:28 +02:00
Florian Kaltenberger
8d0b9e4cdb yet some more fixes to the benetel config files 2021-04-27 20:34:00 +02:00
hardy
b6daabc2b5 tentative to improve Module control encapsulation 2021-04-27 17:49:45 +02:00
francescomani
b08037d6d1 Merge remote-tracking branch 'origin/develop' into multiple_ssb_sib1_bugfix 2021-04-27 16:14:43 +02:00
francescomani
ff9846993f Merge remote-tracking branch 'origin/develop' into NR_FR2_initsync_fixes 2021-04-27 15:48:52 +02:00
francescomani
31aade2002 tentative fix for wrong frame caused by rx offset 2021-04-27 15:48:23 +02:00
Raphael Defosseux
42a217228b CI: fixes for OpenShift deployment of physical-simulators
-- Missing finished tag in one deployment
  -- Deep copy of the array of pod names
  -- Hack for the out-of-sync on pexpect for `oc logs` and `oc get pods` commands

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-27 15:19:49 +02:00
Raymond Knopp
d88ce5b9bf Merge remote-tracking branch 'origin/develop' into oairu 2021-04-27 11:58:31 +02:00
Raymond Knopp
6e91e56b50 lowmem option for nr_pbchsim for CI tests 2021-04-27 10:55:40 +02:00
Thomas Schlichter
0da9ec9cfb Merge remote-tracking branch 'origin/develop' into nr-dmrs-fixes 2021-04-27 10:27:31 +02:00
Robert Schmidt
6c162e3808 Remove unused variables 2021-04-27 08:36:43 +02:00
Robert Schmidt
821a5e5dfe Correct T310 & N310 to avoid RA 2021-04-27 08:30:33 +02:00
Robert Schmidt
74fa01463c Do PUCCH TPC only if Acknack or positive SR
otherwise, if we only have a (negative) SR, the UE did not send
anything, and the PUCCH CQI is invalid
2021-04-27 08:30:33 +02:00
Robert Schmidt
8187361615 Schedule UE periodically every 10 frames in UL 2021-04-27 08:30:33 +02:00
imad
800330e41c Call nr_sr_reporting 2021-04-27 08:30:33 +02:00
Robert Schmidt
cba2d9e413 Schedule UEs on SR or BSR 2021-04-27 08:30:33 +02:00
imad
a8149b5e0e Add functions for SR scheduling 2021-04-27 08:30:33 +02:00
imad
27bfe23c9b Add schedulingRequestResourceConfig 2021-04-27 08:30:33 +02:00
imad
50ac9ef252 Add schedulingRequestConfig 2021-04-27 08:30:33 +02:00
Robert Schmidt
51e844e19f Bugfix ul preproc: check correct slot for UL 2021-04-27 08:30:33 +02:00
Robert Schmidt
f73e8e0459 Bugfixes in nr_acknack_scheduling()
1: there can be 2bits AckNack + SR in PUCCH F0
2: when allocating csi_pucch, zero out struct
3: Make unfree resources a warning
4: When asserting, explain the issue
2021-04-27 08:30:33 +02:00
Robert Schmidt
4f4e25852f Reduce sched_pucch array length, we only need two entries 2021-04-27 08:30:33 +02:00
Robert Schmidt
b005f9594b Statically allocate PUCCH F0 resource index 0 for AckNack 2021-04-27 08:30:33 +02:00
Robert Schmidt
c2d16eb8d5 Configure secondaryCellGroup: dedicated PUCCH, CSI, Preamble
- Configure PUCCH Format 0 to be in separate RBs (each UE has dedicated
  resources)
- Configure RA preamble to be different per UE
- Configure CSI offset such that no two UEs have their report in the
  same frame
2021-04-27 08:30:31 +02:00
Robert Schmidt
f39b97a9e8 Execute nr_schedule_pucch() only in UL slots 2021-04-27 08:29:55 +02:00
Robert Schmidt
84e57113c8 initial_csi_index depends on local_uid
Nb_ue is not unique among UEs: consider 2 UEs present. The last UE has
CSI idx "2". Now the first UE disconnects, and a new UE connects. It
will also get CSI idx "2", and I assume this is not what we want.
2021-04-27 08:29:55 +02:00
Remi Hardy
d953b25353 Integration 2021 wk17 a
MR !1079 / MR !1108:
1. Read slots from config file and schedules all slots *except* for slots 0 and 10. This is not a problem, since currently we cannot allocate more than six HARQ feedbacks in a slot, but we might have up to 7 with current configuration

2. phytest mode is configurable. From `nr-softmodem -h`:

   -m: Set the downlink MCS for PHYTEST mode
   -t: Set the uplink MCS for PHYTEST mode
   -M: Set the downlink banwdwidth (in PRBs) for PHYTEST mode
   -T: Set the uplink banwdwidth (in PRBs) for PHYTEST mode
   -D: Bitmap for DLSCH slots (slot 0 starts at LSB)
   -U: Bitmap for ULSCH slots (slot 0 starts at LSB)

3. Scheduler prints more information: UE PHR, PUCCH SNR, PUSCH SNR, RSSI
4. The scheduler learned to scheduler DLSCH/ULSCH in mixed slots (if the time domain allocation matches the mixed slot)
5. The scheduler expects
   * PDSCH Time Domain allocation index 0 to be the DL slot allocation
   * PDSCH TDA index 1 for Mixed DL slot
   * PUSCH TDA index 0 for UL slot
   * PUSCH TDA index 1 for Mixed UL slot
   * PUSCH TDA index 2 for Msg.3
6. Some more cleanup, e.g., separate PDSCH/PUSCH data structures into "semi-static" data (e.g., TDA allocation to use, since it changes seldomly) and "dynamic" data (e.g., RB allocation per slot, which changes every slot)


MR !1137 : Benetel config files fix
2021-04-27 06:16:06 +00:00
francescomani
bd06094338 another bug fixed 2021-04-26 17:56:51 +02:00
francescomani
ff87164011 bugfixes in FR2 scheduling of ssbs 2021-04-26 16:31:20 +02:00
Mohammed Ismail
7acc966b94 CI: logs delay fix
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-26 16:07:40 +02:00
hardy
e2ab8bc54b Merge remote-tracking branch 'origin/benetel_config_file_fix' into integration_2021_wk17_a 2021-04-26 10:21:05 +02:00
Thomas Schlichter
b6a564369f Merge remote-tracking branch 'origin/develop' into nr-dmrs-fixes 2021-04-26 09:42:10 +02:00
Mohammed Ismail
92b19e2d45 CI: fix on true negative result
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-25 22:07:53 +02:00
Robert Schmidt
26b6d87fa3 Merge branch 'develop' into integration_2021_wk13_b 2021-04-25 16:34:30 +02:00
Robert Schmidt
089246c693 Fix Msg.2 TDA to be 1, revert DL TDA configs to two entries 2021-04-25 14:44:46 +02:00
Remi Hardy
5d83447384 Integration 2021 wk16
MR !1129 : gnb-realtime-hotfix
-Hotfix for realtime performance issue
-Enabled L1 and scheduler timing statistics
-Changed order of UL Indication. L1 Rx -> UL Ind -> L1 Tx

MR !1123 : [CI] ci_phytest
-new 5G NR phy test -q -U 787200 -T 106 -t 28 -D 130175 -m 28 -M 106

MR !1128 : [CI] ci_add_runtime_stats
-adding L1 processing stats

MR !1132 : [CI] ci_add_uldlharq_stats
-additonal ulsch/dlsch stat

no MR : hotfix branch fixgtpu 
-revert default values for 5GS
-fix T_IDs.h build
2021-04-24 07:47:37 +00:00
Thomas Schlichter
1c61be68e6 Add more test cases for nr_dlsim and nr_ulsim 2021-04-23 13:25:41 +02:00
Raghavendra Dinavahi
efb43528bc Channel estimation of all PUSCH dmrs symbols before compensation 2021-04-23 12:22:31 +02:00
Remi Hardy
0c3280b554 fix nsa n310 conf file for CI 2021-04-23 10:41:15 +02:00
Raghavendra Dinavahi
5edee9b546 Mapping type A enabled in PUSCH dmrs mask calculation
- Procedure get_l_prime is modified
	- Single and double symbol DMRS are handled in Type A and Type B
2021-04-23 10:33:56 +02:00
Raghavendra Dinavahi
e658023ff5 Fix for the 16byte alignment issue observed during DMRS modulation.
Segmentation fault observed in case the address for mod_dmrs[dmrssymbol] is not 16byte aligned.
2021-04-23 10:33:56 +02:00
Raghavendra Dinavahi
f3be3daa32 pusch_proc_threads=8 added to configuration files 2021-04-23 10:33:56 +02:00
Raghavendra Dinavahi
fc1a7f7b8c Adjusting LocationBandwidth of initial BWP1 in configuration files.
LocationandBandwidth adjusted according to the location of SSB and Controlresourceset 0
For example for 106RBs configuration files -
	- AbsoluteFrequencySSB = 641032 = RB43 (1032/24) - points to Subcarrier 0 of RB10 of SSB block
	- Hence SSB is located from RB33-RB53
	- Coresetzero sent in MIB is 0 which means offset 0, RBsize 24 from Start of SSB according to table 13.4 in Spec 38.213
	- InitialBWP should start from RB 33 (offset is 0 from SSB) and should be a size of minimum 24 RBs.
	- SLIV = 275 * (24-1) + 33 = 6358
Controlresourceset value wrongly configured to 12 , changed to 0 as sent in MIB.
2021-04-23 10:33:56 +02:00
Raghavendra Dinavahi
5934e8e4ee Changes to Downlink DMRS MASK calculation
Procedure fill_dmrs_mask is modified.
	- PDSCH Mapping Type B is supported
	- Modified according to sections 5.1.6.2 of Spec 38.214
	- Single and double symbol DMRS are handled in Type A and Type B

Mapping type according to the time domain allocation from DCI should be used to get the values of DMRS config
For sending sib1 - DCI FORMAT 1_0 will be used with SI_RNTI, UE should perform these actions
according to sections 5.1.6.2 of Spec 38.214

Additional DMRS set to pos2 in case of msg2 reception, msg3 transmission.

Mapping type B is added to RRC reconfig.
	- nr_dlsim updated to test typeA and typeB. Verified the changes.
	- RFSIM Validation of PDSCH Mapping TypeB  by changing timedomainallocation in configuration files.
2021-04-23 10:33:56 +02:00
hardy
80a9aaf5dd adding new conf file to use n310 on mozart 2021-04-22 21:56:37 +02:00
hardy
0ca618a68a Merge remote-tracking branch 'origin/fixgtpu' into integration_2021_wk16 2021-04-22 19:45:31 +02:00
Mohammed Ismail
d236045704 CI: format correction on testid
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-22 17:01:41 +02:00
Mohammed Ismail
b54fbaecb0 CI: correction and update
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-22 16:48:57 +02:00
Sakthivel Velumani
e956c372df Fixed physim build issues 2021-04-22 13:42:59 +02:00
francescomani
f4cbc50f59 bugfix for sib1 in case of ssb different from 0 2021-04-22 10:32:23 +02:00
Raphael Defosseux
977226c815 Merge remote-tracking branch 'origin/develop' into physim-build-deploy 2021-04-22 10:07:33 +02:00
hardy
d7913bb0e5 Merge remote-tracking branch 'origin/git-dashboard' into develop 2021-04-22 08:53:51 +02:00
hardy
e3692f0905 [CI] add hyperlinks to git MR + reduce API calls (quotas) 2021-04-21 22:09:20 +02:00
Raphael Defosseux
5033ec6dc3 CI: transition from VM-based phy-simulator testing
to Cluster-based testing

- In old VM pipeline, disabled phy-sim VM creation, build and testing
- In new Container pipeline, added new stage

Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-21 16:38:27 +02:00
Laurent THOMAS
df56f5d345 fix4 T_IDs.h 2021-04-21 15:28:48 +02:00
Laurent THOMAS
2a1025165c fix, third trial T_IDs.h 2021-04-21 14:49:44 +02:00
Florian Kaltenberger
1b9901953f reverting some changes in benetel-5g config files that were introduced in anticipation of MR 1079, but which has not been merged yet. 2021-04-21 12:55:01 +02:00
Laurent THOMAS
d0e091294e more on T_IDs.h 2021-04-21 12:44:40 +02:00
Laurent THOMAS
b8480de3c5 try fix T_IDs.h 2021-04-21 12:15:17 +02:00
Laurent THOMAS
2784cd484e revert default values for 5GS 2021-04-21 10:37:55 +02:00
hardy
c6ae2f554b Merge remote-tracking branch 'origin/rh_ci_add_uldlharq_stats' into integration_2021_wk16 2021-04-21 10:23:03 +02:00
hardy
cace7e0e12 Merge remote-tracking branch 'origin/rh_ci_add_runtime_stats' into integration_2021_wk16 2021-04-21 10:22:33 +02:00
hardy
fc4be199ee Merge remote-tracking branch 'origin/ci_phytest' into integration_2021_wk16 2021-04-21 10:22:03 +02:00
hardy
5c137e1590 Merge remote-tracking branch 'origin/gnb-realtime-hotfix' into integration_2021_wk16 2021-04-21 10:21:21 +02:00
Florian Kaltenberger
13d5ef51ca OAI EPC 2021-04-20 18:45:22 +02:00
Mohammed Ismail
f6b8351e29 CI: fix on the tag
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-20 11:52:09 +02:00
hardy
e2ef05e5f5 added 2 detections in the ul dl harq stats for HTML 2021-04-20 11:09:11 +02:00
Mohammed Ismail
ea88b0585c CI: added resource lock
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-20 11:08:22 +02:00
Mohammed Ismail
74d7bcb442 CI: fix on the image tag
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-20 10:25:08 +02:00
francescomani
33101b27f2 getting rid of dl and ul_bwp_dedicated in config request 2021-04-19 17:28:35 +02:00
hardy
ad135dd1e2 adding the case where no rt stat found in log 2021-04-19 10:05:13 +02:00
Remi Hardy
f207b20238 [CI] Pipeline to automate RAN Merge Requests Status Dashboard 2021-04-19 07:47:56 +00:00
Remi Hardy
0399077141 Merge branch 'Fix_SA_SIB1' into 'develop'
Fix SA SIB1 segmentation fault
2021-04-19 07:29:12 +00:00
rmagueta
8613aeb9e6 Fixes after merge
- No warning in RRC
- Ethernet lib fix: correct include
- fixes Msg.4
- fixes conf: the UE cannot handle mixed slots
2021-04-18 12:42:34 +02:00
hardy
2995662fd7 fixed incorrect indentation + removed L1 ready msg (no longer used) 2021-04-17 22:12:06 +02:00
Sakthivel Velumani
6f7a3fdcd2 Laurent's change: bugfix in usrp lib 2021-04-16 18:54:35 +02:00
Sakthivel Velumani
3e411abb7c Fixed compiler warning 2021-04-16 18:37:57 +02:00
Sakthivel Velumani
cf87873f21 Calling ul indication after L1 RX 2021-04-16 17:48:47 +02:00
Sakthivel Velumani
bf8b621995 Adding timing stats for ul indication and scheduler 2021-04-16 17:36:48 +02:00
Mohammed Ismail
382ab05a3d CI: fix on commands delay
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-16 17:11:18 +02:00
Sakthivel Velumani
b56bfa7dbe fixed max print 2021-04-16 17:07:56 +02:00
Sakthivel Velumani
8185060b09 printing max 2021-04-16 17:07:56 +02:00
Sakthivel Velumani
8656b12210 Added L1 stats to softmodem 2021-04-16 17:07:56 +02:00
Sakthivel Velumani
dc65173b69 Fixed RX proc perf stat 2021-04-16 17:07:56 +02:00
Sakthivel Velumani
992e8323e1 Reducing the size of bf structs
quickfix for realtime problem caused by memset
2021-04-16 17:05:26 +02:00
Robert Schmidt
b548f9a3d2 Correctly check for used symbols in UL phytest scheduler 2021-04-16 16:46:46 +02:00
Robert Schmidt
052739f01d Update phytest cmdline parameter description after review 2021-04-16 16:46:17 +02:00
Sakthivel Velumani
21948e89c0 Always do PUSCH decoding in phy_test mode 2021-04-16 16:45:54 +02:00
Sakthivel Velumani
b7ad0ec21d Add cmd line options for DL&UL phytest scheduling
Add parameters: MCS, Bandwidth (in PRBs), slot scheduling bitmap

Conflicts:
	executables/nr-softmodem.h
	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_phytest.c
2021-04-16 16:45:15 +02:00
Mohammed Ismail
72d5cec7ad CI: log fix
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-16 16:38:44 +02:00
luis_pereira87
1d7a8a2da2 Fix SA SIB1 segmentation fault [reapplied after merge] 2021-04-16 16:00:32 +02:00
Mohammed Ismail
c55e253f11 CI: physim image stream added
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-16 15:56:30 +02:00
Raphael Defosseux
7b0877054e [DOCKER] adding new parameter on eNB side, fixing the LTE-UE entrypoint
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-16 13:59:14 +02:00
Raymond Knopp
80cc9b445c Add script file for (re)starting gNB automatically 2021-04-16 12:36:44 +02:00
Cedric Roux
c63abcd0f2 nsa: x2ap: hack: exit gNB if connection to eNB failed
Exit gNB if connection to eNB failed - to be modified if needed.

We may want to try to connect over and over again until we succeed
but the modifications to the code to get this behavior are complex.

Exit on error is a simple solution.
2021-04-16 12:36:44 +02:00
Raphael Defosseux
599f56272c [DOCKER] adding entrypoint to LTE-UE image
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-16 10:42:39 +02:00
Robert Schmidt
e0780320fa Fix to make nrUE compile 2021-04-16 07:27:11 +02:00
Robert Schmidt
c3796c044f Merge branch 'develop' into integration_2021_wk13_b 2021-04-16 07:23:46 +02:00
hardy
e9df88885e adding real time stats from log to HTML 2021-04-15 23:36:23 +02:00
Mohammed Ismail
bd580dac20 CI: update
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-15 17:55:19 +02:00
luis_pereira87
d3719fece9 Fix SA SIB1 segmentation fault 2021-04-15 16:09:13 +01:00
Mohammed Ismail
e67a50719a CI: fix on phySim
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-15 15:32:50 +02:00
Remi Hardy
875e2906e5 Integration 2020 wk15
MR !1114 : sanitize v1
-bugs or dirty code fixed 
-add first version of a rf board calibration tool, not finished

MR !1094 : sim channels
Channel simulation: 
-command mode: to change noise, path loss, model (AWGN, RICE, ...) parameters channel simulation 
-channels separation: each channel can have a different model (for HO test for example) 
-a new build option --sanitize to compile all OAI with gcc --sanitize=address

MR !1034 : new gtpu
-New GTPU implementation

MR !1101 : develop-SA-CBRA
-Implementation of Contention Based Random Access procedures for 5G-NR Initial Access in SA mode (including contributions from BUPT and Fujitsu)
2021-04-15 09:22:21 +00:00
hardy
5a4d29e864 adding check if milestone is empty 2021-04-14 16:45:00 +02:00
hardy
3fee93c79a from poc to python class 2021-04-14 16:45:00 +02:00
hardy
b5ffe11bd8 Merge remote-tracking branch 'origin/develop-SA-CBRA' into integration_2020_wk15
Conflicts:
	openair1/PHY/TOOLS/nr_phy_scope.c
	targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
2021-04-14 15:14:03 +02:00
hardy
c4745c3e46 Merge remote-tracking branch 'origin/new-gtpu' into integration_2020_wk15
Conflicts:
	cmake_targets/CMakeLists.txt
	openair1/PHY/TOOLS/time_meas.h
	openair2/LAYER2/PDCP_v10.1.0/pdcp_fifo.c
	openair2/LAYER2/RLC/rlc.h
2021-04-14 14:56:04 +02:00
hardy
246afc7ccb Merge remote-tracking branch 'origin/sim-channels' into integration_2020_wk15 2021-04-14 14:37:09 +02:00
Raymond Knopp
26fc7b3dbf Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2021-04-14 12:25:44 +02:00
Robert Schmidt
71ecec6744 Fix: mark delayed HARQ feedback as free 2021-04-14 12:19:12 +02:00
Robert Schmidt
b10ba9f88c Fix: don't go beyond 3rd retx 2021-04-14 12:19:12 +02:00
Robert Schmidt
8edacdede4 UL Scheduler: Check vrb_map_UL against symb map 2021-04-14 12:19:04 +02:00
Raphael Defosseux
80b52a8eaf [CI] : when running gNB in RA-test mode, noS1 SHALL be enable. Otherwise it's trying to connect to core network
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-14 11:50:50 +02:00
rmagueta
a8a34df01f Fix compilation warning in oai_usrpdevif 2021-04-14 00:28:41 +01:00
Laurent THOMAS
86881b1463 merge again develop 2021-04-13 22:45:41 +02:00
Laurent THOMAS
86f1c69f26 Fix code review remarks, merge develop, revert some merge errors 2021-04-13 22:28:02 +02:00
rmagueta
3c59974b23 Fix phy-test DL traffic 2021-04-13 15:26:44 +01:00
hardy
357866b3e6 adding phy test to 5G NR testsuite 2021-04-13 15:42:22 +02:00
Robert Schmidt
e04affbc7c UL scheduler: use correct TDA 2021-04-13 13:15:59 +02:00
Robert Schmidt
aca57eb969 DL scheduler: correctly calculate mixed slot TDA, check TDA before scheduling 2021-04-13 13:15:59 +02:00
Sakthivel Velumani
4189af6c7c Removed common txFifo for multiple threads 2021-04-13 08:28:29 +02:00
hardy
dbb0bca580 new ci files to build gir MR dashboard 2021-04-12 22:57:40 +02:00
rmagueta
2c9b67431a Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-04-12 19:21:23 +01:00
rmagueta
e8f8297892 Fix search space and coreset for Msg2 and Msg4 at gNB 2021-04-12 19:20:23 +01:00
Robert Schmidt
7f774d5fbc Merge branch 'develop' into integration_2021_wk13_b 2021-04-12 17:23:21 +02:00
rmagueta
a8ca37a782 Add support for InitialBWP in nr_configure_pdcch 2021-04-12 13:48:47 +01:00
Mohammed Ismail
1450bc598e CI: helm charts for physim
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 14:35:52 +02:00
Mohammed Ismail
367d23c726 CI: error correction
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 14:26:56 +02:00
Mohammed Ismail
8af044e35b CI: parameters changes
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 14:23:20 +02:00
Mohammed Ismail
5013180a29 CI: error fix
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 13:54:39 +02:00
Mohammed Ismail
075ebd9eb4 CI: print oc login output
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 13:41:45 +02:00
Mohammed Ismail
3a3a3efcd9 CI: missing parameters added
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 13:30:10 +02:00
Mohammed Ismail
52442573a2 CI: syntax fix
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 12:41:29 +02:00
Mohammed Ismail
20cd80c1a0 CI: physim ci initial draft
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-12 12:18:26 +02:00
hardy
8def752818 adding module UE detach, to be tested 2021-04-12 10:18:10 +02:00
hardy
756ab7ab42 solving merge conflicts (import) 2021-04-12 09:52:37 +02:00
Laurent THOMAS
ceb96a36e7 astyle 2021-04-11 20:07:26 +02:00
Raymond Knopp
f7f8935ce3 minor wqupdates after merge with develop 2021-04-10 23:28:34 +02:00
Raymond Knopp
48b5b5d7c7 Merge remote-tracking branch 'origin/develop' into oairu 2021-04-10 23:27:56 +02:00
Roberto Louro Magueta
cd14ba9667 Revert "Revert "Revert RA preamble shift at gNB""
This reverts commit e06c727604
2021-04-10 13:51:51 +02:00
rmagueta
ddfc737c65 Fix search space for Msg2 and Msg4 at gNB 2021-04-09 19:46:35 +01:00
Laurent Thomas
ab3ac5b29e Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into sim-channels 2021-04-09 14:49:48 +02:00
Laurent Thomas
657b525efc merge develop 2021-04-09 14:31:02 +02:00
Laurent Thomas
7c6ece0f51 Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into new-gtpu 2021-04-09 12:39:36 +02:00
Laurent Thomas
307098da4a merge develop 2021-04-09 12:39:33 +02:00
Raphael Defosseux
f21ac1a84c [CI] increase time out for waits
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-09 10:15:53 +02:00
rmagueta
b2b3f38344 Skip invalid MAC CCCH messages for being processed at both gNB and UE 2021-04-08 16:04:19 +01:00
rmagueta
7c37794513 Revert code indentation in usrp_lib 2021-04-08 14:56:05 +01:00
rmagueta
2efe75130d Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-04-08 14:10:14 +01:00
Raphael Defosseux
f91ce72868 Merge branch 'integration_2021_w14' into 'develop'
Integration Branch : 2021 week 14

See merge request oai/openairinterface5g!1121
2021-04-08 12:52:00 +00:00
Raphael Defosseux
5c2a5fd74d [CI]: removing the cppcheck stages from the old pipeline
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-08 10:30:03 +02:00
Raphael Defosseux
1019a56bea Merge remote-tracking branch 'origin/nr_ue_pdcp_fix' into integration_2021_w14 2021-04-08 10:27:50 +02:00
Raphael Defosseux
c38dfae7e3 Merge remote-tracking branch 'origin/bugfix-free-ra-process' into integration_2021_w14 2021-04-08 10:27:31 +02:00
Raphael Defosseux
8754cc1f96 Merge remote-tracking branch 'origin/physim-build-deploy' into integration_2021_w14 2021-04-08 10:27:10 +02:00
Raphael Defosseux
ad17204eac Merge remote-tracking branch 'origin/docker-no-cache-option' into integration_2021_w14 2021-04-08 10:26:55 +02:00
hardy
d727eebaf5 fix incorrect indentation that makes the CI fail for multiple UEs 2021-04-07 20:30:42 +02:00
luis_pereira87
04b28e5f2a Fix Msg4 mac pdu with padding 2021-04-07 16:31:06 +01:00
luis_pereira87
2ec6ee5f5b Fix Msg4 mac pdu with padding 2021-04-07 16:03:26 +01:00
Thomas Schlichter
650645f883 NR_UE: send tick to RLC and PDCP every ms 2021-04-07 14:21:00 +00:00
Raymond Knopp
0b59ce4faf Merge remote-tracking branch 'origin/develop' into oairu 2021-04-07 15:50:46 +02:00
Mohammed Ismail
25d7eb6c88 CI: adding physim imgae build
Signed-off-by: Mohammed Ismail <mohammed.ismail@openairinterface.org>
2021-04-07 14:05:54 +02:00
hardy
87a5e40eda fix CI issue (removing code that should have been deleted) 2021-04-07 14:03:45 +02:00
Raphael Defosseux
3b187925e8 [CI] fix cppcheck reporting
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-07 13:55:01 +02:00
Raphael Defosseux
45f6266b5f [CI] fix
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-07 12:20:55 +02:00
Raphael Defosseux
a4b836ac21 [CI] disabling cppcheck on the old pipeline
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-07 11:39:59 +02:00
Raphael Defosseux
6b6df21d35 [CI] triggering child pipeline
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-07 11:35:04 +02:00
Raphael Defosseux
d0578d77c8 [CI] cppcheck analysis in the python framework
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-07 11:13:17 +02:00
Laurent Thomas
04f2ec2352 merge develop, documentation fix 2021-04-06 21:33:13 +02:00
Laurent Thomas
873e42612a merge develop, documentation fix 2021-04-06 21:32:19 +02:00
Raphael Defosseux
2cfc1a6cdb [CI] adding new cppcheck docker for container CI operations
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-06 17:08:03 +02:00
Raphael Defosseux
b263ff15ec [CI] fix the email generation
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-06 13:57:17 +02:00
rmagueta
79864d001b Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-04-06 11:38:33 +01:00
Laurent Thomas
89598e3bad Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into sanitize-v1 2021-04-06 12:11:29 +02:00
Cedric Roux
1a5f10be90 bugfix: nr: free RA process when UE is removed
The bug was:
connect a phone, disconnect, repeat five times. The fifth time the phone
does not reconnect because there is no free RA process.

When an UE is removed, we have to free associated RA processes.
2021-04-06 10:40:37 +02:00
Remi Hardy
f0a1d0c23f Integration 2021 wk14 a
MR !1111 : fix x2 without gnb  
-fix x2 without gnb (that is: the eNB is running without gNB, then we must not switch the UE to NR)
-exit gNB if eNB crashes (and exit eNB if gNB crashes)

MR !1102 : nr rlc: bugfix: fix NACK with range 
We do some sanity checks for incoming rlc control packets. One of them is to check that so_start is not > so_end when present.
But when 'range' is present and bigger than 1 it means that so_start refers to one PDU and so_end to another one. So we may well have so_start > so_end.
This MR fixes that and reorganizes a bit the code to do the check before processing and rejecting the PDU if the values are not correct. (Before this commit we were NACKing the whole PDUs if so_start > so_end.)
 
MR !1096 : build_oai: Add --sanitize-address option
-pass the -fsanitize=address option to the compiler which enables run-time checks for some kinds of memory mismanagement
2021-04-06 08:10:52 +00:00
Remi Hardy
7878f8af6e adding some inline doc/comments to ci_ctl_qtel.py 2021-04-05 20:14:38 +02:00
Remi Hardy
31726d685f fixing qtel control 2021-04-05 19:58:54 +02:00
Laurent OpenCells
4511e70fac fix from ci results 2021-04-05 12:56:52 +02:00
hardy
53e624e4c2 improving module control scripts, to be tested 2021-04-05 12:25:50 +02:00
hardy
c1be8be1bc new nsa testcase for quectel 2021-04-05 11:14:53 +02:00
hardy
5a3dc09fdb fixes for other CI pipelines 2021-04-04 21:27:28 +02:00
Remi Hardy
69451ed33f fix UE name in html for ping 2021-04-04 15:54:57 +02:00
Remi Hardy
41cb06546f fix UE name in html for iperf 2021-04-04 15:36:34 +02:00
Remi Hardy
ea89cfa1a1 iperf UL and DL working ok 2021-04-04 15:29:45 +02:00
hardy
31bc110de0 a bit of re factoring 2021-04-04 15:29:45 +02:00
hardy
cffdac0445 adding module support, primary test/debug 2021-04-04 12:06:20 +02:00
hardy
77a3dd7e41 Merge remote-tracking branch 'origin/sanitize-address' into integration_2021_wk14_a 2021-04-04 08:18:50 +02:00
hardy
dac2388ed1 Merge remote-tracking branch 'origin/fix-nr-rlc-range-nack' into integration_2021_wk14_a 2021-04-04 08:18:25 +02:00
hardy
02504ef747 Merge remote-tracking branch 'origin/fix-x2-without-gnb' into integration_2021_wk14_a 2021-04-04 08:18:04 +02:00
Laurent OpenCells
c0ef3e6f88 fix gcc reported issues 2021-04-03 23:37:58 +02:00
rmagueta
713e3e713a Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-04-03 04:00:37 +01:00
Laurent OpenCells
fed90543bc Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sanitize-v1 2021-04-02 18:43:28 +02:00
Florian Kaltenberger
7ed03d5021 Update TESTING_GNB_W_COTS_UE.md 2021-04-02 12:42:06 +00:00
Raphael Defosseux
3d5170f6a0 [CI][Docker] adding no-cache options to make to take executables from Merge Requests
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-04-02 11:35:02 +02:00
Laurent THOMAS
0317d6725b sanitize, calibration tool kickoff 2021-04-02 10:12:13 +02:00
Laurent THOMAS
55315b8fae revert removal of a dirty workaround 2021-04-01 21:43:47 +02:00
rmagueta
d964cf60b8 Fix for RA when Msg3 fails 2021-04-01 18:45:29 +01:00
Sakthivel Velumani
f011b7981c fixed typo 2021-04-01 16:14:25 +02:00
rmagueta
4a807dd083 Minor improvements and LOG updates 2021-04-01 14:11:14 +01:00
Sakthivel Velumani
ca9ebcc959 Merge branch 'develop' into ue-pdsch-pusch-parallel 2021-04-01 12:44:59 +02:00
rmagueta
1aab76a48d Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_bch.c
2021-04-01 11:19:28 +01:00
Remi Hardy
91909a4ba6 Integration 2021 wk13 d
MR !1085 : Nr mac ssb
-MAC scheduling of multiple SSBs
-Symbol level occupation of VRB map for SSBs
-Multi SSB SIB1 scheduling

MR !1097 : NR_PRACH: nr_du\[\] buffer not filled in High Speed case for both gNB and nrUE
Issue: TC nr_prachsim failed with High Speed(-H) enabled.
While generating NR PRACH for High Speed case : Array nr_du\[\] was not filled for both gNB and nrUE. Added function nr_fill_du() to resolve the issue. 

MR !1107 : Small bugfixes for 5G NR
2021-04-01 08:16:03 +00:00
hardy
0fe69eafda pusch_proc_threads = 6 vs 8 2021-03-31 17:08:23 +02:00
rmagueta
d86566d366 gNB: update ssPBCH_BlockPower to -25 dBm/RE in all USRP conf files 2021-03-31 15:52:51 +01:00
Cedric Roux
6c6b46985b x2: exit if connection between eNB and gNB breaks
Before this commit, when the gNB crashes, the eNB keeps running.
Same, if the eNB crashes, the gNB keeps running.

In a far past when this happened, the other program (the one not
crashing) was forced to exit.

Then this behavior was changed, for some reason.
But the code was not finished, so now we have a system in an inconsistent
state.

So either we accept that the connection between eNB and gNB can break,
that is one of the programs crashes, and we clean the state of the
program that keeps running. But this is a complex work and it will
surely not survive very long, because someone will change something
in the code later that will break this complex behavior.

Or, simpler, we go back to initial behavior, which is: the program that
did not crash does actually exit when the other crashes.

This commit provides the second solution.

It can easily be reverted whenever someone wants to implement the complex
solution.
2021-03-31 16:39:30 +02:00
Cedric Roux
46c1aff489 fix: do NR only if at least one gNB is connected to the eNB
We used to set 'does_nr' of an UE if we detect ENDC supported in the
UE capabilities.

Then we activate NR measurements if 'does_nr' is true.

The problem is that if the eNB is not connected to a gNB but the UE
reports some NR measurements (because a gNB is running somewhere near)
then the eNB will crash when starting the switch to NR.

A (quick) solution is to set 'does_nr' only if there is a gNB connected to
the eNB.

Maybe not the best solution. To be changed if needed.
2021-03-31 16:39:30 +02:00
rmagueta
1175463c7e Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-03-31 15:33:48 +01:00
rmagueta
8c9ed555d9 Remove runtime callocs for dmrs_AdditionalPosition 2021-03-31 15:32:45 +01:00
Sakthivel Velumani
0c7008dd7a Changed gNB rxgain on CI conf 2021-03-31 15:44:38 +02:00
Raymond Knopp
f851af22f2 fixing previous commit 2021-03-31 14:39:55 +01:00
rmagueta
53f77219d4 Rework default PDSCH time domain resource allocation tables 2021-03-31 14:31:19 +01:00
hardy
5af77e8fb3 Merge remote-tracking branch 'origin/small_nr_bugfixes' into integration_2021_wk13_d 2021-03-31 13:49:24 +02:00
hardy
d5f8a6161f Merge remote-tracking branch 'origin/NRPRACH_highSpeed_saankhya' into integration_2021_wk13_d 2021-03-31 13:48:45 +02:00
hardy
4896e80e2c Merge remote-tracking branch 'origin/NR_MAC_SSB' into integration_2021_wk13_d 2021-03-31 13:47:58 +02:00
Laurent THOMAS
de5e64c722 Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sanitize-v1 2021-03-31 10:13:50 +02:00
Laurent THOMAS
58d372d3a2 one cppcheck, merge develop 2021-03-31 10:01:11 +02:00
Laurent THOMAS
e1c73a0632 Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-31 09:45:53 +02:00
Remi Hardy
1f3513b1e7 Integration 2021 wk13 c
MR !1092: Nr pdcp nia2 integrity
This code has not been tested with a COTS UE. We need SRB1/2 (so we need SA) to test.
The activation of security and integrity for SRB1 will need more code (new functions) because it happens after some time, not at creation time of the PDCP entity and there is no way to do this with current code.
 
MR !1075: Fft bench hotfix 
Simple fix to make the FFT testbench compile and run on current develop.

MR !1083: NR power measurement fixes
2021-03-31 05:15:29 +00:00
Sakthivel Velumani
cbaa901b81 Merge branch 'develop' into ue-pdsch-pusch-parallel 2021-03-31 01:42:16 +02:00
Laurent THOMAS
c2257d8687 Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sanitize-v1 2021-03-30 19:46:45 +02:00
Laurent THOMAS
29dd729a93 Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-30 19:45:10 +02:00
hardy
f76ec27726 Merge remote-tracking branch 'origin/fft_bench_hotfix' into integration_2021_wk13_c 2021-03-30 16:41:24 +02:00
hardy
1214836e75 Merge remote-tracking branch 'origin/nr_power_measurement_fixes' into integration_2021_wk13_c 2021-03-30 16:40:41 +02:00
Sakthivel Velumani
fa55cafda4 fixed warning 2021-03-30 16:11:39 +02:00
Sakthivel Velumani
a0422a607d Changed threshold after testing 2021-03-30 16:07:40 +02:00
Cedric Roux
fe4a9b005a nr: add some comments to pdcp nia2 integrity 2021-03-30 16:01:57 +02:00
Sakthivel Velumani
1e8c7dca82 Merge branch 'ue-dci-false-detection' into ue-pdsch-pusch-parallel 2021-03-30 15:38:51 +02:00
francescomani
579f0290f6 Merge remote-tracking branch 'origin/develop' into NR_MAC_SSB 2021-03-30 15:10:28 +02:00
Sakthivel Velumani
4c3d0dddaa Added threashold estimation
Estimate the threshold by simple averaging of mismatched bits of all detected DCI.
2021-03-30 14:36:05 +02:00
Thomas Schlichter
ca963e68ff gNB: fix allocation of RC.gNB[] array
If the array of pointers is allocated using malloc(), it is not guaranteed that the pointers are NULL, so the actual PHY_VARS_gNB might nit be allocated correctly!
Also replace a malloc() + memset() combination by just a calloc().
2021-03-30 14:05:40 +02:00
Sakthivel Velumani
76273a2aa0 Merge branch 'ue-dci-false-detection' into ue-pdsch-pusch-parallel 2021-03-30 13:43:28 +02:00
rmagueta
feb2651ea7 Fix issues due to merge 2021-03-30 12:38:31 +01:00
rmagueta
b55b11b125 Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair2/LAYER2/NR_MAC_UE/nr_ue_procedures.c
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
#	openair2/RRC/NR/rrc_gNB_reconfig.c
2021-03-30 11:51:56 +01:00
Sakthivel Velumani
e1e459d27c Check for DCI false positive
by comparing the received bits with re-encoded payload bits
2021-03-30 12:07:15 +02:00
Cedric Roux
63b7ff981e bugfix: fix compilation of simulators 2021-03-30 11:57:51 +02:00
Cedric Roux
18cb68ecc2 nr pdcp: first draft of NIA2 integrity
This code has not been tested with a COTS UE. We need SRB1/2 (so we need SA)
to test.

The activation of security and integrity for SRB1 will need more code
(new functions) because it happens after some time, not at creation time
of the PDCP entity and there is no way to do this with current code.
2021-03-30 11:57:51 +02:00
Cedric Roux
14c823037f nr pdcp: bugfix: D/C bit set only for DRBs 2021-03-30 11:57:51 +02:00
Robert Schmidt
f5a1d356db Refactor after merge
With the merge of fix_NR_DLUL_PF, gNB_dlsch_ulsch_scheduler() has no
nb_periods_per_frame variable. There are two changes here:

1) calculate this locally for initializing tdd_beam_association

2) do not pass it into schedule_nr_mib(). Further, use the following:
   nb_periods_per_frame = slots_per_frame / slots_per_period
   slots_per_frame / nb_periods_per_frame =
     = slots_per_frame / (slots_per_frame / slots_per_period)
     = slots_per_period
2021-03-30 10:49:00 +02:00
Robert Schmidt
576df55450 Merge remote-tracking branch 'origin/fix_NR_DLUL_PF' into integration_2021_wk12 2021-03-30 10:48:57 +02:00
Thomas Schlichter
9916076fbd gNB: fix pucch indexing in fill_ul_rb_mask() 2021-03-30 10:45:03 +02:00
Thomas Schlichter
7848e2575c add missing pusch_AntennaPorts to conf files 2021-03-30 10:44:15 +02:00
Remi Hardy
77c36950d4 Integration 2021 wk13 a
-MR !1052 : Nr fapi beamindex ssb ro
This branch completes RA procedure for FR2 and includes improvements for beam index communication through FAPI interface.

-fix_rb_corruption:
A memcpy() introduced to optimize for the case of no precoding corrupted RBs which are not allocated to PDSCH in the common txdataF array.
So instead, fall back to memcpy() for each PDSCH RB.

-benetel configuration files update
2021-03-30 08:27:48 +00:00
francescomani
d65af6d8ca Merge remote-tracking branch 'origin/develop' into NR_MAC_SSB 2021-03-30 09:35:18 +02:00
Sakthivel Velumani
2738f7669a Fixed warnings 2021-03-29 23:48:00 +02:00
Sakthivel Velumani
e63212bdf3 Bugfix in PUSCH schedule
Fixes one of the assertions when there is false DCI detecteted
2021-03-29 23:35:17 +02:00
Laurent THOMAS
f5022585d9 format astyle only 2021-03-29 21:50:06 +02:00
Sakthivel Velumani
2686ffb39b Bugfix in last commit 2021-03-29 21:36:52 +02:00
rmagueta
56673386dc Skip invalid MAC CCCH messages for being processed at UE 2021-03-29 16:56:25 +01:00
rmagueta
80941b0c31 Minor LOG improvements 2021-03-29 16:43:55 +01:00
rmagueta
b43c054f02 Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band41.fr1.106PRB.usrpb210.conf
#	targets/PROJECTS/GENERIC-NR-5GC/CONF/gnb.sa.band78.fr1.106PRB.usrpb210.conf
2021-03-29 15:51:37 +01:00
Sakthivel Velumani
cefa6918fa Enabled a error log on PUCCH 2021-03-29 16:43:50 +02:00
rmagueta
1b427efaa1 Revert LOG to pass CI tests for RA 2021-03-29 15:42:03 +01:00
Sakthivel Velumani
4c76c4fb1e Fixed sending ack for false retrans 2021-03-29 16:30:55 +02:00
Sakthivel Velumani
cbd000e02d Improved the 'non-stop' feature 2021-03-29 16:30:19 +02:00
Laurent THOMAS
738728142f merge develop 2021-03-29 15:33:45 +02:00
Thomas Schlichter
104aa7eed5 gNB: fix precoding matrix related compile error 2021-03-29 14:59:58 +02:00
rohan
7a65decae4 Added High Speed flag Test case for nr_prachsim 2021-03-29 12:03:32 +00:00
Laurent THOMAS
68a81f65b2 merge develop 2021-03-29 11:24:34 +02:00
Florian Kaltenberger
d08bb68b15 updating config file for benetel in CI folder 2021-03-29 10:35:35 +02:00
Florian Kaltenberger
5e9248938a applying new TDA to benetel config file 2021-03-29 10:35:17 +02:00
Florian Kaltenberger
2e9ac3672d removing annoying printf 2021-03-29 10:35:00 +02:00
hardy
74d2a6bbab Merge remote-tracking branch 'origin/fix_rb_corruption' into integration_2021_wk13_a 2021-03-29 10:31:15 +02:00
hardy
ddf3f9e88c Merge remote-tracking branch 'origin/NR_FAPI_beamindex_SSB_RO' into integration_2021_wk13_a 2021-03-29 10:02:51 +02:00
luis_pereira87
86d252ef92 Revert LOG to pass CI tests for RA 2021-03-28 11:35:15 +01:00
rmagueta
8e89ab0022 Fix Msg4 Ack at gNB and pdsch_to_harq_feedback_time_ind at UE 2021-03-27 23:46:37 +00:00
rmagueta
774b8d9a9f Fix TA in CFRA 2021-03-26 16:54:34 +00:00
Laurent THOMAS
fbf39eecc1 cppcheck fixes 2021-03-26 16:32:20 +01:00
Cedric Roux
9d1c24d461 nr rlc: bugfix: fix NACK with range
We do some sanity checks for incoming rlc control packets. One of them
is to check that so_start is not > so_end when present.

But when 'range' is present and bigger than 1 it means that so_start refers
to one PDU and so_end to another one. So we may well have so_start > so_end.

This commit fixes that and reorganizes a bit the code to do the check before
processing and rejecting the PDU if the values are not correct. (Before this
commit we were NACKing the whole PDUs if so_start > so_end.)
2021-03-26 15:36:43 +01:00
Laurent THOMAS
fc967bab3c Merge branch 'sim-channels' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-26 14:07:28 +01:00
Laurent THOMAS
364ea7685f fix warings 2021-03-26 14:07:10 +01:00
frtabu
1a93c759c8 fix cppcheck error 2021-03-26 12:14:32 +01:00
luis_pereira87
1af7e716e6 Fix mac sdu len calculation for CCCH and skip invalid CCCH1 messages for being processed 2021-03-26 09:46:30 +00:00
Laurent THOMAS
b35155274c Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-26 09:47:03 +01:00
Laurent THOMAS
818c9b2c88 first pass 2021-03-25 20:13:50 +01:00
rmagueta
7c90e58d39 Fix BWP selection for NSA mode 2021-03-25 17:37:03 +00:00
rmagueta
8800789b0a Fix preamble detection for NSA 2021-03-25 15:15:03 +00:00
Thomas Schlichter
f9410f7a69 gNB: update ssPBCH_BlockPower to -25 dBm/RE in all USRP conf files 2021-03-25 09:20:08 +01:00
Thomas Schlichter
7b76f3f2e1 Merge remote-tracking branch 'origin/develop' into nr_power_measurement_fixes 2021-03-25 09:10:55 +01:00
Raymond Knopp
e6ead93ad1 removed 3 warnings in lte-softmodem 2021-03-25 07:32:58 +01:00
Raymond Knopp
08b781ebfe Merge remote-tracking branch 'origin/develop' into oairu 2021-03-25 06:44:11 +01:00
rmagueta
114508c120 Minor fix in nr_prachsim 2021-03-24 16:17:48 +00:00
Raymond Knopp
39868c400a adding format_indicator to dci_payload of msg3 2021-03-24 16:09:48 +01:00
Raymond Knopp
e84d1fe678 adding UL LCID 52 for CCCH with 48 bits 2021-03-24 16:09:48 +01:00
Raymond Knopp
4840b895dd adding PRACH signal to T tracer 2021-03-24 16:09:48 +01:00
Florian Kaltenberger
feb2b9c8bb adding rxdataF signal to debug output 2021-03-24 10:24:24 +01:00
rmagueta
86f70e2777 Add RA support for up to NUMBER_OF_NR_ULSCH_MAX UEs 2021-03-23 20:13:23 +00:00
rmagueta
ee047b88e9 Remove TC-RNTI at PHY when RA procedure does not succeeded 2021-03-23 17:59:31 +00:00
rmagueta
4bd9972f3b Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-03-23 15:23:13 +00:00
rmagueta
8c13604d61 Fix PRACH with k1 = msg1-FrequencyStart + initialUplinkBWPStart 2021-03-23 15:22:36 +00:00
Roberto Louro Magueta
7c2591f318 Revert "Fix PRACH msg1-FrequencyStart/k1"
This reverts commit b6513faa82
2021-03-23 16:04:01 +01:00
rmagueta
b6513faa82 Fix PRACH msg1-FrequencyStart/k1 2021-03-22 20:07:14 +00:00
Luis Pereira
e82915c4b1 Revert "Fix msg1-FrequencyStart in config files for SA"
This reverts commit b067406097
2021-03-22 15:28:15 +01:00
Francesco Mani
763b3c675d change in set_tdd_config_nr description 2021-03-22 15:01:32 +01:00
rohan
ee4938b9f0 Update nr_prach.c: NR_PRACH_DEBUG flag disabled. 2021-03-22 14:49:24 +01:00
Rohan Patil
ad0f5ba26f nr_du[] not filled in High Speed case for both gNB and nrUE 2021-03-22 09:38:12 -04:00
Laurent THOMAS
1cb33aa7de code review fixes, merge latest develop 2021-03-22 09:46:24 +01:00
Laurent THOMAS
5a12698583 Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into NR_FAPI_beamindex_SSB_RO 2021-03-22 08:55:34 +01:00
Laurent THOMAS
230af8db6f fix a old issue about T_IDs.h that killed my CI run 2021-03-22 07:59:24 +01:00
Laurent THOMAS
3bd3f452c2 :( remove sanitize=address option, fix some cppchecks 2021-03-21 23:48:46 +01:00
Laurent THOMAS
8c61e9ff83 Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into sim-channels 2021-03-21 12:47:39 +01:00
Michael Cook
2f4767a7d4 build_oai: Add --sanitize-address option
To enable -fsanitize=address option to the compiler
which enables run-time checks for some kinds of memory
mismanagement.
2021-03-20 10:53:34 -04:00
rmagueta
d37552db4c Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair1/SIMULATION/NR_PHY/ulsim.c
#	openair2/LAYER2/NR_MAC_COMMON/nr_mac_common.h
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_uci.c
#	targets/ARCH/USRP/USERSPACE/LIB/usrp_lib.cpp
2021-03-19 15:07:08 +00:00
Laurent THOMAS
fcda7b97fe add sanitize option, merge develop 2021-03-19 12:21:04 +01:00
francescomani
d76c50e34a Merge remote-tracking branch 'origin/develop' into nr_power_measurement_fixes 2021-03-19 11:22:18 +01:00
Laurent THOMAS
0009fefce2 Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-19 11:19:58 +01:00
francescomani
f659a76f43 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-03-19 10:06:20 +01:00
francescomani
9d37feecb8 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-03-19 09:55:30 +01:00
francescomani
f0d6298475 new attempt at improving call to RC L1 config 2021-03-19 09:55:18 +01:00
Sakthivel Velumani
7b9815b316 Fixed do-ra bug 2021-03-19 01:49:55 +01:00
Sakthivel Velumani
80c261c9ae Fixed lte-dlsim segflt 2021-03-19 00:56:44 +01:00
Sakthivel Velumani
58d10d592f Fix nr_dlsim segflt 2021-03-19 00:06:30 +01:00
Raymond Knopp
91168581a5 small fix for basic simulator in TDD 2021-03-18 20:35:17 +01:00
Sakthivel Velumani
874cefb924 Fixed build errors
Also added warning messages for gNB number of threads required
2021-03-18 20:17:41 +01:00
luis_pereira87
b067406097 Fix msg1-FrequencyStart in config files for SA 2021-03-18 18:49:16 +00:00
rmagueta
1ee7d7e551 Remove some hard code values 2021-03-18 17:39:01 +00:00
Roberto Louro Magueta
642c639406 Revert "Fix preamble sequence"
This reverts commit 9efe4187e7
2021-03-18 17:14:31 +01:00
francescomani
a1f1d53cb5 another tentative fix for gnb initialization crashes 2021-03-18 13:09:36 +01:00
rmagueta
9efe4187e7 Fix preamble sequence 2021-03-18 01:20:59 +00:00
frtabu
5c025c321e set libconfig AUTOCONVERT option to true 2021-03-18 00:22:11 +01:00
Laurent THOMAS
0827488303 noise power 2021-03-17 19:34:27 +01:00
francescomani
d30b8c69ae fix dlsim crashes (wrong detection of dci for ul) 2021-03-17 18:45:56 +01:00
Laurent THOMAS
7e1f6fc203 Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-17 17:08:28 +01:00
Sakthivel Velumani
a702fd55b3 Fixed blocking bug 2021-03-17 14:58:06 +01:00
Sakthivel Velumani
cdda2a4a6f Merge branch 'develop' into ue-pdsch-pusch-parallel 2021-03-17 12:59:26 +01:00
Sakthivel Velumani
85b0aa0497 More fixes
1.Changes to support multi slot parallel processing
2.Changes to run rfsimulator without multi-threading
2021-03-17 12:39:06 +01:00
rmagueta
27f0414e60 Fill pusch_proc_threads in config files 2021-03-16 16:49:30 +00:00
rmagueta
9456542678 Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair1/PHY/NR_ESTIMATION/nr_ul_channel_estimation.c
2021-03-16 16:04:23 +00:00
rmagueta
986a9fac1d Fixed issues to allow coexistence of CFRA and CBRA implementations 2021-03-16 16:00:37 +00:00
Raymond Knopp
9f8d702727 fix after merge with develop 2021-03-16 16:26:25 +01:00
rmagueta
8646dd0bcb DRB configuration for a new crnti 2021-03-16 12:51:04 +00:00
Sakthivel Velumani
33afbc9eee Revert "Multiple RXTX sequential threads"
This reverts commit 85e1c34c65.
2021-03-16 13:17:10 +01:00
Sakthivel Velumani
0bbaa0db2b Revert "Threadsafe FIFOs"
This reverts commit 0280c08391.
2021-03-16 13:16:54 +01:00
Sakthivel Velumani
0280c08391 Threadsafe FIFOs
1. Changed FIFO types to threadsafe to ensure order of execution
2. Changed RB_NB_TH to 1 because PUCCH have some issues when running 2 slots in parallel (race). Dont know exactly where it happens.
2021-03-16 12:44:26 +01:00
hardy
ee398c7610 solved merge conflicts related to CI scripts 2021-03-16 11:55:23 +01:00
luis_pereira87
bdc97f7a56 Send MAC NR-BCCH-SL-SCH to RRC through ITTI at UE 2021-03-16 10:08:54 +00:00
Raymond Knopp
94085a41cd Merge remote-tracking branch 'origin/develop' into oairu 2021-03-16 08:07:16 +01:00
Sakthivel Velumani
85e1c34c65 Multiple RXTX sequential threads
Created separate job for PDSCH processing so that its exectued in the right order in rfsimulator mode.
2021-03-16 00:39:54 +01:00
frtabu
98c354fedd Set path for libconfig include directive, so that all config files could be located in the same directory. minor fixes in softmodem-common 2021-03-15 23:26:09 +01:00
Raymond Knopp
a3f6fe4260 L2 emulator seems ok now 2021-03-15 22:45:54 +01:00
francescomani
9e0938f59b fix pbchsim compilation error 2021-03-15 17:33:38 +01:00
frtabu
d118e7e60b Merge branch 'sim-channels' of https://gitlab.eurecom.fr/oai/openairinterface5g into sim-channels 2021-03-15 12:53:36 +01:00
frtabu
8ad4895f55 Add common option telnetclt 2021-03-15 12:51:49 +01:00
Laurent THOMAS
a97bf1da6e fix phy simulators, merge develop 2021-03-15 12:40:15 +01:00
francescomani
13a561104b Merge remote-tracking branch 'origin/develop' into NR_MAC_SSB 2021-03-15 10:23:06 +01:00
Laurent THOMAS
d659ceb849 merge develop
Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels
2021-03-15 09:44:33 +01:00
Raymond Knopp
4c8fb83e82 lowmem option for allocating transport channel buffers in NR_DLSCH/NR_ULSCH. Used for unitary simulation in CI. 2021-03-14 22:47:43 +01:00
Raymond Knopp
0043063d40 fixed bandwidth scaling for 6 PRBs in eNB and UE. 2021-03-14 22:17:48 +01:00
Raymond Knopp
f5fcd5687d small changes in main-ocp to reflect initialization differences int phy_init_lte_eNB(). 2021-03-14 09:28:06 +01:00
Raymond Knopp
7f5dc92265 testing with multi-RU 2021-03-13 21:43:00 +01:00
Raymond Knopp
74a44d686d minor changes 2021-03-13 21:27:39 +01:00
Raymond Knopp
e5226adcb0 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2021-03-13 21:26:47 +01:00
magounak
28f65fb297 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2021-03-13 21:26:14 +01:00
magounak
a4666ba7e5 OTA synch changes for slave RRU 2021-03-13 21:25:54 +01:00
Raymond Knopp
092eb544b6 slave RRU testing with OTA synch. 2021-03-13 21:24:42 +01:00
rmagueta
bad2a56b06 Implementation of the RA-Msg4 Ack 2021-03-13 20:12:57 +00:00
rmagueta
7ef6611d7d Remove hard code in nr_pdsch_channel_estimation 2021-03-13 17:56:23 +00:00
rmagueta
dff9c29b1d Fix regarding ra_PreambleIndex in new RA attempts after fail 2021-03-12 20:39:48 +00:00
rmagueta
8f28685cf3 Fix in new RA attempts after fail 2021-03-12 20:15:48 +00:00
Sakthivel Velumani
cef0567aa9 Process PDSCH and PUSCH in parallel
1. RX PBCH slot n
2. RX PDCCH slot n
3. Start TX PUSCH in parallel for slot n+6
4. RX PDSCH slot n
5. Join PUSCH
6. TX PUCCH slot n+6
2021-03-12 20:49:13 +01:00
rmagueta
8b5d5bbb47 Set crnti with t_crnti value when RA succeeded 2021-03-12 18:48:00 +00:00
rmagueta
732617f5ae Fix RNTI type for Msg3 at UE 2021-03-12 18:31:34 +00:00
rmagueta
1821c8c9d6 Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-03-12 16:02:57 +00:00
rmagueta
53d0fc05ca Add more RA_state_t to accommodate all the output values from nr_ue_get_rach 2021-03-12 16:02:28 +00:00
rmagueta
e2627f8025 Improve UE mode 2021-03-12 13:47:59 +00:00
francescomani
dd1b8b64cf tentative fix for RC.gNB[inst] allocation 2021-03-12 13:15:48 +01:00
Sakthivel Velumani
616477a5af Option to run UE without stopping
when signal quality drops. when cmd line option used ue goes back to sync mode
2021-03-11 17:29:22 +01:00
rmagueta
acb9a6e0dc Update band 41 config file 2021-03-11 14:11:08 +00:00
rmagueta
e06c727604 Revert "Revert RA preamble shift at gNB"
This reverts commit fa79cdb5
2021-03-11 13:57:29 +00:00
Sakthivel Velumani
2473ed0a90 Added PUCCH signal level 2021-03-11 00:00:56 +01:00
frtabu
de87c02ea9 start doc 2021-03-10 21:39:20 +01:00
Sakthivel Velumani
787cc6e90d Pipeline process
thread1: RX
thread2: TX
2021-03-10 21:28:50 +01:00
rmagueta
fa79cdb5ba Revert RA preamble shift at gNB 2021-03-10 19:21:06 +00:00
rmagueta
f6a1c1883f Add support for PUSCH scheduled by RAR when BWPStart>0 2021-03-10 19:13:29 +00:00
francescomani
bc1942f99a fixing a segfault in dlschsim 2021-03-10 14:07:11 +01:00
Thomas Schlichter
f032830465 gNB: don't use gNB->RU_list in nr_measurements_gNB.c
this list is not initialized in phy-simulators
2021-03-10 13:15:03 +01:00
luis_pereira87
982a054631 Add support for PUSCH DMRS sequence generation when BWPStart>0 2021-03-10 10:42:11 +00:00
Thomas Schlichter
367241ef47 fix compile warnings 2021-03-10 11:34:00 +01:00
francescomani
35bbbe635f fixing a compilation error 2021-03-10 09:12:18 +01:00
frtabu
9c94e72fa8 Merge branch 'sim-channels' of https://gitlab.eurecom.fr/oai/openairinterface5g into sim-channels 2021-03-10 02:56:03 +01:00
frtabu
1f0e82664f enhance channel model configuration 2021-03-10 02:33:31 +01:00
rmagueta
7be1952c82 Add back-off indicator subheader to Msg2 2021-03-09 16:29:04 +00:00
rmagueta
e5ee51964b Add temporary LOGs for Msg2 2021-03-09 15:00:06 +00:00
Thomas Schlichter
5d50553c29 Merge remote-tracking branch 'develop' into nr_power_measurement_fixes 2021-03-09 14:09:53 +01:00
Laurent THOMAS
c9d2754087 Merge branch 'sim-channels' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-09 11:12:28 +01:00
Laurent THOMAS
05dedf568a Merge branch 'develop' of gitlab.eurecom.fr:oai/openairinterface5g into sim-channels 2021-03-09 11:12:17 +01:00
francescomani
a4da922053 bugfix in switch 2021-03-09 09:02:50 +01:00
frtabu
782053f03f enhance channel model configuration 2021-03-09 01:21:38 +01:00
luis_pereira87
45b86847b7 Fix DMRS sequence generation for BWPStart>0 (Msg2 and Msg4) 2021-03-08 19:35:49 +00:00
cig
77c1ccdf56 Update ssPBCH_BlockPower value in the conf file to match actual outpur power
- currently, -25 dBm/RE is the maximum measured power from USRP
  corresponding to att_tx = 0 dB, therefore ssPBCH_BlockPower has been
  updated accordingly
- this param is used at UE side for the pathloss computation, which now
  seems to match measurements observed during lab testing
2021-03-08 15:25:45 +01:00
cig
5d8d478ffb NR gNB UL power measurements
- new function has been introduced for the computation of UL SNR
- minor bugfix to noise power computation
- FAPI data type for referenceSignalPower has been updated to reflect the
  range of values for the SSB power
2021-03-08 15:25:45 +01:00
cig
76ef9b4285 Fixes to NR UE power measurements
- pathloss, RSSI, RSRP and Noise measurements have been reviewed and wrong
  implementation has been fixed
- referenceSignalPower type in the FAPI struct has been changed to int
  has its range include negative values
2021-03-08 15:25:43 +01:00
hardy
7d2b45d8e2 Merge remote-tracking branch 'origin/ci_test_ra_fr2' into NR_FAPI_beamindex_SSB_RO 2021-03-08 14:35:25 +01:00
francescomani
c758736885 Merge remote-tracking branch 'origin/develop' into NR_MAC_SSB 2021-03-08 14:13:39 +01:00
rmagueta
f88dff1bca Uniformization of coreset start subcarrier at gNB for coreset0 2021-03-08 14:02:56 +01:00
Raymond Knopp
d72b9c4e71 Merge remote-tracking branch 'origin/develop' into oairu 2021-03-08 13:41:14 +01:00
rmagueta
6ecf50bc2f Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA 2021-03-08 12:05:59 +00:00
rmagueta
dc9425ee91 Uniformization of coreset start subcarrier at gNB for coreset0 2021-03-08 12:05:25 +00:00
francescomani
de0492b26e adding a log at mac 2021-03-08 11:02:09 +01:00
francescomani
118eb3f798 fix compilation of phy simulators 2021-03-08 10:17:10 +01:00
francescomani
a9ed3baafd reworking PHY functions for scheduling SSBs 2021-03-08 08:53:56 +01:00
rmagueta
99711020bd Update generate_nr_prach after receiving RA-Msg2 at UE 2021-03-06 20:13:14 +00:00
Florian Kaltenberger
deb19f19fa Revert "temporarily enabling beamforming also for FR1 + some logs (revert this commit before MR)"
This reverts commit 87a8a94ae9.
2021-03-05 21:09:38 +01:00
francescomani
287e6078e2 ssb slot computation from starting symbol in sib1 function 2021-03-05 15:36:43 +01:00
Raymond Knopp
347dec4fff Merge branch 'fft_bench_hotfix' of https://gitlab.eurecom.fr/oai/openairinterface5g into fft_bench_hotfix 2021-03-05 15:33:55 +01:00
rmagueta
ba8c14debc Update RA succeeded procedures 2021-03-04 19:58:11 +00:00
Raymond Knopp
40fd1296a3 FFT unitary simulator compilation fix 2021-03-04 19:21:54 +01:00
francescomani
8756a56121 tentative fix for scheduling multiple sib1 instances 2021-03-04 17:48:10 +01:00
rmagueta
cfd5adcc84 Segmentation fault prevention in RA-Msg2 2021-03-04 16:11:44 +00:00
hardy
1ac13d90e4 typo fix 2021-03-04 16:44:32 +01:00
francescomani
18b1218779 reworking of MAC functions to schedule SSBs, including VRB map occupation and get_type0_PDCCH_CSS_config_parameters 2021-03-04 14:32:41 +01:00
Laurent THOMAS
3b1b74cfd2 starting 2021-03-04 13:22:14 +01:00
knopp
055d582403 Update oai_dfts.c 2021-03-04 11:49:07 +01:00
rmagueta
245f1e066f Improvements in RA-Msg4 2021-03-04 01:23:56 +00:00
rmagueta
ab3794e62c Improvements in RA-Msg2 2021-03-03 20:16:14 +00:00
luis_pereira87
bb0507a846 Revert code from commit fc9b781c 2021-03-03 16:03:18 +00:00
hardy
c25da4b3aa update of HTML report 2021-03-03 15:33:58 +01:00
luis_pereira87
efd1f46f1f Fix Msg4 mcsIndex assignment 2021-03-03 12:12:39 +00:00
hardy
c8d26ad5b2 Merge remote-tracking branch 'origin/rh_ci_ra_fr2' into ci_test_ra_fr2 2021-03-03 11:05:24 +01:00
luis_pereira87
c457cf6455 Msg2 temporary fix for PDSCH time domain resource allocation (use the same as SIB1 from TS 38.214 Table 5.1.2.1.1-2) 2021-03-03 10:01:35 +00:00
luis_pereira87
d0b9146cd0 Msg4 transmitted from MAC to RRC through ITTI (TASK_RRC_NRUE created) 2021-03-03 01:27:50 +00:00
luis_pereira87
d1c56742d3 Msg4 transmitted with UE Contention Resolution Identity and with RRCSetup 2021-03-03 00:11:07 +00:00
rmagueta
abb894be6b Draft RA-Msg4 at gNB 2021-03-02 20:20:11 +00:00
rmagueta
ce5b59c938 Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_ulsch.c
2021-03-02 12:58:32 +00:00
Sakthivel Velumani
76acfbf993 Merge branch 'develop-SA-CBRA' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop-SA-CBRA 2021-03-01 23:50:57 +01:00
Sakthivel Velumani
1a7a086480 Passing symbolStart to fill_dmrs_mask
Adding missed changes in previous commit
2021-03-01 23:50:16 +01:00
luis_pereira87
ca5eb17f28 Fix SIB1 with offsetToPointA = 86 2021-03-01 22:18:51 +00:00
Sakthivel Velumani
75cad822c5 Merge branch 'develop-SA-CBRA' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop-SA-CBRA 2021-03-01 20:47:54 +01:00
Sakthivel Velumani
240f411fed Passing symbolStart to fill_dmrs_mask
It is sufficient to pass l_d directly to the function but considering future extension to mapping type B, this way makes more sense.
2021-03-01 20:41:02 +01:00
rmagueta
e5aba9eda1 Fix RA-Msg3 to logical channel CCCH 2021-03-01 19:23:43 +00:00
rmagueta
deef82d70b Fix RA-Msg3 to logical channel CCCH 2021-03-01 19:23:23 +00:00
luis_pereira87
ee9210c69b Correction proposal for HARQ when ULSCH is not received 2021-03-01 11:22:39 +00:00
luis_pereira87
f18db2bad8 Update SIB1 with q_RxLevMin to -65 and MCC and MNC to match SIM card values 2021-03-01 10:32:12 +00:00
Laurent Thomas
9ce7f94518 record/replay for 5G, nrscope bug fix 2021-02-28 21:39:53 +01:00
Laurent Thomas
f5a22a7426 Merge branch 'develop-SA-CBRA' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop-SA-CBRA 2021-02-28 11:06:02 +01:00
rmagueta
fc9b781c2a Avoid multiple transmissions in the RA-Msg4 slot 2021-02-26 20:15:06 +00:00
rmagueta
eb17629d34 nr_generate_Msg4 support for multiple RA procedures 2021-02-26 00:51:03 +00:00
francescomani
1541a6b808 fix for ssb preamble index association in rrc configuration 2021-02-25 16:24:28 +01:00
rmagueta
6a16fe9e3f Fix issues caused by merge of branch develop 2021-02-25 14:57:53 +00:00
rmagueta
cf70265ba6 Merge remote-tracking branch 'origin/develop' into develop-SA-CBRA
# Conflicts:
#	openair2/LAYER2/NR_MAC_gNB/gNB_scheduler_RA.c
#	openair2/LAYER2/NR_MAC_gNB/mac_proto.h
2021-02-25 13:03:06 +00:00
rmagueta
c8fbcdf7b9 Minor fix 2021-02-25 12:47:23 +00:00
francescomani
9afb19858a Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-02-25 12:04:24 +01:00
luis_pereira87
adaf5a721c Define Initial BWP with the same locationAndBandwidth as Coreset0 defined by PDCCHConfigSIB1 in MIB 2021-02-25 10:56:08 +00:00
Laurent Thomas
77806538a7 Merge branch 'develop-SA-CBRA' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop-SA-CBRA 2021-02-25 10:55:59 +01:00
Raymond Knopp
11c3a26414 Merge remote-tracking branch 'origin/develop' into oairu
Conflicts:
	openair2/RRC/LTE/rrc_eNB.c
2021-02-24 21:52:14 +01:00
rmagueta
d1ba40cc56 Fix RA-Msg2 to Initial BWP 2021-02-24 19:34:53 +00:00
rmagueta
2060cf45bb Fix RA-Msg4 to Initial BWP 2021-02-24 18:49:00 +00:00
rmagueta
aacf75b298 Transmission and reception of a fake RA-Msg4 2021-02-24 02:54:53 +00:00
Laurent Thomas
8e5ee096e1 Merge branch 'develop-SA-CBRA' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop-SA-CBRA 2021-02-23 16:25:26 +01:00
rmagueta
48811d0f34 Merge branch 'develop' into develop-SA-CBRA
# Conflicts:
#	cmake_targets/CMakeLists.txt
#	openair1/SIMULATION/NR_PHY/dlsim.c
#	openair1/SIMULATION/NR_PHY/ulsim.c
2021-02-23 13:29:53 +00:00
Raymond Knopp
d5cff2c3c3 nfapi_setmode dummy for oairu exectuable 2021-02-23 14:07:12 +01:00
Laurent Thomas
92e90c2c4f Merge branch 'develop-SA-CBRA' of https://gitlab.eurecom.fr/oai/openairinterface5g into develop-SA-CBRA 2021-02-23 13:58:18 +01:00
Laurent Thomas
9d72f65e9c small fix 2021-02-23 13:58:14 +01:00
Raymond Knopp
a6e16e7c8a Merge remote-tracking branch 'origin/develop' into oairu 2021-02-23 11:51:29 +01:00
Raymond Knopp
9f35010ea3 changes for multi-RRU OTA synch 2021-02-23 10:19:05 +01:00
rmagueta
31cf9ab847 Fix ra->rnti 2021-02-23 02:22:27 +00:00
Raymond Knopp
596b54bcbe synchronization for oairu 2021-02-22 21:47:12 +01:00
rmagueta
495ba8920d Merge branch 'develop-SA-RA' into develop-SA-CBRA 2021-02-22 16:35:06 +00:00
rmagueta
23695a52d7 Fix stored node 2021-02-22 14:30:04 +00:00
rmagueta
a613617737 Fix preamble shift at gNB for RA works with all preambles 2021-02-21 04:05:29 +00:00
Robert Schmidt
305902da42 Correctly allocate memory for NR measurement array 2021-02-20 15:43:02 +01:00
Raymond Knopp
f8e6e1fd85 bugfix in PHR, addition of configuration parameters for MAC scheduler 2021-02-19 21:57:54 +01:00
luis_pereira87
22fa28e7fe Merge remote-tracking branch 'origin/enhance-rfsim' into develop-SA-CBRA 2021-02-19 16:18:22 +00:00
rmagueta
edccb98691 First draft implementation of CBRA 2021-02-17 20:16:03 +00:00
Raymond Knopp
7fa5d4188f added include to suppress warning 2021-02-17 18:41:23 +01:00
Raymond Knopp
b193771387 12-bit frequency-domain equalizer LUT. fix for log2_maxh in ULSCH receiver 2021-02-17 15:34:49 +01:00
Laurent Thomas
abfa103247 fix re-reading and end marker code 2021-02-15 10:54:35 +01:00
Raymond Knopp
d77f9ad096 build oairu ok 2021-02-15 08:13:15 +01:00
Raymond Knopp
a135f261b2 adjust includes for oairu target. Now test X-Ysoftmodem on another machine 2021-02-14 17:59:28 +01:00
Raymond Knopp
7b4c1eae33 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2021-02-14 14:06:18 +01:00
Raymond Knopp
b67a3502b8 commit before merge 2021-02-14 14:06:05 +01:00
Raymond Knopp
5b865df202 fixed for oairu target after merge with develop 2021-02-14 14:05:16 +01:00
Raymond Knopp
5ed79a27de Merge remote-tracking branch 'origin/develop' into oairu 2021-02-14 07:18:13 +01:00
francescomani
63f264a3d7 quickfix for fr2 xlsch bitmap 2021-02-12 11:20:57 +01:00
francescomani
cb296fa050 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-02-11 18:15:12 +01:00
Raymond Knopp
a30eabbe21 OTA testing 4G, configuration parameters for fairRR scheduler and common parameters for both fairRR and default 2021-02-11 13:43:25 +01:00
Raymond Knopp
37ef411c2e traces for fairRR scheduler 2021-02-10 14:14:29 +01:00
Raymond Knopp
199ce8ac55 fixed segfault in ulsim when trials > 1000 2021-02-08 20:58:48 +01:00
Raymond Knopp
4d47e3da96 IF4p5 testing. seems to work again with fixes after merge with develop 2021-02-08 15:27:37 +01:00
francescomani
58ad2bf06f Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-02-08 12:05:06 +01:00
Laurent Thomas
fa63d9a4e6 merge develop 2021-02-08 11:56:42 +01:00
Raymond Knopp
1bf9ea6d23 fixed NR build issues after merge with develop 2021-02-07 22:01:41 +01:00
Raymond Knopp
846c67b9bd Merge remote-tracking branch 'origin/develop' into oairu
Conflicts:
	openair2/LAYER2/NR_MAC_COMMON/nr_mac.h
2021-02-07 18:23:46 +01:00
Raymond Knopp
d06018d1e3 Merge branch 'four_antenna_eNB' into oairu 2021-02-07 17:46:23 +01:00
Raymond Knopp
7a169947da Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2021-02-07 17:41:57 +01:00
Raymond Knopp
008f9060a1 unitary simulators tested 2021-02-07 14:14:28 +01:00
Raymond Knopp
edff477050 reduced 5G memory limits for CI 2021-02-07 09:40:22 +01:00
Raymond Knopp
addd891a2f testing on outdoor network 2021-02-06 14:55:13 +01:00
hardy
23134fba77 adding test update + conf file for RA FR2 2021-02-05 15:39:20 +01:00
Raphael Defosseux
b3341ed1ca CI: fix false negative in HTML report
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-02-04 15:19:02 +01:00
Raphael Defosseux
b81b6181e0 CI: migrating to oairu target on RRU machines
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-02-04 14:59:08 +01:00
francescomani
4d2c80e418 fix dlsim compilation 2021-02-04 09:59:09 +01:00
francescomani
28cb2c6c77 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2021-02-04 08:26:32 +01:00
Raymond Knopp
2e59e05b66 set eNB->use_DTX=1, TM2 now works again. Need to fix this option when multiple TX antenna ports are used 2021-02-02 23:20:20 +01:00
Raymond Knopp
4a4636d202 more minor changes 2021-02-02 20:58:29 +01:00
Raymond Knopp
6ae26ee6dc minor changes after merge 2021-02-02 20:45:46 +01:00
Raymond Knopp
4e9afb30b0 Merge remote-tracking branch 'origin/develop' into oairu 2021-02-02 12:09:56 +01:00
Raymond Knopp
3cb6892987 CU/DU tested with phoenix + B38 RRU (CU and DU via lo) 2021-02-02 11:15:13 +01:00
Laurent Thomas
7eda2b7409 remainign bug after merge develop 2021-02-01 15:35:17 +01:00
Laurent Thomas
6b37681854 merge develop, minor code addition 2021-02-01 09:02:57 +01:00
Raymond Knopp
849c5e0c86 F1_SETUP tested 2021-01-31 21:46:58 +01:00
Raymond Knopp
9a71d5550e build of eNB/gNB/UE/nrUE 2021-01-30 23:27:25 +01:00
Raymond Knopp
579a573b90 unitary simulations build 2021-01-30 22:34:16 +01:00
Raymond Knopp
78f14bc9a4 fixed build for oairu executable. tested with sirius/phoenix 2021-01-28 21:53:24 +01:00
Raymond Knopp
616eb6700f NR RSRP/RSRQ conversion routines 2021-01-27 23:40:34 +01:00
Raymond Knopp
89657f20e6 testing with N310 4x4 eNB 20 MHz 2021-01-27 21:03:47 +01:00
Robert Schmidt
28cd23887e Update NR Measurements periodically, remove rsrq typo 2021-01-27 15:43:48 +01:00
laurent
4b345f1589 tested with one UE, better intergration with legacy gtpu 2021-01-27 15:09:00 +01:00
Raymond Knopp
184f095384 bugfix in EN-DC measurement reporting trace collection 2021-01-27 11:56:11 +01:00
Raphael Defosseux
e16f769174 CI: try to optimize the file system usage when building in the CI VM env. Increased the VM memory of one to allow linking
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2021-01-26 15:33:22 +01:00
Raymond Knopp
f04846cf4f 2 and 4 antenna testing with ulsim functional. >=3 dB gains from 2 to 4 antennas on SCM channels 2021-01-26 13:25:07 +01:00
francescomani
a05cf8c8e8 Merge branch 'NR_FAPI_beamindex_SSB_RO' of https://gitlab.eurecom.fr/oai/openairinterface5g into NR_FAPI_beamindex_SSB_RO 2021-01-25 18:14:27 +01:00
francescomani
30b41ba107 fix in TA update at gNB 2021-01-25 18:13:58 +01:00
Francesco Mani
0c61ee543e Update gnb.band257.tm1.32PRB.usrpn300.conf 2021-01-25 14:37:47 +01:00
Laurent Thomas
954b0f559d new gtp before tests 2021-01-25 12:59:38 +01:00
francescomani
bf028e8867 fix in a config file for RA 2021-01-25 12:33:37 +01:00
Raymond Knopp
bbe6db03dd removed some cppcheck errors 2021-01-25 10:36:54 +01:00
francescomani
0451854429 bugfix 2021-01-25 10:30:45 +01:00
Raymond Knopp
9f52fd4ae7 removed warnings on lte-softmodem compilation 2021-01-25 10:02:15 +01:00
Raymond Knopp
86cab23b74 fixed build with --mu 2021-01-24 22:23:33 +01:00
Raymond Knopp
e82ef88e72 builds are succesful (eNB,UE,gNB,nrUE,physim) 2021-01-24 13:27:10 +01:00
Raymond Knopp
5294bc4fe3 warnings and unitary simulation bulding 2021-01-23 15:04:11 +01:00
Raymond Knopp
ef1fb827b5 Merge remote-tracking branch 'origin/develop' into oairu 2021-01-23 09:17:37 +01:00
Sakthivel Velumani
fd3333a27b Flaging that HARQ feedback has been sent
so that in the next frame when the same harq is not used the UE won't send feedback (this was a bug)
2021-01-23 09:00:05 +01:00
Raymond Knopp
c15f67c7f2 mutex unlock after cond_signal 2021-01-22 07:26:13 +01:00
Sakthivel Velumani
51e77fd00f Added pucch stats along with ulsch one 2021-01-21 16:33:10 +01:00
Laurent Thomas
06366787ae Merge branch 'develop' of https://gitlab.eurecom.fr/oai/openairinterface5g into new-gtpu 2021-01-21 15:51:34 +01:00
Laurent Thomas
75ad3da9d9 start new gtpu 2021-01-21 15:51:30 +01:00
Sakthivel Velumani
6b5f8ff2fa Diabled more logs in UE 2021-01-21 15:36:51 +01:00
Raymond Knopp
ed10f077cf bug in uci stats handling 2021-01-21 13:45:33 +01:00
Raymond Knopp
f8aa85644f bugfix in UCI statistics 2021-01-21 11:51:40 +01:00
Raymond Knopp
1ed284add5 bugfix in UECapability parsin 2021-01-21 10:03:48 +01:00
Raymond Knopp
ea59a774fe gtwave traces 2021-01-21 09:31:20 +01:00
francescomani
a4243b6e90 Merge branch 'NR_FAPI_beamindex_SSB_RO' of https://gitlab.eurecom.fr/oai/openairinterface5g into NR_FAPI_beamindex_SSB_RO 2021-01-21 08:52:58 +01:00
francescomani
b42b884d77 fix in do SIB1 for FR2 2021-01-21 08:52:54 +01:00
Sakthivel Velumani
a406f320f2 Disabled some log messages 2021-01-20 15:24:45 +01:00
Sakthivel Velumani
69373e22d5 Reverted last commit and fixed merge
Reverted commit e0b1f61235
removed a merge conflict error
2021-01-20 12:35:58 +01:00
Sakthivel Velumani
b8795d3824 Merge branch 'develop' into NR_FAPI_beamindex_SSB_RO
Fixed merge conflicts.
2021-01-19 20:58:10 +01:00
Sakthivel Velumani
af4242b508 UE writes to USRP only on tx slots
Removed the hardcoding of fixed tdd and replaced with tdd config from mac configuration
2021-01-19 16:20:50 +01:00
Sakthivel Velumani
e0b1f61235 Removing RX_NB_TH from odd places
I removed this from places where I felt it shouldn't be. Not sure why was it there in the first place.
To be reviewed.
2021-01-19 14:28:37 +01:00
Raymond Knopp
241726e343 minor changes for logging 2021-01-19 14:14:57 +01:00
Raymond Knopp
1b23148ea2 bugfix in RRC stats file creation 2021-01-18 12:08:24 +01:00
Raymond Knopp
ce71c40903 added RRC stats 2021-01-18 09:56:26 +01:00
Raymond Knopp
a7ac979a57 stats adjustment 2021-01-14 23:32:52 +01:00
Raymond Knopp
db90feea53 PDCP throughput statistics in log 2021-01-14 23:16:14 +01:00
Raymond Knopp
c3a9d018a8 PDCP statistics logs, ulsim updates after recent changes 2021-01-14 14:19:25 +01:00
Wang
5e8a48fcc7 Update nr_gold_ue.c 2021-01-13 11:06:16 +01:00
francescomani
dcc1a46286 pdusize type to accomodate new beamforming and precoding structures 2021-01-13 11:03:55 +01:00
Raymond Knopp
cef18a8f1c :Merge remote-tracking branch 'origin/develop' into oairu 2021-01-12 22:45:28 +01:00
Raymond Knopp
50c70bc316 writing L1/L2 stats to files rather than screen 2021-01-12 13:51:04 +01:00
Raymond Knopp
672ae1e3a2 added nr/eutra-nr request to first UECapabilityEnquiry message 2021-01-10 11:40:22 +01:00
Raymond Knopp
630b609db9 level shifting on RX for X300/N300, reduced to give ~25 dB noise level in eNB RX
2 ANT TX/RX for USRP, updates
2021-01-09 10:32:02 +01:00
Raymond Knopp
2368633642 testing of LTE with 2x2 20 MHz TDD on N310. Modifications in pipelined threading 2021-01-09 07:13:13 +01:00
Raymond Knopp
6b5e4e924d added usrp-tx-thread to lte modem 2021-01-06 11:07:54 +01:00
Raymond Knopp
09a63cb998 logging and unitary compilations 2021-01-05 22:46:41 +01:00
Florian Kaltenberger
a597412edd Merge remote-tracking branch 'origin/NR_FR2_RA' into NR_FAPI_beamindex_SSB_RO 2021-01-04 14:05:07 +01:00
Raymond Knopp
7cbf24d36c updates for tracing 2021-01-03 12:28:24 +01:00
Raymond Knopp
1b95baaf4c update F1AP to R16.3.1. testing with OTA eNB 2021-01-01 21:45:23 +01:00
Raymond Knopp
d00b966d14 finishing mere with constant_power branch. Testing OTA. 2020-12-29 08:15:36 +01:00
Raymond Knopp
49efcebeec Merge remote-tracking branch 'origin/constant_power' into oairu 2020-12-26 13:11:20 +01:00
Raymond Knopp
b596e2abd2 added definition of usrp_tx_thread in oairu exectuable 2020-12-25 16:55:29 +01:00
Raymond Knopp
8d3e20cab7 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2020-12-25 16:19:57 +01:00
Raymond Knopp
7620fe9b2d minor changes for oairu executabl 2020-12-25 16:19:41 +01:00
Raymond Knopp
881ac5491c merge with develop 2020-12-25 16:18:24 +01:00
Raymond Knopp
79d0f7774f added missing files 2020-12-24 16:14:56 +01:00
Raymond Knopp
7185b95591 debugging with AW2S RRU. Added statistics for ULSCH/UCI in PHY and MAC. 2020-12-24 16:10:03 +01:00
Raymond Knopp
9edd67b216 Merge remote-tracking branch 'origin/develop' into oairu 2020-12-24 14:53:58 +01:00
Florian Kaltenberger
568885ec4f harmonizing config files 2020-12-18 16:51:13 +01:00
Florian Kaltenberger
2f30ed68ba UE only calls trx_write in UL slots when used with USRP. This improves real-time performance and is necessary for controlling the external switch. However, we still need to take the proper TDD config into account (tbd). 2020-12-18 13:31:23 +01:00
Francesco Mani
70e87bfd13 moving initialization of gold for pdcch to nr_init_ue 2020-12-17 14:18:19 +01:00
Francesco Mani
b1e2c99b93 moving initialization of gold for pdsch to nr_init_ue 2020-12-17 13:09:32 +01:00
Francesco Mani
53140df8d3 rnti in pucch 0 indication 2020-12-16 15:05:03 +01:00
Francesco Mani
55ef82cc9a another workaround to make the UE transmit MSG3 2020-12-15 16:51:04 +01:00
Francesco Mani
f67dd8eb04 controlling availability of beam for msg3 2020-12-15 16:02:42 +01:00
Francesco Mani
627f4f88d7 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2020-12-15 12:11:51 +01:00
Francesco Mani
4b021014da scheduling msg2 in fr2 according to beam 2020-12-15 11:31:04 +01:00
Francesco Mani
48ad90bc33 correction in ssb beam association at mac 2020-12-15 11:30:13 +01:00
Francesco Mani
9b6c7ba46d correction in ssb_perRACH_OccasionAndCB_PreamblesPerSSB_PR 2020-12-15 08:43:26 +01:00
Francesco Mani
78c5cd5a62 beam tdd association for ssb 2020-12-14 15:39:41 +01:00
Francesco Mani
10a98de7ef fix for ssb vrb map in fr2 2020-12-14 13:13:38 +01:00
Francesco Mani
f87c979465 new mac array for tdd-beam association in FR2 2020-12-11 17:48:33 +01:00
Florian Kaltenberger
908c8999ec Merge remote-tracking branch 'origin/NR_FR2_RA' into NR_FAPI_beamindex_SSB_RO 2020-12-10 14:51:43 +01:00
Florian Kaltenberger
373cd5fc1d Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2020-12-10 14:50:23 +01:00
Raymond Knopp
f659694eab Merge remote-tracking branch 'origin/develop-oriecpriupdates' into constant_power 2020-12-03 16:22:36 +01:00
Raymond Knopp
0571020666 minor modifications in T_defs.h and for constant power (i.e. no DTX in TX subframes for TDD) 2020-12-03 10:44:12 +01:00
Raymond Knopp
895f54a938 added no_DTX function to eNB. This fills the TX subframes which have no PDSCH with a fake pdsch. It avoids switching between TX/RX in TDD systems during the DL periods. 2020-12-02 20:15:38 +01:00
Florian Kaltenberger
d1809c05d7 changing SSB bitmap to not transmit SSB in slot 1 where it conflicts with PDSCH 2020-11-20 16:52:44 +01:00
Florian Kaltenberger
18e6a4a8fc changing PUCCH RB allocation 2020-11-20 16:52:06 +01:00
Florian Kaltenberger
0816a98dfd fixing a small bug 2020-11-20 16:51:48 +01:00
Florian Kaltenberger
53d5189073 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2020-11-19 16:26:42 +01:00
Florian Kaltenberger
87a8a94ae9 temporarily enabling beamforming also for FR1 + some logs (revert this commit before MR) 2020-11-11 22:07:06 +01:00
Florian Kaltenberger
4c6a9fa82e some fixes 2020-11-11 22:06:45 +01:00
Florian Kaltenberger
174372ede0 Merge remote-tracking branch 'origin/develop' into NR_FAPI_beamindex_SSB_RO 2020-11-10 21:46:52 +01:00
Florian Kaltenberger
6103c758d1 handling beamforming also for PDSCH 2020-10-20 07:22:55 +02:00
Florian Kaltenberger
8e6e814d35 adapting msg2&3 scheduling to FR2 beamforming constraints 2020-10-19 13:57:56 +02:00
Florian Kaltenberger
60062cecfb adding beamforming support to FAPI: MAC fills ssb_beam_id_list in ssb config. PHY uses this info to fill new beam_id field. This is further copied to RU and applied there. Nothing is tested so far. 2020-10-19 13:36:00 +02:00
Florian Kaltenberger
d4c1e25079 fixing beamforming in FAPI. Adding beam_id to FAPI in SSB and msg2 scheduling. 2020-10-18 21:22:33 +02:00
magounak
1698f9e20f isolation of RU (no use of RC.xxx) 2020-07-13 08:00:59 +02:00
Raymond Knopp
26da5a6286 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2020-06-30 08:11:11 +02:00
Raymond Knopp
c21df3b6f3 small fix for threadPool initialization when we use the full pipelining mode (RU_L1_TRX_SPLIT) 2020-06-30 08:08:33 +02:00
Raymond Knopp
72e57baa09 worker acivation 2020-06-18 23:53:48 +02:00
Raymond Knopp
b675c0c7b1 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2020-06-18 19:31:17 +02:00
Raymond Knopp
b3489a7e0a testing oairu (RCC side) 2020-06-18 19:30:36 +02:00
magounak
ec11548526 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2020-06-18 19:29:46 +02:00
magounak
a93deb3813 testing of standlone oairu 2020-06-18 19:26:06 +02:00
Raphael Defosseux
196ba803aa fix typos and compilation errors
Signed-off-by: Raphael Defosseux <raphael.defosseux@eurecom.fr>
2020-06-18 10:17:06 +02:00
Raymond Knopp
f33278ac52 activated ru_threads 2020-06-17 20:52:39 +02:00
Raymond Knopp
e109f83bb9 Merge branch 'oairu' of https://gitlab.eurecom.fr/oai/openairinterface5g into oairu 2020-06-17 20:39:44 +02:00
Raymond Knopp
187561a1c2 commit before merge 2020-06-17 20:39:29 +02:00
magounak
d1a4911428 bug fixes in main 2020-06-17 20:36:16 +02:00
Raymond Knopp
695cb5f0cd configuration fix 2020-06-17 19:03:28 +02:00
Raymond Knopp
e97122f5ea added configuration file parsing to oairu 2020-06-17 17:52:46 +02:00
Raymond Knopp
e99ad54b66 added missing file 2020-06-17 12:49:56 +02:00
Raymond Knopp
103168a047 standalone RRU executable initial testing version 2020-06-17 09:55:26 +02:00
642 changed files with 52270 additions and 18811 deletions

0
CHANGELOG.md Normal file → Executable file
View File

0
LICENSE Normal file → Executable file
View File

36
charts/physims/Chart.yaml Normal file
View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-physim
description: A Helm chart for physical simulators network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulators
- RAN
- 4G
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-dlsim
description: A Helm subchart for dlsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- dlsim
- RAN
- 4G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-dlsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-dlsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-dlsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-dlsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-dlsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-dlsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-dlsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-dlsim.labels" -}}
helm.sh/chart: {{ include "oai-dlsim.chart" . }}
{{ include "oai-dlsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-dlsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-dlsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-dlsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-dlsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-dlsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-dlsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-dlsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-dlsim
# volumeMounts:
# - mountPath: /opt/oai-dlsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015100" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-dlsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-dlsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-dlsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-dlsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-dlsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-ldpctest
description: A Helm subchart for ldpctest network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- ldpctest
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-ldpctest.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-ldpctest.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-ldpctest.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-ldpctest.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-ldpctest.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-ldpctest.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-ldpctest.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-ldpctest.labels" -}}
helm.sh/chart: {{ include "oai-ldpctest.chart" . }}
{{ include "oai-ldpctest.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-ldpctest.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-ldpctest.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-ldpctest.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-ldpctest.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ldpctest.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-ldpctest.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-ldpctest.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-ldpctest
# volumeMounts:
# - mountPath: /opt/oai-ldpctest/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015102" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ldpctest.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-ldpctest
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-ldpctest.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-ldpctest.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-ldpctest-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-dlschsim
description: A Helm subchart for nr-dlschsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-dlschsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlschsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlschsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlschsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlschsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-dlschsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-dlschsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-dlschsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-dlschsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-dlschsim.chart" . }}
{{ include "oai-nr-dlschsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-dlschsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-dlschsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-dlschsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-dlschsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlschsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlschsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlschsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-dlschsim
# volumeMounts:
# - mountPath: /opt/oai-nr-dlschsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015106" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlschsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlschsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlschsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-dlschsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-dlschsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-dlsim
description: A Helm subchart for nr-dlsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-dlsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-dlsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-dlsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-dlsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-dlsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-dlsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-dlsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-dlsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-dlsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-dlsim.chart" . }}
{{ include "oai-nr-dlsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-dlsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-dlsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-dlsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-dlsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-dlsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-dlsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-dlsim
# volumeMounts:
# - mountPath: /opt/oai-nr-dlsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015105" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-dlsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-dlsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-dlsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-dlsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-dlsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-pbchsim
description: A Helm subchart for nr-pbchsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-pbchsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-pbchsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-pbchsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-pbchsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-pbchsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-pbchsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-pbchsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-pbchsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-pbchsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-pbchsim.chart" . }}
{{ include "oai-nr-pbchsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-pbchsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-pbchsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-pbchsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-pbchsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-pbchsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-pbchsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-pbchsim
# volumeMounts:
# - mountPath: /opt/oai-nr-pbchsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015104" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pbchsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-pbchsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-pbchsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-pbchsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-pbchsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-prachsim
description: A Helm subchart for nr-prachsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-prachsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-prachsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-prachsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-prachsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-prachsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-prachsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-prachsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-prachsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-prachsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-prachsim.chart" . }}
{{ include "oai-nr-prachsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-prachsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-prachsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-prachsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-prachsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-prachsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-prachsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-prachsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-prachsim
# volumeMounts:
# - mountPath: /opt/oai-nr-prachsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015112" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-prachsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-prachsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-prachsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-prachsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-prachsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-pucchsim
description: A Helm subchart for nr-pucchsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-pucchsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-pucchsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-pucchsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-pucchsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-pucchsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-pucchsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-pucchsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-pucchsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-pucchsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-pucchsim.chart" . }}
{{ include "oai-nr-pucchsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-pucchsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-pucchsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-pucchsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-pucchsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pucchsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-pucchsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-pucchsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-pucchsim
# volumeMounts:
# - mountPath: /opt/oai-nr-pucchsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015109" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-pucchsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-pucchsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-pucchsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-pucchsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-pucchsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-ulschsim
description: A Helm subchart for nr-ulschsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-ulschsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulschsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulschsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulschsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulschsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-ulschsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-ulschsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-ulschsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-ulschsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-ulschsim.chart" . }}
{{ include "oai-nr-ulschsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-ulschsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-ulschsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-ulschsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-ulschsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulschsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulschsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulschsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-ulschsim
# volumeMounts:
# - mountPath: /opt/oai-nr-ulschsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015108" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulschsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulschsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulschsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-ulschsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-ulschsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-nr-ulsim
description: A Helm subchart for nr-ulsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- nr-ulsim
- RAN
- 5G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-nr-ulsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-nr-ulsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-nr-ulsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-nr-ulsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-nr-ulsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-nr-ulsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-nr-ulsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-nr-ulsim.labels" -}}
helm.sh/chart: {{ include "oai-nr-ulsim.chart" . }}
{{ include "oai-nr-ulsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-nr-ulsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-nr-ulsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-nr-ulsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-nr-ulsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-nr-ulsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-nr-ulsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-nr-ulsim
# volumeMounts:
# - mountPath: /opt/oai-nr-ulsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015111" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-nr-ulsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-nr-ulsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-nr-ulsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-nr-ulsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-nr-ulsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-polartest
description: A Helm subchart for polartest network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- polartest
- RAN
- 4G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-polartest.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-polartest.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-polartest.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-polartest.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-polartest.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-polartest.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-polartest.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-polartest.labels" -}}
helm.sh/chart: {{ include "oai-polartest.chart" . }}
{{ include "oai-polartest.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-polartest.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-polartest.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-polartest.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-polartest.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-polartest.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-polartest.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-polartest.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-polartest
# volumeMounts:
# - mountPath: /opt/oai-polartest/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015103" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-polartest.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-polartest
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-polartest.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-polartest.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-polartest-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-smallblocktest
description: A Helm subchart for smallblocktest network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- smallblocktest
- RAN
- 4G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-smallblocktest.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-smallblocktest.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-smallblocktest.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-smallblocktest.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-smallblocktest.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-smallblocktest.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-smallblocktest.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-smallblocktest.labels" -}}
helm.sh/chart: {{ include "oai-smallblocktest.chart" . }}
{{ include "oai-smallblocktest.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-smallblocktest.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-smallblocktest.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-smallblocktest.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-smallblocktest.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-smallblocktest.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-smallblocktest.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-smallblocktest.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-smallblock
# volumeMounts:
# - mountPath: /opt/oai-smallblocktest/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015107" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-smallblocktest.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-smallblocktest
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-smallblocktest.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-smallblocktest.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-smallblocktest-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,36 @@
apiVersion: v1
name: oai-ulsim
description: A Helm subchart for ulsim network function
# A chart can be either an 'application' or a 'library' chart.
#
# Application charts are a collection of templates that can be packaged into versioned archives
# to be deployed.
#
# Library charts provide useful utilities or functions for the chart developer. They're included as
# a dependency of application charts to inject those utilities and functions into the rendering
# pipeline. Library charts do not define any templates and therefore cannot be deployed.
type: application
icon: http://www.openairinterface.org/wp-content/uploads/2015/06/cropped-oai_final_logo.png
# This is the chart version. This version number should be incremented each time you make changes
# to the chart and its templates, including the app version.
version: 0.1.1
# This is the version number of the application being deployed. This version number should be
# incremented each time you make changes to the application.
appVersion: v1
keywords:
- Physical Simulator
- ulsim
- RAN
- 4G
sources:
- https://gitlab.eurecom.fr/oai/openairinterface5g
maintainers:
- name: OPENAIRINTERFACE
email: contact@openairinterface.org

View File

@@ -0,0 +1,15 @@
1. Get the application URL by running these commands:
{{- if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "oai-ulsim.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "oai-ulsim.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "oai-ulsim.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "oai-ulsim.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:80
{{- end }}

View File

@@ -0,0 +1,63 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "oai-ulsim.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "oai-ulsim.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "oai-ulsim.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Common labels
*/}}
{{- define "oai-ulsim.labels" -}}
helm.sh/chart: {{ include "oai-ulsim.chart" . }}
{{ include "oai-ulsim.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end -}}
{{/*
Selector labels
*/}}
{{- define "oai-ulsim.selectorLabels" -}}
app.kubernetes.io/name: {{ include "oai-ulsim.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end -}}
{{/*
Create the name of the service account to use
*/}}
{{- define "oai-ulsim.serviceAccountName" -}}
{{- if .Values.serviceAccount.create -}}
{{ default (include "oai-ulsim.fullname" .) .Values.serviceAccount.name }}
{{- else -}}
{{ default "default" .Values.serviceAccount.name }}
{{- end -}}
{{- end -}}

View File

@@ -0,0 +1,49 @@
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ulsim.labels" . | nindent 4 }}
spec:
replicas: {{ .Values.replicaCount }}
selector:
matchLabels:
{{- include "oai-ulsim.selectorLabels" . | nindent 6 }}
strategy:
type: Recreate
template:
metadata:
labels:
{{- include "oai-ulsim.selectorLabels" . | nindent 8 }}
spec:
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
containers:
- name: physim
image: "{{ .Values.global.image.repository }}:{{ .Values.global.image.version }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
ports:
- containerPort: 80
name: oai-ulsim
# volumeMounts:
# - mountPath: /opt/oai-ulsim/certs
# name: certs
command: ["/bin/sh", "-c"]
args:
- >
export OPENAIR_DIR=/opt/oai-physim &&
cd cmake_targets/autotests &&
./run_exec_autotests.bash -g "015101" -q -np -b &&
echo "FINISHED" &&
sleep infinity
dnsPolicy: ClusterFirst
restartPolicy: Always
schedulerName: default-scheduler
serviceAccountName: {{ .Values.global.serviceAccountName }}
terminationGracePeriodSeconds: 30

View File

@@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
name: {{ .Chart.Name }}
labels:
{{- include "oai-ulsim.labels" . | nindent 4 }}
spec:
type: {{ .Values.service.type }}
{{- if contains "ClusterIP" .Values.service.type }}
clusterIP: None
{{- end }}
ports:
- name: oai-ulsim
# Port accessible outside cluster
port: {{ .Values.service.port }}
# Port to forward to inside the pod
targetPort: {{ .Values.service.Port }}
protocol: TCP
selector:
{{- include "oai-ulsim.selectorLabels" . | nindent 4 }}

View File

@@ -0,0 +1,63 @@
# Default values for oai-ulsim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
namespace: "oaicicd-ran-tmp"
image:
registry: local
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: temp
# pullPolicy: IfNotPresent or Never or Always
pullPolicy: Always
imagePullSecrets: []
nameOverride: ""
fullnameOverride: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: "oai-ulsim-sa"
podSecurityContext:
runAsUser: 0
runAsGroup: 0
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
service:
type: ClusterIP
port: 80
resources: {}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
# lines, adjust them as necessary, and remove the curly braces after 'resources:'.
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}

View File

@@ -0,0 +1,12 @@
apiVersion: rbac.authorization.k8s.io/v1beta1
kind: ClusterRoleBinding
metadata:
name: {{ .Chart.Name }}-{{ .Values.global.namespace }}-rbac
roleRef:
apiGroup: rbac.authorization.k8s.io
kind: ClusterRole
name: cluster-admin
subjects:
- kind: ServiceAccount
name: {{ .Values.global.serviceAccountName }}
namespace: {{ .Values.global.namespace }}

View File

@@ -0,0 +1,4 @@
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ .Values.global.serviceAccountName }}

View File

@@ -0,0 +1,84 @@
# Default values for oai-physim.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
global:
serviceAccountName: oai-physim-sa
namespace: "oaicicd-ran-tmp"
image:
repository: image-registry.openshift-image-registry.svc:5000/oaicicd-ran-tmp/oai-physim
version: TAG
## Declaring values specific to coressponding physim to overwrite
dlsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
ulsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
ldpctest:
replicaCount: 1
service:
type: ClusterIP
port: 80
polartest:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-pbchsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-dlschsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
smallblocktest:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulschsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-pucchsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-ulsim:
replicaCount: 1
service:
type: ClusterIP
port: 80
nr-prachsim:
replicaCount: 1
service:
type: ClusterIP
port: 80

View File

@@ -27,6 +27,9 @@ def nodeExecutor = params.nodeExecutor
def doMandatoryTests = false
def doFullTestsuite = false
//
def gitCommitAuthorEmailAddr
pipeline {
agent {
label nodeExecutor
@@ -152,21 +155,64 @@ pipeline {
}
}
}
stage ("CppCheck Analysis") {
steps {
script {
triggerSlaveJob ('RAN-cppcheck', 'CppCheck Analysis')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-cppcheck')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
}
}
stage ("Image Test Processes") {
parallel {
stage ("Physical Simulators") {
when { expression {doMandatoryTests} }
steps {
script {
triggerSlaveJob ('RAN-PhySim-Cluster', 'Test-Physim-Cluster')
}
}
post {
always {
script {
finalizeSlaveJob('RAN-PhySim-Cluster')
}
}
failure {
script {
currentBuild.result = 'FAILURE'
}
}
}
}
}
}
}
post {
always {
script {
def eSubject = JOB_NAME + ' - Build # ' + BUILD_ID + ' - ' + currentBuild.result + '!'
def eBody = "Hi,\n\n"
eBody += "Here are attached HTML report files for " + JOB_NAME + " - Build # " + BUILD_ID + " - " + currentBuild.result + "!\n\n"
eBody += "Regards,\n"
eBody += "OAI CI Team"
emailext attachmentsPattern: '*results*.html',
body: '''Hi,
Here are attached HTML report files for $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!
Regards,
OAI CI Team''',
body: eBody,
replyTo: 'no-reply@openairinterface.org',
subject: '$PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS!',
subject: eSubject,
to: gitCommitAuthorEmailAddr
if (fileExists('.git/CI_COMMIT_MSG')) {

View File

@@ -0,0 +1,45 @@
#!/bin/groovy
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
// Template Jenkins Declarative Pipeline script to run Test w/ RF HW
// Location of the python executor node shall be in the same subnet as the others servers
def pythonExecutor = params.pythonExecutor
pipeline {
agent {
label pythonExecutor
}
stages {
stage ("gDashboard") {
steps {
script {
//retrieve MR data from gitlab and export to gSheet
sh returnStdout: true, script: 'python3 ci-scripts/ran_dashboard.py'
}
}
}
}
}

View File

@@ -196,16 +196,6 @@ pipeline {
}
}
stage ("Start VM -- phy-sim") {
steps {
lock (vmResource) {
timeout (time: 5, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
}
}
}
}
stage ("Start VM -- enb-ethernet") {
steps {
lock (vmResource) {
@@ -224,33 +214,14 @@ pipeline {
}
}
}
}
}
stage ("Start VM -- cppcheck") {
steps {
lock (vmResource) {
timeout (time: 7, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon"
}
}
}
}
stage ("Variant Builds") {
parallel {
stage ("Analysis with cppcheck") {
steps {
gitlabCommitStatus(name: "Analysis with cppcheck") {
timeout (time: 30, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
}
}
}
}
stage ("Build basic simulator") {
steps {
gitlabCommitStatus(name: "Build basic-sim") {
timeout (time: 30, unit: 'MINUTES') {
timeout (time: 45, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
@@ -259,7 +230,7 @@ pipeline {
stage ("Build 5G gNB-USRP") {
steps {
gitlabCommitStatus(name: "Build gNB-USRP") {
timeout (time: 30, unit: 'MINUTES') {
timeout (time: 45, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant gnb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
@@ -268,25 +239,16 @@ pipeline {
stage ("Build 5G NR-UE-USRP") {
steps {
gitlabCommitStatus(name: "Build nr-UE-USRP") {
timeout (time: 30, unit: 'MINUTES') {
timeout (time: 45, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant nr-ue-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
}
}
stage ("Build physical simulators") {
steps {
gitlabCommitStatus(name: "Build phy-sim") {
timeout (time: 30, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
}
}
stage ("Build eNB-ethernet") {
steps {
gitlabCommitStatus(name: "Build eNB-ethernet") {
timeout (time: 30, unit: 'MINUTES') {
timeout (time: 45, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
@@ -297,7 +259,7 @@ pipeline {
// This is typically the last one to finish.
lock (vmResource) {
gitlabCommitStatus(name: "Build UE-ethernet") {
timeout (time: 30, unit: 'MINUTES') {
timeout (time: 45, unit: 'MINUTES') {
sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive"
}
}
@@ -315,9 +277,9 @@ pipeline {
script {
dir ('archives') {
if (fileExists('red_hat')) {
sh "zip -r -qq vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck enb_eth ue_eth gnb_usrp nr_ue_usrp red_hat"
sh "zip -r -qq vm_build_logs.zip basic_sim enb_eth ue_eth gnb_usrp nr_ue_usrp red_hat"
} else {
sh "zip -r -qq vm_build_logs.zip basic_sim enb_usrp phy_sim cppcheck enb_eth ue_eth gnb_usrp nr_ue_usrp"
sh "zip -r -qq vm_build_logs.zip basic_sim enb_eth ue_eth gnb_usrp nr_ue_usrp"
}
}
if(fileExists('archives/vm_build_logs.zip')) {
@@ -325,16 +287,6 @@ pipeline {
}
if ("MERGE".equals(env.gitlabActionType)) {
sh "./ci-scripts/oai-ci-vm-tool report-build --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger merge-request --src-branch ${env.gitlabSourceBranch} --src-commit ${env.gitlabMergeRequestLastCommit} --target-branch ${env.gitlabTargetBranch} --target-commit ${GIT_COMMIT}"
// If the merge request has introduced more CPPCHECK errors or warnings, notifications in GitLab
if (fileExists('oai_cppcheck_added_errors.txt')) {
def ret=readFile('./oai_cppcheck_added_errors.txt').trim();
if ("0".equals(ret)) {
echo "No added cppcheck warnings/errors in this merge request"
} else {
def message = "OAI " + JOB_NAME + " build (" + BUILD_ID + "): Some modified files in Merge Request MAY have INTRODUCED up to " + ret + " CPPCHECK errors/warnings"
addGitLabMRComment comment: message
}
}
// If the merge request has introduced compilation warnings, notifications in GitLab
sh "./ci-scripts/checkAddedWarnings.sh --src-branch ${env.gitlabSourceBranch} --target-branch ${env.gitlabTargetBranch}"
def res=readFile('./oai_warning_files.txt').trim();
@@ -361,26 +313,6 @@ pipeline {
parallel {
stage ("VM-based tests") {
stages {
stage ("Test physical simulators") {
when {
expression {doMandatoryTests}
}
steps {
lock (vmResource) {
script {
timeout (time: 90, unit: 'MINUTES') {
try {
gitlabCommitStatus(name: "Test phy-sim") {
sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}"
}
} catch (Exception e) {
currentBuild.result = 'FAILURE'
}
}
}
}
}
}
stage ("Build Flexran Controller") {
when {
expression {doFlexranCtrlTest && doMandatoryTests}
@@ -745,7 +677,7 @@ pipeline {
script {
if (doMandatoryTests) {
dir ('archives') {
sh "if [ -d basic_sim/test ] || [ -d phy_sim/test ] || [ -d l2_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
sh "if [ -d basic_sim/test ] || [ -d rf_sim/test ] || [ -d l2_sim/test ]; then zip -r -qq vm_tests_logs.zip */test ; fi"
}
if(fileExists('archives/vm_tests_logs.zip')) {
archiveArtifacts artifacts: 'archives/vm_tests_logs.zip'

View File

@@ -0,0 +1,233 @@
#!/bin/groovy
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
// Location of the executor node
def pythonExecutor = params.pythonExecutor
// Location of the test XML file to be run
def testXMLFile = params.pythonTestXmlFile
def mainPythonAllXmlFiles = ""
def buildStageStatus = true
// Name of the test stage
def testStageName = params.pipelineTestStageName
// Name of the resource
def ciEpcResource = params.epcResource
// Global Parameters. Normally they should be populated when the master job
// triggers the slave job with parameters
def eNB_Repository
def eNB_Branch
def eNB_CommitID
def eNB_AllowMergeRequestProcess = false
def eNB_TargetBranch
// Flags
def scmEvent = false
def upstreamEvent = false
//-------------------------------------------------------------------------------
// Pipeline start
pipeline {
agent {
label pythonExecutor
}
options {
disableConcurrentBuilds()
timestamps()
ansiColor('xterm')
lock(ciEpcResource)
}
stages {
stage ('Verify Parameters') {
steps {
script {
echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
JOB_TIMESTAMP = sh returnStdout: true, script: 'date --utc --rfc-3339=seconds | sed -e "s#+00:00##"'
JOB_TIMESTAMP = JOB_TIMESTAMP.trim()
def allParametersPresent = true
// It is already to late to check it
if (params.pythonExecutor != null) {
echo "eNB CI executor node : ${pythonExecutor}"
}
// If not present picking a default Stage Name
if (params.pipelineTestStageName == null) {
// picking default
testStageName = 'Template Test Stage'
}
if (params.smartphonesResource == null) {
allParametersPresent = false
}
if (params.eNB_IPAddress == null) {
allParametersPresent = false
}
if (params.eNB_SourceCodePath == null) {
allParametersPresent = false
}
if (params.eNB_Credentials == null) {
allParametersPresent = false
}
// the following 4 parameters should be pushed by the master trigger
// if not present, take the job GIT variables (used for developing)
if (params.eNB_Repository == null) {
eNB_Repository = env.GIT_URL
} else {
eNB_Repository = params.eNB_Repository
}
echo "eNB_Repository : ${eNB_Repository}"
if (params.eNB_Branch == null) {
eNB_Branch = env.GIT_BRANCH
} else {
eNB_Branch = params.eNB_Branch
}
echo "eNB_Branch : ${eNB_Branch}"
if (params.eNB_CommitID == null) {
eNB_CommitID = env.GIT_COMMIT
} else {
eNB_CommitID = params.eNB_CommitID
}
echo "eNB_CommitID : ${eNB_CommitID}"
if (params.eNB_mergeRequest != null) {
eNB_AllowMergeRequestProcess = params.eNB_mergeRequest
if (eNB_AllowMergeRequestProcess) {
if (params.eNB_TargetBranch != null) {
eNB_TargetBranch = params.eNB_TargetBranch
} else {
eNB_TargetBranch = 'develop'
}
echo "eNB_TargetBranch : ${eNB_TargetBranch}"
}
}
if (params.EPC_IPAddress == null) {
allParametersPresent = false
}
if (params.EPC_Type == null) {
allParametersPresent = false
}
if (params.EPC_SourceCodePath == null) {
allParametersPresent = false
}
if (params.EPC_Credentials == null) {
allParametersPresent = false
}
if (params.ADB_IPAddress == null) {
allParametersPresent = false
}
if (params.ADB_Credentials == null) {
allParametersPresent = false
}
if (params.OC_Credentials == null) {
allParametersPresent = false
}
if (params.OC_ProjectName == null) {
allParametersPresent = false
}
if (allParametersPresent) {
echo "All parameters are present"
if (eNB_AllowMergeRequestProcess) {
sh "git fetch"
sh "./ci-scripts/doGitLabMerge.sh --src-branch ${eNB_Branch} --src-commit ${eNB_CommitID} --target-branch ${eNB_TargetBranch} --target-commit latest"
} else {
sh "git fetch"
sh "git checkout -f ${eNB_CommitID}"
}
} else {
echo "Some parameters are missing"
sh "./ci-scripts/fail.sh"
}
}
}
}
stage ("Deploy and Test") {
steps {
script {
dir ('ci-scripts') {
echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
// If not present picking a default XML file
if (params.pythonTestXmlFile == null) {
// picking default
testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
echo "Test XML file(default): ${testXMLFile}"
mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
} else {
String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
for (xmlFile in myXmlTestSuite) {
if (fileExists(xmlFile)) {
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
echo "Test XML file : ${xmlFile}"
}
}
}
withCredentials([
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.ADB_Credentials}", usernameVariable: 'ADB_Username', passwordVariable: 'ADB_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.OC_Credentials}", usernameVariable: 'OC_Username', passwordVariable: 'OC_Password']
]) {
sh "python3 main.py --mode=InitiateHtml --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} ${mainPythonAllXmlFiles}"
String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
for (xmlFile in myXmlTestSuite) {
if (fileExists(xmlFile)) {
try {
sh "python3 main.py --mode=TesteNB --eNBIPAddress=${params.eNB_IPAddress} --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${xmlFile} --OCUserName=${OC_Username} --OCPassword=${OC_Password} --OCProjectName=${OC_ProjectName}"
} catch (Exception e) {
currentBuild.result = 'FAILURE'
buildStageStatus = false
}
}
}
sh "python3 main.py --mode=FinalizeHtml --finalStatus=${buildStageStatus} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password}"
}
}
}
}
}
stage ("Log Collection") {
steps {
script {
dir ('ci-scripts') {
// Zipping all archived log files
sh "zip -r -qq physim_deploytest_logs_${env.BUILD_ID}.zip physim_test_logs_*/*"
sh "rm -rf physim_test_logs_*/"
if (fileExists("physim_deploytest_logs_${env.BUILD_ID}.zip")) {
archiveArtifacts artifacts: "physim_deploytest_logs_${env.BUILD_ID}.zip"
}
if (fileExists("test_results.html")) {
sh "mv test_results.html test_results-${env.JOB_NAME}.html"
sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's@build #TEMPLATE_BUILD_ID@build #${BUILD_ID}@' -e 's#Build-ID: TEMPLATE_BUILD_ID#Build-ID: <a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' -e 's#TEMPLATE_STAGE_NAME#${testStageName}#' test_results-${JOB_NAME}.html"
archiveArtifacts artifacts: "test_results-${env.JOB_NAME}.html"
}
}
}
}
}
}
}

View File

@@ -0,0 +1,304 @@
#!/bin/groovy
/*
* Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The OpenAirInterface Software Alliance licenses this file to You under
* the OAI Public License, Version 1.1 (the "License"); you may not use this file
* except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.openairinterface.org/?page_id=698
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*-------------------------------------------------------------------------------
* For more information about the OpenAirInterface (OAI) Software Alliance:
* contact@openairinterface.org
*/
// Template Jenkins Declarative Pipeline script to run Test w/ RF HW
// Location of the python executor node shall be in the same subnet as the others servers
def pythonExecutor = params.pythonExecutor
// Location of the test XML file to be run
def testXMLFile = params.pythonTestXmlFile
def mainPythonAllXmlFiles = ""
def buildStageStatus = true
// Name of the test stage
def testStageName = params.pipelineTestStageName
// Name of the phone resource
def ciSmartPhonesResource1 = params.SmartPhonesResource1
def ciSmartPhonesResource2 = params.SmartPhonesResource2
// Global Parameters. Populated when the master job
// triggers the slave job with parameters
def eNB_Repository = "https://gitlab.eurecom.fr/oai/openairinterface5g.git"
def eNB_Branch = "develop"
def eNB_CommitID
def eNB_AllowMergeRequestProcess = false
def eNB_TargetBranch = "develop"
def eNB_MR = "develop"
pipeline {
agent {
label pythonExecutor
}
options {
disableConcurrentBuilds()
ansiColor('xterm')
lock(extra: [[resource: ciSmartPhonesResource2]], resource: ciSmartPhonesResource1)
}
stages {
stage("Build Init") {
steps {
script {
//retrieve latest commit ID from branch
latest_commit_from_branch= sh returnStdout: true, script: 'git log -1 origin/${eNB_Branch} | grep commit'
echo "Branch ${eNB_Branch}"
echo "${latest_commit_from_branch}"
tmp=latest_commit_from_branch.split()
echo "${tmp}"
eNB_CommitID = tmp[1]
echo "eNB_CommitID ${eNB_CommitID}"
// update the build name and description
buildName "${params.eNB_MR}"
buildDescription "Commit : ${eNB_CommitID}"
}
}
}
stage ("Verify Parameters") {
steps {
script {
echo '\u2705 \u001B[32mVerify Parameters\u001B[0m'
def allParametersPresent = true
// It is already to late to check it
if (params.pythonExecutor != null) {
echo "eNB CI executor node : ${pythonExecutor}"
}
// If not present picking a default Stage Name
if (params.pipelineTestStageName == null) {
// picking default
testStageName = 'Template Test Stage'
}
if (params.SmartPhonesResource1 == null) {
allParametersPresent = false
}
if (params.SmartPhonesResource2 == null) {
allParametersPresent = false
}
// 1st eNB parameters
if (params.eNB_IPAddress == null) {
allParametersPresent = false
}
if (params.eNB_SourceCodePath == null) {
allParametersPresent = false
}
if (params.eNB_Credentials == null) {
allParametersPresent = false
}
// 2nd eNB parameters
if (params.eNB1_IPAddress == null) {
allParametersPresent = false
}
if (params.eNB1_SourceCodePath == null) {
allParametersPresent = false
}
if (params.eNB1_Credentials == null) {
allParametersPresent = false
}
// 3rd eNB parameters
if (params.eNB2_IPAddress == null) {
allParametersPresent = false
}
if (params.eNB2_SourceCodePath == null) {
allParametersPresent = false
}
if (params.eNB2_Credentials == null) {
allParametersPresent = false
}
// the following 4 parameters should be pushed by the master trigger
// if not present, take the job GIT variables (used for developing)
if (params.eNB_Repository == null) {
eNB_Repository = env.GIT_URL
} else {
eNB_Repository = params.eNB_Repository
}
echo "eNB_Repository : ${eNB_Repository}"
if (params.eNB_Branch == null) {
eNB_Branch = env.GIT_BRANCH
} else {
eNB_Branch = params.eNB_Branch
}
echo "eNB_Branch : ${eNB_Branch}"
//if (params.eNB_CommitID == null) {
// eNB_CommitID = env.GIT_COMMIT
//} else {
// eNB_CommitID = params.eNB_CommitID
//}
echo "eNB_CommitID : ${eNB_CommitID}"
if (params.eNB_AllowMergeRequestProcess!= null) {
eNB_AllowMergeRequestProcess = params.eNB_AllowMergeRequestProcess
if (eNB_AllowMergeRequestProcess) {
if (params.eNB_TargetBranch != null) {
eNB_TargetBranch = params.eNB_TargetBranch
} else {
eNB_TargetBranch = 'develop'
}
echo "eNB_TargetBranch : ${eNB_TargetBranch}"
}
}
if (params.EPC_IPAddress == null) {
allParametersPresent = false
}
if (params.EPC_Type == null) {
allParametersPresent = false
}
if (params.EPC_SourceCodePath == null) {
allParametersPresent = false
}
if (params.EPC_Credentials == null) {
allParametersPresent = false
}
if (params.ADB_IPAddress == null) {
allParametersPresent = false
}
if (params.ADB_Credentials == null) {
allParametersPresent = false
}
if (allParametersPresent) {
echo "All parameters are present"
if (eNB_AllowMergeRequestProcess) {
sh "git fetch"
sh "./ci-scripts/doGitLabMerge.sh --src-branch ${eNB_Branch} --src-commit ${eNB_CommitID} --target-branch ${eNB_TargetBranch} --target-commit latest"
} else {
sh "git fetch"
sh "git checkout -f ${eNB_CommitID}"
}
} else {
echo "Some parameters are missing"
sh "./ci-scripts/fail.sh"
}
}
}
}
stage ("Build and Test") {
steps {
script {
dir ('ci-scripts') {
echo "\u2705 \u001B[32m${testStageName}\u001B[0m"
// If not present picking a default XML file
if (params.pythonTestXmlFile == null) {
// picking default
testXMLFile = 'xml_files/enb_usrpB210_band7_50PRB.xml'
echo "Test XML file(default): ${testXMLFile}"
mainPythonAllXmlFiles += "--XMLTestFile=" + testXMLFile + " "
} else {
String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
for (xmlFile in myXmlTestSuite) {
if (fileExists(xmlFile)) {
mainPythonAllXmlFiles += "--XMLTestFile=" + xmlFile + " "
echo "Test XML file : ${xmlFile}"
}
}
}
withCredentials([
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB1_Credentials}", usernameVariable: 'eNB1_Username', passwordVariable: 'eNB1_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB2_Credentials}", usernameVariable: 'eNB2_Username', passwordVariable: 'eNB2_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.EPC_Credentials}", usernameVariable: 'EPC_Username', passwordVariable: 'EPC_Password'],
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.ADB_Credentials}", usernameVariable: 'ADB_Username', passwordVariable: 'ADB_Password']
]) {
sh "python3 main.py --mode=InitiateHtml --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} ${mainPythonAllXmlFiles}"
String[] myXmlTestSuite = testXMLFile.split("\\r?\\n")
for (xmlFile in myXmlTestSuite) {
if (fileExists(xmlFile)) {
try {
sh "python3 main.py --mode=TesteNB --ranRepository=${eNB_Repository} --ranBranch=${eNB_Branch} --ranCommitID=${eNB_CommitID} --ranAllowMerge=${eNB_AllowMergeRequestProcess} --ranTargetBranch=${eNB_TargetBranch} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath} --eNB1IPAddress=${params.eNB1_IPAddress} --eNB1UserName=${eNB1_Username} --eNB1Password=${eNB1_Password} --eNB1SourceCodePath=${params.eNB1_SourceCodePath} --eNB2IPAddress=${params.eNB2_IPAddress} --eNB2UserName=${eNB2_Username} --eNB2Password=${eNB2_Password} --eNB2SourceCodePath=${params.eNB2_SourceCodePath} --EPCIPAddress=${params.EPC_IPAddress} --EPCType=${params.EPC_Type} --EPCUserName=${EPC_Username} --EPCPassword=${EPC_Password} --EPCSourceCodePath=${params.EPC_SourceCodePath} --ADBIPAddress=${params.ADB_IPAddress} --ADBUserName=${ADB_Username} --ADBPassword=${ADB_Password} --XMLTestFile=${xmlFile}"
} catch (Exception e) {
currentBuild.result = 'FAILURE'
buildStageStatus = false
}
}
}
sh "python3 main.py --mode=FinalizeHtml --finalStatus=${buildStageStatus} --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password}"
}
}
}
}
}
stage('Log Collection') {
parallel {
stage('Log Collection (eNB - Build)') {
steps {
withCredentials([
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password']
]) {
echo '\u2705 \u001B[32mLog Collection (eNB - Build)\u001B[0m'
sh "python3 ci-scripts/main.py --mode=LogCollectBuild --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath}"
echo '\u2705 \u001B[32mLog Transfer (eNB - Build)\u001B[0m'
sh "sshpass -p \'${eNB_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${eNB_Username}@${params.eNB_IPAddress}:${eNB_SourceCodePath}/cmake_targets/build.log.zip ./build.log.${env.BUILD_ID}.zip || true"
}
script {
if(fileExists("build.log.${env.BUILD_ID}.zip")) {
archiveArtifacts "build.log.${env.BUILD_ID}.zip"
}
}
}
}
stage('Log Collection (eNB - Run)') {
steps {
withCredentials([
[$class: 'UsernamePasswordMultiBinding', credentialsId: "${params.eNB_Credentials}", usernameVariable: 'eNB_Username', passwordVariable: 'eNB_Password']
]) {
echo '\u2705 \u001B[32mLog Collection (eNB - Run)\u001B[0m'
sh "python3 ci-scripts/main.py --mode=LogCollecteNB --eNBIPAddress=${params.eNB_IPAddress} --eNBUserName=${eNB_Username} --eNBPassword=${eNB_Password} --eNBSourceCodePath=${params.eNB_SourceCodePath}"
echo '\u2705 \u001B[32mLog Transfer (eNB - Run)\u001B[0m'
sh "sshpass -p \'${eNB_Password}\' scp -o 'StrictHostKeyChecking no' -o 'ConnectTimeout 10' ${eNB_Username}@${params.eNB_IPAddress}:${eNB_SourceCodePath}/cmake_targets/enb.log.zip ./enb.log.${env.BUILD_ID}.zip || true"
}
script {
if(fileExists("enb.log.${env.BUILD_ID}.zip")) {
archiveArtifacts "enb.log.${env.BUILD_ID}.zip"
}
if(fileExists("ci-scripts/test_results.html")) {
sh "mv ci-scripts/test_results.html test_results-${JOB_NAME}.html"
sh "sed -i -e 's#TEMPLATE_JOB_NAME#${JOB_NAME}#' -e 's@build #TEMPLATE_BUILD_ID@build #${BUILD_ID}@' -e 's#Build-ID: TEMPLATE_BUILD_ID#Build-ID: <a href=\"${BUILD_URL}\">${BUILD_ID}</a>#' -e 's#TEMPLATE_STAGE_NAME#${testStageName}#' test_results-${JOB_NAME}.html"
archiveArtifacts "test_results-${JOB_NAME}.html"
}
}
}
}
}
}
}
post {
always {
script {
if (params.pipelineZipsConsoleLog != null) {
if (params.pipelineZipsConsoleLog) {
echo "Archiving Jenkins console log"
sh "wget --no-check-certificate --no-proxy ${env.JENKINS_URL}/job/${env.JOB_NAME}/${env.BUILD_ID}/consoleText -O consoleText.log || true"
sh "zip -m consoleText.log.${env.BUILD_ID}.zip consoleText.log || true"
if(fileExists("consoleText.log.${env.BUILD_ID}.zip")) {
archiveArtifacts "consoleText.log.${env.BUILD_ID}.zip"
}
}
}
}
}
}
}

View File

@@ -37,7 +37,7 @@ pipeline {
steps {
script {
//retrieve MR that are opened nd with tag READY_TO_BE_MERGED
MR_LIST= sh returnStdout: true, script: 'curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests?state=opened&per_page=100&labels=READY_TO_BE_MERGED" | jq ".[].iid" || true '
MR_LIST= sh returnStdout: true, script: 'curl --silent "https://gitlab.eurecom.fr/api/v4/projects/oai%2Fopenairinterface5g/merge_requests?state=opened&per_page=100&labels=NSA" | jq ".[].iid" || true '
echo "List of selected MR:\n${MR_LIST}"
def MR_ARRAY = MR_LIST.split('\n')
//for every selected MR, retrieve the branch name and the latest commit
@@ -48,7 +48,7 @@ pipeline {
COMMIT_ID=COMMIT_ID.trim()
echo "Testing NSA on : ${MR} ${SRC_BRANCH} ${COMMIT_ID}"
//calling NSA sub job
build job: "RAN-CI-NSA-B210", wait : false, propagate : false, parameters: [
build job: "RAN-CI-NSA-B210-N310-ModuleUE", wait : false, propagate : false, parameters: [
string(name: 'eNB_MR', value: String.valueOf(MR)),
string(name: 'eNB_Branch', value: String.valueOf(SRC_BRANCH)),
string(name: 'eNB_CommitID', value: String.valueOf(COMMIT_ID)),

View File

@@ -41,7 +41,7 @@ import constants as CONST
#-----------------------------------------------------------
def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP,SCA,PHYSIM):
py_param_file_present = False
@@ -80,6 +80,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
HTML.ranRepository=matchReg.group(1)
ldpc.ranRepository=matchReg.group(1)
CONTAINERS.ranRepository=matchReg.group(1)
SCA.ranRepository=matchReg.group(1)
PHYSIM.ranRepository=matchReg.group(1)
elif re.match('^\-\-eNB_AllowMerge=(.+)$|^\-\-ranAllowMerge=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB_AllowMerge=(.+)$', myArgv, re.IGNORECASE)
@@ -92,6 +94,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
RAN.ranAllowMerge=True
HTML.ranAllowMerge=True
CONTAINERS.ranAllowMerge=True
SCA.ranAllowMerge=True
PHYSIM.ranAllowMerge=True
elif re.match('^\-\-eNBBranch=(.+)$|^\-\-ranBranch=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBBranch=(.+)$', myArgv, re.IGNORECASE)
@@ -102,6 +106,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
HTML.ranBranch=matchReg.group(1)
ldpc.ranBranch=matchReg.group(1)
CONTAINERS.ranBranch=matchReg.group(1)
SCA.ranBranch=matchReg.group(1)
PHYSIM.ranBranch=matchReg.group(1)
elif re.match('^\-\-eNBCommitID=(.*)$|^\-\-ranCommitID=(.*)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBCommitID=(.*)$', myArgv, re.IGNORECASE)
@@ -112,6 +118,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
HTML.ranCommitID=matchReg.group(1)
ldpc.ranCommitID=matchReg.group(1)
CONTAINERS.ranCommitID=matchReg.group(1)
SCA.ranCommitID=matchReg.group(1)
PHYSIM.ranCommitID=matchReg.group(1)
elif re.match('^\-\-eNBTargetBranch=(.*)$|^\-\-ranTargetBranch=(.*)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBTargetBranch=(.*)$', myArgv, re.IGNORECASE)
@@ -122,12 +130,16 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
HTML.ranTargetBranch=matchReg.group(1)
ldpc.ranTargetBranch=matchReg.group(1)
CONTAINERS.ranTargetBranch=matchReg.group(1)
SCA.ranTargetBranch=matchReg.group(1)
PHYSIM.ranTargetBranch=matchReg.group(1)
elif re.match('^\-\-eNBIPAddress=(.+)$|^\-\-eNB[1-2]IPAddress=(.+)$', myArgv, re.IGNORECASE):
if re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNBIPAddress=(.+)$', myArgv, re.IGNORECASE)
RAN.eNBIPAddress=matchReg.group(1)
ldpc.eNBIpAddr=matchReg.group(1)
CONTAINERS.eNBIPAddress=matchReg.group(1)
SCA.eNBIPAddress=matchReg.group(1)
PHYSIM.eNBIPAddress=matchReg.group(1)
elif re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1IPAddress=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1IPAddress=matchReg.group(1)
@@ -142,6 +154,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
RAN.eNBUserName=matchReg.group(1)
ldpc.eNBUserName=matchReg.group(1)
CONTAINERS.eNBUserName=matchReg.group(1)
SCA.eNBUserName=matchReg.group(1)
PHYSIM.eNBUserName=matchReg.group(1)
elif re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1UserName=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1UserName=matchReg.group(1)
@@ -156,6 +170,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
RAN.eNBPassword=matchReg.group(1)
ldpc.eNBPassWord=matchReg.group(1)
CONTAINERS.eNBPassword=matchReg.group(1)
SCA.eNBPassword=matchReg.group(1)
PHYSIM.eNBPassword=matchReg.group(1)
elif re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1Password=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1Password=matchReg.group(1)
@@ -170,6 +186,8 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
RAN.eNBSourceCodePath=matchReg.group(1)
ldpc.eNBSourceCodePath=matchReg.group(1)
CONTAINERS.eNBSourceCodePath=matchReg.group(1)
SCA.eNBSourceCodePath=matchReg.group(1)
PHYSIM.eNBSourceCodePath=matchReg.group(1)
elif re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-eNB1SourceCodePath=(.+)$', myArgv, re.IGNORECASE)
RAN.eNB1SourceCodePath=matchReg.group(1)
@@ -239,6 +257,15 @@ def ArgsParse(argvs,CiTestObj,RAN,HTML,EPC,ldpc,CONTAINERS,HELP):
finalStatus = matchReg.group(1)
if ((finalStatus == 'true') or (finalStatus == 'True')):
CiTestObj.finalStatus = True
elif re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCUserName=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCUserName = matchReg.group(1)
elif re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCPassword=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCPassword = matchReg.group(1)
elif re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE):
matchReg = re.match('^\-\-OCProjectName=(.+)$', myArgv, re.IGNORECASE)
PHYSIM.OCProjectName = matchReg.group(1)
else:
HELP.GenericHelp(CONST.Version)
sys.exit('Invalid Parameter: ' + myArgv)

View File

@@ -0,0 +1,7 @@
#!/bin/bash
while true
do
echo "gNB will be started automatically..."
sleep 1
sudo .././cmake_targets/ran_build/build/nr-softmodem -E -O ../targets/PROJECTS/GENERIC-LTE-EPC/CONF/testing_gnb.conf
done

View File

@@ -1,216 +0,0 @@
#!/bin/bash
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
function usage {
echo "OAI RedHat Build Check script"
echo " Original Author: Raphael Defosseux"
echo ""
echo "Usage:"
echo "------"
echo " buildOnRH.sh [OPTIONS]"
echo ""
echo "Options:"
echo "--------"
echo " --job-name #### OR -jn ####"
echo " Specify the name of the Jenkins job."
echo ""
echo " --build-id #### OR -id ####"
echo " Specify the build ID of the Jenkins job."
echo ""
echo " --workspace #### OR -ws ####"
echo " Specify the workspace."
echo ""
echo " --remote-host #### OR -rh ####"
echo " Specify the RedHat remote server."
echo ""
echo " --remote-user-name #### OR -ru ####"
echo " Specify the RedHat remote server username."
echo ""
echo " --remote-password #### OR -rp ####"
echo " Specify the RedHat remote server password."
echo ""
echo " --remote-path #### OR -ra ####"
echo " Specify the RedHat remote server path to work on."
echo ""
}
if [ $# -lt 1 ] || [ $# -gt 14 ]
then
echo "Syntax Error: not the correct number of arguments"
echo ""
usage
exit 1
fi
RH_HOST=XX
RH_USER=XX
RH_PASSWD=XX
RH_PATH=XX
JOB_NAME=XX
BUILD_ID=XX
while [[ $# -gt 0 ]]
do
key="$1"
case $key in
-h|--help)
shift
usage
exit 0
;;
-jn|--job-name)
JOB_NAME="$2"
shift
shift
;;
-id|--build-id)
BUILD_ID="$2"
shift
shift
;;
-ws|--workspace)
JENKINS_WKSP="$2"
shift
shift
;;
-rh|--remote-host)
RH_HOST="$2"
shift
shift
;;
-ru|--remote-user-name)
RH_USER="$2"
shift
shift
;;
-rp|--remote-password)
RH_PASSWD="$2"
shift
shift
;;
-ra|--remote-path)
RH_PATH="$2"
shift
shift
;;
*)
echo "Syntax Error: unknown option: $key"
echo ""
usage
exit 1
esac
done
if [ ! -f $JENKINS_WKSP/localZip.zip ]
then
echo "Missing localZip.zip file!"
exit 1
fi
if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] || [ "$RH_HOST" == "XX" ] || [ "$RH_USER" == "XX" ] || [ "$RH_PASSWD" == "XX" ] || [ "$RH_PATH" == "XX" ]
then
echo "Missing options"
usage
exit 1
fi
echo "############################################################"
echo "Copying GIT repo into RedHat Server"
echo "############################################################"
echo "rm -Rf ${RH_PATH}" >> rh-cmd.txt
echo "mkdir -p ${RH_PATH}" >> rh-cmd.txt
sshpass -p ${RH_PASSWD} ssh -o 'StrictHostKeyChecking no' ${RH_USER}@${RH_HOST} < rh-cmd.txt
rm -f rh-cmd.txt
echo "############################################################"
echo "Running install and build script on RedHat Server"
echo "############################################################"
sshpass -p ${RH_PASSWD} scp -o 'StrictHostKeyChecking no' $JENKINS_WKSP/localZip.zip ${RH_USER}@${RH_HOST}:${RH_PATH}
echo "cd ${RH_PATH}" > rh-cmd.txt
echo "unzip -qq localZip.zip" >> rh-cmd.txt
echo "source oaienv" >> rh-cmd.txt
echo "cd cmake_targets" >> rh-cmd.txt
echo "mkdir -p log" >> rh-cmd.txt
echo "./build_oai -I -w USRP --eNB > log/install-build.txt 2>&1" >> rh-cmd.txt
sshpass -p ${RH_PASSWD} ssh -o 'StrictHostKeyChecking no' ${RH_USER}@${RH_HOST} < rh-cmd.txt
rm -f rh-cmd.txt
echo "############################################################"
echo "Creating a tmp folder to store results and artifacts"
echo "############################################################"
if [ ! -d $JENKINS_WKSP/archives ]
then
mkdir -p $JENKINS_WKSP/archives
fi
ARCHIVES_LOC=$JENKINS_WKSP/archives/red_hat
if [ ! -d $ARCHIVES_LOC ]
then
mkdir -p $ARCHIVES_LOC
fi
sshpass -p ${RH_PASSWD} scp -o 'StrictHostKeyChecking no' ${RH_USER}@${RH_HOST}:${RH_PATH}/cmake_targets/log/*.txt $ARCHIVES_LOC
echo "############################################################"
echo "Checking build status"
echo "############################################################"
LOG_PATTERN=.Rel15.txt
NB_PATTERN_FILES=7
LOG_FILES=`ls $ARCHIVES_LOC/*.txt`
STATUS=0
NB_FOUND_FILES=0
for FULLFILE in $LOG_FILES
do
if [[ $FULLFILE == *"$LOG_PATTERN"* ]]
then
filename=$(basename -- "$FULLFILE")
PASS_PATTERN=`echo $filename | sed -e "s#$LOG_PATTERN##"`
LOCAL_STAT=`egrep -c "Built target $PASS_PATTERN" $FULLFILE`
if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi
NB_FOUND_FILES=$((NB_FOUND_FILES + 1))
fi
done
if [ $NB_PATTERN_FILES -ne $NB_FOUND_FILES ]
then
echo "Expecting $NB_PATTERN_FILES log files and found $NB_FOUND_FILES"
STATUS=-1
fi
echo "COMMAND: build_oai -I -w USRP --eNB" > $ARCHIVES_LOC/build_final_status.log
if [ $STATUS -eq 0 ]
then
echo "BUILD_OK" >> $ARCHIVES_LOC/build_final_status.log
echo "STATUS seems OK"
else
echo "BUILD_KO" >> $ARCHIVES_LOC/build_final_status.log
echo "STATUS failed?"
fi
exit $STATUS

View File

@@ -62,7 +62,7 @@ function build_on_vm {
echo "ARCHIVES_LOC = $ARCHIVES_LOC"
echo "BUILD_OPTIONS = $BUILD_OPTIONS"
if [[ "$VM_NAME" == *"-enb-usrp"* ]]
if [[ "$VM_NAME" == *"-enb-usrp"* ]] || [[ "$VM_NAME" == *"-cppcheck"* ]] || [[ "$VM_NAME" == *"-phy-sim"* ]]
then
echo "This VM type is no longer supported in the pipeline framework"
return

View File

@@ -1,15 +1,15 @@
ranRepository : https://gitlab.eurecom.fr/oai/openairinterface5g.git
ranBranch : BRANCH_NAME
ranCommitID : COMMIT_ID
ranAllowMerge : 'true'
ranBranch : integration_2021_wk13_a
ranCommitID : 104aa7eed5d6702c1b9da663414079ef698da206
ranAllowMerge : 'yes'
ranTargetBranch : develop
steps:
- InitiateHtml,none
- TesteNB,xml_files/fr1_multi_node_build.xml
- TesteNB,xml_files/fr1_epc_start.xml
- TesteNB,xml_files/fr1_ran_ue_base.xml #ue toggle, nodes initialize, ue toggle, ping, nodes terminate
- TesteNB,xml_files/fr1_nsa_base_next.xml #ue toggle, nodes initialize, ue toggle, ping, nodes terminate
- TesteNB,xml_files/fr1_epc_closure.xml

86
ci-scripts/ci_ctl_qtel.py Normal file
View File

@@ -0,0 +1,86 @@
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Required Python Version
# Python 3.x
#
#---------------------------------------------------------------------
#usage example:
#sudo python3 ci_ctl_qtel.py /dev/ttyUSB2 wup
#sudo python3 ci_ctl_qtel.py /dev/ttyUSB2 detach
import sys
import time
import serial
class qtel_ctl:
#---------------
#private methods
#---------------
def __init__(self, usb_port_at):
self.QUECTEL_USB_PORT_AT = usb_port_at #ex : '/dev/ttyUSB2'
self.modem = serial.Serial(self.QUECTEL_USB_PORT_AT, timeout=1)
self.cmd_dict= {"wup": self.wup,"detach":self.detach}#dictionary of function pointers
def __set_modem_state(self,ser,state):
self.__send_command(ser,"AT+CFUN={}\r".format(state))
def __send_command(self,ser,com):
ser.write(com.encode())
time.sleep(0.1)
ret=[]
while ser.inWaiting()>0:
print("waiting")
msg=ser.readline()
msg=msg.decode("utf-8")
msg=msg.replace("\r","")
msg=msg.replace("\n","")
print(msg)
if msg!="":
ret.append(msg)
else:
print("msg empty")
return ret
#--------------
#public methods
#--------------
def wup(self):#sending AT+CFUN=0, then AT+CFUN=1
self.__set_modem_state(self.modem,'0')
time.sleep(3)
self.__set_modem_state(self.modem,'1')
def detach(self):#sending AT+CFUN=0
self.__set_modem_state(self.modem,'0')
if __name__ == "__main__":
#argv[1] : usb port
#argv[2] : qtel command (see function pointers dict "wup", "detach" etc ...)
command = sys.argv[2]
Module=qtel_ctl(sys.argv[1])
#calling the function to be applied
Module.cmd_dict[command]()

View File

@@ -0,0 +1,32 @@
idefix:
ID: idefix
State : enabled
Kind : quectel
Process :
Name : quectel-CM
Cmd : /home/oaicicd/quectel-CM/quectel-CM -s oai.ipv4 -4
WakeupScript : ci_ctl_qtel.py /dev/ttyUSB2 wup
DetachScript : ci_ctl_qtel.py /dev/ttyUSB2 detach
PLMN : 22201
UENetwork : enxb22a941dbf00
HostIPAddress : 192.168.18.188
HostUsername : oaicicd
HostPassword : oaicicd
HostSourceCodePath : none
dummy:
ID: ''
State : ''
Kind : ''
Process :
Name : ''
Cmd : ''
WakeupScript : ''
DetachScript : ''
PLMN : 22201
UENetwork : wwan0
HostIPAddress : 192.168.18.188
HostUsername : oaicicd
HostPassword : oaicicd
HostSourceCodePath : none

View File

@@ -0,0 +1,57 @@
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Required Python Version
# Python 3.x
#
#---------------------------------------------------------------------
#to use isfile
import os
import sys
import logging
#to create a SSH object locally in the methods
import sshconnection
#time.sleep
import time
#to load ue infrastructure dictionary
import yaml
class InfraUE:
def __init__(self):
self.ci_ue_infra ={}
#-----------------$
#PUBLIC Methods$
#-----------------$
#This method reads the yaml file describing the multi-UE infrastructure
#and stores the infra permanently in the related class attribute self.ci_ue_infra
def Get_UE_Infra(self,ue_infra_filename):
f_yaml=ue_infra_filename
with open(f_yaml,'r') as file:
logging.debug('Loading UE infrastructure from file '+f_yaml)
#load it permanently in the class attribute
self.ci_ue_infra = yaml.load(file,Loader=yaml.FullLoader)

View File

@@ -83,10 +83,12 @@ class Containerize():
self.flexranCtrlDeployed = False
self.flexranCtrlIpAddress = ''
self.cli = ''
self.cliBuildOptions = ''
self.dockerfileprefix = ''
self.host = ''
self.allImagesSize = {}
self.collectInfo = {}
#-----------------------------------------------------------
# Container management functions
#-----------------------------------------------------------
@@ -124,9 +126,11 @@ class Containerize():
if self.host == 'Ubuntu':
self.cli = 'docker'
self.dockerfileprefix = '.ubuntu18'
self.cliBuildOptions = '--no-cache'
elif self.host == 'Red Hat':
self.cli = 'sudo podman'
self.dockerfileprefix = '.rhel8.2'
self.cliBuildOptions = '--no-cache --disable-compression'
imageNames = []
result = re.search('eNB', self.imageKind)
@@ -144,6 +148,8 @@ class Containerize():
imageNames.append(('oai-gnb', 'gNB'))
imageNames.append(('oai-lte-ue', 'lteUE'))
imageNames.append(('oai-nr-ue', 'nrUE'))
if self.host == 'Red Hat':
imageNames.append(('oai-physim', 'phySim'))
if len(imageNames) == 0:
imageNames.append(('oai-enb', 'eNB'))
@@ -156,7 +162,7 @@ class Containerize():
# on RedHat/CentOS .git extension is mandatory
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
if result is not None:
full_ran_repo_name = self.ranRepository
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
mySSH.command('mkdir -p ' + lSourcePath, '\$', 5)
@@ -170,7 +176,7 @@ class Containerize():
mySSH.command('mkdir -p cmake_targets/log', '\$', 5)
# if the commit ID is provided use it to point to it
if self.ranCommitID != '':
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 5)
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 30)
# if the branch is not develop, then it is a merge request and we need to do
# the potential merge. Note that merge conflicts should already been checked earlier
imageTag = 'develop'
@@ -201,7 +207,7 @@ class Containerize():
# Build the shared image only on Push Events (not on Merge Requests)
if (not self.ranAllowMerge):
mySSH.command(self.cli + ' build --target ' + sharedimage + ' --tag ' + sharedimage + ':' + sharedTag + ' --file docker/Dockerfile.ran' + self.dockerfileprefix + ' --build-arg NEEDED_GIT_PROXY="http://proxy.eurecom.fr:8080" . > cmake_targets/log/ran-build.log 2>&1', '\$', 1600)
mySSH.command(self.cli + ' build ' + self.cliBuildOptions + ' --target ' + sharedimage + ' --tag ' + sharedimage + ':' + sharedTag + ' --file docker/Dockerfile.ran' + self.dockerfileprefix + ' --build-arg NEEDED_GIT_PROXY="http://proxy.eurecom.fr:8080" . > cmake_targets/log/ran-build.log 2>&1', '\$', 1600)
# First verify if the shared image was properly created.
status = True
mySSH.command(self.cli + ' image inspect --format=\'Size = {{.Size}} bytes\' ' + sharedimage + ':' + sharedTag, '\$', 5)
@@ -249,7 +255,7 @@ class Containerize():
# the archived Dockerfiles have "ran-build:latest" as base image
# we need to update them with proper tag
mySSH.command('sed -i -e "s#' + sharedimage + ':latest#' + sharedimage + ':' + sharedTag + '#" docker/Dockerfile.' + pattern + self.dockerfileprefix, '\$', 5)
mySSH.command(self.cli + ' build --target ' + image + ' --tag ' + image + ':' + imageTag + ' --file docker/Dockerfile.' + pattern + self.dockerfileprefix + ' . > cmake_targets/log/' + image + '.log 2>&1', '\$', 1200)
mySSH.command(self.cli + ' build ' + self.cliBuildOptions + ' --target ' + image + ' --tag ' + image + ':' + imageTag + ' --file docker/Dockerfile.' + pattern + self.dockerfileprefix + ' . > cmake_targets/log/' + image + '.log 2>&1', '\$', 1200)
# split the log
mySSH.command('mkdir -p cmake_targets/log/' + image, '\$', 5)
mySSH.command('python3 ci-scripts/docker_log_split.py --logfilename=cmake_targets/log/' + image + '.log', '\$', 5)
@@ -330,6 +336,31 @@ class Containerize():
errorandwarnings['warnings'] = warningsNo
errorandwarnings['status'] = status
files[fil] = errorandwarnings
# Let analyze the target image creation part
if os.path.isfile('build_log_{}/{}.log'.format(self.testCase_id,image)):
errorandwarnings = {}
with open('build_log_{}/{}.log'.format(self.testCase_id,image), mode='r') as inputfile:
startOfTargetImageCreation = False
buildStatus = False
for line in inputfile:
result = re.search('FROM .* [aA][sS] ' + image + '$', str(line))
if result is not None:
startOfTargetImageCreation = True
if startOfTargetImageCreation:
result = re.search('Successfully tagged ' + image + ':', str(line))
if result is not None:
buildStatus = True
result = re.search('COMMIT ' + image + ':', str(line))
if result is not None:
buildStatus = True
inputfile.close()
if buildStatus:
errorandwarnings['errors'] = 0
else:
errorandwarnings['errors'] = 1
errorandwarnings['warnings'] = 0
errorandwarnings['status'] = buildStatus
files['Target Image Creation'] = errorandwarnings
self.collectInfo[image] = files
if status:

132
ci-scripts/cls_module_ue.py Normal file
View File

@@ -0,0 +1,132 @@
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
#
# Required Python Version
# Python 3.x
#
#---------------------------------------------------------------------
#to use isfile
import os
import sys
import logging
#to create a SSH object locally in the methods
import sshconnection
#time.sleep
import time
import re
import subprocess
class Module_UE:
def __init__(self,Module):
#create attributes as in the Module dictionary
for k, v in Module.items():
setattr(self, k, v)
self.UEIPAddress = ""
#dictionary linking command names and related module scripts
self.cmd_dict= {"wup": self.WakeupScript,"detach":self.DetachScript}#dictionary of function scripts
#-----------------$
#PUBLIC Methods$
#-----------------$
#this method checks if the specified Process is running on the server hosting the module
#if not it will be started
def CheckCMProcess(self):
HOST=self.HostIPAddress
COMMAND="ps aux | grep " + self.Process['Name'] + " | grep -v grep "
logging.debug(COMMAND)
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if len(result)!=0:
logging.debug(self.Process['Name'] + " process found")
return True
else:#start process and check again
logging.debug(self.Process['Name'] + " process NOT found")
#starting the process
logging.debug('Starting ' + self.Process['Name'])
mySSH = sshconnection.SSHConnection()
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
mySSH.command('echo ' + self.HostPassword + ' | sudo -S ' + self.Process['Cmd'] + ' &','\$',5)
mySSH.close()
#checking the process
HOST=self.HostIPAddress
COMMAND="ps aux | grep " + self.Process['Name'] + " | grep -v grep "
logging.debug(COMMAND)
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
result = ssh.stdout.readlines()
if len(result)!=0:
logging.debug(self.Process['Name'] + " process found")
return True
else:
logging.debug(self.Process['Name'] + " process NOT found")
return False
#Generic command function, using function pointers dictionary
def Command(self,cmd):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.HostIPAddress, self.HostUsername, self.HostPassword)
mySSH.command('echo ' + self.HostPassword + ' | sudo -S python3 ' + self.cmd_dict[cmd],'\$',10)
time.sleep(5)
logging.debug("Module "+ cmd)
mySSH.close()
#this method retrieves the Module IP address (not the Host IP address)
def GetModuleIPAddress(self):
HOST=self.HostIPAddress
response= []
tentative = 10
while (len(response)==0) and (tentative>0):
COMMAND="ip a show dev " + self.UENetwork + " | grep inet | grep " + self.UENetwork
logging.debug(COMMAND)
ssh = subprocess.Popen(["ssh", "%s" % HOST, COMMAND],shell=False,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
response = ssh.stdout.readlines()
tentative-=1
time.sleep(10)
if (tentative==0) and (len(response)==0):
logging.debug('\u001B[1;37;41m Module IP Address Not Found! Time expired \u001B[0m')
return -1
else: #check response
result = re.search('inet (?P<moduleipaddress>[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+)', response[0].decode("utf-8") )
if result is not None:
if result.group('moduleipaddress') is not None:
self.UEIPAddress = result.group('moduleipaddress')
logging.debug('\u001B[1mUE Module IP Address is ' + self.UEIPAddress + '\u001B[0m')
return 0
else:
logging.debug('\u001B[1;37;41m Module IP Address Not Found! \u001B[0m')
return -1
else:
logging.debug('\u001B[1;37;41m Module IP Address Not Found! \u001B[0m')
return -1

View File

@@ -54,7 +54,8 @@ import helpreadme as HELP
import constants as CONST
import sshconnection
import cls_module_ue
import cls_ci_ueinfra #class defining the multi Ue infrastrucure
#-----------------------------------------------------------
@@ -129,6 +130,7 @@ class OaiCiTest():
self.iperf_packetloss_threshold = ''
self.iperf_profile = ''
self.iperf_options = ''
self.iperf_direction = ''
self.nbMaxUEtoAttach = -1
self.UEDevices = []
self.UEDevicesStatus = []
@@ -157,6 +159,7 @@ class OaiCiTest():
self.clean_repository = True
self.air_interface=''
self.expectedNbOfConnectedUEs = 0
self.ue_id = '' #used for module identification
def BuildOAIUE(self,HTML):
@@ -174,7 +177,7 @@ class OaiCiTest():
ue_prefix = ''
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
if result is not None:
full_ran_repo_name = self.ranRepository
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
SSH.command('mkdir -p ' + self.UESourceCodePath, '\$', 5)
@@ -217,7 +220,7 @@ class OaiCiTest():
# if the commit ID is provided use it to point to it
if self.ranCommitID != '':
SSH.command('git checkout -f ' + self.ranCommitID, '\$', 5)
SSH.command('git checkout -f ' + self.ranCommitID, '\$', 30)
# if the branch is not develop, then it is a merge request and we need to do
# the potential merge. Note that merge conflicts should already been checked earlier
if self.ranAllowMerge:
@@ -364,29 +367,44 @@ class OaiCiTest():
except:
os.kill(os.getppid(),signal.SIGUSR1)
def InitializeUE(self,HTML,COTS_UE):
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
multi_jobs = []
i = 0
for device_id in self.UEDevices:
p = Process(target = self.InitializeUE_common, args = (device_id,i,COTS_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
i += 1
for job in multi_jobs:
job.join()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
def InitializeUE(self,HTML,RAN,EPC, COTS_UE, InfraUE):
if self.ue_id=='':#no ID specified, then it is a COTS controlled by ADB
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
multi_jobs = []
i = 0
for device_id in self.UEDevices:
p = Process(target = self.InitializeUE_common, args = (device_id,i,COTS_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
i += 1
for job in multi_jobs:
job.join()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
else: #if an ID is specified, it is a module from the yaml infrastructure file
#RH
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
is_module=Module_UE.CheckCMProcess()
if is_module:
Module_UE.Command("wup")
status=Module_UE.GetModuleIPAddress()
if status==0:
HTML.CreateHtmlTestRow(Module_UE.UEIPAddress, 'OK', CONST.ALL_PROCESSES_OK)
logging.debug('UE IP addresss : '+ Module_UE.UEIPAddress)
else: #status==-1 failed to retrieve IP address
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
def InitializeOAIUE(self,HTML,RAN,EPC,COTS_UE):
if self.UEIPAddress == '' or self.UEUserName == '' or self.UEPassword == '' or self.UESourceCodePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
if self.air_interface == 'lte-uesoftmodem':
result = re.search('--no-L2-connect', str(self.Initialize_OAI_UE_args))
if result is None:
@@ -403,13 +421,13 @@ class OaiCiTest():
SSH = sshconnection.SSHConnection()
SSH.open(self.UEIPAddress, self.UEUserName, self.UEPassword)
# b2xx_fx3_utils reset procedure
SSH.command('echo ' + self.UEPassword + ' | sudo -S uhd_find_devices', '\$', 60)
SSH.command('echo ' + self.UEPassword + ' | sudo -S uhd_find_devices', '\$', 90)
result = re.search('type: b200', SSH.getBefore())
if result is not None:
logging.debug('Found a B2xx device --> resetting it')
SSH.command('echo ' + self.UEPassword + ' | sudo -S b2xx_fx3_utils --reset-device', '\$', 10)
# Reloading FGPA bin firmware
SSH.command('echo ' + self.UEPassword + ' | sudo -S uhd_find_devices', '\$', 60)
SSH.command('echo ' + self.UEPassword + ' | sudo -S uhd_find_devices', '\$', 90)
result = re.search('type: n3xx', str(SSH.getBefore()))
if result is not None:
logging.debug('Found a N3xx device --> resetting it')
@@ -945,30 +963,31 @@ class OaiCiTest():
os.kill(os.getppid(),signal.SIGUSR1)
def AttachUE(self,HTML,RAN,EPC,COTS_UE):
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
check_eNB = True
check_OAI_UE = False
pStatus = self.CheckProcessExist(check_eNB, check_OAI_UE,RAN,EPC)
if (pStatus < 0):
HTML.CreateHtmlTestRow('N/A', 'KO', pStatus)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
multi_jobs = []
status_queue = SimpleQueue()
lock = Lock()
nb_ue_to_connect = 0
for device_id in self.UEDevices:
if (self.nbMaxUEtoAttach == -1) or (nb_ue_to_connect < self.nbMaxUEtoAttach):
self.UEDevicesStatus[nb_ue_to_connect] = CONST.UE_STATUS_ATTACHING
p = Process(target = self.AttachUE_common, args = (device_id, status_queue, lock,nb_ue_to_connect,COTS_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
nb_ue_to_connect = nb_ue_to_connect + 1
for job in multi_jobs:
job.join()
if self.ue_id=='':#no ID specified, then it is a COTS controlled by ADB
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
check_eNB = True
check_OAI_UE = False
pStatus = self.CheckProcessExist(check_eNB, check_OAI_UE,RAN,EPC)
if (pStatus < 0):
HTML.CreateHtmlTestRow('N/A', 'KO', pStatus)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
multi_jobs = []
status_queue = SimpleQueue()
lock = Lock()
nb_ue_to_connect = 0
for device_id in self.UEDevices:
if (self.nbMaxUEtoAttach == -1) or (nb_ue_to_connect < self.nbMaxUEtoAttach):
self.UEDevicesStatus[nb_ue_to_connect] = CONST.UE_STATUS_ATTACHING
p = Process(target = self.AttachUE_common, args = (device_id, status_queue, lock,nb_ue_to_connect,COTS_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
nb_ue_to_connect = nb_ue_to_connect + 1
for job in multi_jobs:
job.join()
if (status_queue.empty()):
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
@@ -1025,37 +1044,44 @@ class OaiCiTest():
except:
os.kill(os.getppid(),signal.SIGUSR1)
def DetachUE(self,HTML,RAN,EPC,COTS_UE):
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
check_eNB = True
check_OAI_UE = False
pStatus = self.CheckProcessExist(check_eNB, check_OAI_UE,RAN,EPC)
if (pStatus < 0):
HTML.CreateHtmlTestRow('N/A', 'KO', pStatus)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
multi_jobs = []
cnt = 0
for device_id in self.UEDevices:
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_DETACHING
p = Process(target = self.DetachUE_common, args = (device_id,cnt,COTS_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
cnt += 1
for job in multi_jobs:
job.join()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
result = re.search('T_stdout', str(RAN.Initialize_eNB_args))
if result is not None:
logging.debug('Waiting 5 seconds to fill up record file')
time.sleep(5)
cnt = 0
while cnt < len(self.UEDevices):
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_DETACHED
cnt += 1
def DetachUE(self,HTML,RAN,EPC,COTS_UE,InfraUE):
if self.ue_id=='':#no ID specified, then it is a COTS controlled by ADB
if self.ADBIPAddress == '' or self.ADBUserName == '' or self.ADBPassword == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
check_eNB = True
check_OAI_UE = False
pStatus = self.CheckProcessExist(check_eNB, check_OAI_UE,RAN,EPC)
if (pStatus < 0):
HTML.CreateHtmlTestRow('N/A', 'KO', pStatus)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
multi_jobs = []
cnt = 0
for device_id in self.UEDevices:
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_DETACHING
p = Process(target = self.DetachUE_common, args = (device_id,cnt,COTS_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
cnt += 1
for job in multi_jobs:
job.join()
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
result = re.search('T_stdout', str(RAN.Initialize_eNB_args))
if result is not None:
logging.debug('Waiting 5 seconds to fill up record file')
time.sleep(5)
cnt = 0
while cnt < len(self.UEDevices):
self.UEDevicesStatus[cnt] = CONST.UE_STATUS_DETACHED
cnt += 1
else:#if an ID is specified, it is a module from the yaml infrastructure file
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.Command("detach")
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
def RebootUE_common(self, device_id):
try:
@@ -1437,14 +1463,20 @@ class OaiCiTest():
statusQueue.put(message)
lock.release()
def Ping_common(self, lock, UE_IPAddress, device_id, statusQueue,EPC):
def Ping_common(self, lock, UE_IPAddress, device_id, statusQueue,EPC, Module_UE):
try:
SSH = sshconnection.SSHConnection()
# Launch ping on the EPC side (true for ltebox and old open-air-cn)
# But for OAI-Rel14-CUPS, we launch from python executor
launchFromEpc = True
launchFromModule = False
if re.match('OAI-Rel14-CUPS', EPC.Type, re.IGNORECASE):
launchFromEpc = False
#if module, ping from module to EPC
if self.ue_id!='':
launchFromEpc = False
launchfromModule = True
ping_time = re.findall("-c (\d+)",str(self.ping_args))
if launchFromEpc:
@@ -1462,21 +1494,34 @@ class OaiCiTest():
#copy the ping log file to have it locally for analysis (ping stats)
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '.')
else:
#ping log file is on the python executor
cmd = 'ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 > ping_' + self.testCase_id + '_' + device_id + '.log'
message = cmd + '\n'
logging.debug(cmd)
ret = subprocess.run(cmd, shell=True)
ping_status = ret.returncode
#copy the ping log file to an other folder for log collection (source and destination are EPC)
SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'ping_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts')
#copy the ping log file to have it locally for analysis (ping stats)
logging.debug(EPC.SourceCodePath + 'ping_' + self.testCase_id + '_' + device_id + '.log')
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath +'/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '.')
if launchfromModule == False:
#ping log file is on the python executor
cmd = 'ping ' + self.ping_args + ' ' + UE_IPAddress + ' 2>&1 > ping_' + self.testCase_id + '_' + device_id + '.log'
message = cmd + '\n'
logging.debug(cmd)
ret = subprocess.run(cmd, shell=True)
ping_status = ret.returncode
#copy the ping log file to an other folder for log collection (source and destination are EPC)
SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'ping_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts')
#copy the ping log file to have it locally for analysis (ping stats)
logging.debug(EPC.SourceCodePath + 'ping_' + self.testCase_id + '_' + device_id + '.log')
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath +'/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '.')
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
#cat is executed on EPC
SSH.command('cat ' + EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5)
else: #launch from Module
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
#ping from module NIC rather than IP address to make sure round trip is over the air
cmd = 'ping -I ' + Module_UE.UENetwork + ' ' + self.ping_args + ' ' + EPC.IPAddress + ' 2>&1 > ping_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',int(ping_time[0])*1.5)
#copy the ping log file to have it locally for analysis (ping stats)
SSH.copyin(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword, 'ping_' + self.testCase_id + '_' + self.ue_id + '.log', '.')
#cat is executed locally
SSH.command('cat ping_' + self.testCase_id + '_' + self.ue_id + '.log', '\$', 5)
ping_status=0
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
#cat is executed on EPC
SSH.command('cat ' + EPC.SourceCodePath + '/scripts/ping_' + self.testCase_id + '_' + device_id + '.log', '\$', 5)
# TIMEOUT CASE
if ping_status < 0:
message = 'Ping with UE (' + str(UE_IPAddress) + ') crashed due to TIMEOUT!'
@@ -1660,7 +1705,7 @@ class OaiCiTest():
except:
os.kill(os.getppid(),signal.SIGUSR1)
def Ping(self,HTML,RAN,EPC,COTS_UE):
def Ping(self,HTML,RAN,EPC,COTS_UE, InfraUE):
result = re.search('noS1', str(RAN.Initialize_eNB_args))
if result is not None:
self.PingNoS1(HTML,RAN,EPC,COTS_UE)
@@ -1678,18 +1723,30 @@ class OaiCiTest():
HTML.CreateHtmlTestRow(self.ping_args, 'KO', pStatus)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
ueIpStatus = self.GetAllUEIPAddresses()
if (ueIpStatus < 0):
HTML.CreateHtmlTestRow(self.ping_args, 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
if self.ue_id=="":
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra['dummy']) #RH, temporary, we need a dummy Module_UE object to pass to Ping_common
ueIpStatus = self.GetAllUEIPAddresses()
if (ueIpStatus < 0):
HTML.CreateHtmlTestRow(self.ping_args, 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
else:
self.UEIPAddresses=[]
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.GetModuleIPAddress()
self.UEIPAddresses.append(Module_UE.UEIPAddress)
logging.debug(self.UEIPAddresses)
multi_jobs = []
i = 0
lock = Lock()
status_queue = SimpleQueue()
for UE_IPAddress in self.UEIPAddresses:
device_id = self.UEDevices[i]
p = Process(target = self.Ping_common, args = (lock,UE_IPAddress,device_id,status_queue,EPC,))
if self.ue_id=="":
device_id = self.UEDevices[i]
else:
device_id = Module_UE.ID + "-" + Module_UE.Kind
p = Process(target = self.Ping_common, args = (lock,UE_IPAddress,device_id,status_queue,EPC,Module_UE,))
p.daemon = True
p.start()
multi_jobs.append(p)
@@ -1864,8 +1921,8 @@ class OaiCiTest():
else:
return -2
def Iperf_analyzeV2Server(self, lock, UE_IPAddress, device_id, statusQueue, iperf_real_options):
if (not os.path.isfile('iperf_server_' + self.testCase_id + '_' + device_id + '.log')):
def Iperf_analyzeV2Server(self, lock, UE_IPAddress, device_id, statusQueue, iperf_real_options, filename,type):
if (not os.path.isfile(filename)):
self.ping_iperf_wrong_exit(lock, UE_IPAddress, device_id, statusQueue, 'Could not analyze from server log')
return
# Computing the requested bandwidth in float
@@ -1890,14 +1947,18 @@ class OaiCiTest():
req_bandwidth = '%.1f Gbits/sec' % req_bw
req_bw = req_bw * 1000000000
server_file = open('iperf_server_' + self.testCase_id + '_' + device_id + '.log', 'r')
server_file = open(filename, 'r')
br_sum = 0.0
ji_sum = 0.0
pl_sum = 0
ps_sum = 0
row_idx = 0
for line in server_file.readlines():
result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(?P<lostPack>[0-9]+)/ +(?P<sentPack>[0-9]+)', str(line))
if type==0:
result = re.search('(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(?P<lostPack>[0-9]+)/ +(?P<sentPack>[0-9]+)', str(line))
else:
result = re.search('^\[ \d\].+ +(?P<bitrate>[0-9\.]+ [KMG]bits\/sec) +(?P<jitter>[0-9\.]+ ms) +(?P<lostPack>[0-9]+)\/(?P<sentPack>[0-9]+)', str(line))
if result is not None:
bitrate = result.group('bitrate')
jitter = result.group('jitter')
@@ -2127,12 +2188,65 @@ class OaiCiTest():
SSH.command('docker cp prod-trf-gen:/iperf-2.0.5/iperf_server_' + self.testCase_id + '_' + device_id + '.log ' + EPC.SourceCodePath + '/scripts', '\$', 5)
SSH.close()
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, EPC.SourceCodePath+ '/scripts/iperf_server_' + self.testCase_id + '_' + device_id + '.log', '.')
self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options)
filename='iperf_server_' + self.testCase_id + '_' + device_id + '.log'
self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options,filename,0)
# in case of OAI-UE
if (device_id == 'OAI-UE'):
SSH.copyin(self.UEIPAddress, self.UEUserName, self.UEPassword, self.UESourceCodePath + '/cmake_targets/iperf_' + self.testCase_id + '_' + device_id + '.log', '.')
SSH.copyout(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_' + self.testCase_id + '_' + device_id + '.log', EPC.SourceCodePath + '/scripts')
def Iperf_Module(self, lock, UE_IPAddress, device_id, idx, ue_num, statusQueue,EPC, Module_UE):
SSH = sshconnection.SSHConnection()
iperf_time = self.Iperf_ComputeTime()
if self.iperf_direction=="DL":
logging.debug("Iperf for Module in DL mode detected")
#server side UE
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
cmd = 'rm iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',5)
cmd = 'echo $USER; nohup /opt/iperf-2.0.10/iperf -s -B ' + UE_IPAddress + ' -u 2>&1 > iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',5)
#client side EPC
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
cmd = 'rm iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',5)
cmd = 'iperf -c ' + UE_IPAddress + ' ' + self.iperf_args + ' 2>&1 > iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',int(iperf_time)*5.0)
#copy the 2 resulting files locally
SSH.copyin(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword, 'iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log', '.')
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log', '.')
#send for analysis
filename='iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log'
self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, self.iperf_args,filename,1)
elif self.iperf_direction=="UL":#does not work at the moment
logging.debug("Iperf for Module in UL mode detected")
#server side EPC
SSH.open(EPC.IPAddress, EPC.UserName, EPC.Password)
cmd = 'rm iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',5)
cmd = 'echo $USER; nohup iperf -s -i 1 -u 2>&1 > iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',5)
#client side UE
SSH.open(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword)
cmd = 'rm iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log'
SSH.command(cmd,'\$',5)
SSH.command('/opt/iperf-2.0.10/iperf -c 192.172.0.1 ' + self.iperf_args + ' 2>&1 > iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log', '\$', int(iperf_time)*5.0)
#copy the 2 resulting files locally
SSH.copyin(Module_UE.HostIPAddress, Module_UE.HostUsername, Module_UE.HostPassword, 'iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log', '.')
SSH.copyin(EPC.IPAddress, EPC.UserName, EPC.Password, 'iperf_server_' + self.testCase_id + '_' + self.ue_id + '.log', '.')
#send for analysis
filename='iperf_client_' + self.testCase_id + '_' + self.ue_id + '.log'
self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, self.iperf_args,filename,1)
else :
logging.debug("Incorrect or missing IPERF direction in XML")
SSH.close()
return
def Iperf_common(self, lock, UE_IPAddress, device_id, idx, ue_num, statusQueue,EPC):
try:
SSH = sshconnection.SSHConnection()
@@ -2229,8 +2343,13 @@ class OaiCiTest():
# Launch the IPERF client on the EPC side for DL (true for ltebox and old open-air-cn
# But for OAI-Rel14-CUPS, we launch from python executor
launchFromEpc = True
launchFromModule = False
if re.match('OAI-Rel14-CUPS', EPC.Type, re.IGNORECASE):
launchFromEpc = False
#if module
if self.ue_id!='' and self.iperf :
launchFromEpc = False
launchfromModule = True
# When using a docker-based deployment, IPERF client shall be launched from trf container
launchFromTrfContainer = False
if re.match('OAI-Rel14-Docker', EPC.Type, re.IGNORECASE):
@@ -2334,7 +2453,8 @@ class OaiCiTest():
subprocess.run(cmd, shell=True)
except:
pass
self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options)
filename='iperf_server_' + self.testCase_id + '_' + device_id + '.log'
self.Iperf_analyzeV2Server(lock, UE_IPAddress, device_id, statusQueue, modified_options,filename,0)
# in case of OAI UE:
if (device_id == 'OAI-UE'):
@@ -2422,7 +2542,8 @@ class OaiCiTest():
if (os.path.isfile('iperf_server_' + self.testCase_id + '.log')):
os.remove('iperf_server_' + self.testCase_id + '.log')
SSH.copyin(iServerIPAddr, iServerUser, iServerPasswd, '/tmp/tmp_iperf_server_' + self.testCase_id + '.log', 'iperf_server_' + self.testCase_id + '_OAI-UE.log')
self.Iperf_analyzeV2Server(lock, '10.0.1.2', 'OAI-UE', status_queue, modified_options)
filename='iperf_server_' + self.testCase_id + '_OAI-UE.log'
self.Iperf_analyzeV2Server(lock, '10.0.1.2', 'OAI-UE', status_queue, modified_options,filename,0)
# copying on the EPC server for logCollection
if (clientStatus == -1):
@@ -2457,7 +2578,7 @@ class OaiCiTest():
HTML.CreateHtmlTestRowQueue(self.iperf_args, 'KO', len(self.UEDevices), html_queue)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
def Iperf(self,HTML,RAN,EPC,COTS_UE):
def Iperf(self,HTML,RAN,EPC,COTS_UE, InfraUE):
result = re.search('noS1', str(RAN.Initialize_eNB_args))
if result is not None:
self.IperfNoS1(HTML,RAN,EPC,COTS_UE)
@@ -2475,12 +2596,21 @@ class OaiCiTest():
HTML.CreateHtmlTestRow(self.iperf_args, 'KO', pStatus)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
ueIpStatus = self.GetAllUEIPAddresses()
if (ueIpStatus < 0):
logging.debug('going here')
HTML.CreateHtmlTestRow(self.iperf_args, 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
if self.ue_id=="":#is not a module, follow legacy code
ueIpStatus = self.GetAllUEIPAddresses()
if (ueIpStatus < 0):
HTML.CreateHtmlTestRow(self.iperf_args, 'KO', CONST.UE_IP_ADDRESS_ISSUE)
self.AutoTerminateUEandeNB(HTML,RAN,COTS_UE,EPC)
return
else: #is a module
self.UEIPAddresses=[]
Module_UE = cls_module_ue.Module_UE(InfraUE.ci_ue_infra[self.ue_id])
Module_UE.GetModuleIPAddress()
self.UEIPAddresses.append(Module_UE.UEIPAddress)
self.dummyIperfVersion = '2.0.10'
#cmd = 'iperf --version'
@@ -2498,9 +2628,15 @@ class OaiCiTest():
ue_num = len(self.UEIPAddresses)
lock = Lock()
status_queue = SimpleQueue()
logging.debug(self.UEIPAddresses)
for UE_IPAddress in self.UEIPAddresses:
device_id = self.UEDevices[i]
p = Process(target = self.Iperf_common, args = (lock,UE_IPAddress,device_id,i,ue_num,status_queue,EPC,))
#special quick and dirty treatment for modules, iperf to be restructured
if self.ue_id!="": #is module
device_id = Module_UE.ID + "-" + Module_UE.Kind
p = Process(target = self.Iperf_Module ,args = (lock, UE_IPAddress, device_id, i, ue_num, status_queue, EPC, Module_UE,))
else: #legacy code
p = Process(target = self.Iperf_common, args = (lock, UE_IPAddress, device_id, i, ue_num, status_queue, EPC, ))
p.daemon = True
p.start()
multi_jobs.append(p)
@@ -3273,7 +3409,7 @@ class OaiCiTest():
UhdVersion = result.group('uhd_version')
logging.debug('UHD Version is: ' + UhdVersion)
HTML.UhdVersion[idx]=UhdVersion
SSH.command('echo ' + Password + ' | sudo -S uhd_find_devices', '\$', 60)
SSH.command('echo ' + Password + ' | sudo -S uhd_find_devices', '\$', 90)
usrp_boards = re.findall('product: ([0-9A-Za-z]+)\\\\r\\\\n', SSH.getBefore())
count = 0
for board in usrp_boards:

View File

@@ -1,191 +1,191 @@
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
#
# Required Python Version
# Python 3.x
#
# Required Python Package
# pexpect
#---------------------------------------------------------------------
#to use logging.info()
import logging
#to create a SSH object locally in the methods
import sshconnection
#to update the HTML object
import html
from multiprocessing import SimpleQueue
#for log folder maintenance
import os
class PhySim:
def __init__(self):
self.buildargs = ""
self.runargs = ""
self.eNBIpAddr = ""
self.eNBUserName = ""
self.eNBPassWord = ""
self.eNBSourceCodePath = ""
self.ranRepository = ""
self.ranBranch = ""
self.ranCommitID= ""
self.ranAllowMerge= ""
self.ranTargetBranch= ""
self.exitStatus=0
self.forced_workspace_cleanup=False
#private attributes
self.__workSpacePath=''
self.__buildLogFile='compile_phy_sim.log'
self.__runLogFile=''
self.__runResults=[]
self.__runLogPath='phy_sim_logs'
#-----------------
#PRIVATE Methods
#-----------------
def __CheckResults_PhySim(self,HTML,CONST,testcase_id):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#retrieve run log file and store it locally$
mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__runLogFile, '.')
mySSH.close()
#parse results looking for Encoding and Decoding mean values
self.__runResults=[]
with open(self.__runLogFile) as f:
for line in f:
if 'mean' in line:
self.__runResults.append(line)
#the values are appended for each mean value (2), so we take these 2 values from the list
info=self.__runResults[0]+self.__runResults[1]
#once parsed move the local logfile to its folder for tidiness
os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.')
#updating the HTML with results
html_cell = '<pre style="background-color:white">' + info + '</pre>'
html_queue=SimpleQueue()
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue)
return HTML
def __CheckBuild_PhySim(self, HTML, CONST):
self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/'
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#retrieve compile log file and store it locally
mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__buildLogFile, '.')
#delete older run log file
mySSH.command('rm ' + self.__workSpacePath+self.__runLogFile, '\$', 5)
mySSH.close()
#check build result from local compile log file
buildStatus=False
with open(self.__buildLogFile) as f:
#nr_prachsim is the last compile step
if 'nr_prachsim compiled' in f.read():
buildStatus=True
#update HTML based on build status
if buildStatus:
HTML.CreateHtmlTestRow(self.buildargs, 'OK', CONST.ALL_PROCESSES_OK, 'LDPC')
self.exitStatus=0
else:
logging.error('\u001B[1m Building Physical Simulators Failed\u001B[0m')
HTML.CreateHtmlTestRow(self.buildargs, 'KO', CONST.ALL_PROCESSES_OK, 'LDPC')
HTML.CreateHtmlTabFooter(False)
#exitStatus=1 will do a sys.exit in main
self.exitStatus=1
return HTML
#-----------------$
#PUBLIC Methods$
#-----------------$
def Build_PhySim(self,htmlObj,constObj):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#create working dir
mySSH.command('mkdir -p ' + self.eNBSourceCodePath, '\$', 5)
mySSH.command('cd ' + self.eNBSourceCodePath, '\$', 5)
if not self.ranRepository.lower().endswith('.git'):
self.ranRepository+='.git'
#git clone
mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + self.ranRepository + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
#git config
mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
mySSH.command('git config user.name "OAI Jenkins"', '\$', 5)
#git clean depending on self.forced_workspace_cleanup captured in xml
if self.forced_workspace_cleanup==True:
logging.info('Cleaning workspace ...')
mySSH.command('echo ' + self.eNBPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30)
else:
logging.info('Workspace cleaning was disabled')
# if the commit ID is provided, use it to point to it
if self.ranCommitID != '':
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 5)
# if the branch is not develop, then it is a merge request and we need to do
# the potential merge. Note that merge conflicts should have already been checked earlier
if (self.ranAllowMerge):
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
else:
logging.info('Merging with the target branch: ' + self.ranTargetBranch)
mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
#build
mySSH.command('source oaienv', '\$', 5)
mySSH.command('cd cmake_targets', '\$', 5)
mySSH.command('mkdir -p log', '\$', 5)
mySSH.command('chmod 777 log', '\$', 5)
mySSH.command('stdbuf -o0 ./build_oai ' + self.buildargs + ' 2>&1 | stdbuf -o0 tee ' + self.__buildLogFile, 'Bypassing the Tests|build have failed', 1500)
mySSH.close()
#check build status and update HTML object
lHTML = html.HTMLManagement()
lHTML=self.__CheckBuild_PhySim(htmlObj,constObj)
return lHTML
def Run_PhySim(self,htmlObj,constObj,testcase_id):
#create run logs folder locally
os.system('mkdir -p ./'+self.__runLogPath)
#log file is tc_<testcase_id>.log remotely
self.__runLogFile='physim_'+str(testcase_id)+'.log'
#open a session for test run
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
mySSH.command('cd '+self.__workSpacePath,'\$',5)
#run and redirect the results to a log file
mySSH.command(self.__workSpacePath+'phy_simulators/build/ldpctest ' + self.runargs + ' >> '+self.__runLogFile, '\$', 30)
mySSH.close()
#return updated HTML to main
lHTML = html.HTMLManagement()
lHTML=self.__CheckResults_PhySim(htmlObj,constObj,testcase_id)
return lHTML
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
#
# Required Python Version
# Python 3.x
#
# Required Python Package
# pexpect
#---------------------------------------------------------------------
#to use logging.info()
import logging
#to create a SSH object locally in the methods
import sshconnection
#to update the HTML object
import html
from multiprocessing import SimpleQueue
#for log folder maintenance
import os
class PhySim:
def __init__(self):
self.buildargs = ""
self.runargs = ""
self.eNBIpAddr = ""
self.eNBUserName = ""
self.eNBPassWord = ""
self.eNBSourceCodePath = ""
self.ranRepository = ""
self.ranBranch = ""
self.ranCommitID= ""
self.ranAllowMerge= ""
self.ranTargetBranch= ""
self.exitStatus=0
self.forced_workspace_cleanup=False
#private attributes
self.__workSpacePath=''
self.__buildLogFile='compile_phy_sim.log'
self.__runLogFile=''
self.__runResults=[]
self.__runLogPath='phy_sim_logs'
#-----------------
#PRIVATE Methods
#-----------------
def __CheckResults_PhySim(self,HTML,CONST,testcase_id):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#retrieve run log file and store it locally$
mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__runLogFile, '.')
mySSH.close()
#parse results looking for Encoding and Decoding mean values
self.__runResults=[]
with open(self.__runLogFile) as f:
for line in f:
if 'mean' in line:
self.__runResults.append(line)
#the values are appended for each mean value (2), so we take these 2 values from the list
info=self.__runResults[0]+self.__runResults[1]
#once parsed move the local logfile to its folder for tidiness
os.system('mv '+self.__runLogFile+' '+ self.__runLogPath+'/.')
#updating the HTML with results
html_cell = '<pre style="background-color:white">' + info + '</pre>'
html_queue=SimpleQueue()
html_queue.put(html_cell)
HTML.CreateHtmlTestRowQueue(self.runargs, 'OK', 1, html_queue)
return HTML
def __CheckBuild_PhySim(self, HTML, CONST):
self.__workSpacePath=self.eNBSourceCodePath+'/cmake_targets/'
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#retrieve compile log file and store it locally
mySSH.copyin(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord, self.__workSpacePath+self.__buildLogFile, '.')
#delete older run log file
mySSH.command('rm ' + self.__workSpacePath+self.__runLogFile, '\$', 5)
mySSH.close()
#check build result from local compile log file
buildStatus=False
with open(self.__buildLogFile) as f:
#nr_prachsim is the last compile step
if 'nr_prachsim compiled' in f.read():
buildStatus=True
#update HTML based on build status
if buildStatus:
HTML.CreateHtmlTestRow(self.buildargs, 'OK', CONST.ALL_PROCESSES_OK, 'LDPC')
self.exitStatus=0
else:
logging.error('\u001B[1m Building Physical Simulators Failed\u001B[0m')
HTML.CreateHtmlTestRow(self.buildargs, 'KO', CONST.ALL_PROCESSES_OK, 'LDPC')
HTML.CreateHtmlTabFooter(False)
#exitStatus=1 will do a sys.exit in main
self.exitStatus=1
return HTML
#-----------------$
#PUBLIC Methods$
#-----------------$
def Build_PhySim(self,htmlObj,constObj):
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
#create working dir
mySSH.command('mkdir -p ' + self.eNBSourceCodePath, '\$', 5)
mySSH.command('cd ' + self.eNBSourceCodePath, '\$', 5)
if not self.ranRepository.lower().endswith('.git'):
self.ranRepository+='.git'
#git clone
mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + self.ranRepository + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
#git config
mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
mySSH.command('git config user.name "OAI Jenkins"', '\$', 5)
#git clean depending on self.forced_workspace_cleanup captured in xml
if self.forced_workspace_cleanup==True:
logging.info('Cleaning workspace ...')
mySSH.command('echo ' + self.eNBPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30)
else:
logging.info('Workspace cleaning was disabled')
# if the commit ID is provided, use it to point to it
if self.ranCommitID != '':
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 30)
# if the branch is not develop, then it is a merge request and we need to do
# the potential merge. Note that merge conflicts should have already been checked earlier
if (self.ranAllowMerge):
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
else:
logging.info('Merging with the target branch: ' + self.ranTargetBranch)
mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
#build
mySSH.command('source oaienv', '\$', 5)
mySSH.command('cd cmake_targets', '\$', 5)
mySSH.command('mkdir -p log', '\$', 5)
mySSH.command('chmod 777 log', '\$', 5)
mySSH.command('stdbuf -o0 ./build_oai ' + self.buildargs + ' 2>&1 | stdbuf -o0 tee ' + self.__buildLogFile, 'Bypassing the Tests|build have failed', 1500)
mySSH.close()
#check build status and update HTML object
lHTML = html.HTMLManagement()
lHTML=self.__CheckBuild_PhySim(htmlObj,constObj)
return lHTML
def Run_PhySim(self,htmlObj,constObj,testcase_id):
#create run logs folder locally
os.system('mkdir -p ./'+self.__runLogPath)
#log file is tc_<testcase_id>.log remotely
self.__runLogFile='physim_'+str(testcase_id)+'.log'
#open a session for test run
mySSH = sshconnection.SSHConnection()
mySSH.open(self.eNBIpAddr, self.eNBUserName, self.eNBPassWord)
mySSH.command('cd '+self.__workSpacePath,'\$',5)
#run and redirect the results to a log file
mySSH.command(self.__workSpacePath+'phy_simulators/build/ldpctest ' + self.runargs + ' >> '+self.__runLogFile, '\$', 30)
mySSH.close()
#return updated HTML to main
lHTML = html.HTMLManagement()
lHTML=self.__CheckResults_PhySim(htmlObj,constObj,testcase_id)
return lHTML

337
ci-scripts/cls_physim1.py Normal file
View File

@@ -0,0 +1,337 @@
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
#
# Required Python Version
# Python 3.x
#
# Required Python Package
# pexpect
#---------------------------------------------------------------------
#-----------------------------------------------------------
# Import
#-----------------------------------------------------------
import logging
import sshconnection as SSH
import html
import os
import re
import time
import sys
import constants as CONST
import helpreadme as HELP
class PhySim:
def __init__(self):
self.eNBIpAddr = ""
self.eNBUserName = ""
self.eNBPassword = ""
self.OCUserName = ""
self.OCPassword = ""
self.OCProjectName = ""
self.eNBSourceCodePath = ""
self.ranRepository = ""
self.ranBranch = ""
self.ranCommitID= ""
self.ranAllowMerge= False
self.ranTargetBranch= ""
self.testResult = {}
self.testCount = [0,0,0]
self.testSummary = {}
self.testStatus = False
#-----------------$
#PUBLIC Methods$
#-----------------$
def Deploy_PhySim(self, HTML, RAN):
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
ocUserName = self.OCUserName
ocPassword = self.OCPassword
ocProjectName = self.OCProjectName
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '' or ocUserName == '' or ocPassword == '' or ocProjectName == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
logging.debug('Building on server: ' + lIpAddr)
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
self.testCase_id = HTML.testCase_id
# on RedHat/CentOS .git extension is mandatory
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
if result is not None:
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
mySSH.command('echo ' + lPassWord + ' | sudo rm -Rf ' + lSourcePath, '\$', 30)
mySSH.command('mkdir -p ' + lSourcePath, '\$', 5)
mySSH.command('cd ' + lSourcePath, '\$', 5)
mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + full_ran_repo_name + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
# Raphael: here add a check if git clone or git fetch went smoothly
mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
mySSH.command('git config user.name "OAI Jenkins"', '\$', 5)
mySSH.command('echo ' + lPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30)
mySSH.command('mkdir -p cmake_targets/log', '\$', 5)
# if the commit ID is provided use it to point to it
if self.ranCommitID != '':
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 30)
if self.ranAllowMerge:
imageTag = "ci-temp"
if self.ranTargetBranch == '':
if (self.ranBranch != 'develop') and (self.ranBranch != 'origin/develop'):
mySSH.command('git merge --ff origin/develop -m "Temporary merge for CI"', '\$', 5)
else:
logging.debug('Merging with the target branch: ' + self.ranTargetBranch)
mySSH.command('git merge --ff origin/' + self.ranTargetBranch + ' -m "Temporary merge for CI"', '\$', 5)
else:
imageTag = "develop"
# Check if image is exist on the Red Hat server, before pushing it to OC cluster
mySSH.command("sudo podman image inspect --format='Size = {{.Size}} bytes' oai-physim:" + imageTag, '\$', 60)
if mySSH.getBefore().count('no such image') != 0:
logging.error('\u001B[1m No such image oai-physim\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.PHYSIM_IMAGE_ABSENT)
RAN.prematureExit = True
return
else:
result = re.search('Size *= *(?P<size>[0-9\-]+) *bytes', mySSH.getBefore())
if result is not None:
imageSize = float(result.group('size'))
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m oai-physim size is ' + ('%.0f' % imageSize) + ' kbytes\u001B[0m')
else:
imageSize = imageSize / 1000
if imageSize < 1000:
logging.debug('\u001B[1m oai-physim size is ' + ('%.0f' % imageSize) + ' Mbytes\u001B[0m')
else:
imageSize = imageSize / 1000
logging.debug('\u001B[1m oai-physim is ' + ('%.3f' % imageSize) + ' Gbytes\u001B[0m')
else:
logging.debug('oai-physim size is unknown')
# logging to OC Cluster and then switch to corresponding project
mySSH.command(f'oc login -u {ocUserName} -p {ocPassword}', '\$', 6)
if mySSH.getBefore().count('Login successful.') == 0:
logging.error('\u001B[1m OC Cluster Login Failed\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Login to OC Cluster Successfully\u001B[0m')
mySSH.command(f'oc project {ocProjectName}', '\$', 6)
if mySSH.getBefore().count(f'Already on project "{ocProjectName}"') == 0 and mySSH.getBefore().count(f'Now using project "{self.OCProjectName}"') == 0:
logging.error(f'\u001B[1m Unable to access OC project {ocProjectName}\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PROJECT_FAIL)
RAN.prematureExit = True
return
else:
logging.debug(f'\u001B[1m Now using project {ocProjectName}\u001B[0m')
# Tag the image and push to the OC cluster
mySSH.command('oc whoami -t | sudo podman login -u ' + ocUserName + ' --password-stdin https://default-route-openshift-image-registry.apps.5glab.nsa.eurecom.fr/ --tls-verify=false', '\$', 6)
if mySSH.getBefore().count('Login Succeeded!') == 0:
logging.error('\u001B[1m Podman Login to OC Cluster Registry Failed\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_LOGIN_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Podman Login to OC Cluster Registry Successfully\u001B[0m')
time.sleep(2)
mySSH.command('oc create -f openshift/oai-physim-image-stream.yml', '\$', 6)
if mySSH.getBefore().count('(AlreadyExists):') == 0 and mySSH.getBefore().count('created') == 0:
logging.error(f'\u001B[1m Image Stream "oai-physim" Creation Failed on OC Cluster {ocProjectName}\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_IS_FAIL)
RAN.prematureExit = True
return
else:
logging.debug(f'\u001B[1m Image Stream "oai-physim" created on OC project {ocProjectName}\u001B[0m')
time.sleep(2)
mySSH.command(f'sudo podman tag oai-physim:{imageTag} default-route-openshift-image-registry.apps.5glab.nsa.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
time.sleep(2)
mySSH.command(f'sudo podman push default-route-openshift-image-registry.apps.5glab.nsa.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag} --tls-verify=false', '\$', 30)
if mySSH.getBefore().count('Storing signatures') == 0:
logging.error('\u001B[1m Image "oai-physim" push to OC Cluster Registry Failed\u001B[0m')
mySSH.close()
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_IS_FAIL)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Image "oai-physim" push to OC Cluster Registry Successfully\u001B[0m')
# Using helm charts deployment
time.sleep(5)
mySSH.command(f'sed -i -e "s#TAG#{imageTag}#g" ./charts/physims/values.yaml', '\$', 6)
mySSH.command('helm install physim ./charts/physims/ | tee -a cmake_targets/log/physim_helm_summary.txt 2>&1', '\$', 6)
if mySSH.getBefore().count('STATUS: deployed') == 0:
logging.error('\u001B[1m Deploying PhySim Failed using helm chart on OC Cluster\u001B[0m')
mySSH.command('helm uninstall physim >> cmake_targets/log/physim_helm_summary.txt 2>&1', '\$', 6)
isFinished1 = False
while(isFinished1 == False):
time.sleep(20)
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.5glab.nsa.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
mySSH.close()
self.AnalyzeLogFile_phySim(HTML)
RAN.prematureExit = True
return
else:
logging.debug('\u001B[1m Deployed PhySim Successfully using helm chart\u001B[0m')
isRunning = False
count = 0
while(count < 2 and isRunning == False):
time.sleep(60)
mySSH.command('oc get pods -o wide -l app.kubernetes.io/instance=physim | tee -a cmake_targets/log/physim_pods_summary.txt', '\$', 6, resync=True)
if mySSH.getBefore().count('Running') == 12:
logging.debug('\u001B[1m Running the physim test Scenarios\u001B[0m')
isRunning = True
podNames = re.findall('oai-[\S\d\w]+', mySSH.getBefore())
count +=1
if isRunning == False:
logging.error('\u001B[1m Some PODS Running FAILED \u001B[0m')
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim 2>&1 | tee -a cmake_targets/log/physim_pods_summary.txt', '\$', 6)
mySSH.command('helm uninstall physim >> cmake_targets/log/physim_helm_summary.txt 2>&1', '\$', 6)
self.AnalyzeLogFile_phySim(HTML)
isFinished1 = False
while(isFinished1 == False):
time.sleep(20)
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.5glab.nsa.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.OC_PHYSIM_DEPLOY_FAIL)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
RAN.prematureExit = True
return
# Waiting to complete the running test
count = 0
isFinished = False
# doing a deep copy!
tmpPodNames = podNames.copy()
while(count < 28 and isFinished == False):
time.sleep(60)
for podName in tmpPodNames:
mySSH.command2(f'oc logs --tail=1 {podName} 2>&1', 6, silent=True)
if mySSH.cmd2Results.count('FINISHED') != 0:
logging.debug(podName + ' is finished')
tmpPodNames.remove(podName)
if not tmpPodNames:
isFinished = True
count += 1
if isFinished:
logging.debug('\u001B[1m PhySim test is Complete\u001B[0m')
# Getting the logs of each executables running in individual pods
for podName in podNames:
mySSH.command(f'oc logs {podName} >> cmake_targets/log/physim_test.txt 2>&1', '\$', 15, resync=True)
time.sleep(30)
# UnDeploy the physical simulator pods
mySSH.command('helm uninstall physim | tee -a cmake_targets/log/physim_helm_summary.txt 2>&1', '\$', 6)
isFinished1 = False
while(isFinished1 == False):
time.sleep(20)
mySSH.command('oc get pods -l app.kubernetes.io/instance=physim', '\$', 6, resync=True)
if re.search('No resources found', mySSH.getBefore()):
isFinished1 = True
if isFinished1 == True:
logging.debug('\u001B[1m UnDeployed PhySim Successfully on OC Cluster\u001B[0m')
mySSH.command(f'sudo podman rmi default-route-openshift-image-registry.apps.5glab.nsa.eurecom.fr/{self.OCProjectName}/oai-physim:{imageTag}', '\$', 6)
mySSH.command('oc delete is oai-physim', '\$', 6)
logging.debug('\u001B[1m Deleted the Image and ImageStream\u001B[0m')
mySSH.command('oc logout', '\$', 6)
mySSH.close()
self.AnalyzeLogFile_phySim(HTML)
if self.testStatus:
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
logging.info('\u001B[1m Physical Simulator Pass\u001B[0m')
else:
RAN.prematureExit = True
HTML.CreateHtmlTestRow('N/A', 'KO', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowPhySimTestResult(self.testSummary,self.testResult)
logging.info('\u001B[1m Physical Simulator Fail\u001B[0m')
def AnalyzeLogFile_phySim(self, HTML):
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
mySSH.command('cd ' + lSourcePath, '\$', 5)
mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5)
mySSH.command('mkdir -p physim_test_log_' + self.testCase_id, '\$', 5)
mySSH.command('cp log/physim_* ' + 'physim_test_log_' + self.testCase_id, '\$', 5)
if not os.path.exists(f'./physim_test_logs_{self.testCase_id}'):
os.mkdir(f'./physim_test_logs_{self.testCase_id}')
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/physim_test_log_' + self.testCase_id + '/*', './physim_test_logs_' + self.testCase_id)
mySSH.command('rm -rf ./physim_test_log_'+ self.testCase_id, '\$', 5)
mySSH.close()
# physim test log analysis
nextt = 0
if (os.path.isfile(f'./physim_test_logs_{self.testCase_id}/physim_test.txt')):
with open(f'./physim_test_logs_{self.testCase_id}/physim_test.txt', 'r') as logfile:
for line in logfile:
if re.search('execution 015', str(line)) or re.search('Bypassing compilation', str(line)):
nextt = 1
elif nextt == 1:
if not re.search('Test Results', str(line)):
nextt = 0
ret2 = re.search('T[^\n]*', str(line))
if ret2 is not None:
ret3 = ret2.group()
ret3 = ret3.replace("", "")
if re.search('execution 015', str(line)):
self.testCount[0] += 1
testName = line.split()
ret1 = re.search('Result = PASS', str(line))
if ret1 is not None:
self.testResult[testName[1]] = [ret3, 'PASS']
self.testCount[1] += 1
else:
self.testResult[testName[1]] = [ret3, 'FAIL']
self.testCount[2] += 1
self.testSummary['Nbtests'] = self.testCount[0]
self.testSummary['Nbpass'] = self.testCount[1]
self.testSummary['Nbfail'] = self.testCount[2]
if self.testSummary['Nbfail'] == 0:
self.testStatus = True
return 0

View File

@@ -0,0 +1,192 @@
#/*
# * Licensed to the OpenAirInterface (OAI) Software Alliance under one or more
# * contributor license agreements. See the NOTICE file distributed with
# * this work for additional information regarding copyright ownership.
# * The OpenAirInterface Software Alliance licenses this file to You under
# * the OAI Public License, Version 1.1 (the "License"); you may not use this file
# * except in compliance with the License.
# * You may obtain a copy of the License at
# *
# * http://www.openairinterface.org/?page_id=698
# *
# * Unless required by applicable law or agreed to in writing, software
# * distributed under the License is distributed on an "AS IS" BASIS,
# * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# * See the License for the specific language governing permissions and
# * limitations under the License.
# *-------------------------------------------------------------------------------
# * For more information about the OpenAirInterface (OAI) Software Alliance:
# * contact@openairinterface.org
# */
#---------------------------------------------------------------------
# Python for CI of OAI-eNB + COTS-UE
#
# Required Python Version
# Python 3.x
#
# Required Python Package
# pexpect
#---------------------------------------------------------------------
#-----------------------------------------------------------
# Import
#-----------------------------------------------------------
import sys # arg
import re # reg
import logging
import os
import time
#-----------------------------------------------------------
# OAI Testing modules
#-----------------------------------------------------------
import sshconnection as SSH
import helpreadme as HELP
import constants as CONST
#-----------------------------------------------------------
# Class Declaration
#-----------------------------------------------------------
class CppCheckResults():
def __init__(self):
self.variants = ['xenial', 'bionic']
self.versions = ['','']
self.nbErrors = [0,0]
self.nbWarnings = [0,0]
self.nbNullPtrs = [0,0]
self.nbMemLeaks = [0,0]
self.nbUninitVars = [0,0]
self.nbInvalidPrintf = [0,0]
self.nbModuloAlways = [0,0]
self.nbTooManyBitsShift = [0,0]
self.nbIntegerOverflow = [0,0]
self.nbWrongScanfArg = [0,0]
self.nbPtrAddNotNull = [0,0]
self.nbOppoInnerCondition = [0,0]
class StaticCodeAnalysis():
def __init__(self):
self.ranRepository = ''
self.ranBranch = ''
self.ranAllowMerge = False
self.ranCommitID = ''
self.ranTargetBranch = ''
self.eNBIPAddress = ''
self.eNBUserName = ''
self.eNBPassword = ''
self.eNBSourceCodePath = ''
def CppCheckAnalysis(self, HTML):
if self.ranRepository == '' or self.ranBranch == '' or self.ranCommitID == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
lIpAddr = self.eNBIPAddress
lUserName = self.eNBUserName
lPassWord = self.eNBPassword
lSourcePath = self.eNBSourceCodePath
if lIpAddr == '' or lUserName == '' or lPassWord == '' or lSourcePath == '':
HELP.GenericHelp(CONST.Version)
sys.exit('Insufficient Parameter')
logging.debug('Building on server: ' + lIpAddr)
mySSH = SSH.SSHConnection()
mySSH.open(lIpAddr, lUserName, lPassWord)
self.testCase_id = HTML.testCase_id
# on RedHat/CentOS .git extension is mandatory
result = re.search('([a-zA-Z0-9\:\-\.\/])+\.git', self.ranRepository)
if result is not None:
full_ran_repo_name = self.ranRepository.replace('git/', 'git')
else:
full_ran_repo_name = self.ranRepository + '.git'
mySSH.command('mkdir -p ' + lSourcePath, '\$', 5)
mySSH.command('cd ' + lSourcePath, '\$', 5)
mySSH.command('if [ ! -e .git ]; then stdbuf -o0 git clone ' + full_ran_repo_name + ' .; else stdbuf -o0 git fetch --prune; fi', '\$', 600)
# Raphael: here add a check if git clone or git fetch went smoothly
mySSH.command('git config user.email "jenkins@openairinterface.org"', '\$', 5)
mySSH.command('git config user.name "OAI Jenkins"', '\$', 5)
mySSH.command('echo ' + lPassWord + ' | sudo -S git clean -x -d -ff', '\$', 30)
mySSH.command('mkdir -p cmake_targets/log', '\$', 5)
# if the commit ID is provided use it to point to it
if self.ranCommitID != '':
mySSH.command('git checkout -f ' + self.ranCommitID, '\$', 30)
mySSH.command('docker image rm oai-cppcheck:bionic oai-cppcheck:xenial || true', '\$', 60)
mySSH.command('docker build --tag oai-cppcheck:xenial --file ci-scripts/docker/Dockerfile.cppcheck.xenial . > cmake_targets/log/cppcheck-xenial.txt 2>&1', '\$', 600)
mySSH.command('sed -e "s@xenial@bionic@" ci-scripts/docker/Dockerfile.cppcheck.xenial > ci-scripts/docker/Dockerfile.cppcheck.bionic', '\$', 6)
mySSH.command('docker build --tag oai-cppcheck:bionic --file ci-scripts/docker/Dockerfile.cppcheck.bionic . > cmake_targets/log/cppcheck-bionic.txt 2>&1', '\$', 600)
mySSH.command('docker image rm oai-cppcheck:bionic oai-cppcheck:xenial || true', '\$', 60)
# Analyzing the logs
mySSH.command('cd ' + lSourcePath + '/cmake_targets', '\$', 5)
mySSH.command('mkdir -p build_log_' + self.testCase_id, '\$', 5)
mySSH.command('mv log/* ' + 'build_log_' + self.testCase_id, '\$', 5)
mySSH.close()
mySSH.copyin(lIpAddr, lUserName, lPassWord, lSourcePath + '/cmake_targets/build_log_' + self.testCase_id + '/*', '.')
CCR = CppCheckResults()
vId = 0
for variant in CCR.variants:
if (os.path.isfile('./cppcheck-'+ variant + '.txt')):
xmlStart = False
with open('./cppcheck-'+ variant + '.txt', 'r') as logfile:
for line in logfile:
ret = re.search('Unpacking cppcheck \((?P<version>[0-9\.]+)', str(line))
if ret is not None:
CCR.versions[vId] = ret.group('version')
if re.search('RUN cat cmake_targets/log/cppcheck.xml', str(line)) is not None:
xmlStart = True
if xmlStart:
if re.search('severity="error"', str(line)) is not None:
CCR.nbErrors[vId] += 1
if re.search('severity="warning"', str(line)) is not None:
CCR.nbWarnings[vId] += 1
if re.search('id="memleak"', str(line)) is not None:
CCR.nbMemLeaks[vId] += 1
if re.search('id="nullPointer"', str(line)) is not None:
CCR.nbNullPtrs[vId] += 1
if re.search('id="uninitvar"', str(line)) is not None:
CCR.nbUninitVars[vId] += 1
if re.search('id="invalidPrintfArgType_sint"|id="invalidPrintfArgType_uint"', str(line)) is not None:
CCR.nbInvalidPrintf[vId] += 1
if re.search('id="moduloAlwaysTrueFalse"', str(line)) is not None:
CCR.nbModuloAlways[vId] += 1
if re.search('id="shiftTooManyBitsSigned"', str(line)) is not None:
CCR.nbTooManyBitsShift[vId] += 1
if re.search('id="integerOverflow"', str(line)) is not None:
CCR.nbIntegerOverflow[vId] += 1
if re.search('id="wrongPrintfScanfArgNum"|id="invalidScanfArgType_int"', str(line)) is not None:
CCR.nbWrongScanfArg[vId] += 1
if re.search('id="pointerAdditionResultNotNull"', str(line)) is not None:
CCR.nbPtrAddNotNull[vId] += 1
if re.search('id="oppositeInnerCondition"', str(line)) is not None:
CCR.nbOppoInnerCondition[vId] += 1
logging.debug('======== Variant ' + variant + ' - ' + CCR.versions[vId] + ' ========')
logging.debug(' ' + str(CCR.nbErrors[vId]) + ' errors')
logging.debug(' ' + str(CCR.nbWarnings[vId]) + ' warnings')
logging.debug(' -- Details --')
logging.debug(' Memory leak: ' + str(CCR.nbMemLeaks[vId]))
logging.debug(' Possible null pointer deference: ' + str(CCR.nbNullPtrs[vId]))
logging.debug(' Uninitialized variable: ' + str(CCR.nbUninitVars[vId]))
logging.debug(' Undefined behaviour shifting: ' + str(CCR.nbTooManyBitsShift[vId]))
logging.debug(' Signed integer overflow: ' + str(CCR.nbIntegerOverflow[vId]))
logging.debug('')
logging.debug(' Printf formatting issue: ' + str(CCR.nbInvalidPrintf[vId]))
logging.debug(' Modulo result is predetermined: ' + str(CCR.nbModuloAlways[vId]))
logging.debug(' Opposite Condition -> dead code: ' + str(CCR.nbOppoInnerCondition[vId]))
logging.debug(' Wrong Scanf Nb Args: ' + str(CCR.nbWrongScanfArg[vId]))
logging.debug('')
vId += 1
HTML.CreateHtmlTestRow('N/A', 'OK', CONST.ALL_PROCESSES_OK)
HTML.CreateHtmlTestRowCppCheckResults(CCR)
logging.info('\u001B[1m Static Code Analysis Pass\u001B[0m')
return 0

View File

@@ -23,6 +23,7 @@ gNBs =
ssb_SubcarrierOffset = 31; //0;
pdsch_AntennaPorts = 1;
pusch_AntennaPorts = 1;
#pusch_TargetSNRx10 = 200;
#pucch_TargetSNRx10 = 200;
pusch_TargetSNRx10 = 200;
@@ -50,7 +51,7 @@ gNBs =
#initialDownlinkBWP
#genericParameters
# this is RBstart=84,L=13 (275*(L-1))+RBstart
initialDLBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384;
initialDLBWPlocationAndBandwidth = 6368;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialDLBWPsubcarrierSpacing = 1;
@@ -59,27 +60,14 @@ gNBs =
initialDLBWPsearchSpaceZero = 0;
#pdsch-ConfigCommon
#pdschTimeDomainAllocationList (up to 16 entries)
initialDLBWPk0_0 = 0;
#initialULBWPmappingType
#0=typeA,1=typeB
initialDLBWPmappingType_0 = 0;
#this is SS=1,L=13
initialDLBWPstartSymbolAndLength_0 = 40;
initialDLBWPk0_0 = 0; #for DL slot
initialDLBWPmappingType_0 = 0; #0=typeA,1=typeB
initialDLBWPstartSymbolAndLength_0 = 40; #this is SS=1,L=13
initialDLBWPk0_1 = 0;
initialDLBWPmappingType_1 = 0;
#this is SS=2,L=12
initialDLBWPstartSymbolAndLength_1 = 53;
initialDLBWPk0_1 = 0; #for mixed slot
initialDLBWPmappingType_1 = 0;
initialDLBWPstartSymbolAndLength_1 = 57; #this is SS=1,L=5
initialDLBWPk0_2 = 0;
initialDLBWPmappingType_2 = 0;
#this is SS=1,L=12
initialDLBWPstartSymbolAndLength_2 = 54;
initialDLBWPk0_3 = 0;
initialDLBWPmappingType_3 = 0;
#this is SS=1,L=4 //5 (4 is for 43, 5 is for 57)
initialDLBWPstartSymbolAndLength_3 = 57; //43; //57;
#uplinkConfigCommon
#frequencyInfoUL
ul_frequencyBand = 78;
@@ -92,7 +80,7 @@ gNBs =
pMax = 20;
#initialUplinkBWP
#genericParameters
initialULBWPlocationAndBandwidth = 6366; //28875; //6366; #6407; #3384;
initialULBWPlocationAndBandwidth = 6368;
# subcarrierSpacing
# 0=kHz15, 1=kHz30, 2=kHz60, 3=kHz120
initialULBWPsubcarrierSpacing = 1;
@@ -104,9 +92,9 @@ gNBs =
prach_msg1_FDM = 0;
prach_msg1_FrequencyStart = 74;
zeroCorrelationZoneConfig = 13;
preambleReceivedTargetPower = -118;
#preambleReceivedTargetPower = -118;
#preambleReceivedTargetPower = -104;
#preambleReceivedTargetPower = -108;
preambleReceivedTargetPower = -108;
#preamblTransMax (0...10) = (3,4,5,6,7,8,10,20,50,100,200)
preambleTransMax = 6;
#powerRampingStep
@@ -136,20 +124,18 @@ gNBs =
# 0=unrestricted, 1=restricted type A, 2=restricted type B
restrictedSetConfig = 0,
# pusch-ConfigCommon (up to 16 elements)
initialULBWPk2_0 = 2;
initialULBWPk2_0 = 2; # used for UL slot
initialULBWPmappingType_0 = 1
# this is SS=0 L=11
initialULBWPstartSymbolAndLength_0 = 55;
initialULBWPk2_1 = 2;
initialULBWPmappingType_1 = 1;
# this is SS=0 L=12
initialULBWPstartSymbolAndLength_1 = 69;
initialULBWPstartSymbolAndLength_0 = 41; # this is SS=0 L=13
initialULBWPk2_2 = 7;
initialULBWPk2_1 = 2; # used for mixed slot
initialULBWPmappingType_1 = 1;
initialULBWPstartSymbolAndLength_1 = 69; # this is SS=10 L=2
initialULBWPk2_2 = 7; # used for Msg.3 during RA
initialULBWPmappingType_2 = 1;
# this is SS=10 L=4
initialULBWPstartSymbolAndLength_2 = 52;
initialULBWPstartSymbolAndLength_2 = 52; # this is SS=10 L=4
msg3_DeltaPreamble = 1;
#p0_NominalWithGrant =-90;

View File

@@ -0,0 +1,57 @@
#/* configuration for channel modelisation */
#/* To be included in main config file when */
#/* channel modelisation is used (rfsimulator with chanmod options enabled) */
channelmod = {
max_chan=10;
modellist="modellist_rfsimu_1";
modellist_rfsimu_1 = (
{
model_name = "rfsimu_channel_enB0"
type = "AWGN";
ploss_dB = 0;
noise_power_dB = -10;
forgetfact = 0;
offset = 0;
ds_tdl = 0;
},
{
model_name = "rfsimu_channel_ue1"
type = "AWGN";
ploss_dB = 0;
noise_power_dB = 0;
forgetfact = 0;
offset = 0;
ds_tdl = 0;
}
);
modellist_rfsimu_2 = (
{
model_name = "rfsimu_channel_ue0"
type = "AWGN";
ploss_dB = 0;
noise_power_dB = 0;
forgetfact = 0;
offset = 0;
ds_tdl = 0;
},
{
model_name = "rfsimu_channel_ue1"
type = "AWGN";
ploss_dB = 0;
noise_power_dB = 0;
forgetfact = 0;
offset = 0;
ds_tdl = 0;
},
{
model_name = "rfsimu_channel_ue2"
type = "AWGN";
ploss_dB = 0;
noise_power_dB = 0;
forgetfact = 0;
offset = 0;
ds_tdl = 0;
}
);
};

Some files were not shown because too many files have changed in this diff Show More