From 4929acc0fb86bb979d0adb34cea94a39f4fbef47 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Tue, 30 Oct 2018 17:25:10 +0100 Subject: [PATCH 01/23] removing unused duplicate file --- openair1/PHY/CODING/nrPolar_init.c | 204 ----------------------------- 1 file changed, 204 deletions(-) delete mode 100644 openair1/PHY/CODING/nrPolar_init.c diff --git a/openair1/PHY/CODING/nrPolar_init.c b/openair1/PHY/CODING/nrPolar_init.c deleted file mode 100644 index f606acbe95..0000000000 --- a/openair1/PHY/CODING/nrPolar_init.c +++ /dev/null @@ -1,204 +0,0 @@ -/* - * 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 - */ - -#include "nrPolar_tools/nr_polar_defs.h" -#include "nrPolar_tools/nr_polar_pbch_defs.h" -#include "nrPolar_tools/nr_polar_uci_defs.h" - -void nr_polar_init(t_nrPolar_params* polarParams, int messageType) { - -uint32_t poly6 = 0x84000000; // 1000100000... -> D^6+D^5+1 -uint32_t poly11 = 0x63200000; //11000100001000... -> D^11+D^10+D^9+D^5+1 -//uint32_t poly16 = 0x81080000; //100000010000100... - > D^16+D^12+D^5+1 -//uint32_t poly24a = 0x864cfb00; //100001100100110011111011 -> D^24+D^23+D^18+D^17+D^14+D^11+D^10+D^7+D^6+D^5+D^4+D^3+D+1 -//uint32_t poly24b = 0x80006300; //100000000000000001100011 -> D^24+D^23+D^6+D^5+D+1 -uint32_t poly24c = 0xB2B11700; //101100101011000100010111 -> D^24... - - if (messageType == 0) { //DCI - - } else if (messageType == 1) { //PBCH - polarParams->n_max = NR_POLAR_PBCH_N_MAX; - polarParams->i_il = NR_POLAR_PBCH_I_IL; - polarParams->i_seg = NR_POLAR_PBCH_I_SEG; - polarParams->n_pc = NR_POLAR_PBCH_N_PC; - polarParams->n_pc_wm = NR_POLAR_PBCH_N_PC_WM; - polarParams->i_bil = NR_POLAR_PBCH_I_BIL; - polarParams->payloadBits = NR_POLAR_PBCH_PAYLOAD_BITS; - polarParams->encoderLength = NR_POLAR_PBCH_E; - polarParams->crcParityBits = NR_POLAR_PBCH_CRC_PARITY_BITS; - - polarParams->K = polarParams->payloadBits + polarParams->crcParityBits; // Number of bits to encode. - polarParams->N = nr_polar_output_length(polarParams->K, polarParams->encoderLength, polarParams->n_max); - polarParams->n = log2(polarParams->N); - - polarParams->crc_generator_matrix=crc24c_generator_matrix(polarParams->payloadBits); - polarParams->crc_polynomial = poly24c; - polarParams->G_N = nr_polar_kronecker_power_matrices(polarParams->n); - - //polar_encoder vectors: - polarParams->nr_polar_crc = malloc(sizeof(uint8_t) * polarParams->crcParityBits); - polarParams->nr_polar_cPrime = malloc(sizeof(uint8_t) * polarParams->K); - polarParams->nr_polar_d = malloc(sizeof(uint8_t) * polarParams->N); - - //Polar Coding vectors - polarParams->nr_polar_u = malloc(sizeof(uint8_t) * polarParams->N); //Decoder: nr_polar_uHat - polarParams->nr_polar_cPrime = malloc(sizeof(uint8_t) * polarParams->K); //Decoder: nr_polar_cHat - polarParams->nr_polar_b = malloc(sizeof(uint8_t) * polarParams->K); //Decoder: nr_polar_bHat - - polarParams->decoder_kernel = NULL;//polar_decoder_K56_N512_E864; - - - - } else if (messageType == 2) { //UCI - polarParams->payloadBits = NR_POLAR_PUCCH_PAYLOAD_BITS; //A depends on what they carry... - polarParams->encoderLength = NR_POLAR_PUCCH_E ; //E depends on other standards 6.3.1.4 - - if (polarParams->payloadBits <= 11) //Ref. 38-212, Section 6.3.1.2.2 - polarParams->crcParityBits = 0; //K=A - else //Ref. 38-212, Section 6.3.1.2.1 - { - if (polarParams->payloadBits < 20) - polarParams->crcParityBits = NR_POLAR_PUCCH_CRC_PARITY_BITS_SHORT; - else - polarParams->crcParityBits = NR_POLAR_PUCCH_CRC_PARITY_BITS_LONG; - - if (polarParams->payloadBits >= 360 && polarParams->encoderLength >= 1088) - polarParams->i_seg = NR_POLAR_PUCCH_I_SEG_LONG; // -> C=2 - else - polarParams->i_seg = NR_POLAR_PUCCH_I_SEG_SHORT; // -> C=1 - } - - polarParams->K = polarParams->payloadBits + polarParams->crcParityBits; // Number of bits to encode. - - //K_r = K/C ; C = I_seg+1 - if((polarParams->K)/(polarParams->i_seg+1)>=18 && (polarParams->K)/(polarParams->i_seg+1)<=25) //Ref. 38-212, Section 6.3.1.3.1 - { - polarParams->n_max = NR_POLAR_PUCCH_N_MAX; - polarParams->i_il =NR_POLAR_PUCCH_I_IL; - polarParams->n_pc = NR_POLAR_PUCCH_N_PC_SHORT; - - if( (polarParams->encoderLength - polarParams->K)/(polarParams->i_seg + 1) + 3 > 192 ) - polarParams->n_pc_wm = NR_POLAR_PUCCH_N_PC_WM_LONG; - else - polarParams->n_pc_wm = NR_POLAR_PUCCH_N_PC_WM_SHORT; - } - - if( (polarParams->K)/(polarParams->i_seg + 1) > 30 ) //Ref. 38-212, Section 6.3.1.3.1 - { - polarParams->n_max = NR_POLAR_PUCCH_N_MAX; - polarParams->i_il =NR_POLAR_PUCCH_I_IL; - polarParams->n_pc = NR_POLAR_PUCCH_N_PC_LONG; - polarParams->n_pc_wm = NR_POLAR_PUCCH_N_PC_WM_LONG; - } - - polarParams->i_bil = NR_POLAR_PUCCH_I_BIL; //Ref. 38-212, Section 6.3.1.4.1 - - polarParams->N = nr_polar_output_length(polarParams->K, polarParams->encoderLength, polarParams->n_max); - polarParams->n = log2(polarParams->N); - - if((polarParams->payloadBits) <= 19) - { - polarParams->crc_generator_matrix=crc6_generator_matrix(polarParams->payloadBits); - polarParams->crc_polynomial = poly6; - - } - else - { - polarParams->crc_generator_matrix=crc11_generator_matrix(polarParams->payloadBits); - polarParams->crc_polynomial = poly11; - } - polarParams->G_N = nr_polar_kronecker_power_matrices(polarParams->n); - - //polar_encoder vectors: - polarParams->nr_polar_crc = malloc(sizeof(uint8_t) * polarParams->crcParityBits); - polarParams->nr_polar_cPrime = malloc(sizeof(uint8_t) * polarParams->K); - polarParams->nr_polar_d = malloc(sizeof(uint8_t) * polarParams->N); - - //Polar Coding vectors - polarParams->nr_polar_u = malloc(sizeof(uint8_t) * polarParams->N); //Decoder: nr_polar_uHat - polarParams->nr_polar_cPrime = malloc(sizeof(uint8_t) * polarParams->K); //Decoder: nr_polar_cHat - polarParams->nr_polar_b = malloc(sizeof(uint8_t) * polarParams->K); //Decoder: nr_polar_bHat - - } - - polarParams->crcCorrectionBits = NR_POLAR_CRC_ERROR_CORRECTION_BITS; - - polarParams->crc256Table = malloc(sizeof(uint32_t)*256); - crcTable256Init(polarParams->crc_polynomial, polarParams->crc256Table); - polarParams->Q_0_Nminus1 = nr_polar_sequence_pattern(polarParams->n); - - polarParams->interleaving_pattern = malloc(sizeof(uint16_t) * polarParams->K); - nr_polar_interleaving_pattern(polarParams->K, polarParams->i_il, polarParams->interleaving_pattern); - - polarParams->rate_matching_pattern = malloc(sizeof(uint16_t) * polarParams->encoderLength); - uint16_t *J = malloc(sizeof(uint16_t) * polarParams->N); - nr_polar_rate_matching_pattern(polarParams->rate_matching_pattern, J, - nr_polar_subblock_interleaver_pattern, polarParams->K, polarParams->N, polarParams->encoderLength); - - - polarParams->information_bit_pattern = malloc(sizeof(uint8_t) * polarParams->N); - polarParams->Q_I_N = malloc(sizeof(int16_t) * (polarParams->K + polarParams->n_pc)); - polarParams->Q_F_N = malloc(sizeof(int16_t) * (polarParams->N+1)); // Last element shows the final array index assigned a value. - polarParams->Q_PC_N = malloc(sizeof(int16_t) * (polarParams->n_pc)); - for (int i=0; i<=polarParams->N; i++) polarParams->Q_F_N[i] = -1; // Empty array. - nr_polar_info_bit_pattern(polarParams->information_bit_pattern, - polarParams->Q_I_N, polarParams->Q_F_N, J, polarParams->Q_0_Nminus1, - polarParams->K, polarParams->N, polarParams->encoderLength, polarParams->n_pc); - - polarParams->channel_interleaver_pattern = malloc(sizeof(uint16_t) * polarParams->encoderLength); - nr_polar_channel_interleaver_pattern(polarParams->channel_interleaver_pattern, - polarParams->i_bil, polarParams->encoderLength); - - polarParams->extended_crc_generator_matrix = malloc(polarParams->K * sizeof(uint8_t *)); //G_P3 - uint8_t tempECGM[polarParams->K][polarParams->crcParityBits]; - for (int i = 0; i < polarParams->K; i++){ - polarParams->extended_crc_generator_matrix[i] = malloc(polarParams->crcParityBits * sizeof(uint8_t)); - } - - for (int i=0; ipayloadBits; i++) { - for (int j=0; jcrcParityBits; j++) { - tempECGM[i][j]=polarParams->crc_generator_matrix[i][j]; - } - } - for (int i=polarParams->payloadBits; iK; i++) { - for (int j=0; jcrcParityBits; j++) { - if( (i-polarParams->payloadBits) == j ){ - tempECGM[i][j]=1; - } else { - tempECGM[i][j]=0; - } - } - } - - for (int i=0; iK; i++) { - for (int j=0; jcrcParityBits; j++) { - polarParams->extended_crc_generator_matrix[i][j]=tempECGM[polarParams->interleaving_pattern[i]][j]; - } - } - - - build_decoder_tree(polarParams); - printf("decoder tree nodes %d\n",polarParams->tree.num_nodes); - - - - free(J); -} From 915d69ae52e1a6d085081b0fe4c93913ee9f1dde Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Tue, 30 Oct 2018 17:25:44 +0100 Subject: [PATCH 02/23] removing write_output and printf for real-time performance --- openair1/PHY/CODING/nr_polar_init.c | 2 +- targets/RT/USER/nr-ru.c | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/openair1/PHY/CODING/nr_polar_init.c b/openair1/PHY/CODING/nr_polar_init.c index 72e487a738..895bace829 100644 --- a/openair1/PHY/CODING/nr_polar_init.c +++ b/openair1/PHY/CODING/nr_polar_init.c @@ -148,7 +148,7 @@ void nr_polar_init(t_nrPolar_paramsPtr *polarParams, free(J); build_decoder_tree(newPolarInitNode); - printf("decoder tree nodes %d\n",newPolarInitNode->tree.num_nodes); + //printf("decoder tree nodes %d\n",newPolarInitNode->tree.num_nodes); } else { AssertFatal(1 == 0, "[nr_polar_init] New t_nrPolar_paramsPtr could not be created"); diff --git a/targets/RT/USER/nr-ru.c b/targets/RT/USER/nr-ru.c index 04f2f3cdd4..9d74f6b361 100644 --- a/targets/RT/USER/nr-ru.c +++ b/targets/RT/USER/nr-ru.c @@ -844,12 +844,12 @@ void tx_rf(RU_t *ru) { for (i=0; inb_tx; i++) txp[i] = (void*)&ru->common.txdata[i][(proc->subframe_tx*fp->samples_per_subframe)-sf_extension]; - +/* if (proc->subframe_tx == 0){ write_output("txdataF_frame.m","txdataF_frame",&ru->common.txdataF_BF[i],fp->samples_per_subframe_wCP, 1, 1); write_output("txdata_frame.m","txdata_frame",&ru->common.txdata[i],fp->samples_per_subframe, 1, 1); } - +*/ VCD_SIGNAL_DUMPER_DUMP_VARIABLE_BY_NAME( VCD_SIGNAL_DUMPER_VARIABLES_TRX_TST, (proc->timestamp_tx-ru->openair0_cfg.tx_sample_advance)&0xffffffff ); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME( VCD_SIGNAL_DUMPER_FUNCTIONS_TRX_WRITE, 1 ); // prepare tx buffer pointers From d81cd6dab7cf10f1e3d6c6cfc9da93a173a35cfa Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Tue, 30 Oct 2018 18:02:45 +0100 Subject: [PATCH 03/23] replacing nr_tti with nr_subframe --- targets/RT/USER/nr-ue.c | 53 ++++++++++++++++++++--------------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index 393fc490ca..604d01deef 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -796,7 +796,7 @@ void *UE_thread(void *arg) { PHY_VARS_NR_UE *UE = (PHY_VARS_NR_UE *) arg; // int tx_enabled = 0; - int dummy_rx[UE->frame_parms.nb_antennas_rx][UE->frame_parms.samples_per_tti] __attribute__((aligned(32))); + int dummy_rx[UE->frame_parms.nb_antennas_rx][UE->frame_parms.samples_per_subframe] __attribute__((aligned(32))); openair0_timestamp timestamp; void* rxp[NB_ANTENNAS_RX], *txp[NB_ANTENNAS_TX]; int start_rx_stream = 0; @@ -828,7 +828,7 @@ void *UE_thread(void *arg) { //itti_send_msg_to_task (TASK_NAS_UE, UE->Mod_id + NB_eNB_INST, message_p); #endif - int tti_nr=-1; + int subframe_nr=-1; //int cumulated_shift=0; if ((oaisim_flag == 0) && (UE->mode != loop_through_memory)) AssertFatal(UE->rfdevice.trx_start_func(&UE->rfdevice) == 0, "Could not start the device\n"); @@ -926,12 +926,11 @@ void *UE_thread(void *arg) { rt_sleep_ns(1000*1000); } else { - tti_nr++; - int ttis_per_frame = LTE_NUMBER_OF_SUBFRAMES_PER_FRAME*UE->frame_parms.ttis_per_subframe; - tti_nr %= ttis_per_frame; + subframe_nr++; + subframe_nr %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME; UE_nr_rxtx_proc_t *proc = &UE->proc.proc_rxtx[thread_idx]; // update thread index for received subframe - UE->current_thread_id[tti_nr] = thread_idx; + UE->current_thread_id[subframe_nr] = thread_idx; #if BASIC_SIMULATOR { @@ -944,7 +943,7 @@ void *UE_thread(void *arg) { } } #endif - LOG_D(PHY,"Process TTI %d thread Idx %d \n", tti_nr, UE->current_thread_id[tti_nr]); + LOG_D(PHY,"Process subframe %d thread Idx %d \n", subframe_nr, UE->current_thread_id[subframe_nr]); thread_idx++; if(thread_idx>=RX_NB_TH) @@ -955,14 +954,14 @@ void *UE_thread(void *arg) { for (i=0; iframe_parms.nb_antennas_rx; i++) rxp[i] = (void*)&UE->common_vars.rxdata[i][UE->frame_parms.ofdm_symbol_size+ UE->frame_parms.nb_prefix_samples0+ - tti_nr*UE->frame_parms.samples_per_tti]; + subframe_nr*UE->frame_parms.samples_per_subframe]; for (i=0; iframe_parms.nb_antennas_tx; i++) - txp[i] = (void*)&UE->common_vars.txdata[i][((tti_nr+2)%10*UE->frame_parms.ttis_per_subframe)*UE->frame_parms.samples_per_tti]; + txp[i] = (void*)&UE->common_vars.txdata[i][((subframe_nr+2)%NR_NUMBER_OF_SUBFRAMES_PER_FRAME)*UE->frame_parms.samples_per_subframe]; int readBlockSize, writeBlockSize; - if (tti_nr<(ttis_per_frame - 1)) { - readBlockSize=UE->frame_parms.samples_per_tti; - writeBlockSize=UE->frame_parms.samples_per_tti; + if (subframe_nr<(NR_NUMBER_OF_SUBFRAMES_PER_FRAME - 1)) { + readBlockSize=UE->frame_parms.samples_per_subframe; + writeBlockSize=UE->frame_parms.samples_per_subframe; } else { // set TO compensation to zero UE->rx_offset_diff = 0; @@ -971,15 +970,15 @@ void *UE_thread(void *arg) { UE->rx_offset > 0 ) UE->rx_offset_diff = -1 ; if ( UE->rx_offset > 5*UE->frame_parms.samples_per_subframe && - UE->rx_offset < 10*UE->frame_parms.samples_per_tti ) + UE->rx_offset < 10*UE->frame_parms.samples_per_subframe ) UE->rx_offset_diff = 1; - LOG_D(PHY,"AbsSubframe %d.%d TTI SET rx_off_diff to %d rx_offset %d \n",proc->frame_rx,tti_nr,UE->rx_offset_diff,UE->rx_offset); - readBlockSize=UE->frame_parms.samples_per_tti - + LOG_D(PHY,"AbsSubframe %d.%d TTI SET rx_off_diff to %d rx_offset %d \n",proc->frame_rx,subframe_nr,UE->rx_offset_diff,UE->rx_offset); + readBlockSize=UE->frame_parms.samples_per_subframe - UE->frame_parms.ofdm_symbol_size - UE->frame_parms.nb_prefix_samples0 - UE->rx_offset_diff; - writeBlockSize=UE->frame_parms.samples_per_tti - + writeBlockSize=UE->frame_parms.samples_per_subframe - UE->rx_offset_diff; } @@ -992,7 +991,7 @@ void *UE_thread(void *arg) { AssertFatal( writeBlockSize == UE->rfdevice.trx_write_func(&UE->rfdevice, timestamp+ - (2*UE->frame_parms.samples_per_tti) - + (2*UE->frame_parms.samples_per_subframe) - UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0 - openair0_cfg[0].tx_sample_advance, txp, @@ -1000,7 +999,7 @@ void *UE_thread(void *arg) { UE->frame_parms.nb_antennas_tx, 1),""); - if( tti_nr==(ttis_per_frame-1)) { + if( subframe_nr==(NR_NUMBER_OF_SUBFRAMES_PER_FRAME-1)) { // read in first symbol of next frame and adjust for timing drift int first_symbols=writeBlockSize-readBlockSize; if ( first_symbols > 0 ) @@ -1016,7 +1015,7 @@ void *UE_thread(void *arg) { pickTime(gotIQs); // operate on thread sf mod 2 AssertFatal(pthread_mutex_lock(&proc->mutex_rxtx) ==0,""); - if(tti_nr == 0) { + if(subframe_nr == 0) { //UE->proc.proc_rxtx[0].frame_rx++; //UE->proc.proc_rxtx[1].frame_rx++; for (th_id=0; th_id < RX_NB_TH; th_id++) { @@ -1038,18 +1037,18 @@ void *UE_thread(void *arg) { UE->proc.proc_rxtx[th_id].gotIQs=readTime(gotIQs); } - proc->nr_tti_rx=tti_nr; - proc->subframe_rx=tti_nr>>((uint8_t)(log2 (UE->frame_parms.ttis_per_subframe))); + proc->nr_tti_rx=subframe_nr; + proc->subframe_rx=subframe_nr; proc->frame_tx = proc->frame_rx; - proc->nr_tti_tx= tti_nr + DURATION_RX_TO_TX; - if (proc->nr_tti_tx > ttis_per_frame) { + proc->nr_tti_tx= subframe_nr + DURATION_RX_TO_TX; + if (proc->nr_tti_tx > NR_NUMBER_OF_SUBFRAMES_PER_FRAME) { proc->frame_tx = (proc->frame_tx + 1)%MAX_FRAME_NUMBER; - proc->nr_tti_tx %= ttis_per_frame; + proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME; } - proc->subframe_tx=(proc->nr_tti_tx)>>((uint8_t)(log2 (UE->frame_parms.ttis_per_subframe))); + proc->subframe_tx=subframe_nr + DURATION_RX_TO_TX; proc->timestamp_tx = timestamp+ - (DURATION_RX_TO_TX*UE->frame_parms.samples_per_tti)- + (DURATION_RX_TO_TX*UE->frame_parms.samples_per_subframe)- UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0; proc->instance_cnt_rxtx++; @@ -1069,7 +1068,7 @@ void *UE_thread(void *arg) { char exit_fun_string[256]; sprintf(exit_fun_string,"[SCHED][UE %d] !!! UE instance_cnt_rxtx > 2 (IC %d) (Proc %d)!!", UE->Mod_id, proc->instance_cnt_rxtx, - UE->current_thread_id[tti_nr]); + UE->current_thread_id[subframe_nr]); printf("%s\n",exit_fun_string); fflush(stdout); sleep(1); From 7dbcd1ffb5d3937c361b264af4ca3a50fa399139 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Wed, 31 Oct 2018 10:58:44 +0100 Subject: [PATCH 04/23] CI: adding back all FDD/TDD tests for basic-simulator Signed-off-by: Raphael Defosseux --- ci-scripts/runTestOnVM.sh | 490 +++++++++++++++++++------------------- 1 file changed, 246 insertions(+), 244 deletions(-) diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index 19e1c24934..0d4f116179 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -753,144 +753,146 @@ then scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + sleep 10 + + echo "############################################################" + echo "Starting the eNB in FDD-10MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=fdd_10MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-fdd-basic-sim.conf + + echo "############################################################" + echo "Starting the UE in FDD-10MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=fdd_10MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2680 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=fdd_10MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 + + echo "############################################################" + echo "Iperf UL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_ul + iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2 + + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + sleep 10 + + echo "############################################################" + echo "Starting the eNB in FDD-20MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=fdd_20MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-fdd-basic-sim.conf + + echo "############################################################" + echo "Starting the UE in FDD-20MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=fdd_20MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2680 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=fdd_20MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_20MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 + + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + sleep 10 + + echo "############################################################" + echo "Starting the eNB in TDD-5MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=tdd_05MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 lte-tdd-basic-sim.conf + + echo "############################################################" + echo "Starting the UE in TDD-5MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=tdd_05MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25 2350 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=tdd_05MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -# Raphael: Disable any further test in develop-nr to validate CI pipeline -# echo "############################################################" -# echo "Starting the eNB in FDD-10MHz mode" -# echo "############################################################" -# CURRENT_ENB_LOG_FILE=fdd_10MHz_enb.log -# start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-fdd-basic-sim.conf -# -# echo "############################################################" -# echo "Starting the UE in FDD-10MHz mode" -# echo "############################################################" -# CURRENT_UE_LOG_FILE=fdd_10MHz_ue.log -# start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2680 -# if [ $UE_SYNC -eq 0 ] -# then -# echo "Problem w/ eNB and UE not syncing" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR -# exit -1 -# fi -# get_ue_ip_addr $VM_CMDS $VM_IP_ADDR -# -# echo "############################################################" -# echo "Pinging the UE" -# echo "############################################################" -# PING_LOG_FILE=fdd_10MHz_ping_ue.txt -# ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC -# check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -# -# echo "############################################################" -# echo "Iperf DL" -# echo "############################################################" -# CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_dl -# iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC -# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 -# -# echo "############################################################" -# echo "Iperf UL" -# echo "############################################################" -# CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_ul -# iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC -# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2 -# -# echo "############################################################" -# echo "Terminate enb/ue simulators" -# echo "############################################################" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# -# echo "############################################################" -# echo "Starting the eNB in FDD-20MHz mode" -# echo "############################################################" -# CURRENT_ENB_LOG_FILE=fdd_20MHz_enb.log -# start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-fdd-basic-sim.conf -# -# echo "############################################################" -# echo "Starting the UE in FDD-20MHz mode" -# echo "############################################################" -# CURRENT_UE_LOG_FILE=fdd_20MHz_ue.log -# start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2680 -# if [ $UE_SYNC -eq 0 ] -# then -# echo "Problem w/ eNB and UE not syncing" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR -# exit -1 -# fi -# get_ue_ip_addr $VM_CMDS $VM_IP_ADDR -# -# echo "############################################################" -# echo "Pinging the UE" -# echo "############################################################" -# PING_LOG_FILE=fdd_20MHz_ping_ue.txt -# ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC -# check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -# -# echo "############################################################" -# echo "Iperf DL" -# echo "############################################################" -# CURR_IPERF_LOG_BASE=fdd_20MHz_iperf_dl -# iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC -# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 -# -# echo "############################################################" -# echo "Terminate enb/ue simulators" -# echo "############################################################" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# -# echo "############################################################" -# echo "Starting the eNB in TDD-5MHz mode" -# echo "############################################################" -# CURRENT_ENB_LOG_FILE=tdd_05MHz_enb.log -# start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 lte-tdd-basic-sim.conf -# -# echo "############################################################" -# echo "Starting the UE in TDD-5MHz mode" -# echo "############################################################" -# CURRENT_UE_LOG_FILE=tdd_05MHz_ue.log -# start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25 2350 -# if [ $UE_SYNC -eq 0 ] -# then -# echo "Problem w/ eNB and UE not syncing" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR -# exit -1 -# fi -# get_ue_ip_addr $VM_CMDS $VM_IP_ADDR -# -# echo "############################################################" -# echo "Pinging the UE" -# echo "############################################################" -# PING_LOG_FILE=tdd_05MHz_ping_ue.txt -# ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC -# check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -# # Bug in TDD 5Mhz --- not running it # echo "############################################################" # echo "Iperf DL" @@ -900,113 +902,113 @@ then # scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC # scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC # check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 -# Raphael: Disable any further test in develop-nr to validate CI pipeline -# -# echo "############################################################" -# echo "Terminate enb/ue simulators" -# echo "############################################################" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# -# echo "############################################################" -# echo "Starting the eNB in TDD-10MHz mode" -# echo "############################################################" -# CURRENT_ENB_LOG_FILE=tdd_10MHz_enb.log -# start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-tdd-basic-sim.conf -# -# echo "############################################################" -# echo "Starting the UE in TDD-10MHz mode" -# echo "############################################################" -# CURRENT_UE_LOG_FILE=tdd_10MHz_ue.log -# start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2350 -# if [ $UE_SYNC -eq 0 ] -# then -# echo "Problem w/ eNB and UE not syncing" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR -# exit -1 -# fi -# get_ue_ip_addr $VM_CMDS $VM_IP_ADDR -# -# echo "############################################################" -# echo "Pinging the UE" -# echo "############################################################" -# PING_LOG_FILE=tdd_10MHz_ping_ue.txt -# ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC -# check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -# -# echo "############################################################" -# echo "Iperf DL" -# echo "############################################################" -# CURR_IPERF_LOG_BASE=tdd_10MHz_iperf_dl -# iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC -# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 -# -# echo "############################################################" -# echo "Terminate enb/ue simulators" -# echo "############################################################" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# -# Disabling TDD-20MHz test since it is very unstable -# -# echo "############################################################" -# echo "Starting the eNB in TDD-20MHz mode" -# echo "############################################################" -# CURRENT_ENB_LOG_FILE=tdd_20MHz_enb.log -# start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-tdd-basic-sim.conf -# -# echo "############################################################" -# echo "Starting the UE in TDD-20MHz mode" -# echo "############################################################" -# CURRENT_UE_LOG_FILE=tdd_20MHz_ue.log -# start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2350 -# if [ $UE_SYNC -eq 0 ] -# then -# echo "Problem w/ eNB and UE not syncing" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR -# exit -1 -# fi -# get_ue_ip_addr $VM_CMDS $VM_IP_ADDR -# -# echo "############################################################" -# echo "Pinging the UE" -# echo "############################################################" -# PING_LOG_FILE=tdd_20MHz_ping_ue.txt -# ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC -# check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 -# -# echo "############################################################" -# echo "Iperf DL" -# echo "############################################################" -# CURR_IPERF_LOG_BASE=tdd_20MHz_iperf_dl -# iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC -# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 -# -# echo "############################################################" -# echo "Terminate enb/ue simulators" -# echo "############################################################" -# terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC -# recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + sleep 10 + + echo "############################################################" + echo "Starting the eNB in TDD-10MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=tdd_10MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-tdd-basic-sim.conf + + echo "############################################################" + echo "Starting the UE in TDD-10MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=tdd_10MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2350 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=tdd_10MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=tdd_10MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 + + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + sleep 10 + + echo "############################################################" + echo "Starting the eNB in TDD-20MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=tdd_20MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-tdd-basic-sim.conf + + echo "############################################################" + echo "Starting the UE in TDD-20MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=tdd_20MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2350 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=tdd_20MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=tdd_20MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 + + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + sleep 10 echo "############################################################" echo "Terminate EPC" From 00c32c90d7ecbc7ef18fcdcdd051857b80858d38 Mon Sep 17 00:00:00 2001 From: "Wolfgang A. Mozart" Date: Wed, 31 Oct 2018 14:44:57 +0100 Subject: [PATCH 05/23] adding phy_scope to UE bugfixes --- cmake_targets/CMakeLists.txt | 7 +- .../PHY/NR_UE_TRANSPORT/nr_initial_sync.c | 3 +- openair1/PHY/TOOLS/nr_phy_scope.c | 821 ++++++++++++++++++ openair1/PHY/TOOLS/nr_phy_scope.h | 84 ++ targets/RT/USER/nr-ue.c | 12 +- targets/RT/USER/nr-uesoftmodem.c | 95 +- targets/RT/USER/nr-uesoftmodem.h | 6 +- 7 files changed, 960 insertions(+), 68 deletions(-) create mode 100644 openair1/PHY/TOOLS/nr_phy_scope.c create mode 100644 openair1/PHY/TOOLS/nr_phy_scope.h diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index 7b1cf2bd4f..e7c6658a77 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -2142,6 +2142,9 @@ if (${XFORMS}) set(XFORMS_SOURCE ${OPENAIR1_DIR}/PHY/TOOLS/lte_phy_scope.c ) + set(XFORMS_SOURCE_NR + ${OPENAIR1_DIR}/PHY/TOOLS/nr_phy_scope.c + ) set(XFORMS_SOURCE_SOFTMODEM ${OPENAIR_TARGETS}/RT/USER/stats.c ) @@ -2444,7 +2447,7 @@ add_executable(nr-uesoftmodem ${OPENAIR3_DIR}/NAS/UE/nas_ue_task.c ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c - ${XFORMS_SOURCE} + ${XFORMS_SOURCE_NR} ${XFORMS_SOURCE_SOFTMODEM} ${T_SOURCE} ${CONFIG_SOURCES} @@ -2478,7 +2481,7 @@ add_executable(nr-uesoftmodem-nos1 ${OPENAIR1_DIR}/SIMULATION/ETH_TRANSPORT/netlink_init.c ${OPENAIR_DIR}/common/utils/utils.c ${OPENAIR_DIR}/common/utils/system.c - ${XFORMS_SOURCE} + ${XFORMS_SOURCE_NR} ${XFORMS_SOURCE_SOFTMODEM} ${T_SOURCE} ${CONFIG_SOURCES} diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c index 87e3dd59be..1b31575615 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c @@ -156,6 +156,7 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode) // FK: added N_RB_DL paramter here as this function shares code with the gNB where it is needed. We should rewrite this function for the UE. nr_init_frame_parms_ue(fp,NR_MU_1,NORMAL,fp->N_RB_DL,n_ssb_crb,0); LOG_D(PHY,"nr_initial sync ue RB_DL %d\n", fp->N_RB_DL); + /* write_output("rxdata0.m","rxd0",ue->common_vars.rxdata[0],10*fp->samples_per_subframe,1,1); exit(-1); @@ -196,7 +197,7 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode) #endif /* check that SSS/PBCH block is continuous inside the received buffer */ - if (sync_pos < (10*fp->slots_per_subframe*fp->samples_per_subframe - (NB_SYMBOLS_PBCH * fp->ofdm_symbol_size))) { + if (sync_pos < (NR_NUMBER_OF_SUBFRAMES_PER_FRAME*fp->samples_per_subframe - (NB_SYMBOLS_PBCH * fp->ofdm_symbol_size))) { #ifdef DEBUG_INITIAL_SYNCH LOG_I(PHY,"Calling sss detection (normal CP)\n"); diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c new file mode 100644 index 0000000000..aa57629f97 --- /dev/null +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -0,0 +1,821 @@ +/* + * 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 + */ + +/* Form definition file generated by fdesign */ + +#include +#include "nr_phy_scope.h" + +#define TPUT_WINDOW_LENGTH 100 +int otg_enabled; + +FL_COLOR rx_antenna_colors[4] = {FL_RED,FL_BLUE,FL_GREEN,FL_YELLOW}; + +float tput_time_enb[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; +float tput_enb[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; +float tput_time_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; +float tput_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; +float tput_ue_max[NUMBER_OF_UE_MAX] = {0}; + +static void ia_receiver_on_off( FL_OBJECT *button, long arg) +{ + + if (fl_get_button(button)) { + fl_set_object_label(button, "IA Receiver ON"); + // PHY_vars_UE_g[0][0]->use_ia_receiver = 1; + fl_set_object_color(button, FL_GREEN, FL_GREEN); + } else { + fl_set_object_label(button, "IA Receiver OFF"); + // PHY_vars_UE_g[0][0]->use_ia_receiver = 0; + fl_set_object_color(button, FL_RED, FL_RED); + } +} + +static void dl_traffic_on_off( FL_OBJECT *button, long arg) +{ + + if (fl_get_button(button)) { + fl_set_object_label(button, "DL Traffic ON"); + otg_enabled = 1; + fl_set_object_color(button, FL_GREEN, FL_GREEN); + } else { + fl_set_object_label(button, "DL Traffic OFF"); + otg_enabled = 0; + fl_set_object_color(button, FL_RED, FL_RED); + } +} + +FD_lte_phy_scope_enb *create_lte_phy_scope_enb( void ) +{ + + FL_OBJECT *obj; + FD_lte_phy_scope_enb *fdui = fl_malloc( sizeof *fdui ); + + // Define form + fdui->lte_phy_scope_enb = fl_bgn_form( FL_NO_BOX, 800, 800 ); + + // This the whole UI box + obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 800, "" ); + fl_set_object_color( obj, FL_BLACK, FL_BLACK ); + + // Received signal + fdui->rxsig_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 20, 370, 100, "Received Signal (Time-Domain, dB)" ); + fl_set_object_boxtype( fdui->rxsig_t, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->rxsig_t, FL_BLACK, FL_RED ); + fl_set_object_lcolor( fdui->rxsig_t, FL_WHITE ); // Label color + fl_set_xyplot_ybounds(fdui->rxsig_t,10,70); + + // Time-domain channel response + fdui->chest_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 410, 20, 370, 100, "SRS Frequency Response (samples, abs)" ); + fl_set_object_boxtype( fdui->chest_t, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->chest_t, FL_BLACK, FL_RED ); + fl_set_object_lcolor( fdui->chest_t, FL_WHITE ); // Label color + + // Frequency-domain channel response + fdui->chest_f = fl_add_xyplot( FL_IMPULSE_XYPLOT, 20, 140, 760, 100, "Channel Frequency Response (RE, dB)" ); + fl_set_object_boxtype( fdui->chest_f, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->chest_f, FL_BLACK, FL_RED ); + fl_set_object_lcolor( fdui->chest_f, FL_WHITE ); // Label color + fl_set_xyplot_ybounds( fdui->chest_f,30,70); + + // LLR of PUSCH + fdui->pusch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 260, 500, 200, "PUSCH Log-Likelihood Ratios (LLR, mag)" ); + fl_set_object_boxtype( fdui->pusch_llr, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pusch_llr, FL_BLACK, FL_YELLOW ); + fl_set_object_lcolor( fdui->pusch_llr, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pusch_llr,2); + + // I/Q PUSCH comp + fdui->pusch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 260, 240, 200, "PUSCH I/Q of MF Output" ); + fl_set_object_boxtype( fdui->pusch_comp, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pusch_comp, FL_BLACK, FL_YELLOW ); + fl_set_object_lcolor( fdui->pusch_comp, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pusch_comp,2); + fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); + + // I/Q PUCCH comp (format 1) + fdui->pucch_comp1 = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 480, 240, 100, "PUCCH1 Energy (SR)" ); + fl_set_object_boxtype( fdui->pucch_comp1, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pucch_comp1, FL_BLACK, FL_YELLOW ); + fl_set_object_lcolor( fdui->pucch_comp1, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pucch_comp1,2); + // fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); + + // I/Q PUCCH comp (fromat 1a/b) + fdui->pucch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 600, 240, 100, "PUCCH I/Q of MF Output" ); + fl_set_object_boxtype( fdui->pucch_comp, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pucch_comp, FL_BLACK, FL_YELLOW ); + fl_set_object_lcolor( fdui->pucch_comp, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pucch_comp,2); + // fl_set_xyplot_xgrid( fdui->pusch_llr,FL_GRID_MAJOR); + + // Throughput on PUSCH + fdui->pusch_tput = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 480, 500, 100, "PUSCH Throughput [frame]/[kbit/s]" ); + fl_set_object_boxtype( fdui->pusch_tput, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pusch_tput, FL_BLACK, FL_WHITE ); + fl_set_object_lcolor( fdui->pusch_tput, FL_WHITE ); // Label color + + // Generic eNB Button + fdui->button_0 = fl_add_button( FL_PUSH_BUTTON, 20, 600, 240, 40, "" ); + fl_set_object_lalign(fdui->button_0, FL_ALIGN_CENTER ); + fl_set_button(fdui->button_0,0); + otg_enabled = 0; + fl_set_object_label(fdui->button_0, "DL Traffic OFF"); + fl_set_object_color(fdui->button_0, FL_RED, FL_RED); + fl_set_object_callback(fdui->button_0, dl_traffic_on_off, 0 ); + + fl_end_form( ); + fdui->lte_phy_scope_enb->fdui = fdui; + + return fdui; +} + +/* +void phy_scope_eNB(FD_lte_phy_scope_enb *form, + PHY_VARS_eNB *phy_vars_enb, + int UE_id) +{ + int eNB_id = 0; + int i,i2,arx,atx,ind,k; + LTE_DL_FRAME_PARMS *frame_parms = &phy_vars_enb->frame_parms; + int nsymb_ce = 12*frame_parms->N_RB_UL*frame_parms->symbols_per_tti; + uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; + uint8_t nb_antennas_tx = 1; // frame_parms->nb_antennas_tx; // in LTE Rel. 8 and 9 only a single transmit antenna is assumed at the UE + int16_t **rxsig_t; + int16_t **chest_t; + int16_t **chest_f; + int16_t *pusch_llr; + int32_t *pusch_comp; + int32_t *pucch1_comp; + int32_t *pucch1_thres; + int32_t *pucch1ab_comp; + float Re,Im,ymax; + float *llr, *bit; + float I[nsymb_ce*2], Q[nsymb_ce*2]; + float I_pucch[10240],Q_pucch[10240],A_pucch[10240],B_pucch[10240],C_pucch[10240]; + float rxsig_t_dB[nb_antennas_rx][FRAME_LENGTH_COMPLEX_SAMPLES]; + float chest_t_abs[nb_antennas_rx][frame_parms->ofdm_symbol_size]; + float *chest_f_abs; + float time[FRAME_LENGTH_COMPLEX_SAMPLES]; + float time2[2048]; + float freq[nsymb_ce*nb_antennas_rx*nb_antennas_tx]; + int frame = phy_vars_enb->proc.proc_rxtx[0].frame_tx; + uint32_t total_dlsch_bitrate = phy_vars_enb->total_dlsch_bitrate; + int coded_bits_per_codeword = 0; + uint8_t harq_pid; // in TDD config 3 it is sf-2, i.e., can be 0,1,2 + int Qm = 2; + + // choose max MCS to compute coded_bits_per_codeword + if (phy_vars_enb->ulsch[UE_id]!=NULL) { + for (harq_pid=0; harq_pid<3; harq_pid++) { + Qm = cmax(phy_vars_enb->ulsch[UE_id]->harq_processes[harq_pid]->Qm,Qm); + } + } + + coded_bits_per_codeword = frame_parms->N_RB_UL*12*Qm*frame_parms->symbols_per_tti; + + chest_f_abs = (float*) calloc(nsymb_ce*nb_antennas_rx*nb_antennas_tx,sizeof(float)); + llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero + bit = malloc(coded_bits_per_codeword*sizeof(float)); + + rxsig_t = (int16_t**) phy_vars_enb->common_vars.rxdata[eNB_id]; + //chest_t = (int16_t**) phy_vars_enb->pusch_vars[UE_id]->drs_ch_estimates_time[eNB_id]; + chest_t = (int16_t**) phy_vars_enb->srs_vars[UE_id].srs_ch_estimates[eNB_id]; + chest_f = (int16_t**) phy_vars_enb->pusch_vars[UE_id]->drs_ch_estimates[eNB_id]; + pusch_llr = (int16_t*) phy_vars_enb->pusch_vars[UE_id]->llr; + pusch_comp = (int32_t*) phy_vars_enb->pusch_vars[UE_id]->rxdataF_comp[0]; + pucch1_comp = (int32_t*) phy_vars_enb->pucch1_stats[UE_id]; + pucch1_thres = (int32_t*) phy_vars_enb->pucch1_stats_thres[UE_id]; + pucch1ab_comp = (int32_t*) phy_vars_enb->pucch1ab_stats[UE_id]; + + // Received signal in time domain of receive antenna 0 + if (rxsig_t != NULL) { + if (rxsig_t[0] != NULL) { + for (i=0; irxsig_t,time,rxsig_t_dB[0],FRAME_LENGTH_COMPLEX_SAMPLES,"","",""); + } + + for (arx=1; arxrxsig_t,arx,time,rxsig_t_dB[arx],FRAME_LENGTH_COMPLEX_SAMPLES,rx_antenna_colors[arx]); + } + } + } + + // Channel Impulse Response + if (chest_t != NULL) { + ymax = 0; + + if (chest_t[0] !=NULL) { + for (i=0; i<(frame_parms->ofdm_symbol_size); i++) { + //i2 = (i+(frame_parms->ofdm_symbol_size>>1))%frame_parms->ofdm_symbol_size; + i2=i; + //time2[i] = (float)(i-(frame_parms->ofdm_symbol_size>>1)); + time2[i] = (float)i; + chest_t_abs[0][i] = 10*log10((float) (1+chest_t[0][2*i2]*chest_t[0][2*i2]+chest_t[0][2*i2+1]*chest_t[0][2*i2+1])); + + if (chest_t_abs[0][i] > ymax) + ymax = chest_t_abs[0][i]; + } + + fl_set_xyplot_data(form->chest_t,time2,chest_t_abs[0],(frame_parms->ofdm_symbol_size),"","",""); + } + + for (arx=1; arxofdm_symbol_size>>3); i++) { + chest_t_abs[arx][i] = 10*log10((float) (1+chest_t[arx][2*i]*chest_t[arx][2*i]+chest_t[arx][2*i+1]*chest_t[arx][2*i+1])); + + if (chest_t_abs[arx][i] > ymax) + ymax = chest_t_abs[arx][i]; + } + + fl_add_xyplot_overlay(form->chest_t,arx,time,chest_t_abs[arx],(frame_parms->ofdm_symbol_size>>3),rx_antenna_colors[arx]); + fl_set_xyplot_overlay_type(form->chest_t,arx,FL_DASHED_XYPLOT); + } + } + + // Avoid flickering effect + // fl_get_xyplot_ybounds(form->chest_t,&ymin,&ymax); + fl_set_xyplot_ybounds(form->chest_t,0,ymax); + } + + // Channel Frequency Response + if (chest_f != NULL) { + ind = 0; + + for (atx=0; atxchest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce); + fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,3); + fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR); + fl_set_xyplot_data(form->chest_f,freq,chest_f_abs,nsymb_ce,"","",""); + + for (arx=1; arxchest_f,1,&freq[arx*nsymb_ce],&chest_f_abs[arx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); + } + + // other tx antennas + if (nb_antennas_tx > 1) { + if (nb_antennas_rx > 1) { + for (atx=1; atxchest_f,(atx<<1)+arx,&freq[((atx<<1)+arx)*nsymb_ce],&chest_f_abs[((atx<<1)+arx)*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); + } + } + } else { // 1 rx antenna + atx=1; + arx=0; + fl_add_xyplot_overlay(form->chest_f,atx,&freq[atx*nsymb_ce],&chest_f_abs[atx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); + } + } + } + + // PUSCH LLRs + if (pusch_llr != NULL) { + for (i=0; ipusch_llr,bit,llr,coded_bits_per_codeword,"","",""); + } + + // PUSCH I/Q of MF Output + if (pusch_comp!=NULL) { + ind=0; + + for (k=0; ksymbols_per_tti; k++) { + for (i=0; i<12*frame_parms->N_RB_UL; i++) { + I[ind] = pusch_comp[(2*frame_parms->N_RB_UL*12*k)+2*i]; + Q[ind] = pusch_comp[(2*frame_parms->N_RB_UL*12*k)+2*i+1]; + ind++; + } + } + + fl_set_xyplot_data(form->pusch_comp,I,Q,ind,"","",""); + } + + // PUSCH I/Q of MF Output + if (pucch1ab_comp!=NULL) { + for (ind=0; ind<10240; ind++) { + + I_pucch[ind] = (float)pucch1ab_comp[2*(ind)]; + Q_pucch[ind] = (float)pucch1ab_comp[2*(ind)+1]; + A_pucch[ind] = 10*log10(pucch1_comp[ind]); + B_pucch[ind] = ind; + C_pucch[ind] = (float)pucch1_thres[ind]; + } + fl_set_xyplot_data(form->pucch_comp,I_pucch,Q_pucch,10240,"","",""); + fl_set_xyplot_data(form->pucch_comp1,B_pucch,A_pucch,1024,"","",""); + fl_add_xyplot_overlay(form->pucch_comp1,1,B_pucch,C_pucch,1024,FL_RED); + fl_set_xyplot_ybounds(form->pucch_comp,-5000,5000); + fl_set_xyplot_xbounds(form->pucch_comp,-5000,5000); + + fl_set_xyplot_ybounds(form->pucch_comp1,0,80); + } + + + // PUSCH Throughput + memmove( tput_time_enb[UE_id], &tput_time_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); + memmove( tput_enb[UE_id], &tput_enb[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); + + tput_time_enb[UE_id][TPUT_WINDOW_LENGTH-1] = (float) frame; + tput_enb[UE_id][TPUT_WINDOW_LENGTH-1] = ((float) total_dlsch_bitrate)/1000.0; + + fl_set_xyplot_data(form->pusch_tput,tput_time_enb[UE_id],tput_enb[UE_id],TPUT_WINDOW_LENGTH,"","",""); + + // fl_get_xyplot_ybounds(form->pusch_tput,&ymin,&ymax); + // fl_set_xyplot_ybounds(form->pusch_tput,0,ymax); + + fl_check_forms(); + + free(llr); + free(bit); + free(chest_f_abs); +} +*/ + +FD_lte_phy_scope_ue *create_lte_phy_scope_ue( void ) +{ + + FL_OBJECT *obj; + FD_lte_phy_scope_ue *fdui = fl_malloc( sizeof *fdui ); + + // Define form + fdui->lte_phy_scope_ue = fl_bgn_form( FL_NO_BOX, 800, 900 ); + + // This the whole UI box + obj = fl_add_box( FL_BORDER_BOX, 0, 0, 800, 900, "" ); + fl_set_object_color( obj, FL_BLACK, FL_BLACK ); + + // Received signal + fdui->rxsig_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 20, 370, 100, "Received Signal (Time-Domain, dB)" ); + fl_set_object_boxtype( fdui->rxsig_t, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->rxsig_t, FL_BLACK, FL_RED ); + fl_set_object_lcolor( fdui->rxsig_t, FL_WHITE ); // Label color + fl_set_xyplot_ybounds(fdui->rxsig_t,10,70); + + // Time-domain channel response + fdui->chest_t = fl_add_xyplot( FL_NORMAL_XYPLOT, 410, 20, 370, 100, "Channel Impulse Response (samples, abs)" ); + fl_set_object_boxtype( fdui->chest_t, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->chest_t, FL_BLACK, FL_RED ); + fl_set_object_lcolor( fdui->chest_t, FL_WHITE ); // Label color + + // Frequency-domain channel response + fdui->chest_f = fl_add_xyplot( FL_IMPULSE_XYPLOT, 20, 140, 760, 100, "Channel Frequency Response (RE, dB)" ); + fl_set_object_boxtype( fdui->chest_f, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->chest_f, FL_BLACK, FL_RED ); + fl_set_object_lcolor( fdui->chest_f, FL_WHITE ); // Label color + fl_set_xyplot_ybounds( fdui->chest_f,30,70); + + // LLR of PBCH + fdui->pbch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 260, 500, 100, "PBCH Log-Likelihood Ratios (LLR, mag)" ); + fl_set_object_boxtype( fdui->pbch_llr, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pbch_llr, FL_BLACK, FL_GREEN ); + fl_set_object_lcolor( fdui->pbch_llr, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pbch_llr,2); + fl_set_xyplot_xgrid( fdui->pbch_llr,FL_GRID_MAJOR); + fl_set_xyplot_xbounds( fdui->pbch_llr,0,1920); + + // I/Q PBCH comp + fdui->pbch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 260, 240, 100, "PBCH I/Q of MF Output" ); + fl_set_object_boxtype( fdui->pbch_comp, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pbch_comp, FL_BLACK, FL_GREEN ); + fl_set_object_lcolor( fdui->pbch_comp, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pbch_comp,2); + // fl_set_xyplot_xbounds( fdui->pbch_comp,-100,100); + // fl_set_xyplot_ybounds( fdui->pbch_comp,-100,100); + + // LLR of PDCCH + fdui->pdcch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 380, 500, 100, "PDCCH Log-Likelihood Ratios (LLR, mag)" ); + fl_set_object_boxtype( fdui->pdcch_llr, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pdcch_llr, FL_BLACK, FL_CYAN ); + fl_set_object_lcolor( fdui->pdcch_llr, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pdcch_llr,2); + + // I/Q PDCCH comp + fdui->pdcch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 380, 240, 100, "PDCCH I/Q of MF Output" ); + fl_set_object_boxtype( fdui->pdcch_comp, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pdcch_comp, FL_BLACK, FL_CYAN ); + fl_set_object_lcolor( fdui->pdcch_comp, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pdcch_comp,2); + fl_set_xyplot_xgrid( fdui->pdcch_llr,FL_GRID_MAJOR); + + // LLR of PDSCH + fdui->pdsch_llr = fl_add_xyplot( FL_POINTS_XYPLOT, 20, 500, 500, 200, "PDSCH Log-Likelihood Ratios (LLR, mag)" ); + fl_set_object_boxtype( fdui->pdsch_llr, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pdsch_llr, FL_BLACK, FL_YELLOW ); + fl_set_object_lcolor( fdui->pdsch_llr, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pdsch_llr,2); + fl_set_xyplot_xgrid( fdui->pdsch_llr,FL_GRID_MAJOR); + + // I/Q PDSCH comp + fdui->pdsch_comp = fl_add_xyplot( FL_POINTS_XYPLOT, 540, 500, 240, 200, "PDSCH I/Q of MF Output" ); + fl_set_object_boxtype( fdui->pdsch_comp, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pdsch_comp, FL_BLACK, FL_YELLOW ); + fl_set_object_lcolor( fdui->pdsch_comp, FL_WHITE ); // Label color + fl_set_xyplot_symbolsize( fdui->pdsch_comp,2); + + // Throughput on PDSCH + fdui->pdsch_tput = fl_add_xyplot( FL_NORMAL_XYPLOT, 20, 720, 500, 100, "PDSCH Throughput [frame]/[kbit/s]" ); + fl_set_object_boxtype( fdui->pdsch_tput, FL_EMBOSSED_BOX ); + fl_set_object_color( fdui->pdsch_tput, FL_BLACK, FL_WHITE ); + fl_set_object_lcolor( fdui->pdsch_tput, FL_WHITE ); // Label color + + // Generic UE Button + fdui->button_0 = fl_add_button( FL_PUSH_BUTTON, 540, 720, 240, 40, "" ); + fl_set_object_lalign(fdui->button_0, FL_ALIGN_CENTER ); + //openair_daq_vars.use_ia_receiver = 0; + fl_set_button(fdui->button_0,0); + fl_set_object_label(fdui->button_0, "IA Receiver OFF"); + fl_set_object_color(fdui->button_0, FL_RED, FL_RED); + fl_set_object_callback(fdui->button_0, ia_receiver_on_off, 0 ); + fl_hide_object(fdui->button_0); + + fl_end_form( ); + fdui->lte_phy_scope_ue->fdui = fdui; + + return fdui; +} + +void phy_scope_UE(FD_lte_phy_scope_ue *form, + PHY_VARS_NR_UE *phy_vars_ue, + int eNB_id, + int UE_id, + uint8_t subframe) +{ + int i,arx,atx,ind,k; + NR_DL_FRAME_PARMS *frame_parms = &phy_vars_ue->frame_parms; + int nsymb_ce = frame_parms->ofdm_symbol_size;//*frame_parms->symbols_per_tti; + int samples_per_frame = frame_parms->samples_per_frame; + uint8_t nb_antennas_rx = frame_parms->nb_antennas_rx; + uint8_t nb_antennas_tx = frame_parms->nb_antenna_ports_eNB; + int16_t **rxsig_t; + float **rxsig_t_dB; + float *time; + /* + int16_t **chest_t; + int16_t **chest_f; + int16_t *pdsch_llr; + int16_t *pdsch_comp; + int16_t *pdsch_mag; + int8_t *pdcch_llr; + int16_t *pdcch_comp; + int8_t *pbch_llr; + int16_t *pbch_comp; + float Re,Im,ymax=1; + int num_pdcch_symbols=3; + float *llr, *bit, *chest_f_abs, llr_pbch[1920], bit_pbch[1920], *llr_pdcch, *bit_pdcch; + float *I, *Q; + float **chest_t_abs; + float freq[nsymb_ce*nb_antennas_rx*nb_antennas_tx]; + int frame = phy_vars_ue->proc.proc_rxtx[0].frame_rx; + int coded_bits_per_codeword = 0; + int mcs = 0; + unsigned char harq_pid = 0; + */ + + /* + if (phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]!=NULL) { + harq_pid = phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->current_harq_pid; + + if (harq_pid>=8) + return; + + mcs = phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->mcs; + + // Button 0 + if(!phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->dl_power_off) { + // we are in TM5 + fl_show_object(form->button_0); + } + } + + if (phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]!=NULL) { + num_pdcch_symbols = phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->num_pdcch_symbols; + } + + // coded_bits_per_codeword = frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti); + if (phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]!=NULL) { + coded_bits_per_codeword = get_G(frame_parms, + phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->nb_rb, + phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->rb_alloc_even, + get_Qm(mcs), + phy_vars_ue->dlsch[phy_vars_ue->current_thread_id[subframe]][eNB_id][0]->harq_processes[harq_pid]->Nl, + num_pdcch_symbols, + frame, + subframe, + beamforming_mode); + } else { + coded_bits_per_codeword = 0; //frame_parms->N_RB_DL*12*get_Qm(mcs)*(frame_parms->symbols_per_tti); + } + + I = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*2,sizeof(float)); + Q = (float*) calloc(frame_parms->ofdm_symbol_size*frame_parms->symbols_per_tti*2,sizeof(float)); + chest_t_abs = (float**) malloc(nb_antennas_rx*sizeof(float*)); + + for (arx=0; arxofdm_symbol_size,sizeof(float)); + } + + chest_f_abs = (float*) calloc(nsymb_ce*nb_antennas_rx*nb_antennas_tx,sizeof(float)); + llr = (float*) calloc(coded_bits_per_codeword,sizeof(float)); // init to zero + bit = malloc(coded_bits_per_codeword*sizeof(float)); + llr_pdcch = (float*) calloc(12*frame_parms->N_RB_DL*num_pdcch_symbols*2,sizeof(float)); // init to zero + bit_pdcch = (float*) calloc(12*frame_parms->N_RB_DL*num_pdcch_symbols*2,sizeof(float)); + */ + + rxsig_t = (int16_t**) phy_vars_ue->common_vars.rxdata; + rxsig_t_dB = calloc(nb_antennas_rx,sizeof(float*)); + for (arx=0; arxcommon_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id]; + chest_f = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates[eNB_id]; + pbch_llr = (int8_t*) phy_vars_ue->pbch_vars[eNB_id]->llr; + pbch_comp = (int16_t*) phy_vars_ue->pbch_vars[eNB_id]->rxdataF_comp[0]; + pdcch_llr = (int8_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->llr; + pdcch_comp = (int16_t*) phy_vars_ue->pdcch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp[0]; + pdsch_llr = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->llr[0]; // stream 0 + // pdsch_llr = (int16_t*) phy_vars_ue->lte_ue_pdsch_vars_SI[eNB_id]->llr[0]; // stream 0 + pdsch_comp = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->rxdataF_comp0[0]; + pdsch_mag = (int16_t*) phy_vars_ue->pdsch_vars[phy_vars_ue->current_thread_id[subframe]][eNB_id]->dl_ch_mag0[0]; + */ + + // Received signal in time domain of receive antenna 0 + if (rxsig_t != NULL) { + if (rxsig_t[0] != NULL) { + for (i=0; irxsig_t,time,rxsig_t_dB[0],samples_per_frame,"","",""); + } + + /* + for (arx=1; arxrxsig_t,arx,time,rxsig_t_dB[arx],FRAME_LENGTH_COMPLEX_SAMPLES,rx_antenna_colors[arx]); + } + } + */ + } + + /* + // Channel Impulse Response (still repeated format) + if (chest_t != NULL) { + ymax = 0; + + if (chest_t[0] !=NULL) { + for (i=0; i<(frame_parms->ofdm_symbol_size>>3); i++) { + chest_t_abs[0][i] = (float) (chest_t[0][4*i]*chest_t[0][4*i]+chest_t[0][4*i+1]*chest_t[0][4*i+1]); + + if (chest_t_abs[0][i] > ymax) + ymax = chest_t_abs[0][i]; + } + + fl_set_xyplot_data(form->chest_t,time,chest_t_abs[0],(frame_parms->ofdm_symbol_size>>3),"","",""); + } + + for (arx=1; arxofdm_symbol_size>>3); i++) { + chest_t_abs[arx][i] = (float) (chest_t[arx][4*i]*chest_t[arx][4*i]+chest_t[arx][4*i+1]*chest_t[arx][4*i+1]); + + if (chest_t_abs[arx][i] > ymax) + ymax = chest_t_abs[arx][i]; + } + + fl_add_xyplot_overlay(form->chest_t,arx,time,chest_t_abs[arx],(frame_parms->ofdm_symbol_size>>3),rx_antenna_colors[arx]); + fl_set_xyplot_overlay_type(form->chest_t,arx,FL_DASHED_XYPLOT); + } + } + + // Avoid flickering effect + // fl_get_xyplot_ybounds(form->chest_t,&ymin,&ymax); // Does not always work... + fl_set_xyplot_ybounds(form->chest_t,0,(double) ymax); + } + + // Channel Frequency Response (includes 5 complex sample for filter) + if (chest_f != NULL) { + ind = 0; + + for (atx=0; atxchest_f,0,nb_antennas_rx*nb_antennas_tx*nsymb_ce); + //fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*frame_parms->symbols_per_tti,2); + // fl_set_xyplot_xtics(form->chest_f,nb_antennas_rx*nb_antennas_tx*2,2); + fl_set_xyplot_xgrid(form->chest_f,FL_GRID_MAJOR); + fl_set_xyplot_data(form->chest_f,freq,chest_f_abs,nsymb_ce,"","",""); + + for (arx=1; arxchest_f,1,&freq[arx*nsymb_ce],&chest_f_abs[arx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); + } + + // other tx antennas + if (nb_antennas_tx > 1) { + if (nb_antennas_rx > 1) { + for (atx=1; atxchest_f,(atx<<1)+arx,&freq[((atx<<1)+arx)*nsymb_ce],&chest_f_abs[((atx<<1)+arx)*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); + } + } + } else { // 1 rx antenna + atx=1; + arx=0; + fl_add_xyplot_overlay(form->chest_f,atx,&freq[atx*nsymb_ce],&chest_f_abs[atx*nsymb_ce],nsymb_ce,rx_antenna_colors[arx]); + } + } + } + + // PBCH LLRs + if (pbch_llr != NULL) { + for (i=0; i<1920; i++) { + llr_pbch[i] = (float) pbch_llr[i]; + bit_pbch[i] = (float) i; + } + + fl_set_xyplot_data(form->pbch_llr,bit_pbch,llr_pbch,1920,"","",""); + } + + // PBCH I/Q of MF Output + if (pbch_comp!=NULL) { + for (i=0; i<72*2; i++) { + I[i] = pbch_comp[2*i]; + Q[i] = pbch_comp[2*i+1]; + } + + fl_set_xyplot_data(form->pbch_comp,I,Q,72*2,"","",""); + } + + // PDCCH LLRs + if (pdcch_llr != NULL) { + for (i=0; i<12*frame_parms->N_RB_DL*2*num_pdcch_symbols; i++) { + llr_pdcch[i] = (float) pdcch_llr[i]; + bit_pdcch[i] = (float) i; + } + + fl_set_xyplot_xbounds(form->pdcch_llr,0,12*frame_parms->N_RB_DL*2*3); + if (frame_parms->N_RB_DL != 100) + { + fl_set_xyplot_data(form->pdcch_llr,bit_pdcch,llr_pdcch,12*frame_parms->N_RB_DL*2*num_pdcch_symbols,"","",""); + } + else + { + LOG_D(PHY,"UE PDCCH LLR plot is bugged in 20 MHz BW, to be fixed !!!\n"); + } + } + + // PDCCH I/Q of MF Output + if (pdcch_comp!=NULL) { + for (i=0; i<12*frame_parms->N_RB_DL*num_pdcch_symbols; i++) { + I[i] = pdcch_comp[2*i]; + Q[i] = pdcch_comp[2*i+1]; + } + if (frame_parms->N_RB_DL != 100) + { + fl_set_xyplot_data(form->pdcch_comp,I,Q,12*frame_parms->N_RB_DL*num_pdcch_symbols,"","",""); + } + else + { + LOG_D(PHY,"UE PDCCH COMP plot is bugged in 20 MHz BW, to be fixed !!!\n"); + } + } + + // PDSCH LLRs + if (pdsch_llr != NULL) { + for (i=0; ipdsch_llr,0,coded_bits_per_codeword); + if (frame_parms->N_RB_DL != 100) + { + fl_set_xyplot_data(form->pdsch_llr,bit,llr,coded_bits_per_codeword,"","",""); + } + else + { + LOG_D(PHY,"UE PDSCH LLR plot is bugged in 20 MHz BW, to be fixed !!!\n"); + } + } + + // PDSCH I/Q of MF Output + if (pdsch_comp!=NULL) { + ind=0; + + for (k=0; ksymbols_per_tti; k++) { + for (i=0; i<12*frame_parms->N_RB_DL/2; i++) { + int j = (2*frame_parms->N_RB_DL*12*k)+4*i; + I[ind] = (pdsch_mag[j ]!=0? 1.0/pdsch_mag[j ]: 0.0) * pdsch_comp[j ]*1.0; + Q[ind] = (pdsch_mag[j+1]!=0? 1.0/pdsch_mag[j+1]: 0.0) * pdsch_comp[j+1]*1.0; + ind++; + } + } + + fl_set_xyplot_data(form->pdsch_comp,I,Q,ind,"","",""); + } + + // PDSCH Throughput + memmove( tput_time_ue[UE_id], &tput_time_ue[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); + memmove( tput_ue[UE_id], &tput_ue[UE_id][1], (TPUT_WINDOW_LENGTH-1)*sizeof(float) ); + + tput_time_ue[UE_id][TPUT_WINDOW_LENGTH-1] = (float) frame; + tput_ue[UE_id][TPUT_WINDOW_LENGTH-1] = ((float) total_dlsch_bitrate)/1000.0; + + if (tput_ue[UE_id][TPUT_WINDOW_LENGTH-1] > tput_ue_max[UE_id]) { + tput_ue_max[UE_id] = tput_ue[UE_id][TPUT_WINDOW_LENGTH-1]; + } + + fl_set_xyplot_data(form->pdsch_tput,tput_time_ue[UE_id],tput_ue[UE_id],TPUT_WINDOW_LENGTH,"","",""); + + fl_set_xyplot_ybounds(form->pdsch_tput,0,tput_ue_max[UE_id]); + */ + + fl_check_forms(); + + free(time); + for (arx=0; arx +//#include "PHY/defs_eNB.h" +//#include "PHY/defs_UE.h" +//#include "PHY/impl_defs_top.h" +#include "PHY/defs_nr_UE.h" + + +/* Forms and Objects */ +typedef struct { + FL_FORM * lte_phy_scope_enb; + FL_OBJECT * rxsig_t; + FL_OBJECT * chest_f; + FL_OBJECT * chest_t; + FL_OBJECT * pusch_comp; + FL_OBJECT * pucch_comp; + FL_OBJECT * pucch_comp1; + FL_OBJECT * pusch_llr; + FL_OBJECT * pusch_tput; + FL_OBJECT * button_0; +} FD_lte_phy_scope_enb; + +typedef struct { + FL_FORM * lte_phy_scope_ue; + FL_OBJECT * rxsig_t; + FL_OBJECT * chest_f; + FL_OBJECT * chest_t; + FL_OBJECT * pbch_comp; + FL_OBJECT * pbch_llr; + FL_OBJECT * pdcch_comp; + FL_OBJECT * pdcch_llr; + FL_OBJECT * pdsch_comp; + FL_OBJECT * pdsch_llr; + FL_OBJECT * pdsch_comp1; + FL_OBJECT * pdsch_llr1; + FL_OBJECT * pdsch_tput; + FL_OBJECT * button_0; + +} FD_lte_phy_scope_ue; + +FD_lte_phy_scope_enb * create_lte_phy_scope_enb( void ); +FD_lte_phy_scope_ue * create_lte_phy_scope_ue( void ); + +/* +void phy_scope_eNB(FD_lte_phy_scope_enb *form, + PHY_VARS_gNB *phy_vars_enb, + int UE_id); +*/ + +void phy_scope_UE(FD_lte_phy_scope_ue *form, + PHY_VARS_NR_UE *phy_vars_ue, + int eNB_id, + int UE_id, + uint8_t subframe); + + + + +#endif /* FD_lte_scope_h_ */ diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index 604d01deef..63d5150997 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -532,6 +532,7 @@ static void *UE_thread_synch(void *arg) { } else { // initial sync failed // calculate new offset and try again + if (UE->UE_scan_carrier == 1) { if (freq_offset >= 0) freq_offset += 100; @@ -553,6 +554,7 @@ static void *UE_thread_synch(void *arg) { return &UE_thread_synch_retval; // not reached } } + #if DISABLE_LOG_X printf("[initial_sync] trying carrier off %d Hz, rxgain %d (DL %u, UL %u)\n", freq_offset, @@ -646,8 +648,8 @@ static void *UE_thread_rxn_txnp4(void *arg) { } // initRefTimes(t2); - initRefTimes(t3); - pickTime(current); +// initRefTimes(t3); +// pickTime(current); // updateTimes(proc->gotIQs, &t2, 10000, "Delay to wake up UE_Thread_Rx (case 2)"); // Process Rx data for one sub-frame @@ -876,7 +878,7 @@ void *UE_thread(void *arg) { if (UE->mode != loop_through_memory) { for (int i=0; iframe_parms.nb_antennas_rx; i++) rxp[i] = (void*)&dummy_rx[i][0]; - for (int sf=0; sfframe_parms.samples_per_subframe== UE->rfdevice.trx_read_func(&UE->rfdevice, @@ -1114,6 +1116,7 @@ void init_UE_threads(PHY_VARS_NR_UE *UE) { pthread_mutex_init(&UE->proc.mutex_synch,NULL); pthread_cond_init(&UE->proc.cond_synch,NULL); + UE->proc.instance_cnt_synch = -1; // the threads are not yet active, therefore access is allowed without locking int nb_threads=RX_NB_TH; @@ -1186,6 +1189,7 @@ void fill_ue_band_info(void) { }*/ #endif +/* int setup_ue_buffers(PHY_VARS_NR_UE **phy_vars_ue, openair0_config_t *openair0_cfg) { int i, CC_id; @@ -1225,4 +1229,4 @@ int setup_ue_buffers(PHY_VARS_NR_UE **phy_vars_ue, openair0_config_t *openair0_c } return 0; } - +*/ diff --git a/targets/RT/USER/nr-uesoftmodem.c b/targets/RT/USER/nr-uesoftmodem.c index 6505c2a3fc..97ee085e2e 100644 --- a/targets/RT/USER/nr-uesoftmodem.c +++ b/targets/RT/USER/nr-uesoftmodem.c @@ -80,7 +80,7 @@ unsigned short config_frames[4] = {2,9,11,13}; #include "system.h" #include "stats.h" #ifdef XFORMS -#include "PHY/TOOLS/lte_phy_scope.h" +#include "PHY/TOOLS/nr_phy_scope.h" //#include "stats.h" // current status is that every UE has a DL scope for a SINGLE eNB (eNB_id=0) // at eNB 0, an UL scope for every UE @@ -111,11 +111,10 @@ volatile int oai_exit = 0; static clock_source_t clock_source = internal; static int wait_for_sync = 0; -static char UE_flag=0; -unsigned int mmapped_dma=0; -int single_thread_flag=1; +unsigned int mmapped_dma=0; +int single_thread_flag=1; -static char threequarter_fs=0; +int threequarter_fs=0; uint32_t downlink_frequency[MAX_NUM_CCs][4]; int32_t uplink_frequency_offset[MAX_NUM_CCs][4]; @@ -149,7 +148,7 @@ double rx_gain_off = 0.0; double sample_rate=30.72e6; double bw = 10.0e6; -static int tx_max_power[MAX_NUM_CCs]; /* = {0,0}*/; +static int tx_max_power[MAX_NUM_CCs] = {0}; char rf_config_file[1024]; @@ -175,7 +174,7 @@ int rx_input_level_dBm; #ifdef XFORMS extern int otg_enabled; -static char do_forms=0; +int do_forms=0; #else int otg_enabled; #endif @@ -415,22 +414,19 @@ static void *scope_thread(void *arg) { #endif while (!oai_exit) { - if (UE_flag==1) { - //len = dump_ue_stats (PHY_vars_UE_g[0][0], &PHY_vars_UE_g[0][0]->proc.proc_rxtx[0],stats_buffer, 0, mode,rx_input_level_dBm); - //fl_set_object_label(form_stats->stats_text, stats_buffer); - fl_clear_browser(form_stats->stats_text); - fl_add_browser_line(form_stats->stats_text, stats_buffer); - - /*phy_scope_UE(form_ue[0], - PHY_vars_UE_g[0][0], - 0, - 0,7);*/ - - } - - //printf("doing forms\n"); - //usleep(100000); // 100 ms - sleep(1); + //len = dump_ue_stats (PHY_vars_UE_g[0][0], &PHY_vars_UE_g[0][0]->proc.proc_rxtx[0],stats_buffer, 0, mode,rx_input_level_dBm); + //fl_set_object_label(form_stats->stats_text, stats_buffer); + fl_clear_browser(form_stats->stats_text); + fl_add_browser_line(form_stats->stats_text, stats_buffer); + + phy_scope_UE(form_ue[0], + PHY_vars_UE_g[0][0], + 0,0,7); + + + //printf("doing forms\n"); + //usleep(100000); // 100 ms + sleep(1); } // printf("%s",stats_buffer); @@ -615,10 +611,6 @@ static void get_options(void) { uecap_xer_in=1; } /* UE with config file */ -#if defined(OAI_USRP) || defined(CPRIGW) || defined(OAI_ADRV9371_ZC706) - int clock_src; -#endif - } #if T_TRACER @@ -1002,8 +994,6 @@ int main( int argc, char **argv ) { UE[CC_id]->pdcch_vars[1][0]->crnti = 0x1235; } - rx_gain[CC_id][0] = 81; - tx_max_power[CC_id] = -40; UE[CC_id]->rx_total_gain_dB = (int)rx_gain[CC_id][0] + rx_gain_off; UE[CC_id]->tx_power_max_dBm = tx_max_power[CC_id]; @@ -1120,11 +1110,14 @@ int main( int argc, char **argv ) { #ifdef XFORMS int UE_id; + int fl_argc=1; if (do_forms==1) { - fl_initialize (&argc, argv, NULL, 0, 0); - - form_stats = create_form_stats_form(); + // fl_initialize messes with argv and argc, so pretend to not pass any options + fl_initialize (&fl_argc, argv, NULL, 0, 0); + // restore the original command line args + // argv = fl_get_cmdline_args( &argc ); + form_stats = create_form_stats_form(); fl_show_form (form_stats->stats_form, FL_PLACE_HOTSPOT, FL_FULLBORDER, "stats"); UE_id = 0; form_ue[UE_id] = create_lte_phy_scope_ue(); @@ -1155,48 +1148,34 @@ int main( int argc, char **argv ) { rt_sleep_ns(10*100000000ULL); - - - // start the main thread - //if (UE_flag == 1) { - init_UE(1); - number_of_cards = 1; - + init_UE(1); + number_of_cards = 1; + for(CC_id=0; CC_idrf_map.card=0; PHY_vars_UE_g[0][CC_id]->rf_map.chain=CC_id+chain_offset; } - //} - // connect the TX/RX buffers - //if (UE_flag==1) { for (CC_id=0; CC_idhw_timing_advance = timing_advance; #else UE[CC_id]->hw_timing_advance = 160; #endif } - if (setup_ue_buffers(UE,&openair0_cfg[0])!=0) { - printf("Error setting up eNB buffer\n"); - exit(-1); - } + + if (input_fd) { + printf("Reading in from file to antenna buffer %d\n",0); + if (fread(UE[0]->common_vars.rxdata[0], + sizeof(int32_t), + frame_parms[0]->samples_per_subframe*10, + input_fd) != frame_parms[0]->samples_per_subframe*10) + printf("error reading from file\n"); + } - - if (input_fd) { - printf("Reading in from file to antenna buffer %d\n",0); - if (fread(UE[0]->common_vars.rxdata[0], - sizeof(int32_t), - frame_parms[0]->samples_per_subframe*10, - input_fd) != frame_parms[0]->samples_per_subframe*10) - printf("error reading from file\n"); - } - //p_exmimo_config->framing.tdd_config = TXRXSWITCH_TESTRX; - //} sleep(3); diff --git a/targets/RT/USER/nr-uesoftmodem.h b/targets/RT/USER/nr-uesoftmodem.h index 90887fe128..beb4756466 100644 --- a/targets/RT/USER/nr-uesoftmodem.h +++ b/targets/RT/USER/nr-uesoftmodem.h @@ -136,7 +136,7 @@ {"ue-nb-ant-tx", CONFIG_HLP_UENANTT, 0, u8ptr:&nb_antenna_tx, defuintval:1, TYPE_UINT8, 0}, \ {"ue-scan-carrier", CONFIG_HLP_UESCAN, PARAMFLAG_BOOL, iptr:&UE_scan_carrier, defintval:0, TYPE_INT, 0}, \ {"ue-max-power", NULL, 0, iptr:&(tx_max_power[0]), defintval:90, TYPE_INT, 0}, \ -{"r" , CONFIG_HLP_PRB, 0, u8ptr:&(frame_parms[0]->N_RB_DL), defintval:25, TYPE_UINT8, 0}, \ +{"r" , CONFIG_HLP_PRB, 0, iptr:&(frame_parms[0]->N_RB_DL), defintval:25, TYPE_UINT, 0}, \ {"dlsch-demod-shift", CONFIG_HLP_DLSHIFT, 0, iptr:(int32_t *)&dlsch_demod_shift, defintval:0, TYPE_INT, 0}, \ {"usrp-args", CONFIG_HLP_USRP_ARGS, 0, strptr:(char **)&usrp_args, defstrval:"type=b200", TYPE_STRING, 0}, \ {"usrp-clksrc", CONFIG_HLP_USRP_CLK_SRC,0, strptr:(char **)&usrp_clksrc, defstrval:"internal", TYPE_STRING, 0} \ @@ -167,8 +167,8 @@ {"A" , CONFIG_HLP_TADV, 0, uptr:&timing_advance, defintval:0, TYPE_UINT, 0}, \ {"C" , CONFIG_HLP_DLF, 0, uptr:&(downlink_frequency[0][0]), defuintval:2680000000, TYPE_UINT, 0}, \ {"a" , CONFIG_HLP_CHOFF, 0, iptr:&chain_offset, defintval:0, TYPE_INT, 0}, \ -{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, uptr:(uint32_t *)&do_forms, defintval:0, TYPE_INT8, 0}, \ -{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, i8ptr:&threequarter_fs, defintval:0, TYPE_INT8, 0}, \ +{"d" , CONFIG_HLP_SOFTS, PARAMFLAG_BOOL, iptr:&do_forms, defintval:0, TYPE_INT, 0}, \ +{"E" , CONFIG_HLP_TQFS, PARAMFLAG_BOOL, iptr:&threequarter_fs, defintval:0, TYPE_INT, 0}, \ {"K" , CONFIG_HLP_ITTIL, PARAMFLAG_NOFREE, strptr:&itti_dump_file, defstrval:"/tmp/itti.dump", TYPE_STRING, 0}, \ {"m" , CONFIG_HLP_DLMCS, 0, uptr:&target_dl_mcs, defintval:0, TYPE_UINT, 0}, \ {"t" , CONFIG_HLP_ULMCS, 0, uptr:&target_ul_mcs, defintval:0, TYPE_UINT, 0}, \ From cf8b9fed4f55d154a6cbf25d113ca6118dd24665 Mon Sep 17 00:00:00 2001 From: "Wolfgang A. Mozart" Date: Thu, 1 Nov 2018 16:51:01 +0100 Subject: [PATCH 06/23] adding correlation output to scope --- openair1/PHY/TOOLS/nr_phy_scope.c | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/openair1/PHY/TOOLS/nr_phy_scope.c b/openair1/PHY/TOOLS/nr_phy_scope.c index aa57629f97..4da49702d8 100644 --- a/openair1/PHY/TOOLS/nr_phy_scope.c +++ b/openair1/PHY/TOOLS/nr_phy_scope.c @@ -35,6 +35,9 @@ float tput_time_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; float tput_ue[NUMBER_OF_UE_MAX][TPUT_WINDOW_LENGTH] = {{0}}; float tput_ue_max[NUMBER_OF_UE_MAX] = {0}; +extern int64_t *pss_corr_ue[3]; + + static void ia_receiver_on_off( FL_OBJECT *button, long arg) { @@ -494,6 +497,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, int16_t **rxsig_t; float **rxsig_t_dB; float *time; + float *corr; /* int16_t **chest_t; int16_t **chest_f; @@ -572,6 +576,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, rxsig_t_dB[arx] = (float*) calloc(samples_per_frame,sizeof(float)); } time = calloc(samples_per_frame,sizeof(float)); + corr = calloc(samples_per_frame,sizeof(float)); /* chest_t = (int16_t**) phy_vars_ue->common_vars.common_vars_rx_data_per_thread[phy_vars_ue->current_thread_id[subframe]].dl_ch_estimates_time[eNB_id]; @@ -610,6 +615,21 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, */ } + for (ind=0;ind<3;ind++) { + if (pss_corr_ue[ind]) { + for (i=0; ichest_t,time,corr,samples_per_frame,"","",""); + else + fl_add_xyplot_overlay(form->chest_t,ind,time,corr,samples_per_frame,rx_antenna_colors[ind]); + } + } + + /* // Channel Impulse Response (still repeated format) if (chest_t != NULL) { @@ -798,6 +818,7 @@ void phy_scope_UE(FD_lte_phy_scope_ue *form, fl_check_forms(); free(time); + free(corr); for (arx=0; arx Date: Fri, 2 Nov 2018 10:38:16 +0100 Subject: [PATCH 07/23] CI: increasing timeout for phy-sim tests to 30 minutes Signed-off-by: Raphael Defosseux --- ci-scripts/Jenkinsfile-gitlab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index 971125771e..c5eae34059 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -313,7 +313,7 @@ pipeline { stage ("Test physical simulators") { steps { gitlabCommitStatus(name: "Test phy-sim") { - timeout (time: 20, unit: 'MINUTES') { + timeout (time: 30, unit: 'MINUTES') { sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } From ec4429c1710280fb9ca9f8871169447d8987007e Mon Sep 17 00:00:00 2001 From: "Wolfgang A. Mozart" Date: Fri, 2 Nov 2018 13:46:46 +0100 Subject: [PATCH 08/23] gNB: making n_ssb_crb a function of n_rb_dl (this should become a config paramerter later) nr-UE: bugfixes pbchsim: adding options to input/output signal files --- openair1/PHY/INIT/nr_init.c | 2 +- openair1/PHY/NR_UE_TRANSPORT/pss_nr.c | 24 +++++----- openair1/SIMULATION/NR_PHY/pbchsim.c | 64 +++++++++++++++++---------- targets/RT/USER/nr-ue.c | 22 ++++----- 4 files changed, 63 insertions(+), 49 deletions(-) diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index 6082cb757c..bce14e4f56 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -419,7 +419,7 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config) gNB_config->rf_config.ul_carrier_bandwidth.value = phy_config->cfg->rf_config.ul_carrier_bandwidth.value;//106; gNB_config->sch_config.half_frame_index.value = 0; gNB_config->sch_config.ssb_subcarrier_offset.value = phy_config->cfg->sch_config.ssb_subcarrier_offset.value;//0; - gNB_config->sch_config.n_ssb_crb.value = 86; + gNB_config->sch_config.n_ssb_crb.value = (phy_config->cfg->rf_config.dl_carrier_bandwidth.value-20)>>1; gNB_config->sch_config.physical_cell_id.value = phy_config->cfg->sch_config.physical_cell_id.value; if (phy_config->cfg->subframe_config.duplex_mode.value == 0) { diff --git a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c index de9b90f993..682d0233d8 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/pss_nr.c @@ -838,14 +838,15 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain /* Search pss in the received buffer each 4 samples which ensures a memory alignment on 128 bits (32 bits x 4 ) */ /* This is required by SIMD (single instruction Multiple Data) Extensions of Intel processors. */ /* Correlation computation is based on a a dot product which is realized thank to SIMS extensions */ - for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++) avg[pss_index]=0; + for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++) { + avg[pss_index]=0; + memset(pss_corr_ue[pss_index],0,length*sizeof(int64_t)); + } - for (n=0; n < length; n+=4) { + for (n=0; n < length; n+=4) { // for (int pss_index = 0; pss_index < NUMBER_PSS_SEQUENCE; pss_index++) { - pss_corr_ue[pss_index][n] = 0; /* clean correlation for position n */ - if ( n < (length - frame_parms->ofdm_symbol_size)) { /* calculate dot product of primary_synchro_time_nr and rxdata[ar][n] (ar=0..nb_ant_rx) and store the sum in temp[n]; */ @@ -886,24 +887,19 @@ int pss_search_time_nr(int **rxdata, ///rx data in time domain LOG_I(PHY,"[UE] nr_synchro_time: Sync source = %d, Peak found at pos %d, val = %llu (%d dB) avg %d dB\n", pss_source, peak_position, (unsigned long long)peak_value, dB_fixed64(peak_value),dB_fixed64(avg[pss_source])); -//#ifdef DEBUG_PSS_NR - -#define PSS_DETECTION_FLOOR_NR (31) - if (peak_value < 5*avg[pss_source]) { //PSS_DETECTION_FLOOR_NR) - + if (peak_value < 5*avg[pss_source]) return(-1); - } -//#endif + #ifdef DBG_PSS_NR - static debug_cnt = 0; + static int debug_cnt = 0; if (debug_cnt == 0) { - /* LOG_M("pss_corr_ue0.m","pss_corr_ue0",pss_corr_ue[0],length,1,6); + LOG_M("pss_corr_ue0.m","pss_corr_ue0",pss_corr_ue[0],length,1,6); LOG_M("pss_corr_ue1.m","pss_corr_ue1",pss_corr_ue[1],length,1,6); LOG_M("pss_corr_ue2.m","pss_corr_ue2",pss_corr_ue[2],length,1,6); - LOG_M("rxdata0.m","rxd0",rxdata[0],length,1,1); */ + LOG_M("rxdata0.m","rxd0",rxdata[0],length,1,1); } else { debug_cnt++; } diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index a4424044c0..019ef25194 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -379,7 +379,7 @@ int main(int argc, char **argv) exit(-1); } - frame_length_complex_samples = frame_parms->samples_per_subframe; + frame_length_complex_samples = frame_parms->samples_per_subframe*NR_NUMBER_OF_SUBFRAMES_PER_FRAME; frame_length_complex_samples_no_prefix = frame_parms->samples_per_subframe_wCP; s_re = malloc(2*sizeof(double*)); @@ -432,34 +432,47 @@ int main(int argc, char **argv) gNB->pbch_configured = 1; for (int i=0;i<4;i++) gNB->pbch_pdu[i]=i+1; nr_common_signal_procedures (gNB,frame,subframe); - } - /* - LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1); - if (gNB->frame_parms.nb_antennas_tx>1) - LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1); - */ - //TODO: loop over slots - for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { - if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) { - PHY_ofdm_mod(gNB->common_vars.txdataF[aa], - txdata[aa], - frame_parms->ofdm_symbol_size, - 12, - frame_parms->nb_prefix_samples, - CYCLIC_PREFIX); - } else { - nr_normal_prefix_mod(gNB->common_vars.txdataF[aa], - txdata[aa], - 14, - frame_parms); + /* + LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1); + if (gNB->frame_parms.nb_antennas_tx>1) + LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1); + */ + //TODO: loop over slots + for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { + if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) { + PHY_ofdm_mod(gNB->common_vars.txdataF[aa], + txdata[aa], + frame_parms->ofdm_symbol_size, + 12, + frame_parms->nb_prefix_samples, + CYCLIC_PREFIX); + } else { + nr_normal_prefix_mod(gNB->common_vars.txdataF[aa], + txdata[aa], + 14, + frame_parms); + } + } + } else { + printf("Reading %d samples from file to antenna buffer %d\n",frame_length_complex_samples,0); + + if (fread(txdata[0], + sizeof(int32_t), + frame_length_complex_samples, + input_fd) != frame_length_complex_samples) { + printf("error reading from file\n"); + exit(-1); } } - /* + LOG_M("txsig0.m","txs0", txdata[0],frame_length_complex_samples,1,1); if (gNB->frame_parms.nb_antennas_tx>1) LOG_M("txsig1.m","txs1", txdata[1],frame_length_complex_samples,1,1); - */ + + if (output_fd) + fwrite(txdata[0],sizeof(int32_t),frame_length_complex_samples,output_fd); + int txlev = signal_energy(&txdata[0][5*frame_parms->ofdm_symbol_size + 4*frame_parms->nb_prefix_samples + frame_parms->nb_prefix_samples0], frame_parms->ofdm_symbol_size + frame_parms->nb_prefix_samples); @@ -568,9 +581,12 @@ int main(int argc, char **argv) free(r_im); free(txdata); - if (write_output_file) + if (output_fd) fclose(output_fd); + if (input_fd) + fclose(input_fd); + return(n_errors); } diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index 63d5150997..7f4739a18a 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -435,7 +435,7 @@ static void *UE_thread_synch(void *arg) { #endif if (nr_initial_sync( UE, UE->mode ) == 0) { - hw_slot_offset = (UE->rx_offset<<1) / UE->frame_parms.samples_per_tti; + hw_slot_offset = (UE->rx_offset<<1) / UE->frame_parms.samples_per_subframe; printf("Got synch: hw_slot_offset %d, carrier off %d Hz, rxgain %d (DL %u, UL %u), UE_scan_carrier %d\n", hw_slot_offset, freq_offset, @@ -488,15 +488,17 @@ static void *UE_thread_synch(void *arg) { break; } - UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0],0); - //UE->rfdevice.trx_set_gains_func(&openair0,&openair0_cfg[0]); - //UE->rfdevice.trx_stop_func(&UE->rfdevice); - // sleep(1); - //nr_init_frame_parms_ue(&UE->frame_parms); - /*if (UE->rfdevice.trx_start_func(&UE->rfdevice) != 0 ) { - LOG_E(HW,"Could not start the device\n"); - oai_exit=1; - }*/ + if (UE->mode != loop_through_memory) { + UE->rfdevice.trx_set_freq_func(&UE->rfdevice,&openair0_cfg[0],0); + //UE->rfdevice.trx_set_gains_func(&openair0,&openair0_cfg[0]); + //UE->rfdevice.trx_stop_func(&UE->rfdevice); + // sleep(1); + //nr_init_frame_parms_ue(&UE->frame_parms); + /*if (UE->rfdevice.trx_start_func(&UE->rfdevice) != 0 ) { + LOG_E(HW,"Could not start the device\n"); + oai_exit=1; + }*/ + } if (UE->UE_scan_carrier == 1) { From 53417ed1abfa833052ebf53441326195fad9c5e3 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Fri, 2 Nov 2018 14:39:22 +0100 Subject: [PATCH 09/23] init dumpframe, phy_scope_ue during initial_sync, fixes to loop_through_memory --- targets/RT/USER/nr-ue.c | 18 +++++++++++++----- targets/RT/USER/nr-uesoftmodem.c | 15 +++++++++------ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index 7f4739a18a..d61e3c3bad 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -59,6 +59,8 @@ #include "T.h" +#include "PHY/TOOLS/nr_phy_scope.h" + extern double cpuf; //static nfapi_nr_config_request_t config_t; //static nfapi_nr_config_request_t* config =&config_t; @@ -587,6 +589,12 @@ static void *UE_thread_synch(void *arg) { break; } + extern FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX]; + + phy_scope_UE(form_ue[0], + PHY_vars_UE_g[0][0], + 0,0,7); + AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), ""); // indicate readiness UE->proc.instance_cnt_synch--; @@ -1016,6 +1024,10 @@ void *UE_thread(void *arg) { if ( first_symbols <0 ) LOG_E(PHY,"can't compensate: diff =%d\n", first_symbols); } + } //UE->mode != loop_through_memory + else + rt_sleep_ns(1000*1000); + pickTime(gotIQs); // operate on thread sf mod 2 AssertFatal(pthread_mutex_lock(&proc->mutex_rxtx) ==0,""); @@ -1076,7 +1088,7 @@ void *UE_thread(void *arg) { printf("%s\n",exit_fun_string); fflush(stdout); sleep(1); - exit_fun(exit_fun_string); + exit_fun(exit_fun_string); } } @@ -1087,10 +1099,6 @@ void *UE_thread(void *arg) { // updateTimes(lastTime, &t1, 20000, "Delay between two IQ acquisitions (case 1)"); // pickStaticTime(lastTime); - } else { - printf("Processing subframe %d",proc->subframe_rx); - getchar(); - } } // start_rx_stream==1 } // UE->is_synchronized==1 diff --git a/targets/RT/USER/nr-uesoftmodem.c b/targets/RT/USER/nr-uesoftmodem.c index 97ee085e2e..75eacb829a 100644 --- a/targets/RT/USER/nr-uesoftmodem.c +++ b/targets/RT/USER/nr-uesoftmodem.c @@ -419,10 +419,11 @@ static void *scope_thread(void *arg) { fl_clear_browser(form_stats->stats_text); fl_add_browser_line(form_stats->stats_text, stats_buffer); - phy_scope_UE(form_ue[0], - PHY_vars_UE_g[0][0], - 0,0,7); - + if (PHY_vars_UE_g[0][0]->is_synchronized == 1) + phy_scope_UE(form_ue[0], + PHY_vars_UE_g[0][0], + 0,0,7); + //else it is done in the synch thread //printf("doing forms\n"); //usleep(100000); // 100 ms @@ -498,7 +499,7 @@ static void get_options(void) { int CC_id; int tddflag, nonbiotflag; char *loopfile=NULL; - int dumpframe; + int dumpframe=0; uint32_t online_log_messages; uint32_t glog_level, glog_verbosity; uint32_t start_telnetsrv; @@ -1190,16 +1191,18 @@ int main( int argc, char **argv ) { printf("TYPE TO TERMINATE\n"); //getchar(); + /* #if defined(ENABLE_ITTI) printf("Entering ITTI signals handler\n"); itti_wait_tasks_end(); oai_exit=1; #else + */ while (oai_exit==0) rt_sleep_ns(100000000ULL); -#endif + //#endif // stop threads #ifdef XFORMS From 9d30c9b027856adaa7df7ee9e8020d45432bc305 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Mon, 5 Nov 2018 16:11:57 +0100 Subject: [PATCH 10/23] CI: lock mechanism improvement -- in slave job, the lock is now properly done for the whole job -- in master job, all slave jobs are really sent in parallel they should now now appear as failed (if fails) cherry-picked from develop (47437903f9c6ee6feebb78f6ad90b43dc2264d66) Signed-off-by: Raphael Defosseux --- ci-scripts/Jenkinsfile-gitlab | 328 ++++++++++++++++----------------- ci-scripts/Jenkinsfile-tmp-ran | 3 +- 2 files changed, 155 insertions(+), 176 deletions(-) diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index c5eae34059..cbcd491a1b 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -328,200 +328,180 @@ pipeline { } } } - stage ("Test on CI bench #1") { - stages { - stage ("Test FDD - Band 7 - B210") { - steps { - script { - try { - if ("MERGE".equals(env.gitlabActionType)) { - gitlabCommitStatus(name: "Test-FDD-Band7") { - build job: 'eNB-CI-FDD-Band7-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), - string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) - ] - } - } else { - gitlabCommitStatus(name: "Test-FDD-Band7") { - build job: 'eNB-CI-FDD-Band7-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), - string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), - booleanParam(name: 'eNB_mergeRequest', value: false) - ] - } - } - } catch (Exception e) { - currentBuild.result = 'FAILURE' - } + stage ("Test FDD - Band 7 - B210") { + steps { + script { + if ("MERGE".equals(env.gitlabActionType)) { + gitlabCommitStatus(name: "Test-FDD-Band7") { + build job: 'eNB-CI-FDD-Band7-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), + string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), + booleanParam(name: 'eNB_mergeRequest', value: true) + ] + } + } else { + gitlabCommitStatus(name: "Test-FDD-Band7") { + build job: 'eNB-CI-FDD-Band7-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), + string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), + booleanParam(name: 'eNB_mergeRequest', value: false) + ] } } - post { - // In case of any non-success, we are retrieving the HTML report of the last completed - // slave job. - // The only drop-back is that we may retrieve the HTML report of a previous build - always { - script { - if (!fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) { - copyArtifacts(projectName: 'eNB-CI-FDD-Band7-B210', - filter: 'test_results*.html', - selector: lastCompleted()) - if (fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) { - sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-FDD-Band7-B210.html" - archiveArtifacts artifacts: 'test_results-eNB-CI-FDD-Band7-B210.html' - } - } + } + } + post { + // In case of any non-success, we are retrieving the HTML report of the last completed + // slave job. + // The only drop-back is that we may retrieve the HTML report of a previous build + always { + script { + if (!fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) { + copyArtifacts(projectName: 'eNB-CI-FDD-Band7-B210', + filter: 'test_results*.html', + selector: lastCompleted()) + if (fileExists('test_results-eNB-CI-FDD-Band7-B210.html')) { + sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-FDD-Band7-B210.html" + archiveArtifacts artifacts: 'test_results-eNB-CI-FDD-Band7-B210.html' } } } } - stage ("Test TDD - Band 40 - B210") { - steps { - script { - try { - if ("MERGE".equals(env.gitlabActionType)) { - gitlabCommitStatus(name: "Test-TDD-Band40") { - build job: 'eNB-CI-TDD-Band40-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), - string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) - ] - } - } else { - gitlabCommitStatus(name: "Test-TDD-Band40") { - build job: 'eNB-CI-TDD-Band40-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), - string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), - booleanParam(name: 'eNB_mergeRequest', value: false) - ] - } - } - } catch (Exception e) { - currentBuild.result = 'FAILURE' - } + } + } + stage ("Test TDD - Band 40 - B210") { + steps { + script { + if ("MERGE".equals(env.gitlabActionType)) { + gitlabCommitStatus(name: "Test-TDD-Band40") { + build job: 'eNB-CI-TDD-Band40-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), + string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), + booleanParam(name: 'eNB_mergeRequest', value: true) + ] + } + } else { + gitlabCommitStatus(name: "Test-TDD-Band40") { + build job: 'eNB-CI-TDD-Band40-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), + string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), + booleanParam(name: 'eNB_mergeRequest', value: false) + ] } } - post { - // In case of any non-success, we are retrieving the HTML report of the last completed - // slave job. - // The only drop-back is that we may retrieve the HTML report of a previous build - always { - script { - if (!fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) { - copyArtifacts(projectName: 'eNB-CI-TDD-Band40-B210', - filter: 'test_results*.html', - selector: lastCompleted()) - if (fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) { - sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-TDD-Band40-B210.html" - archiveArtifacts artifacts: 'test_results-eNB-CI-TDD-Band40-B210.html' - } - } + } + } + post { + // In case of any non-success, we are retrieving the HTML report of the last completed + // slave job. + // The only drop-back is that we may retrieve the HTML report of a previous build + always { + script { + if (!fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) { + copyArtifacts(projectName: 'eNB-CI-TDD-Band40-B210', + filter: 'test_results*.html', + selector: lastCompleted()) + if (fileExists('test_results-eNB-CI-TDD-Band40-B210.html')) { + sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-TDD-Band40-B210.html" + archiveArtifacts artifacts: 'test_results-eNB-CI-TDD-Band40-B210.html' } } } } - stage ("Test IF4p5 - FDD - Band 7 - B210") { - steps { - script { - try { - if ("MERGE".equals(env.gitlabActionType)) { - gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") { - build job: 'eNB-CI-IF4p5-FDD-Band7-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), - string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) - ] - } - } else { - gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") { - build job: 'eNB-CI-IF4p5-FDD-Band7-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), - string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), - booleanParam(name: 'eNB_mergeRequest', value: false) - ] - } - } - } catch (Exception e) { - currentBuild.result = 'FAILURE' - } + } + } + stage ("Test IF4p5 - FDD - Band 7 - B210") { + steps { + script { + if ("MERGE".equals(env.gitlabActionType)) { + gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") { + build job: 'eNB-CI-IF4p5-FDD-Band7-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), + string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), + booleanParam(name: 'eNB_mergeRequest', value: true) + ] + } + } else { + gitlabCommitStatus(name: "Test-IF4p5-FDD-Band7") { + build job: 'eNB-CI-IF4p5-FDD-Band7-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), + string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), + booleanParam(name: 'eNB_mergeRequest', value: false) + ] } } - post { - // In case of any non-success, we are retrieving the HTML report of the last completed - // slave job. - // The only drop-back is that we may retrieve the HTML report of a previous build - always { - script { - if (!fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) { - copyArtifacts(projectName: 'eNB-CI-IF4p5-FDD-Band7-B210', - filter: 'test_results*.html', - selector: lastCompleted()) - if (fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) { - sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-FDD-Band7-B210.html" - archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-FDD-Band7-B210.html' - } - } + } + } + post { + // In case of any non-success, we are retrieving the HTML report of the last completed + // slave job. + // The only drop-back is that we may retrieve the HTML report of a previous build + always { + script { + if (!fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) { + copyArtifacts(projectName: 'eNB-CI-IF4p5-FDD-Band7-B210', + filter: 'test_results*.html', + selector: lastCompleted()) + if (fileExists('test_results-eNB-CI-IF4p5-FDD-Band7-B210.html')) { + sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-FDD-Band7-B210.html" + archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-FDD-Band7-B210.html' } } } } - stage ("Test IF4p5 - TDD - Band 40 - B210") { - steps { - script { - try { - if ("MERGE".equals(env.gitlabActionType)) { - gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") { - build job: 'eNB-CI-IF4p5-TDD-Band40-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), - string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) - ] - } - } else { - gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") { - build job: 'eNB-CI-IF4p5-TDD-Band40-B210', - parameters: [ - string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), - string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), - string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), - booleanParam(name: 'eNB_mergeRequest', value: false) - ] - } - } - } catch (Exception e) { - currentBuild.result = 'FAILURE' - } + } + } + stage ("Test IF4p5 - TDD - Band 40 - B210") { + steps { + script { + if ("MERGE".equals(env.gitlabActionType)) { + gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") { + build job: 'eNB-CI-IF4p5-TDD-Band40-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), + string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), + booleanParam(name: 'eNB_mergeRequest', value: true) + ] + } + } else { + gitlabCommitStatus(name: "Test-IF4p5-TDD-Band40") { + build job: 'eNB-CI-IF4p5-TDD-Band40-B210', + parameters: [ + string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), + string(name: 'eNB_Branch', value: String.valueOf(GIT_BRANCH)), + string(name: 'eNB_CommitID', value: String.valueOf(GIT_COMMIT)), + booleanParam(name: 'eNB_mergeRequest', value: false) + ] } } - post { - // In case of any non-success, we are retrieving the HTML report of the last completed - // slave job. - // The only drop-back is that we may retrieve the HTML report of a previous build - always { - script { - if (!fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) { - copyArtifacts(projectName: 'eNB-CI-IF4p5-TDD-Band40-B210', - filter: 'test_results*.html', - selector: lastCompleted()) - if (fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) { - sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-TDD-Band40-B210.html" - archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-TDD-Band40-B210.html' - } - } + } + } + post { + // In case of any non-success, we are retrieving the HTML report of the last completed + // slave job. + // The only drop-back is that we may retrieve the HTML report of a previous build + always { + script { + if (!fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) { + copyArtifacts(projectName: 'eNB-CI-IF4p5-TDD-Band40-B210', + filter: 'test_results*.html', + selector: lastCompleted()) + if (fileExists('test_results-eNB-CI-IF4p5-TDD-Band40-B210.html')) { + sh "sed -i -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_results-eNB-CI-IF4p5-TDD-Band40-B210.html" + archiveArtifacts artifacts: 'test_results-eNB-CI-IF4p5-TDD-Band40-B210.html' } } } diff --git a/ci-scripts/Jenkinsfile-tmp-ran b/ci-scripts/Jenkinsfile-tmp-ran index 5fd2a09598..6795eab9b8 100644 --- a/ci-scripts/Jenkinsfile-tmp-ran +++ b/ci-scripts/Jenkinsfile-tmp-ran @@ -61,6 +61,7 @@ pipeline { options { disableConcurrentBuilds() ansiColor('xterm') + lock (ciSmartPhoneResource) } // the following parameter options are commented out so it shows the ones // that you SHALL have to run the job. @@ -184,7 +185,6 @@ pipeline { steps { script { dir ('ci-scripts') { - lock (ciSmartPhoneResource) { try { echo "\u2705 \u001B[32m${testStageName}\u001B[0m" withCredentials([ @@ -197,7 +197,6 @@ pipeline { } catch (Exception e) { currentBuild.result = 'FAILURE' } - } } } } From 927c3102cd7a64362788b4a218a6856ff677b2b0 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 5 Nov 2018 20:57:38 +0100 Subject: [PATCH 11/23] enabling T tracer for dlsim to get control of log messages --- cmake_targets/phy_simulators/CMakeLists.txt | 2 +- openair1/SIMULATION/LTE_PHY/dlsim.c | 8 ++------ 2 files changed, 3 insertions(+), 7 deletions(-) diff --git a/cmake_targets/phy_simulators/CMakeLists.txt b/cmake_targets/phy_simulators/CMakeLists.txt index 83b292eed5..3ca13e722e 100644 --- a/cmake_targets/phy_simulators/CMakeLists.txt +++ b/cmake_targets/phy_simulators/CMakeLists.txt @@ -9,5 +9,5 @@ set(MU_RECIEVER False) set(NAS_UE False) set(MESSAGE_CHART_GENERATOR False) set(RRC_ASN1_VERSION "Rel14") -set(T_TRACER False) +set(T_TRACER True) include(${CMAKE_CURRENT_SOURCE_DIR}/../CMakeLists.txt) diff --git a/openair1/SIMULATION/LTE_PHY/dlsim.c b/openair1/SIMULATION/LTE_PHY/dlsim.c index 7365ade466..63e6de2290 100644 --- a/openair1/SIMULATION/LTE_PHY/dlsim.c +++ b/openair1/SIMULATION/LTE_PHY/dlsim.c @@ -546,7 +546,7 @@ int main(int argc, char **argv) int c; int k,i,j,aa; int re; - int loglvl=OAILOG_DEBUG; + int loglvl=OAILOG_WARNING; int s,Kr,Kr_bytes; @@ -1073,12 +1073,8 @@ int main(int argc, char **argv) AssertFatal(load_configmodule(argc,argv) != NULL, "cannot load configuration module, exiting\n"); logInit(); - // enable these lines if you need debug info set_glog(loglvl); - // moreover you need to init itti with the following line - // however itti will catch all signals, so ctrl-c won't work anymore - // alternatively you can disable ITTI completely in CMakeLists.txt - //itti_init(TASK_MAX, THREAD_MAX, MESSAGES_ID_MAX, tasks_info, messages_info, messages_definition_xml, NULL); + T_stdout = 1; if (common_flag == 0) { From 737ad46a29fa99d830261a86f13091b6f3e82e84 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 5 Nov 2018 20:58:28 +0100 Subject: [PATCH 12/23] fixing a bug when -d option is not used in nr-uesoftmodem --- targets/RT/USER/nr-ue.c | 21 +++++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index d61e3c3bad..adefa661b2 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -59,8 +59,13 @@ #include "T.h" +#ifdef XFORMS #include "PHY/TOOLS/nr_phy_scope.h" +extern char do_forms; +#endif + + extern double cpuf; //static nfapi_nr_config_request_t config_t; //static nfapi_nr_config_request_t* config =&config_t; @@ -589,12 +594,16 @@ static void *UE_thread_synch(void *arg) { break; } - extern FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX]; - - phy_scope_UE(form_ue[0], - PHY_vars_UE_g[0][0], - 0,0,7); - +#ifdef XFORMS + if (do_forms) { + extern FD_lte_phy_scope_ue *form_ue[NUMBER_OF_UE_MAX]; + + phy_scope_UE(form_ue[0], + PHY_vars_UE_g[0][0], + 0,0,7); + } +#endif + AssertFatal ( 0== pthread_mutex_lock(&UE->proc.mutex_synch), ""); // indicate readiness UE->proc.instance_cnt_synch--; From 80e0c46bc6b198d61d610d1b176c5c8f11c6e24e Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Mon, 5 Nov 2018 21:58:34 +0100 Subject: [PATCH 13/23] fixing nr_pbchsim dependencies and adding parameter for logging --- cmake_targets/CMakeLists.txt | 4 ++-- openair1/SIMULATION/NR_PHY/pbchsim.c | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/cmake_targets/CMakeLists.txt b/cmake_targets/CMakeLists.txt index e7c6658a77..cc6b7a434e 100644 --- a/cmake_targets/CMakeLists.txt +++ b/cmake_targets/CMakeLists.txt @@ -2547,8 +2547,8 @@ target_link_libraries(polartest SIMU PHY PHY_NR PHY_COMMON m ${ATLAS_LIBRARIES}) add_executable(ldpctest ${OPENAIR1_DIR}/PHY/CODING/TESTBENCH/ldpctest.c) target_link_libraries(ldpctest SIMU PHY PHY_NR m ${ATLAS_LIBRARIES}) -add_executable(nr_pbchsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c ) -target_link_libraries(nr_pbchsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} dl) +add_executable(nr_pbchsim ${OPENAIR1_DIR}/SIMULATION/NR_PHY/pbchsim.c ${T_SOURCE}) +target_link_libraries(nr_pbchsim -Wl,--start-group UTIL SIMU PHY_COMMON PHY_NR PHY_NR_UE SCHED_NR_LIB CONFIG_LIB -Wl,--end-group m pthread ${ATLAS_LIBRARIES} ${T_LIB} dl) foreach(myExe dlsim dlsim_tm7 ulsim pbchsim scansim mbmssim pdcchsim pucchsim prachsim syncsim) diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 019ef25194..8de8a585c6 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -131,16 +131,17 @@ int main(int argc, char **argv) int ret; int run_initial_sync=0; + int loglvl=OAILOG_WARNING; + cpuf = get_cpu_freq_GHz(); if ( load_configmodule(argc,argv) == 0) { exit_fun("[SOFTMODEM] Error, configuration module init failed\n"); } - logInit(); randominit(0); - while ((c = getopt (argc, argv, "f:hA:pf:g:i:j:n:s:S:t:x:y:z:N:F:GR:dP:I")) != -1) { + while ((c = getopt (argc, argv, "f:hA:pf:g:i:j:n:s:S:t:x:y:z:N:F:GR:dP:IL:")) != -1) { switch (c) { case 'f': write_output_file=1; @@ -296,6 +297,11 @@ int main(int argc, char **argv) case 'I': run_initial_sync=1; break; + + case 'L': + loglvl = atoi(optarg); + break; + default: case 'h': printf("%s -h(elp) -p(extended_prefix) -N cell_id -f output_filename -F input_filename -g channel_model -n n_frames -t Delayspread -s snr0 -S snr1 -x transmission_mode -y TXant -z RXant -i Intefrence0 -j Interference1 -A interpolation_file -C(alibration offset dB) -N CellId\n", @@ -325,10 +331,13 @@ int main(int argc, char **argv) } } + logInit(); + set_glog(loglvl); + T_stdout = 1; + if (snr1set==0) snr1 = snr0+10; - printf("Initializing gNodeB for mu %d, N_RB_DL %d\n",mu,N_RB_DL); RC.gNB = (PHY_VARS_gNB***) malloc(sizeof(PHY_VARS_gNB **)); From e9a5ac204d6786d7d188322a20b772b39d6a6655 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Wed, 7 Nov 2018 09:40:17 +0100 Subject: [PATCH 14/23] initializing log properly for ulsim --- openair1/SIMULATION/LTE_PHY/ulsim.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/openair1/SIMULATION/LTE_PHY/ulsim.c b/openair1/SIMULATION/LTE_PHY/ulsim.c index 8c09da1daf..6bdec77b76 100644 --- a/openair1/SIMULATION/LTE_PHY/ulsim.c +++ b/openair1/SIMULATION/LTE_PHY/ulsim.c @@ -497,6 +497,8 @@ int main(int argc, char **argv) { AssertFatal(load_configmodule(argc,argv) != NULL, "cannot load configuration module, exiting\n"); logInit(); + set_glog(OAILOG_WARNING); + T_stdout = 1; // enable these lines if you need debug info // however itti will catch all signals, so ctrl-c won't work anymore // alternatively you can disable ITTI completely in CMakeLists.txt From 3d845a370801f2fce93a543fad4ed3186cd41235 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Wed, 7 Nov 2018 11:06:19 +0100 Subject: [PATCH 15/23] CI: increasing the phy-sim time-out to 45 minutes Signed-off-by: Raphael Defosseux --- ci-scripts/Jenkinsfile-gitlab | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index cbcd491a1b..e02f071c2f 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -313,7 +313,7 @@ pipeline { stage ("Test physical simulators") { steps { gitlabCommitStatus(name: "Test phy-sim") { - timeout (time: 30, unit: 'MINUTES') { + timeout (time: 45, unit: 'MINUTES') { sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } From c8b9ca55b799e183724b90cd4b625ef1c8231580 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Wed, 7 Nov 2018 12:00:52 +0100 Subject: [PATCH 16/23] nr-uesoftmodem: moving phy_procedures_nrUE into main thread when --loop-memory is used. --- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 6 +-- targets/RT/USER/nr-ue.c | 57 ++++++++++++++++----- 2 files changed, 47 insertions(+), 16 deletions(-) diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index eee5cbae95..32beb92009 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -5913,8 +5913,8 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN #endif //nr_gold_pdcch(ue,0, 2); -/* - for (l=0; l<2; l++) { + + for (int l=0; l<2; l++) { if (abstraction_flag == 0) { #if UE_TIMING_TRACE start_meas(&ue->ofdm_demod_stats); @@ -5933,7 +5933,7 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN stop_meas(&ue->ofdm_demod_stats); #endif } - }*/ + } //ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode); //if (do_pdcch_flag) { diff --git a/targets/RT/USER/nr-ue.c b/targets/RT/USER/nr-ue.c index adefa661b2..41b20710e9 100644 --- a/targets/RT/USER/nr-ue.c +++ b/targets/RT/USER/nr-ue.c @@ -956,7 +956,7 @@ void *UE_thread(void *arg) { #if BASIC_SIMULATOR { int t; - for (t = 0; t < 2; t++) { + for (t = 0; t < RX_NB_TH; t++) { UE_rxtx_proc_t *proc = &UE->proc.proc_rxtx[t]; pthread_mutex_lock(&proc->mutex_rxtx); while (proc->instance_cnt_rxtx >= 0) pthread_cond_wait( &proc->cond_rxtx, &proc->mutex_rxtx ); @@ -964,13 +964,13 @@ void *UE_thread(void *arg) { } } #endif + LOG_D(PHY,"Process subframe %d thread Idx %d \n", subframe_nr, UE->current_thread_id[subframe_nr]); thread_idx++; if(thread_idx>=RX_NB_TH) thread_idx = 0; - if (UE->mode != loop_through_memory) { for (i=0; iframe_parms.nb_antennas_rx; i++) rxp[i] = (void*)&UE->common_vars.rxdata[i][UE->frame_parms.ofdm_symbol_size+ @@ -1033,9 +1033,6 @@ void *UE_thread(void *arg) { if ( first_symbols <0 ) LOG_E(PHY,"can't compensate: diff =%d\n", first_symbols); } - } //UE->mode != loop_through_memory - else - rt_sleep_ns(1000*1000); pickTime(gotIQs); // operate on thread sf mod 2 @@ -1047,13 +1044,13 @@ void *UE_thread(void *arg) { UE->proc.proc_rxtx[th_id].frame_rx++; } #ifdef SAIF_ENABLED - if (!(proc->frame_rx%4000)) - { - printf("frame_rx=%d rx_thread_busy=%ld - rate %8.3f\n", - proc->frame_rx, g_ue_rx_thread_busy, - (float)g_ue_rx_thread_busy/(proc->frame_rx*10+1)*100.0); - fflush(stdout); - } + if (!(proc->frame_rx%4000)) + { + printf("frame_rx=%d rx_thread_busy=%ld - rate %8.3f\n", + proc->frame_rx, g_ue_rx_thread_busy, + (float)g_ue_rx_thread_busy/(proc->frame_rx*10+1)*100.0); + fflush(stdout); + } #endif } //UE->proc.proc_rxtx[0].gotIQs=readTime(gotIQs); @@ -1071,7 +1068,7 @@ void *UE_thread(void *arg) { proc->frame_tx = (proc->frame_tx + 1)%MAX_FRAME_NUMBER; proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME; } - proc->subframe_tx=subframe_nr + DURATION_RX_TO_TX; + proc->subframe_tx=proc->nr_tti_rx; proc->timestamp_tx = timestamp+ (DURATION_RX_TO_TX*UE->frame_parms.samples_per_subframe)- UE->frame_parms.ofdm_symbol_size-UE->frame_parms.nb_prefix_samples0; @@ -1107,7 +1104,41 @@ void *UE_thread(void *arg) { // initStaticTime(lastTime); // updateTimes(lastTime, &t1, 20000, "Delay between two IQ acquisitions (case 1)"); // pickStaticTime(lastTime); + } //UE->mode != loop_through_memory + else { + proc->nr_tti_rx=subframe_nr; + proc->subframe_rx=subframe_nr; + if(subframe_nr == 0) { + for (th_id=0; th_id < RX_NB_TH; th_id++) { + UE->proc.proc_rxtx[th_id].frame_rx++; + } + } + proc->frame_tx = proc->frame_rx; + proc->nr_tti_tx= subframe_nr + DURATION_RX_TO_TX; + if (proc->nr_tti_tx > NR_NUMBER_OF_SUBFRAMES_PER_FRAME) { + proc->frame_tx = (proc->frame_tx + 1)%MAX_FRAME_NUMBER; + proc->nr_tti_tx %= NR_NUMBER_OF_SUBFRAMES_PER_FRAME; + } + proc->subframe_tx=proc->nr_tti_tx; + printf("Processing subframe %d\n",proc->subframe_rx); + + if(UE->if_inst != NULL && UE->if_inst->ul_indication != NULL){ + UE->ul_indication.module_id = 0; + UE->ul_indication.gNB_index = 0; + UE->ul_indication.cc_id = 0; + UE->ul_indication.slot = 0; // to be fill + UE->ul_indication.frame = 0; // to be fill + // [TODO] mapping right after NR initial sync + UE->ul_indication.frame = proc->frame_rx; + UE->ul_indication.slot = proc->nr_tti_rx; + + UE->if_inst->ul_indication(&UE->ul_indication); + } + + phy_procedures_nrUE_RX( UE, proc, 0, 0, 1, UE->mode, no_relay); + getchar(); + } // else loop_through_memory } // start_rx_stream==1 } // UE->is_synchronized==1 From bf85f18008e512192842ca05a6cdf463cda4651d Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Wed, 7 Nov 2018 13:28:52 +0100 Subject: [PATCH 17/23] nr_pbchsim will exit when error rate <0.01 --- openair1/SIMULATION/NR_PHY/pbchsim.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 8de8a585c6..5652c5712a 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -571,7 +571,7 @@ int main(int argc, char **argv) printf("SNR %f : n_errors (negative CRC) = %d/%d\n", SNR,n_errors,n_trials); - if (n_trials==1) + if (n_trials==1 || ((float)n_errors/(float)n_trials < 0.01)) break; } // NSR From eb484b8039138de1b0048ab5b07674d50a6a26a7 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Wed, 7 Nov 2018 15:16:01 +0100 Subject: [PATCH 18/23] changing n_ssb_crb to n_rb_dl-20 re-centers the SSB and PDCCH and UE can decode PDCCH again --- openair1/PHY/INIT/nr_init.c | 4 +- openair1/PHY/INIT/nr_init_ue.c | 2 +- openair1/PHY/NR_UE_TRANSPORT/dci_nr.c | 2 +- .../PHY/NR_UE_TRANSPORT/nr_initial_sync.c | 8 +- openair1/SCHED_NR_UE/phy_procedures_nr_ue.c | 87 ++++++++++--------- openair1/SIMULATION/NR_PHY/pbchsim.c | 3 +- 6 files changed, 54 insertions(+), 52 deletions(-) diff --git a/openair1/PHY/INIT/nr_init.c b/openair1/PHY/INIT/nr_init.c index bce14e4f56..135d6099e0 100644 --- a/openair1/PHY/INIT/nr_init.c +++ b/openair1/PHY/INIT/nr_init.c @@ -384,7 +384,7 @@ void nr_phy_config_request_sim(PHY_VARS_gNB *gNB,int N_RB_DL,int N_RB_UL,int mu) gNB_config->rf_config.ul_carrier_bandwidth.value = N_RB_UL; gNB_config->sch_config.half_frame_index.value = 0; gNB_config->sch_config.ssb_subcarrier_offset.value = 0; - gNB_config->sch_config.n_ssb_crb.value = (N_RB_DL-20)>>1; + gNB_config->sch_config.n_ssb_crb.value = (N_RB_DL-20); gNB_config->sch_config.ssb_subcarrier_offset.value = 0; @@ -419,7 +419,7 @@ void nr_phy_config_request(NR_PHY_Config_t *phy_config) gNB_config->rf_config.ul_carrier_bandwidth.value = phy_config->cfg->rf_config.ul_carrier_bandwidth.value;//106; gNB_config->sch_config.half_frame_index.value = 0; gNB_config->sch_config.ssb_subcarrier_offset.value = phy_config->cfg->sch_config.ssb_subcarrier_offset.value;//0; - gNB_config->sch_config.n_ssb_crb.value = (phy_config->cfg->rf_config.dl_carrier_bandwidth.value-20)>>1; + gNB_config->sch_config.n_ssb_crb.value = (phy_config->cfg->rf_config.dl_carrier_bandwidth.value-20); gNB_config->sch_config.physical_cell_id.value = phy_config->cfg->sch_config.physical_cell_id.value; if (phy_config->cfg->subframe_config.duplex_mode.value == 0) { diff --git a/openair1/PHY/INIT/nr_init_ue.c b/openair1/PHY/INIT/nr_init_ue.c index 77faeaa0c2..a2385b998c 100644 --- a/openair1/PHY/INIT/nr_init_ue.c +++ b/openair1/PHY/INIT/nr_init_ue.c @@ -655,7 +655,7 @@ int init_nr_ue_signal(PHY_VARS_NR_UE *ue, int i,j,k,l; int eNB_id; int th_id; - int n_ssb_crb=(fp->N_RB_DL-20)>>1; + int n_ssb_crb=(fp->N_RB_DL-20); abstraction_flag = 0; fp->nb_antennas_tx = 1; fp->nb_antennas_rx=1; diff --git a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c index 78f793ec17..b1a384d4a0 100755 --- a/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c +++ b/openair1/PHY/NR_UE_TRANSPORT/dci_nr.c @@ -49,7 +49,7 @@ //#define NR_LTE_PDCCH_DCI_SWITCH #define NR_PDCCH_DCI_RUN // activates new nr functions -//#define NR_PDCCH_DCI_DEBUG // activates NR_PDCCH_DCI_DEBUG logs +#define NR_PDCCH_DCI_DEBUG // activates NR_PDCCH_DCI_DEBUG logs #define NR_NBR_CORESET_ACT_BWP 3 // The number of CoreSets per BWP is limited to 3 (including initial CORESET: ControlResourceId 0) #define NR_NBR_SEARCHSPACE_ACT_BWP 10 // The number of SearSpaces per BWP is limited to 10 (including initial SEARCHSPACE: SearchSpaceId 0) #define PDCCH_TEST_POLAR_TEMP_FIX diff --git a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c index 1b31575615..80c71bd665 100644 --- a/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c +++ b/openair1/PHY/NR_UE_TRANSPORT/nr_initial_sync.c @@ -149,7 +149,7 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode) int rx_power=0; //aarx, //nfapi_nr_config_request_t* config; - int n_ssb_crb=(fp->N_RB_DL-20)>>1; + int n_ssb_crb=(fp->N_RB_DL-20); // First try TDD normal prefix, mu 1 fp->Ncp=NORMAL; fp->frame_type=TDD; @@ -213,12 +213,12 @@ int nr_initial_sync(PHY_VARS_NR_UE *ue, runmode_t mode) nr_gold_pdcch(ue,0, 2); /* - int nb_prefix_samples0 = frame_parms->nb_prefix_samples0; - frame_parms->nb_prefix_samples0 = frame_parms->nb_prefix_samples. + int nb_prefix_samples0 = fp->nb_prefix_samples0; + fp->nb_prefix_samples0 = fp->nb_prefix_samples; nr_slot_fep(ue,0, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST); nr_slot_fep(ue,1, 0, ue->ssb_offset, 0, 1, NR_PDCCH_EST); - frame_parms->nb_prefix_samples0 = nb_prefix_samples0; + fp->nb_prefix_samples0 = nb_prefix_samples0; LOG_I(PHY,"[UE %d] AUTOTEST Cell Sync : frame = %d, rx_offset %d, freq_offset %d \n", ue->Mod_id, diff --git a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c index 32beb92009..f3fa4ed55b 100644 --- a/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c +++ b/openair1/SCHED_NR_UE/phy_procedures_nr_ue.c @@ -5922,11 +5922,11 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_IN); nr_slot_fep(ue, - l, - nr_tti_rx, - 0, - 1, - 1, + l, + nr_tti_rx, + 0, + 0, + 1, NR_PDCCH_EST); VCD_SIGNAL_DUMPER_DUMP_FUNCTION_BY_NAME(VCD_SIGNAL_DUMPER_FUNCTIONS_UE_SLOT_FEP, VCD_FUNCTION_OUT); #if UE_TIMING_TRACE @@ -5934,48 +5934,51 @@ int phy_procedures_nrUE_RX(PHY_VARS_NR_UE *ue,UE_nr_rxtx_proc_t *proc,uint8_t eN #endif } } - //ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode); - //if (do_pdcch_flag) { -// if ((l==pilot1) || ((pmch_flag==1)&(l==l2))) { -// LOG_D(PHY,"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)\n",ue->Mod_id,frame_rx,eNB_id); + write_output("rxdataF.m","rxF",ue->common_vars.common_vars_rx_data_per_thread[ue->current_thread_id[nr_tti_rx>>1]].rxdataF[0],ue->frame_parms.ofdm_symbol_size*2,1,1); - //start_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]); + //ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode); + + //if (do_pdcch_flag) { + // if ((l==pilot1) || ((pmch_flag==1)&(l==l2))) { + // LOG_D(PHY,"[UE %d] Frame %d: Calling pdcch procedures (eNB %d)\n",ue->Mod_id,frame_rx,eNB_id); + + //start_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]); -//printf(">>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures init, dlsch->active=%d\n", -// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active); - if (nr_ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) { - LOG_E(PHY,"[UE %d] Frame %d, nr_tti_rx %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,nr_tti_rx); - return(-1); - } -//for (int m=0;m<1000;m++) printf("%d",m); -//printf("\n>>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures end, dlsch->active=%d\n", -// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active); - + //printf(">>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures init, dlsch->active=%d\n", + // ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active); + if (nr_ue_pdcch_procedures(eNB_id,ue,proc,abstraction_flag) == -1) { + LOG_E(PHY,"[UE %d] Frame %d, nr_tti_rx %d: Error in pdcch procedures\n",ue->Mod_id,frame_rx,nr_tti_rx); + return(-1); + } + //for (int m=0;m<1000;m++) printf("%d",m); + //printf("\n>>> at phy_procedures_nrUE_RX, nr_ue_pdcch_procedures end, dlsch->active=%d\n", + // ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active); + // preparing for PDSCH procedures -// if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1) { -// ue_pdsch_procedures(ue, -// proc, -// eNB_id, -// PDSCH, -// ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0], -// NULL, -// ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols, -// ue->frame_parms.symbols_per_tti>>1, -// abstraction_flag); -// } + // if (ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0]->active == 1) { + // ue_pdsch_procedures(ue, + // proc, + // eNB_id, + // PDSCH, + // ue->dlsch[ue->current_thread_id[nr_tti_rx]][eNB_id][0], + // NULL, + // ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols, + // ue->frame_parms.symbols_per_tti>>1, + // abstraction_flag); + // } #if 0 - //stop_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]); - //printf("nr_tti_rx %d n_pdcch_sym %d pdcch procedures %5.3f \n", - // nr_tti_rx, ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols, - // (ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]].p_time)/(cpuf*1000.0)); - LOG_D(PHY,"num_pdcch_symbols %d\n",ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols); -// } - //} - -// } // for l=1..l2 - - + //stop_meas(&ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]]); + //printf("nr_tti_rx %d n_pdcch_sym %d pdcch procedures %5.3f \n", + // nr_tti_rx, ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols, + // (ue->rx_pdcch_stats[ue->current_thread_id[nr_tti_rx]].p_time)/(cpuf*1000.0)); + LOG_D(PHY,"num_pdcch_symbols %d\n",ue->pdcch_vars[ue->current_thread_id[nr_tti_rx]][eNB_id]->num_pdcch_symbols); + // } + //} + + // } // for l=1..l2 + + ue_measurement_procedures(l-1,ue,proc,eNB_id,(nr_tti_rx<<1),abstraction_flag,mode); LOG_D(PHY," ------ end FFT/ChannelEst/PDCCH slot 0: AbsSubframe %d.%d ------ \n", frame_rx%1024, nr_tti_rx); diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 8de8a585c6..f1ec263284 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -442,11 +442,10 @@ int main(int argc, char **argv) for (int i=0;i<4;i++) gNB->pbch_pdu[i]=i+1; nr_common_signal_procedures (gNB,frame,subframe); - /* LOG_M("txsigF0.m","txsF0", gNB->common_vars.txdataF[0],frame_length_complex_samples_no_prefix,1,1); if (gNB->frame_parms.nb_antennas_tx>1) LOG_M("txsigF1.m","txsF1", gNB->common_vars.txdataF[1],frame_length_complex_samples_no_prefix,1,1); - */ + //TODO: loop over slots for (aa=0; aaframe_parms.nb_antennas_tx; aa++) { if (gNB_config->subframe_config.dl_cyclic_prefix_type.value == 1) { From 44fe00d018386ec681367ee6d08f993606ae7df4 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Wed, 7 Nov 2018 17:57:01 +0100 Subject: [PATCH 19/23] CI: unified VM scripting for option management Signed-off-by: Raphael Defosseux --- ci-scripts/Jenkinsfile-gitlab | 48 +- ci-scripts/buildOnVM.sh | 517 +++--------- ci-scripts/createVM.sh | 188 +---- ci-scripts/destroyAllRunningVM.sh | 82 +- ci-scripts/oai-ci-vm-tool | 573 ++++++++++++++ ci-scripts/reportBuildLocally.sh | 591 ++++++-------- ci-scripts/reportTestLocally.sh | 820 ++++++++----------- ci-scripts/runTestOnVM.sh | 1220 +++++++++++++---------------- ci-scripts/waitBuildOnVM.sh | 456 +++-------- 9 files changed, 1972 insertions(+), 2523 deletions(-) create mode 100755 ci-scripts/oai-ci-vm-tool diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index e02f071c2f..f170aa081f 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -118,7 +118,7 @@ pipeline { stage ("Start VM -- basic-sim") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -126,7 +126,7 @@ pipeline { stage ("Start VM -- gnb-usrp") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant gnb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant gnb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -134,7 +134,7 @@ pipeline { stage ("Start VM -- nu-ue-usrp") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant nu-ue-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant nu-ue-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -142,7 +142,7 @@ pipeline { stage ("Start VM -- enb-usrp") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -150,7 +150,7 @@ pipeline { stage ("Start VM -- enb-ethernet") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -158,7 +158,7 @@ pipeline { stage ("Start VM -- ue-ethernet") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -166,7 +166,7 @@ pipeline { stage ("Start VM -- phy-sim") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -174,7 +174,7 @@ pipeline { stage ("Start VM -- cppcheck") { steps { timeout (time: 5, unit: 'MINUTES') { - sh "./ci-scripts/buildOnVM.sh --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" + sh "./ci-scripts/oai-ci-vm-tool build --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID} --daemon" } } } @@ -185,7 +185,7 @@ pipeline { steps { gitlabCommitStatus(name: "Analysis with cppcheck") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant cppcheck --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -194,7 +194,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build eNb-USRP") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -203,7 +203,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build basic-sim") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" } } } @@ -212,7 +212,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build eNb-ethernet") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant enb-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" } } } @@ -221,7 +221,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build UE-ethernet") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant ue-ethernet --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" } } } @@ -230,7 +230,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build gNb-usrp") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant gnb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant gnb-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -239,7 +239,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build nr-UE-usrp") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant nu-ue-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant nu-ue-usrp --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -248,7 +248,7 @@ pipeline { steps { gitlabCommitStatus(name: "Build phy-sim") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/waitBuildOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool wait --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" } } } @@ -286,7 +286,7 @@ pipeline { archiveArtifacts artifacts: 'archives/vm_build_logs.zip' } if ("MERGE".equals(env.gitlabActionType)) { - sh "./ci-scripts/reportBuildLocally.sh --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}" + 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}" sh "./ci-scripts/checkAddedWarnings.sh --src-branch ${env.gitlabSourceBranch} --target-branch ${env.gitlabTargetBranch}" def res=readFile('./oai_warning_files.txt').trim(); if ("0".equals(res)) { @@ -297,7 +297,7 @@ pipeline { addGitLabMRComment comment: message } } else { - sh "./ci-scripts/reportBuildLocally.sh --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}" + sh "./ci-scripts/oai-ci-vm-tool report-build --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}" } if(fileExists('build_results.html')) { sh "sed -i -e 's#Build-ID: ${BUILD_ID}#Build-ID: ${BUILD_ID}#' -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' build_results.html" @@ -314,7 +314,7 @@ pipeline { steps { gitlabCommitStatus(name: "Test phy-sim") { timeout (time: 45, unit: 'MINUTES') { - sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant phy-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -323,7 +323,7 @@ pipeline { steps { gitlabCommitStatus(name: "Test basic-sim") { timeout (time: 20, unit: 'MINUTES') { - sh "./ci-scripts/runTestOnVM.sh --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID} --keep-vm-alive" + sh "./ci-scripts/oai-ci-vm-tool test --workspace $WORKSPACE --variant basic-sim --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -518,9 +518,9 @@ pipeline { if(fileExists('archives/vm_tests_logs.zip')) { archiveArtifacts artifacts: 'archives/vm_tests_logs.zip' if ("MERGE".equals(env.gitlabActionType)) { - sh "./ci-scripts/reportTestLocally.sh --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}" + sh "./ci-scripts/oai-ci-vm-tool report-test --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}" } else { - sh "./ci-scripts/reportTestLocally.sh --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}" + sh "./ci-scripts/oai-ci-vm-tool report-test --workspace $WORKSPACE --git-url ${GIT_URL} --job-name ${JOB_NAME} --build-id ${BUILD_ID} --trigger push --branch ${GIT_BRANCH} --commit ${GIT_COMMIT}" } if(fileExists('test_simulator_results.html')) { sh "sed -i -e 's#Build-ID: ${BUILD_ID}#Build-ID: ${BUILD_ID}#' -e 's#TEMPLATE_BUILD_TIME#${JOB_TIMESTAMP}#' test_simulator_results.html" @@ -533,7 +533,7 @@ pipeline { } stage ("Destroy all Virtual Machines") { steps { - sh "./ci-scripts/destroyAllRunningVM.sh --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}" } } } @@ -541,7 +541,7 @@ pipeline { always { script { // Stage destroy may not be run if error in previous stage - sh "./ci-scripts/destroyAllRunningVM.sh --job-name ${JOB_NAME} --build-id ${BUILD_ID}" + sh "./ci-scripts/oai-ci-vm-tool destroy --job-name ${JOB_NAME} --build-id ${BUILD_ID}" emailext attachmentsPattern: '*results*.html', body: '''Hi, Here are attached HTML report files for $PROJECT_NAME - Build # $BUILD_NUMBER - $BUILD_STATUS! diff --git a/ci-scripts/buildOnVM.sh b/ci-scripts/buildOnVM.sh index 456d874154..aed449f180 100755 --- a/ci-scripts/buildOnVM.sh +++ b/ci-scripts/buildOnVM.sh @@ -20,8 +20,8 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI VM Build Check script" +function build_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo " Requirements:" echo " -- uvtool uvtool-libvirt apt-cacher" @@ -31,9 +31,9 @@ function usage { echo "" echo "Usage:" echo "------" - echo " buildOnVM.sh [OPTIONS]" + echo " oai-ci-vm-tool build [OPTIONS]" echo "" - echo "Options:" + echo "Mandatory Options:" echo "--------" echo " --job-name #### OR -jn ####" echo " Specify the name of the Jenkins job." @@ -44,14 +44,9 @@ function usage { echo " --workspace #### OR -ws ####" echo " Specify the workspace." echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant gnb-usrp OR -v5" - echo " --variant nu-ue-usrp OR -v6" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" + echo "Options:" + echo "--------" + variant_usage echo " Specify the variant to build." echo "" echo " --keep-vm-alive OR -k" @@ -65,414 +60,120 @@ function usage { echo "" } -function variant_usage { - echo "OAI VM Build Check script" - echo " Original Author: Raphael Defosseux" - echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant gnb-usrp OR -v5" - echo " --variant nu-ue-usrp OR -v6" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" - echo "" -} - -if [ $# -lt 1 ] || [ $# -gt 9 ] -then - echo "Syntax Error: not the correct number of arguments" - echo "" - usage - exit 1 -fi - -VM_TEMPLATE=ci- -JOB_NAME=XX -BUILD_ID=XX -VM_NAME=ci-enb-usrp -VM_MEMORY=2048 -VM_CPU=4 -ARCHIVES_LOC=enb_usrp -LOG_PATTERN=.Rel15.txt -NB_PATTERN_FILES=4 -BUILD_OPTIONS="--eNB -w USRP" -KEEP_VM_ALIVE=0 -DAEMON=0 - -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 - ;; - -k|--keep-vm-alive) - KEEP_VM_ALIVE=1 - shift - ;; - -D|--daemon) - DAEMON=1 - shift - ;; - -v1) - VM_NAME=ci-enb-usrp - ARCHIVES_LOC=enb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--eNB -w USRP --mu" - shift - ;; - -v2) - VM_NAME=ci-basic-sim - ARCHIVES_LOC=basic_sim - LOG_PATTERN=basic_simulator - NB_PATTERN_FILES=2 - BUILD_OPTIONS="--basic-simulator" - VM_MEMORY=8192 - VM_CPU=4 - shift - ;; - -v3) - VM_NAME=ci-phy-sim - ARCHIVES_LOC=phy_sim - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--phy_simulators" - shift - ;; - -v4) - VM_NAME=ci-cppcheck - VM_MEMORY=8192 - ARCHIVES_LOC=cppcheck - LOG_PATTERN=cppcheck.xml - NB_PATTERN_FILES=1 - BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2 -i openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c" - shift - ;; - -v5) - VM_NAME=ci-gnb-usrp - ARCHIVES_LOC=gnb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--gNB -w USRP" - shift - ;; - -v6) - VM_NAME=ci-ue-nr-usrp - ARCHIVES_LOC=nrue_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--nrUE -w USRP" - shift - ;; - -v7) - VM_NAME=ci-enb-ethernet - ARCHIVES_LOC=enb_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET --noS1" - shift - ;; - -v8) - VM_NAME=ci-ue-ethernet - ARCHIVES_LOC=ue_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--UE -t ETHERNET --noS1" - shift - ;; - --variant) - variant="$2" - case $variant in - enb-usrp) - VM_NAME=ci-enb-usrp - ARCHIVES_LOC=enb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--eNB -w USRP --mu" - ;; - basic-sim) - VM_NAME=ci-basic-sim - ARCHIVES_LOC=basic_sim - LOG_PATTERN=basic_simulator - NB_PATTERN_FILES=2 - BUILD_OPTIONS="--basic-simulator" - VM_MEMORY=8192 - VM_CPU=4 - ;; - phy-sim) - VM_NAME=ci-phy-sim - ARCHIVES_LOC=phy_sim - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--phy_simulators" - ;; - cppcheck) - VM_NAME=ci-cppcheck - VM_MEMORY=8192 - ARCHIVES_LOC=cppcheck - LOG_PATTERN=cppcheck.xml - NB_PATTERN_FILES=1 - BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2 -i openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c" - ;; - gnb-usrp) - VM_NAME=ci-gnb-usrp - ARCHIVES_LOC=gnb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--gNB -w USRP" - ;; - nu-ue-usrp) - VM_NAME=ci-ue-nr-usrp - ARCHIVES_LOC=nrue_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--nrUE -w USRP" - ;; - enb-ethernet) - VM_NAME=ci-enb-ethernet - ARCHIVES_LOC=enb_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET --noS1" - ;; - ue-ethernet) - VM_NAME=ci-ue-ethernet - ARCHIVES_LOC=ue_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--UE -t ETHERNET --noS1" - ;; - *) - echo "" - echo "Syntax Error: Invalid Variant option -> $variant" - echo "" - variant_usage - exit 1 - esac - 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 [ ! -f /etc/apt/apt.conf.d/01proxy ] -then - echo "Missing /etc/apt/apt.conf.d/01proxy file!" - echo "Is apt-cacher installed and configured?" - exit 1 -fi - -if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] -then - VM_TEMPLATE=ci- -else - VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}- -fi - -VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"` -VM_CMDS=${VM_NAME}_cmds.txt -ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC} - -echo "VM_NAME = $VM_NAME" -echo "VM_CMD_FILE = $VM_CMDS" -echo "JENKINS_WKSP = $JENKINS_WKSP" -echo "ARCHIVES_LOC = $ARCHIVES_LOC" -echo "BUILD_OPTIONS = $BUILD_OPTIONS" - -IS_VM_ALIVE=`uvt-kvm list | grep -c $VM_NAME` - -if [ $IS_VM_ALIVE -eq 0 ] -then - echo "############################################################" - echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base" - echo "############################################################" - uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml -fi - -echo "Waiting for VM to be started" -uvt-kvm wait $VM_NAME --insecure - -VM_IP_ADDR=`uvt-kvm ip $VM_NAME` -echo "$VM_NAME has for IP addr = $VM_IP_ADDR" - -echo "############################################################" -echo "Copying GIT repo into VM ($VM_NAME)" -echo "############################################################" -scp -o StrictHostKeyChecking=no localZip.zip ubuntu@$VM_IP_ADDR:/home/ubuntu -scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$VM_IP_ADDR:/home/ubuntu - -echo "############################################################" -echo "Running install and build script on VM ($VM_NAME)" -echo "############################################################" -echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $VM_CMDS -echo "touch /home/ubuntu/.hushlogin" >> $VM_CMDS -if [[ "$VM_NAME" == *"-cppcheck"* ]] -then - if [ $DAEMON -eq 0 ] +function build_on_vm { + if [ ! -f $JENKINS_WKSP/localZip.zip ] then - echo "echo \"sudo apt-get --yes --quiet install zip cppcheck \"" >> $VM_CMDS - echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS - echo "sudo apt-get --yes install zip cppcheck >> zip-install.txt 2>&1" >> $VM_CMDS - else - echo "echo \"sudo apt-get --yes --quiet install zip daemon cppcheck \"" >> $VM_CMDS - echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS - echo "sudo apt-get --yes install zip daemon cppcheck >> zip-install.txt 2>&1" >> $VM_CMDS + echo "Missing localZip.zip file!" + STATUS=1 + return fi -else - if [ $DAEMON -eq 0 ] + if [ ! -f /etc/apt/apt.conf.d/01proxy ] then - echo "echo \"sudo apt-get --yes --quiet install zip subversion libboost-dev \"" >> $VM_CMDS - echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS - echo "sudo apt-get --yes install zip subversion libboost-dev >> zip-install.txt 2>&1" >> $VM_CMDS - else - echo "echo \"sudo apt-get --yes --quiet install zip daemon subversion libboost-dev \"" >> $VM_CMDS - echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS - echo "sudo apt-get --yes install zip daemon subversion libboost-dev >> zip-install.txt 2>&1" >> $VM_CMDS + echo "Missing /etc/apt/apt.conf.d/01proxy file!" + echo "Is apt-cacher installed and configured?" + STATUS=1 + return fi -fi -echo "mkdir tmp" >> $VM_CMDS -echo "cd tmp" >> $VM_CMDS -echo "echo \"unzip -qq -DD ../localZip.zip\"" >> $VM_CMDS -echo "unzip -qq -DD ../localZip.zip" >> $VM_CMDS -if [[ "$VM_NAME" == *"-cppcheck"* ]] -then - echo "mkdir cmake_targets/log" >> $VM_CMDS - echo "chmod 777 cmake_targets/log" >> $VM_CMDS - echo "cp /home/ubuntu/zip-install.txt cmake_targets/log" >> $VM_CMDS - echo "echo \"cppcheck $BUILD_OPTIONS . \"" >> $VM_CMDS - if [ $DAEMON -eq 0 ] - then - echo "cppcheck $BUILD_OPTIONS . 2> cmake_targets/log/cppcheck.xml 1> cmake_targets/log/cppcheck_build.txt" >> $VM_CMDS - else - echo "echo \"cppcheck $BUILD_OPTIONS .\" > ./my-vm-build.sh" >> $VM_CMDS - echo "chmod 775 ./my-vm-build.sh " >> $VM_CMDS - echo "sudo -E daemon --inherit --unsafe --name=build_daemon --chdir=/home/ubuntu/tmp -O /home/ubuntu/tmp/cmake_targets/log/cppcheck_build.txt -E /home/ubuntu/tmp/cmake_targets/log/cppcheck.xml ./my-vm-build.sh" >> $VM_CMDS - fi -else - echo "echo \"source oaienv\"" >> $VM_CMDS - echo "source oaienv" >> $VM_CMDS - echo "cd cmake_targets/" >> $VM_CMDS - echo "mkdir log" >> $VM_CMDS - echo "chmod 777 log" >> $VM_CMDS - echo "cp /home/ubuntu/zip-install.txt log" >> $VM_CMDS - if [ $DAEMON -eq 0 ] - then - echo "echo \"./build_oai -I $BUILD_OPTIONS \"" >> $VM_CMDS - echo "./build_oai -I $BUILD_OPTIONS > log/install-build.txt 2>&1" >> $VM_CMDS - else - echo "echo \"./build_oai -I $BUILD_OPTIONS\" > ./my-vm-build.sh" >> $VM_CMDS - echo "chmod 775 ./my-vm-build.sh " >> $VM_CMDS - echo "echo \"sudo -E daemon --inherit --unsafe --name=build_daemon --chdir=/home/ubuntu/tmp/cmake_targets -o /home/ubuntu/tmp/cmake_targets/log/install-build.txt ./my-vm-build.sh\"" >> $VM_CMDS - echo "sudo -E daemon --inherit --unsafe --name=build_daemon --chdir=/home/ubuntu/tmp/cmake_targets -o /home/ubuntu/tmp/cmake_targets/log/install-build.txt ./my-vm-build.sh" >> $VM_CMDS - fi -fi -ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS -if [ $DAEMON -eq 1 ] -then - rm -f $VM_CMDS - echo "STATUS is OK" - exit 0 -fi -echo "############################################################" -echo "Creating a tmp folder to store results and artifacts" -echo "############################################################" -if [ ! -d $JENKINS_WKSP/archives ] -then - mkdir $JENKINS_WKSP/archives -fi - -if [ ! -d $ARCHIVES_LOC ] -then - mkdir $ARCHIVES_LOC -fi - -scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.txt $ARCHIVES_LOC -if [[ "$VM_NAME" == *"-cppcheck"* ]] -then - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.xml $ARCHIVES_LOC -fi - -if [ $KEEP_VM_ALIVE -eq 0 ] -then echo "############################################################" - echo "Destroying VM" + echo "OAI CI VM script" echo "############################################################" - uvt-kvm destroy $VM_NAME - ssh-keygen -R $VM_IP_ADDR -fi -rm -f $VM_CMDS -echo "############################################################" -echo "Checking build status" -echo "############################################################" + echo "VM_NAME = $VM_NAME" + echo "VM_CMD_FILE = $VM_CMDS" + echo "JENKINS_WKSP = $JENKINS_WKSP" + echo "ARCHIVES_LOC = $ARCHIVES_LOC" + echo "BUILD_OPTIONS = $BUILD_OPTIONS" -LOG_FILES=`ls $ARCHIVES_LOC/*.txt $ARCHIVES_LOC/*.xml` -STATUS=0 -NB_FOUND_FILES=0 + IS_VM_ALIVE=`uvt-kvm list | grep -c $VM_NAME` -for FULLFILE in $LOG_FILES -do - if [[ $FULLFILE == *"$LOG_PATTERN"* ]] + if [ $IS_VM_ALIVE -eq 0 ] then - filename=$(basename -- "$FULLFILE") - if [ "$LOG_PATTERN" == ".Rel15.txt" ] + echo "VM_MEMORY = $VM_MEMORY MBytes" + echo "VM_CPU = $VM_CPU" + echo "############################################################" + echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base" + echo "############################################################" + uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml + fi + + echo "Waiting for VM to be started" + uvt-kvm wait $VM_NAME --insecure + + VM_IP_ADDR=`uvt-kvm ip $VM_NAME` + echo "$VM_NAME has for IP addr = $VM_IP_ADDR" + + echo "############################################################" + echo "Copying GIT repo into VM ($VM_NAME)" + echo "############################################################" + scp -o StrictHostKeyChecking=no $JENKINS_WKSP/localZip.zip ubuntu@$VM_IP_ADDR:/home/ubuntu + scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$VM_IP_ADDR:/home/ubuntu + + echo "############################################################" + echo "Running install and build script on VM ($VM_NAME)" + echo "############################################################" + echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $VM_CMDS + echo "touch /home/ubuntu/.hushlogin" >> $VM_CMDS + if [[ "$VM_NAME" == *"-cppcheck"* ]] + then + if [ $DAEMON -eq 0 ] then - PASS_PATTERN=`echo $filename | sed -e "s#$LOG_PATTERN##"` - fi - if [ "$LOG_PATTERN" == "basic_simulator" ] - then - PASS_PATTERN="lte-" - fi - if [ "$LOG_PATTERN" == "cppcheck.xml" ] - then - PASS_PATTERN="results version" - LOCAL_STAT=`egrep -c "$PASS_PATTERN" $FULLFILE` + echo "echo \"sudo apt-get --yes --quiet install zip cppcheck \"" >> $VM_CMDS + echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS + echo "sudo apt-get --yes install zip cppcheck >> zip-install.txt 2>&1" >> $VM_CMDS else - LOCAL_STAT=`egrep -c "Built target $PASS_PATTERN" $FULLFILE` + echo "echo \"sudo apt-get --yes --quiet install zip daemon cppcheck \"" >> $VM_CMDS + echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS + echo "sudo apt-get --yes install zip daemon cppcheck >> zip-install.txt 2>&1" >> $VM_CMDS + fi + else + if [ $DAEMON -eq 0 ] + then + echo "echo \"sudo apt-get --yes --quiet install zip subversion libboost-dev \"" >> $VM_CMDS + echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS + echo "sudo apt-get --yes install zip subversion libboost-dev >> zip-install.txt 2>&1" >> $VM_CMDS + else + echo "echo \"sudo apt-get --yes --quiet install zip daemon subversion libboost-dev \"" >> $VM_CMDS + echo "sudo apt-get update > zip-install.txt 2>&1" >> $VM_CMDS + echo "sudo apt-get --yes install zip daemon subversion libboost-dev >> zip-install.txt 2>&1" >> $VM_CMDS fi - 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 STATUS=-1; fi - -if [ $STATUS -eq 0 ] -then - echo "STATUS seems OK" -else - echo "STATUS failed?" -fi -exit $STATUS + echo "mkdir tmp" >> $VM_CMDS + echo "cd tmp" >> $VM_CMDS + echo "echo \"unzip -qq -DD ../localZip.zip\"" >> $VM_CMDS + echo "unzip -qq -DD ../localZip.zip" >> $VM_CMDS + if [[ "$VM_NAME" == *"-cppcheck"* ]] + then + echo "mkdir cmake_targets/log" >> $VM_CMDS + echo "chmod 777 cmake_targets/log" >> $VM_CMDS + echo "cp /home/ubuntu/zip-install.txt cmake_targets/log" >> $VM_CMDS + echo "echo \"cppcheck $BUILD_OPTIONS . \"" >> $VM_CMDS + if [ $DAEMON -eq 0 ] + then + echo "cppcheck $BUILD_OPTIONS . 2> cmake_targets/log/cppcheck.xml 1> cmake_targets/log/cppcheck_build.txt" >> $VM_CMDS + else + echo "echo \"cppcheck $BUILD_OPTIONS .\" > ./my-vm-build.sh" >> $VM_CMDS + echo "chmod 775 ./my-vm-build.sh " >> $VM_CMDS + echo "sudo -E daemon --inherit --unsafe --name=build_daemon --chdir=/home/ubuntu/tmp -O /home/ubuntu/tmp/cmake_targets/log/cppcheck_build.txt -E /home/ubuntu/tmp/cmake_targets/log/cppcheck.xml ./my-vm-build.sh" >> $VM_CMDS + fi + else + echo "echo \"source oaienv\"" >> $VM_CMDS + echo "source oaienv" >> $VM_CMDS + echo "cd cmake_targets/" >> $VM_CMDS + echo "mkdir log" >> $VM_CMDS + echo "chmod 777 log" >> $VM_CMDS + echo "cp /home/ubuntu/zip-install.txt log" >> $VM_CMDS + if [ $DAEMON -eq 0 ] + then + echo "echo \"./build_oai -I $BUILD_OPTIONS \"" >> $VM_CMDS + echo "./build_oai -I $BUILD_OPTIONS > log/install-build.txt 2>&1" >> $VM_CMDS + else + echo "echo \"./build_oai -I $BUILD_OPTIONS\" > ./my-vm-build.sh" >> $VM_CMDS + echo "chmod 775 ./my-vm-build.sh " >> $VM_CMDS + echo "echo \"sudo -E daemon --inherit --unsafe --name=build_daemon --chdir=/home/ubuntu/tmp/cmake_targets -o /home/ubuntu/tmp/cmake_targets/log/install-build.txt ./my-vm-build.sh\"" >> $VM_CMDS + echo "sudo -E daemon --inherit --unsafe --name=build_daemon --chdir=/home/ubuntu/tmp/cmake_targets -o /home/ubuntu/tmp/cmake_targets/log/install-build.txt ./my-vm-build.sh" >> $VM_CMDS + fi + fi + ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS + rm -f $VM_CMDS +} diff --git a/ci-scripts/createVM.sh b/ci-scripts/createVM.sh index 682d485e21..192008d867 100755 --- a/ci-scripts/createVM.sh +++ b/ci-scripts/createVM.sh @@ -20,8 +20,8 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI VM Creation script" +function create_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo " Requirements:" echo " -- uvtool uvtool-libvirt apt-cacher" @@ -31,9 +31,9 @@ function usage { echo "" echo "Usage:" echo "------" - echo " createVM.sh [OPTIONS]" + echo " oai-ci-vm-tool create [OPTIONS]" echo "" - echo "Options:" + echo "Mandatory Options:" echo "--------" echo " --job-name #### OR -jn ####" echo " Specify the name of the Jenkins job." @@ -41,14 +41,7 @@ function usage { echo " --build-id #### OR -id ####" echo " Specify the build ID of the Jenkins job." echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant gnb-usrp OR -v5" - echo " --variant nu-ue-usrp OR -v6" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" + variant_usage echo " Specify the variant to build." echo "" echo " --help OR -h" @@ -56,158 +49,21 @@ function usage { echo "" } -function variant_usage { - echo "OAI VM Build Check script" - echo " Original Author: Raphael Defosseux" - echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant gnb-usrp OR -v5" - echo " --variant nu-ue-usrp OR -v6" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" - echo "" +function create_vm { + echo "############################################################" + echo "OAI CI VM script" + echo "############################################################" + echo "VM_NAME = $VM_NAME" + echo "VM_MEMORY = $VM_MEMORY MBytes" + echo "VM_CPU = $VM_CPU" + + echo "############################################################" + echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base" + echo "############################################################" + uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml + echo "Waiting for VM to be started" + uvt-kvm wait $VM_NAME --insecure + + VM_IP_ADDR=`uvt-kvm ip $VM_NAME` + echo "$VM_NAME has for IP addr = $VM_IP_ADDR" } - -if [ $# -lt 1 ] || [ $# -gt 6 ] -then - echo "Syntax Error: not the correct number of arguments" - echo "" - usage - exit 1 -fi - -VM_TEMPLATE=ci- -JOB_NAME=XX -BUILD_ID=XX -VM_NAME=ci-enb-usrp -VM_MEMORY=2048 -VM_CPU=4 - -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 - ;; - -v1) - VM_NAME=ci-enb-usrp - shift - ;; - -v2) - VM_NAME=ci-basic-sim - VM_MEMORY=8192 - shift - ;; - -v3) - VM_NAME=ci-phy-sim - shift - ;; - -v4) - VM_NAME=ci-cppcheck - VM_MEMORY=8192 - shift - ;; - -v5) - VM_NAME=ci-gnb-usrp - shift - ;; - -v6) - VM_NAME=ci-ue-nr-usrp - shift - ;; - -v7) - VM_NAME=ci-enb-ethernet - shift - ;; - -v8) - VM_NAME=ci-ue-ethernet - shift - ;; - --variant) - variant="$2" - case $variant in - enb-usrp) - VM_NAME=ci-enb-usrp - ;; - basic-sim) - VM_NAME=ci-basic-sim - VM_MEMORY=8192 - ;; - phy-sim) - VM_NAME=ci-phy-sim - ;; - cppcheck) - VM_NAME=ci-cppcheck - VM_MEMORY=8192 - ;; - gnb-usrp) - VM_NAME=ci-gnb-usrp - ;; - nu-ue-usrp) - VM_NAME=ci-ue-nr-usrp - ;; - enb-ethernet) - VM_NAME=ci-enb-ethernet - ;; - ue-ethernet) - VM_NAME=ci-ue-ethernet - ;; - *) - echo "" - echo "Syntax Error: Invalid Variant option -> $variant" - echo "" - variant_usage - exit 1 - esac - shift - shift - ;; - *) - echo "Syntax Error: unknown option: $key" - echo "" - usage - exit 1 -esac -done - -if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] -then - VM_TEMPLATE=ci- -else - VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}- -fi - -VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"` -VM_CMDS=${VM_NAME}_cmds.txt - -echo "VM_NAME = $VM_NAME" -echo "VM_MEMORY = $VM_MEMORY MBytes" -echo "VM_CPU = $VM_CPU" - -echo "############################################################" -echo "Creating VM ($VM_NAME) on Ubuntu Cloud Image base" -echo "############################################################" -uvt-kvm create $VM_NAME release=xenial --memory $VM_MEMORY --cpu $VM_CPU --unsafe-caching --template ci-scripts/template-host.xml -echo "Waiting for VM to be started" -uvt-kvm wait $VM_NAME --insecure - -VM_IP_ADDR=`uvt-kvm ip $VM_NAME` -echo "$VM_NAME has for IP addr = $VM_IP_ADDR" -exit 0 diff --git a/ci-scripts/destroyAllRunningVM.sh b/ci-scripts/destroyAllRunningVM.sh index 5e152bc590..76a7fd0b50 100755 --- a/ci-scripts/destroyAllRunningVM.sh +++ b/ci-scripts/destroyAllRunningVM.sh @@ -20,15 +20,17 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI VM Destroy script" +function destroy_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" + echo " Requirements:" + echo " -- uvtool uvtool-libvirt apt-cacher" echo "" echo "Usage:" echo "------" - echo " destroyAllRunningVM.sh [OPTIONS]" + echo " oai-ci-vm-tool destroy [OPTIONS]" echo "" - echo "Options:" + echo "Mandatory Options:" echo "--------" echo " --job-name #### OR -jn ####" echo " Specify the name of the Jenkins job." @@ -36,66 +38,26 @@ function usage { echo " --build-id #### OR -id ####" echo " Specify the build ID of the Jenkins job." echo "" + echo "Options:" + echo "--------" echo " --help OR -h" echo " Print this help message." echo "" } -if [ $# -gt 4 ] -then - echo "Syntax Error: not the correct number of arguments" - echo "" - usage - exit 1 -fi +function destroy_vm { + echo "############################################################" + echo "OAI CI VM script" + echo "############################################################" + echo "VM_TEMPLATE = $VM_TEMPLATE" -VM_TEMPLATE=ci- -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 - ;; - *) - echo "Syntax Error: unknown option: $key" - echo "" - usage - exit 1 -esac -done - -if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] -then - VM_TEMPLATE=ci- -else - VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}- -fi - -LIST_CI_VM=`uvt-kvm list | grep $VM_TEMPLATE` - -for CI_VM in $LIST_CI_VM -do - VM_IP_ADDR=`uvt-kvm ip $CI_VM` - echo "VM to destroy: $CI_VM -- IP $VM_IP_ADDR" - uvt-kvm destroy $CI_VM - ssh-keygen -R $VM_IP_ADDR -done - -exit 0 + LIST_CI_VM=`uvt-kvm list | grep $VM_TEMPLATE` + for CI_VM in $LIST_CI_VM + do + VM_IP_ADDR=`uvt-kvm ip $CI_VM` + echo "VM to destroy: $CI_VM -- IP $VM_IP_ADDR" + uvt-kvm destroy $CI_VM + ssh-keygen -R $VM_IP_ADDR + done +} diff --git a/ci-scripts/oai-ci-vm-tool b/ci-scripts/oai-ci-vm-tool new file mode 100755 index 0000000000..8d3dbb4ddd --- /dev/null +++ b/ci-scripts/oai-ci-vm-tool @@ -0,0 +1,573 @@ +#!/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 top_usage { + echo "OAI CI VM script" + echo " Original Author: Raphael Defosseux" + echo " Requirements:" + echo " -- uvtool uvtool-libvirt apt-cacher" + echo " -- xenial image already synced" + echo "" + echo "Usage:" + echo "------" + echo " oai-ci-vm-tool (-h|--help) {create,destroy,build,wait,test,report-build,report-test} ..." + echo "" +} + +function variant_usage { + echo " --variant enb-usrp OR -v1" + echo " --variant basic-sim OR -v2" + echo " --variant phy-sim OR -v3" + echo " --variant cppcheck OR -v4" + echo " --variant gnb-usrp OR -v5" + echo " --variant nu-ue-usrp OR -v6" + echo " --variant enb-ethernet OR -v7" + echo " --variant ue-ethernet OR -v8" +} + +MY_DIR=$(dirname $(readlink -f $0)) +. $MY_DIR/createVM.sh +. $MY_DIR/buildOnVM.sh +. $MY_DIR/waitBuildOnVM.sh +. $MY_DIR/destroyAllRunningVM.sh +. $MY_DIR/runTestOnVM.sh +. $MY_DIR/reportBuildLocally.sh +. $MY_DIR/reportTestLocally.sh + +if [ $# -lt 1 ] +then + echo "Syntax Error: too few arguments" + echo "" + top_usage + exit 1 +fi + +VM_TEMPLATE=ci- +JOB_NAME=XX +BUILD_ID=XX +VM_NAME=ci-enb-usrp +VM_MEMORY=2048 +VM_CPU=4 +ARCHIVES_LOC=enb_usrp +LOG_PATTERN=.Rel15.txt +NB_PATTERN_FILES=4 +BUILD_OPTIONS="--eNB -w USRP" +KEEP_VM_ALIVE=0 +RUN_OPTIONS="none" +DAEMON=0 +MR_TRIG=0 +PU_TRIG=0 + +HELP_CMD=0 +CREATE_CMD=0 +BUILD_CMD=0 +WAIT_CMD=0 +DESTROY_CMD=0 +TEST_CMD=0 +REPORT_BUILD_CMD=0 +REPORT_TEST_CMD=0 +NBARGS=0 + +while [[ $# -gt 0 ]] +do +key="$1" + +case $key in + -h|--help) + HELP_CMD=1 + shift + ;; + create) + CREATE_CMD=1 + # It is implied to keep the VM when creating it + KEEP_VM_ALIVE=1 + shift + ;; + build) + BUILD_CMD=1 + shift + ;; + wait) + WAIT_CMD=1 + shift + ;; + test) + TEST_CMD=1 + shift + ;; + destroy) + DESTROY_CMD=1 + shift + ;; + report-build) + REPORT_BUILD_CMD=1 + shift + ;; + report-test) + REPORT_TEST_CMD=1 + shift + ;; + -jn|--job-name) + JOB_NAME="$2" + NBARGS=$[$NBARGS+1] + shift + shift + ;; + -id|--build-id) + BUILD_ID="$2" + NBARGS=$[$NBARGS+2] + shift + shift + ;; + -ws|--workspace) + JENKINS_WKSP="$2" + NBARGS=$[$NBARGS+4] + shift + shift + ;; + -k|--keep-vm-alive) + KEEP_VM_ALIVE=1 + NBARGS=$[$NBARGS+8] + shift + ;; + -D|--daemon) + DAEMON=1 + NBARGS=$[$NBARGS+16] + shift + ;; + -gu|--git-url) + GIT_URL="$2" + NBARGS=$[$NBARGS+32] + shift + shift + ;; + --trigger) + TRIG="$2" + case $TRIG in + merge-request) + MR_TRIG=1 + ;; + push) + PU_TRIG=1 + ;; + *) + echo "" + echo "Syntax Error: Invalid Trigger option -> $TRIG" + echo "" + trigger_usage + exit + ;; + esac + NBARGS=$[$NBARGS+64] + shift + shift + ;; + -mr) + MR_TRIG=1 + NBARGS=$[$NBARGS+64] + shift + ;; + -pu) + PU_TRIG=1 + NBARGS=$[$NBARGS+64] + shift + ;; + -sb|--src-branch) + SOURCE_BRANCH="$2" + NBARGS=$[$NBARGS+1024] + shift + shift + ;; + -sc|--src-commit) + SOURCE_COMMIT_ID="$2" + NBARGS=$[$NBARGS+2048] + shift + shift + ;; + -tb|--target-branch) + TARGET_BRANCH="$2" + NBARGS=$[$NBARGS+4096] + shift + shift + ;; + -tc|--target-commit) + TARGET_COMMIT_ID="$2" + NBARGS=$[$NBARGS+8192] + shift + shift + ;; + -br|--branch) + SOURCE_BRANCH="$2" + NBARGS=$[$NBARGS+16384] + shift + shift + ;; + -co|--commit) + SOURCE_COMMIT_ID="$2" + NBARGS=$[$NBARGS+32768] + shift + shift + ;; + -v1) + VM_NAME=ci-enb-usrp + ARCHIVES_LOC=enb_usrp + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=4 + BUILD_OPTIONS="--eNB -w USRP --mu" + NBARGS=$[$NBARGS+256] + shift + ;; + -v2) + VM_NAME=ci-basic-sim + ARCHIVES_LOC=basic_sim + LOG_PATTERN=basic_simulator + NB_PATTERN_FILES=2 + BUILD_OPTIONS="--basic-simulator" + VM_MEMORY=8192 + VM_CPU=4 + RUN_OPTIONS="complex" + NBARGS=$[$NBARGS+256] + shift + ;; + -v3) + VM_NAME=ci-phy-sim + ARCHIVES_LOC=phy_sim + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=6 + BUILD_OPTIONS="--phy_simulators" + RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" + NBARGS=$[$NBARGS+256] + shift + ;; + -v4) + VM_NAME=ci-cppcheck + VM_MEMORY=8192 + ARCHIVES_LOC=cppcheck + LOG_PATTERN=cppcheck.xml + NB_PATTERN_FILES=1 + BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2 -i openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c" + NBARGS=$[$NBARGS+256] + shift + ;; + -v5) + VM_NAME=ci-gnb-usrp + ARCHIVES_LOC=gnb_usrp + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=4 + BUILD_OPTIONS="--gNB -w USRP" + NBARGS=$[$NBARGS+256] + shift + ;; + -v6) + VM_NAME=ci-ue-nr-usrp + ARCHIVES_LOC=nrue_usrp + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=4 + BUILD_OPTIONS="--nrUE -w USRP" + NBARGS=$[$NBARGS+256] + shift + ;; + -v7) + VM_NAME=ci-enb-ethernet + ARCHIVES_LOC=enb_eth + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=6 + BUILD_OPTIONS="--eNB -t ETHERNET --noS1" + NBARGS=$[$NBARGS+256] + shift + ;; + -v8) + VM_NAME=ci-ue-ethernet + ARCHIVES_LOC=ue_eth + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=6 + BUILD_OPTIONS="--UE -t ETHERNET --noS1" + NBARGS=$[$NBARGS+256] + shift + ;; + --variant) + variant="$2" + case $variant in + enb-usrp) + VM_NAME=ci-enb-usrp + ARCHIVES_LOC=enb_usrp + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=4 + BUILD_OPTIONS="--eNB -w USRP --mu" + NBARGS=$[$NBARGS+256] + ;; + basic-sim) + VM_NAME=ci-basic-sim + ARCHIVES_LOC=basic_sim + LOG_PATTERN=basic_simulator + NB_PATTERN_FILES=2 + BUILD_OPTIONS="--basic-simulator" + VM_MEMORY=8192 + VM_CPU=4 + RUN_OPTIONS="complex" + NBARGS=$[$NBARGS+256] + ;; + phy-sim) + VM_NAME=ci-phy-sim + ARCHIVES_LOC=phy_sim + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=6 + BUILD_OPTIONS="--phy_simulators" + RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" + NBARGS=$[$NBARGS+256] + ;; + cppcheck) + VM_NAME=ci-cppcheck + VM_MEMORY=8192 + ARCHIVES_LOC=cppcheck + LOG_PATTERN=cppcheck.xml + NB_PATTERN_FILES=1 + BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2 -i openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c" + NBARGS=$[$NBARGS+256] + ;; + gnb-usrp) + VM_NAME=ci-gnb-usrp + ARCHIVES_LOC=gnb_usrp + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=4 + BUILD_OPTIONS="--gNB -w USRP" + NBARGS=$[$NBARGS+256] + ;; + nu-ue-usrp) + VM_NAME=ci-ue-nr-usrp + ARCHIVES_LOC=nrue_usrp + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=4 + BUILD_OPTIONS="--nrUE -w USRP" + NBARGS=$[$NBARGS+256] + ;; + enb-ethernet) + VM_NAME=ci-enb-ethernet + ARCHIVES_LOC=enb_eth + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=6 + BUILD_OPTIONS="--eNB -t ETHERNET --noS1" + NBARGS=$[$NBARGS+256] + ;; + ue-ethernet) + VM_NAME=ci-ue-ethernet + ARCHIVES_LOC=ue_eth + LOG_PATTERN=.Rel15.txt + NB_PATTERN_FILES=6 + BUILD_OPTIONS="--UE -t ETHERNET --noS1" + NBARGS=$[$NBARGS+256] + ;; + *) + echo "" + echo "Syntax Error: Invalid Variant option -> $variant" + echo "" + variant_usage + exit 1 + esac + shift + shift + ;; + *) + echo "Syntax Error: unknown option: $key" + echo "" + top_usage + exit 1 +esac +done + +MANY_CMDS=$[$CREATE_CMD+$BUILD_CMD+$WAIT_CMD+$DESTROY_CMD+$TEST_CMD+$REPORT_BUILD_CMD+$REPORT_TEST_CMD] +if [ $MANY_CMDS -gt 1 ] +then + echo "Syntax Error: too many commands" + top_usage + exit 1 +fi + +if [ $HELP_CMD -eq 1 ] +then + if [ $MANY_CMDS -eq 0 ] + then + top_usage + exit 0 + fi + if [ $CREATE_CMD -eq 1 ] + then + create_usage + exit 0 + fi + if [ $BUILD_CMD -eq 1 ] + then + build_usage + exit 0 + fi + if [ $WAIT_CMD -eq 1 ] + then + wait_usage + exit 0 + fi + if [ $TEST_CMD -eq 1 ] + then + run_test_usage + exit 0 + fi + if [ $DESTROY_CMD -eq 1 ] + then + destroy_usage + exit 0 + fi + if [ $REPORT_BUILD_CMD -eq 1 ] + then + report_build_usage + exit 0 + fi + if [ $REPORT_TEST_CMD -eq 1 ] + then + report_test_usage + exit 0 + fi +else + if [ $MANY_CMDS -eq 0 ] + then + echo "Syntax Error: no command" + top_usage + exit 1 + fi + # For create, mandatory options: jn, id. Optional: variant + if [ $CREATE_CMD -eq 1 ] && [ $NBARGS -ne 3 ] && [ $NBARGS -ne 259 ] + then + echo "Syntax Error: unsupported option(s) for create command" + create_usage + exit 1 + fi + # For build, mandatory options: jn, id, ws. Optional: variant, k, D + if [ $BUILD_CMD -eq 1 ] && [ $NBARGS -ne 7 ] && [ $NBARGS -ne 263 ] && [ $NBARGS -ne 15 ] && [ $NBARGS -ne 271 ] && [ $NBARGS -ne 23 ] && [ $NBARGS -ne 279 ] && [ $NBARGS -ne 31 ] && [ $NBARGS -ne 287 ] + then + echo "Syntax Error: unsupported option(s) for build command" + build_usage + exit 1 + fi + # For wait, mandatory options: jn, id, ws. Optional: variant, k + if [ $WAIT_CMD -eq 1 ] && [ $NBARGS -ne 7 ] && [ $NBARGS -ne 263 ] && [ $NBARGS -ne 15 ] && [ $NBARGS -ne 271 ] + then + echo "Syntax Error: unsupported option(s) for wait command" + wait_usage + exit 1 + fi + # For test, mandatory options: jn, id, ws. Optional: variant, k + if [ $TEST_CMD -eq 1 ] && [ $NBARGS -ne 7 ] && [ $NBARGS -ne 263 ] && [ $NBARGS -ne 15 ] && [ $NBARGS -ne 271 ] + then + echo "Syntax Error: unsupported option(s) for test command" + run_test_usage + exit 1 + fi + # For destroy, mandatory options: jn, id. + if [ $DESTROY_CMD -eq 1 ] && [ $NBARGS -ne 3 ] + then + echo "Syntax Error: unsupported option(s) for destroy command" + destroy_usage + exit 1 + fi + # For report-build, mandatory options: jn, id, ws, gu, pu, br,co. + # or: jn, id, ws, gu, mr, sb, sc, tb, tc. + if [ $REPORT_BUILD_CMD -eq 1 ] && [ $NBARGS -ne 15463 ] && [ $NBARGS -ne 49255 ] + then + echo "Syntax Error: unsupported option(s) for report-build command" + report_build_usage + exit 1 + fi + # For report-test, mandatory options: jn, id, ws, gu, pu, br,co. + # or: jn, id, ws, gu, mr, sb, sc, tb, tc. + if [ $REPORT_TEST_CMD -eq 1 ] && [ $NBARGS -ne 15463 ] && [ $NBARGS -ne 49255 ] + then + echo "Syntax Error: unsupported option(s) for report-test command" + report_test_usage + exit 1 + fi +fi + +# Checking uvt-kvm is installed +UVT_KVM_PATH=`which uvt-kvm | grep -c uvt-kvm` +if [ $UVT_KVM_PATH -eq 0 ] +then + echo "Error: uvt-kvm is not installed" + top_usage + exit 1 +fi + +if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] +then + VM_TEMPLATE=ci- +else + VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}- +fi + +VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"` +VM_CMDS=${VM_NAME}_cmds.txt +ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC} + +STATUS=0 +if [ $CREATE_CMD -eq 1 ] +then + create_vm +fi +if [ $BUILD_CMD -eq 1 ] +then + build_on_vm + if [ $DAEMON -eq 0 ] && [ $STATUS -eq 0 ] + then + check_on_vm_build + fi +fi +if [ $WAIT_CMD -eq 1 ] +then + wait_on_vm_build + if [ $STATUS -eq 0 ] + then + check_on_vm_build + fi +fi +if [ $TEST_CMD -eq 1 ] +then + ARCHIVES_LOC=${ARCHIVES_LOC}/test + run_test_on_vm +fi +if [ $DESTROY_CMD -eq 1 ] +then + destroy_vm +fi +if [ $REPORT_BUILD_CMD -eq 1 ] +then + report_build +fi +if [ $REPORT_TEST_CMD -eq 1 ] +then + report_test +fi + +# Did command pass or fail? +if [ $STATUS -eq 0 ] +then + echo "STATUS seems OK" +else + echo "STATUS failed?" +fi +exit $STATUS diff --git a/ci-scripts/reportBuildLocally.sh b/ci-scripts/reportBuildLocally.sh index e0336c6dab..2e78e6f6cd 100755 --- a/ci-scripts/reportBuildLocally.sh +++ b/ci-scripts/reportBuildLocally.sh @@ -20,14 +20,13 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI Local Build Report script" +function report_build_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo "" echo "Usage:" echo "------" - echo "" - echo " reportBuildLocally.sh [OPTIONS]" + echo " oai-ci-vm-tool report-build [OPTIONS]" echo "" echo "Options:" echo "--------" @@ -47,6 +46,9 @@ function usage { 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 " --trigger merge-request OR -mr" echo " --trigger push OR -pu" echo " Specify trigger action of the Jenkins job. Either a merge-request event or a push event." @@ -79,7 +81,7 @@ function usage { } function trigger_usage { - echo "OAI Local Build Report script" + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo "" echo " --trigger merge-request OR -mr" @@ -153,8 +155,8 @@ function summary_table_row { echo " $1" >> ./build_results.html if [ -f $2 ] then - STATUS=`egrep -c "$3" $2` - if [ $STATUS -eq 1 ] + BUILD_STATUS=`egrep -c "$3" $2` + if [ $BUILD_STATUS -eq 1 ] then echo " OK" >> ./build_results.html else @@ -263,384 +265,245 @@ function sca_summary_table_footer { echo "

Graphical Interface tool : cppcheck-gui -l cppcheck/cppcheck.xml

" >> ./build_results.html } -jb_checker=0 -mr_checker=0 -pu_checker=0 -MR_TRIG=0 -PU_TRIG=0 -while [[ $# -gt 0 ]] -do -key="$1" +function report_build { + echo "############################################################" + echo "OAI CI VM script" + echo "############################################################" -case $key in - -h|--help) - shift - usage - exit 0 - ;; - -gu|--git-url) - GIT_URL="$2" - let "jb_checker|=0x1" - shift - shift - ;; - -jn|--job-name) - JOB_NAME="$2" - let "jb_checker|=0x2" - shift - shift - ;; - -id|--build-id) - BUILD_ID="$2" - let "jb_checker|=0x4" - shift - shift - ;; - --trigger) - TRIG="$2" - case $TRIG in - merge-request) - MR_TRIG=1 - ;; - push) - PU_TRIG=1 - ;; - *) - echo "" - echo "Syntax Error: Invalid Trigger option -> $TRIG" - echo "" - trigger_usage - exit - ;; - esac - let "jb_checker|=0x8" - shift - shift - ;; - -mr) - MR_TRIG=1 - let "jb_checker|=0x8" - shift - ;; - -pu) - PU_TRIG=1 - let "jb_checker|=0x8" - shift - ;; - -sb|--src-branch) - SOURCE_BRANCH="$2" - let "mr_checker|=0x1" - shift - shift - ;; - -sc|--src-commit) - SOURCE_COMMIT_ID="$2" - let "mr_checker|=0x2" - shift - shift - ;; - -tb|--target-branch) - TARGET_BRANCH="$2" - let "mr_checker|=0x4" - shift - shift - ;; - -tc|--target-commit) - TARGET_COMMIT_ID="$2" - let "mr_checker|=0x8" - shift - shift - ;; - -br|--branch) - SOURCE_BRANCH="$2" - let "pu_checker|=0x1" - shift - shift - ;; - -co|--commit) - SOURCE_COMMIT_ID="$2" - let "pu_checker|=0x2" - shift - shift - ;; - *) - echo "Syntax Error: unknown option: $key" - echo "" - usage - exit 1 - ;; -esac + echo "JENKINS_WKSP = $JENKINS_WKSP" -done - -if [ $jb_checker -ne 15 ] -then - echo "" - echo "Syntax Error: missing job information." - # TODO : list missing info - echo "" - exit 1 -fi - -if [ $PU_TRIG -eq 1 ] && [ $MR_TRIG -eq 1 ] -then - echo "" - echo "Syntax Error: trigger action incoherent." - echo "" - trigger_usage - exit 1 -fi - -if [ $PU_TRIG -eq 1 ] -then - if [ $pu_checker -ne 3 ] + cd ${JENKINS_WKSP} + echo "" > ./build_results.html + echo "" >> ./build_results.html + echo "" >> ./build_results.html + echo " Build Results for $JOB_NAME job build #$BUILD_ID" >> ./build_results.html + echo " " >> ./build_results.html + echo "" >> ./build_results.html + echo "" >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo "
" >> ./build_results.html + echo " " >> ./build_results.html + echo " \"\"" >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID" >> ./build_results.html + echo "
" >> ./build_results.html + echo "
" >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + if [ $PU_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi + if [ $MR_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi + echo " " >> ./build_results.html + if [ $PU_TRIG -eq 1 ] then - echo "" - echo "Syntax Error: missing push information." - # TODO : list missing info - echo "" - exit 1 + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html fi -fi - -if [ $MR_TRIG -eq 1 ] -then - if [ $mr_checker -ne 15 ] + if [ $MR_TRIG -eq 1 ] then - echo "" - echo "Syntax Error: missing merge-request information." - # TODO : list missing info - echo "" - exit 1 + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html fi -fi + echo "
Build Start Time (UTC)TEMPLATE_BUILD_TIME
GIT Repository$GIT_URL
Job TriggerPush EventMerge-Request
Branch$SOURCE_BRANCH
Commit ID$SOURCE_COMMIT_ID
Source Branch$SOURCE_BRANCH
Source Commit ID$SOURCE_COMMIT_ID
Target Branch$TARGET_BRANCH
Target Commit ID$TARGET_COMMIT_ID
" >> ./build_results.html + echo "

Build Summary

" >> ./build_results.html -echo "" > ./build_results.html -echo "" >> ./build_results.html -echo "" >> ./build_results.html -echo " Build Results for $JOB_NAME job build #$BUILD_ID" >> ./build_results.html -echo " " >> ./build_results.html -echo "" >> ./build_results.html -echo "" >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo "
" >> ./build_results.html -echo " " >> ./build_results.html -echo " \"\"" >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID" >> ./build_results.html -echo "
" >> ./build_results.html -echo "
" >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -echo " " >> ./build_results.html -if [ $PU_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi -if [ $MR_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi -echo " " >> ./build_results.html -if [ $PU_TRIG -eq 1 ] -then - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html -fi -if [ $MR_TRIG -eq 1 ] -then - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html -fi -echo "
Build Start Time (UTC)TEMPLATE_BUILD_TIME
GIT Repository$GIT_URL
Job TriggerPush EventMerge-Request
Branch$SOURCE_BRANCH
Commit ID$SOURCE_COMMIT_ID
Source Branch$SOURCE_BRANCH
Source Commit ID$SOURCE_COMMIT_ID
Target Branch$TARGET_BRANCH
Target Commit ID$TARGET_COMMIT_ID
" >> ./build_results.html -echo "

Build Summary

" >> ./build_results.html - -if [ -f ./oai_rules_result.txt ] -then - echo "

OAI Coding / Formatting Guidelines Check

" >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - echo " " >> ./build_results.html - NB_FILES=`cat ./oai_rules_result.txt` - if [ $NB_FILES = "0" ] - then - if [ $PU_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi - if [ $MR_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi - echo " " >> ./build_results.html - echo "
Result:All files in repository follow OAI rules. All modified files in Merge-Request follow OAI rules.
" >> ./build_results.html - else - if [ $PU_TRIG -eq 1 ]; then echo " $NB_FILES files in repository DO NOT follow OAI rules. " >> ./build_results.html; fi - if [ $MR_TRIG -eq 1 ]; then echo " $NB_FILES modified files in Merge-Request DO NOT follow OAI rules." >> ./build_results.html; fi - echo " " >> ./build_results.html - if [ -f ./oai_rules_result_list.txt ] - then - awk '{print " "$1""}' ./oai_rules_result_list.txt >> ./build_results.html + if [ -f ./oai_rules_result.txt ] + then + echo "

OAI Coding / Formatting Guidelines Check

" >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + echo " " >> ./build_results.html + NB_FILES=`cat ./oai_rules_result.txt` + if [ $NB_FILES = "0" ] + then + if [ $PU_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi + if [ $MR_TRIG -eq 1 ]; then echo " " >> ./build_results.html; fi + echo " " >> ./build_results.html + echo "
Result:All files in repository follow OAI rules. All modified files in Merge-Request follow OAI rules.
" >> ./build_results.html + else + if [ $PU_TRIG -eq 1 ]; then echo " $NB_FILES files in repository DO NOT follow OAI rules. " >> ./build_results.html; fi + if [ $MR_TRIG -eq 1 ]; then echo " $NB_FILES modified files in Merge-Request DO NOT follow OAI rules." >> ./build_results.html; fi + echo " " >> ./build_results.html + if [ -f ./oai_rules_result_list.txt ] + then + awk '{print " "$1""}' ./oai_rules_result_list.txt >> ./build_results.html + fi + echo " " >> ./build_results.html + echo "

Please apply the following command to this(ese) file(s):

" >> ./build_results.html + echo "

astyle --options=ci-scripts/astyle-options.txt filename(s)

" >> ./build_results.html fi - echo " " >> ./build_results.html - echo "

Please apply the following command to this(ese) file(s):

" >> ./build_results.html - echo "

astyle --options=ci-scripts/astyle-options.txt filename(s)

" >> ./build_results.html fi -fi -echo "

Ubuntu 16.04 LTS -- Summary

" >> ./build_results.html + echo "

Ubuntu 16.04 LTS -- Summary

" >> ./build_results.html -sca_summary_table_header "OAI Static Code Analysis with CPPCHECK" -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Uninitialized variable" uninitvar -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Uninitialized struct member" uninitStructMember -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Memory leak" memleak -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Memory is freed twice" doubleFree -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Resource leak" resourceLeak -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Possible null pointer dereference" nullPointer -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Array access out of bounds" arrayIndexOutOfBounds -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Buffer is accessed out of bounds" bufferAccessOutOfBounds -sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Expression depends on order of evaluation of side effects" unknownEvaluationOrder -sca_summary_table_footer ./archives/cppcheck/cppcheck.xml + sca_summary_table_header "OAI Static Code Analysis with CPPCHECK" + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Uninitialized variable" uninitvar + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Uninitialized struct member" uninitStructMember + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Memory leak" memleak + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Memory is freed twice" doubleFree + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Resource leak" resourceLeak + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Possible null pointer dereference" nullPointer + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Array access out of bounds" arrayIndexOutOfBounds + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Buffer is accessed out of bounds" bufferAccessOutOfBounds + sca_summary_table_row ./archives/cppcheck/cppcheck.xml "Expression depends on order of evaluation of side effects" unknownEvaluationOrder + sca_summary_table_footer ./archives/cppcheck/cppcheck.xml -summary_table_header "OAI Build eNB -- USRP option" -summary_table_row "LTE SoftModem - Release 15" ./archives/enb_usrp/lte-softmodem.Rel15.txt "Built target lte-softmodem" ./enb_usrp_row1.html -summary_table_row "Coding - Release 15" ./archives/enb_usrp/coding.Rel15.txt "Built target coding" ./enb_usrp_row2.html -summary_table_row "OAI USRP device if - Release 15" ./archives/enb_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./enb_usrp_row3.html -summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_usrp_row4.html -summary_table_footer - -summary_table_header "OAI Build basic simulator option" -summary_table_row "Basic Simulator eNb - Release 15" ./archives/basic_sim/basic_simulator_enb.txt "Built target lte-softmodem" ./basic_sim_row1.html -summary_table_row "Basic Simulator UE - Release 15" ./archives/basic_sim/basic_simulator_ue.txt "Built target lte-uesoftmodem" ./basic_sim_row2.html -summary_table_row "Conf 2 UE data - Release 15" ./archives/basic_sim/conf2uedata.Rel15.txt "Built target conf2uedata" ./basic_sim_row3.html -summary_table_footer - -summary_table_header "OAI Build Physical simulators option" -summary_table_row "DL Simulator - Release 15" ./archives/phy_sim/dlsim.Rel15.txt "Built target dlsim" ./phy_sim_row1.html -summary_table_row "UL Simulator - Release 15" ./archives/phy_sim/ulsim.Rel15.txt "Built target ulsim" ./phy_sim_row2.html -summary_table_row "Coding - Release 15" ./archives/phy_sim/coding.Rel15.txt "Built target coding" ./phy_sim_row3.html -if [ -f ./archives/phy_sim/ldpctest.Rel15.txt ] -then - summary_table_row "LDPC Test - Release 15" ./archives/phy_sim/ldpctest.Rel15.txt "Built target ldpctest" ./phy_sim_row4.html -fi -if [ -f ./archives/phy_sim/polartest.Rel15.txt ] -then - summary_table_row "Polar Test - Release 15" ./archives/phy_sim/polartest.Rel15.txt "Built target polartest" ./phy_sim_row5.html -fi -if [ -f ./archives/phy_sim/nr_pbchsim.Rel15.txt ] -then - summary_table_row "PBCH Test - Release 15" ./archives/phy_sim/nr_pbchsim.Rel15.txt "Built target nr_pbchsim" ./phy_sim_row6.html -fi -summary_table_footer - - -if [ -f archives/gnb_usrp/nr-softmodem.Rel15.txt ] -then - summary_table_header "OAI Build gNB -- USRP option" - summary_table_row "LTE SoftModem - Release 15" ./archives/gnb_usrp/nr-softmodem.Rel15.txt "Built target nr-softmodem" ./gnb_usrp_row1.html - summary_table_row "Coding - Release 15" ./archives/gnb_usrp/coding.Rel15.txt "Built target coding" ./gnb_usrp_row2.html - summary_table_row "OAI USRP device if - Release 15" ./archives/gnb_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./gnb_usrp_row3.html - summary_table_row "Parameters Lib Config - Release 15" ./archives/gnb_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./gnb_usrp_row4.html + summary_table_header "OAI Build eNB -- USRP option" + summary_table_row "LTE SoftModem - Release 15" ./archives/enb_usrp/lte-softmodem.Rel15.txt "Built target lte-softmodem" ./enb_usrp_row1.html + summary_table_row "Coding - Release 15" ./archives/enb_usrp/coding.Rel15.txt "Built target coding" ./enb_usrp_row2.html + summary_table_row "OAI USRP device if - Release 15" ./archives/enb_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./enb_usrp_row3.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_usrp_row4.html summary_table_footer -fi -if [ -f archives/nrue_usrp/nr-uesoftmodem.Rel15.txt ] -then - summary_table_header "OAI Build 5G NR UE -- USRP option" - summary_table_row "UE SoftModem - Release 15" ./archives/nrue_usrp/nr-uesoftmodem.Rel15.txt "Built target nr-uesoftmodem" ./nrue_usrp_row1.html - summary_table_row "Coding - Release 15" ./archives/nrue_usrp/coding.Rel15.txt "Built target coding" ./nrue_usrp_row2.html - summary_table_row "OAI USRP device if - Release 15" ./archives/nrue_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./nrue_usrp_row3.html - summary_table_row "Parameters Lib Config - Release 15" ./archives/nrue_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./nrue_usrp_row4.html + summary_table_header "OAI Build basic simulator option" + summary_table_row "Basic Simulator eNb - Release 15" ./archives/basic_sim/basic_simulator_enb.txt "Built target lte-softmodem" ./basic_sim_row1.html + summary_table_row "Basic Simulator UE - Release 15" ./archives/basic_sim/basic_simulator_ue.txt "Built target lte-uesoftmodem" ./basic_sim_row2.html + summary_table_row "Conf 2 UE data - Release 15" ./archives/basic_sim/conf2uedata.Rel15.txt "Built target conf2uedata" ./basic_sim_row3.html summary_table_footer -fi -summary_table_header "OAI Build eNB -- ETHERNET transport option" -summary_table_row "LTE SoftModem w/o S1 - Release 15" ./archives/enb_eth/lte-softmodem-nos1.Rel15.txt "Built target lte-softmodem" ./enb_eth_row1.html -summary_table_row "Coding - Release 15" ./archives/enb_eth/coding.Rel15.txt "Built target coding" ./enb_eth_row2.html -summary_table_row "OAI ETHERNET transport - Release 15" ./archives/enb_eth/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./enb_eth_row3.html -summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_eth/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_eth_row4.html -summary_table_row "RB Tools - Release 15" ./archives/enb_eth/rb_tool.Rel15.txt "Built target rb_tool" ./enb_eth_row5.html -summary_table_row "NAS Mesh - Release 15" ./archives/enb_eth/nasmesh.Rel15.txt "Built target nasmesh" ./enb_eth_row6.html -summary_table_footer + summary_table_header "OAI Build Physical simulators option" + summary_table_row "DL Simulator - Release 15" ./archives/phy_sim/dlsim.Rel15.txt "Built target dlsim" ./phy_sim_row1.html + summary_table_row "UL Simulator - Release 15" ./archives/phy_sim/ulsim.Rel15.txt "Built target ulsim" ./phy_sim_row2.html + summary_table_row "Coding - Release 15" ./archives/phy_sim/coding.Rel15.txt "Built target coding" ./phy_sim_row3.html + if [ -f ./archives/phy_sim/ldpctest.Rel15.txt ] + then + summary_table_row "LDPC Test - Release 15" ./archives/phy_sim/ldpctest.Rel15.txt "Built target ldpctest" ./phy_sim_row4.html + fi + if [ -f ./archives/phy_sim/polartest.Rel15.txt ] + then + summary_table_row "Polar Test - Release 15" ./archives/phy_sim/polartest.Rel15.txt "Built target polartest" ./phy_sim_row5.html + fi + if [ -f ./archives/phy_sim/nr_pbchsim.Rel15.txt ] + then + summary_table_row "PBCH Test - Release 15" ./archives/phy_sim/nr_pbchsim.Rel15.txt "Built target nr_pbchsim" ./phy_sim_row6.html + fi + summary_table_footer -summary_table_header "OAI Build UE -- ETHERNET transport option" -summary_table_row "LTE UE SoftModem w/o S1 - Release 15" ./archives/ue_eth/lte-uesoftmodem-nos1.Rel15.txt "Built target lte-uesoftmodem" ./ue_eth_row1.html -summary_table_row "Coding - Release 15" ./archives/ue_eth/coding.Rel15.txt "Built target coding" ./ue_eth_row2.html -summary_table_row "OAI ETHERNET transport - Release 15" ./archives/ue_eth/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./ue_eth_row3.html -summary_table_row "Parameters Lib Config - Release 15" ./archives/ue_eth/params_libconfig.Rel15.txt "Built target params_libconfig" ./ue_eth_row4.html -summary_table_row "RB Tools - Release 15" ./archives/ue_eth/rb_tool.Rel15.txt "Built target rb_tool" ./ue_eth_row5.html -summary_table_row "NAS Mesh - Release 15" ./archives/ue_eth/nasmesh.Rel15.txt "Built target nasmesh" ./ue_eth_row6.html -summary_table_footer -echo "

Red Hat (CentOS Linux release 7.4.1708) -- Summary

" >> ./build_results.html + if [ -f archives/gnb_usrp/nr-softmodem.Rel15.txt ] + then + summary_table_header "OAI Build gNB -- USRP option" + summary_table_row "LTE SoftModem - Release 15" ./archives/gnb_usrp/nr-softmodem.Rel15.txt "Built target nr-softmodem" ./gnb_usrp_row1.html + summary_table_row "Coding - Release 15" ./archives/gnb_usrp/coding.Rel15.txt "Built target coding" ./gnb_usrp_row2.html + summary_table_row "OAI USRP device if - Release 15" ./archives/gnb_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./gnb_usrp_row3.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/gnb_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./gnb_usrp_row4.html + summary_table_footer + fi -summary_table_header "Red Hat -- OAI Build eNB -- USRP option" -summary_table_row "LTE SoftModem - Release 15" ./archives/red_hat/lte-softmodem.Rel15.txt "Built target lte-softmodem" ./enb_usrp_rh_row1.html -summary_table_row "Coding - Release 15" ./archives/red_hat/coding.Rel15.txt "Built target coding" ./enb_usrp_rh_row2.html -summary_table_row "OAI USRP device if - Release 15" ./archives/red_hat/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./enb_usrp_rh_row3.html -summary_table_row "Parameters Lib Config - Release 15" ./archives/red_hat/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_usrp_rh_row4.html -summary_table_footer + if [ -f archives/nrue_usrp/nr-uesoftmodem.Rel15.txt ] + then + summary_table_header "OAI Build 5G NR UE -- USRP option" + summary_table_row "UE SoftModem - Release 15" ./archives/nrue_usrp/nr-uesoftmodem.Rel15.txt "Built target nr-uesoftmodem" ./nrue_usrp_row1.html + summary_table_row "Coding - Release 15" ./archives/nrue_usrp/coding.Rel15.txt "Built target coding" ./nrue_usrp_row2.html + summary_table_row "OAI USRP device if - Release 15" ./archives/nrue_usrp/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./nrue_usrp_row3.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/nrue_usrp/params_libconfig.Rel15.txt "Built target params_libconfig" ./nrue_usrp_row4.html + summary_table_footer + fi -echo "

Details

" >> ./build_results.html + summary_table_header "OAI Build eNB -- ETHERNET transport option" + summary_table_row "LTE SoftModem w/o S1 - Release 15" ./archives/enb_eth/lte-softmodem-nos1.Rel15.txt "Built target lte-softmodem" ./enb_eth_row1.html + summary_table_row "Coding - Release 15" ./archives/enb_eth/coding.Rel15.txt "Built target coding" ./enb_eth_row2.html + summary_table_row "OAI ETHERNET transport - Release 15" ./archives/enb_eth/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./enb_eth_row3.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/enb_eth/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_eth_row4.html + summary_table_row "RB Tools - Release 15" ./archives/enb_eth/rb_tool.Rel15.txt "Built target rb_tool" ./enb_eth_row5.html + summary_table_row "NAS Mesh - Release 15" ./archives/enb_eth/nasmesh.Rel15.txt "Built target nasmesh" ./enb_eth_row6.html + summary_table_footer -for DETAILS_TABLE in `ls ./enb_usrp_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -for DETAILS_TABLE in `ls ./basic_sim_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -for DETAILS_TABLE in `ls ./phy_sim_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done + summary_table_header "OAI Build UE -- ETHERNET transport option" + summary_table_row "LTE UE SoftModem w/o S1 - Release 15" ./archives/ue_eth/lte-uesoftmodem-nos1.Rel15.txt "Built target lte-uesoftmodem" ./ue_eth_row1.html + summary_table_row "Coding - Release 15" ./archives/ue_eth/coding.Rel15.txt "Built target coding" ./ue_eth_row2.html + summary_table_row "OAI ETHERNET transport - Release 15" ./archives/ue_eth/oai_eth_transpro.Rel15.txt "Built target oai_eth_transpro" ./ue_eth_row3.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/ue_eth/params_libconfig.Rel15.txt "Built target params_libconfig" ./ue_eth_row4.html + summary_table_row "RB Tools - Release 15" ./archives/ue_eth/rb_tool.Rel15.txt "Built target rb_tool" ./ue_eth_row5.html + summary_table_row "NAS Mesh - Release 15" ./archives/ue_eth/nasmesh.Rel15.txt "Built target nasmesh" ./ue_eth_row6.html + summary_table_footer -for DETAILS_TABLE in `ls ./gnb_usrp_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -for DETAILS_TABLE in `ls ./nrue_usrp_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -for DETAILS_TABLE in `ls ./enb_eth_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -for DETAILS_TABLE in `ls ./ue_eth_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -for DETAILS_TABLE in `ls ./enb_usrp_rh_row*.html` -do - cat $DETAILS_TABLE >> ./build_results.html -done -rm -f ./enb_usrp_row*.html ./basic_sim_row*.html ./phy_sim_row*.html ./enb_eth_row*.html ./ue_eth_row*.html ./enb_usrp_rh_row*.html + if [ -e ./archives/red_hat ] + then + echo "

Red Hat (CentOS Linux release 7.4.1708) -- Summary

" >> ./build_results.html -echo "" >> ./build_results.html -echo "" >> ./build_results.html + summary_table_header "Red Hat -- OAI Build eNB -- USRP option" + summary_table_row "LTE SoftModem - Release 15" ./archives/red_hat/lte-softmodem.Rel15.txt "Built target lte-softmodem" ./enb_usrp_rh_row1.html + summary_table_row "Coding - Release 15" ./archives/red_hat/coding.Rel15.txt "Built target coding" ./enb_usrp_rh_row2.html + summary_table_row "OAI USRP device if - Release 15" ./archives/red_hat/oai_usrpdevif.Rel15.txt "Built target oai_usrpdevif" ./enb_usrp_rh_row3.html + summary_table_row "Parameters Lib Config - Release 15" ./archives/red_hat/params_libconfig.Rel15.txt "Built target params_libconfig" ./enb_usrp_rh_row4.html + summary_table_footer + fi -exit 0 + echo "

Details

" >> ./build_results.html + + for DETAILS_TABLE in `ls ./enb_usrp_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + for DETAILS_TABLE in `ls ./basic_sim_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + for DETAILS_TABLE in `ls ./phy_sim_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + + for DETAILS_TABLE in `ls ./gnb_usrp_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + for DETAILS_TABLE in `ls ./nrue_usrp_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + for DETAILS_TABLE in `ls ./enb_eth_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + for DETAILS_TABLE in `ls ./ue_eth_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + if [ -e ./archives/red_hat ] + then + for DETAILS_TABLE in `ls ./enb_usrp_rh_row*.html` + do + cat $DETAILS_TABLE >> ./build_results.html + done + fi + rm -f ./*_row*.html + + echo "" >> ./build_results.html + echo "" >> ./build_results.html +} diff --git a/ci-scripts/reportTestLocally.sh b/ci-scripts/reportTestLocally.sh index e00956199c..7bbf52ca2b 100755 --- a/ci-scripts/reportTestLocally.sh +++ b/ci-scripts/reportTestLocally.sh @@ -20,14 +20,13 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI Test Report script" +function report_test_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo "" echo "Usage:" echo "------" - echo "" - echo " reportTestLocally.sh [OPTIONS]" + echo " oai-ci-vm-tool report-test [OPTIONS]" echo "" echo "Options:" echo "--------" @@ -47,6 +46,9 @@ function usage { 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 " --trigger merge-request OR -mr" echo " --trigger push OR -pu" echo " Specify trigger action of the Jenkins job. Either a merge-request event or a push event." @@ -78,513 +80,375 @@ function usage { echo "" } -function trigger_usage { - echo "OAI Test Report script" - echo " Original Author: Raphael Defosseux" - echo "" - echo " --trigger merge-request OR -mr" - echo " --trigger push OR -pu" - echo " Specify trigger action of the Jenkins job. Either a merge-request event or a push event." - echo "" -} +function report_test { + echo "############################################################" + echo "OAI CI VM script" + echo "############################################################" -jb_checker=0 -mr_checker=0 -pu_checker=0 -MR_TRIG=0 -PU_TRIG=0 -while [[ $# -gt 0 ]] -do -key="$1" + echo "JENKINS_WKSP = $JENKINS_WKSP" -case $key in - -h|--help) - shift - usage - exit 0 - ;; - -gu|--git-url) - GIT_URL="$2" - let "jb_checker|=0x1" - shift - shift - ;; - -jn|--job-name) - JOB_NAME="$2" - let "jb_checker|=0x2" - shift - shift - ;; - -id|--build-id) - BUILD_ID="$2" - let "jb_checker|=0x4" - shift - shift - ;; - --trigger) - TRIG="$2" - case $TRIG in - merge-request) - MR_TRIG=1 - ;; - push) - PU_TRIG=1 - ;; - *) - echo "" - echo "Syntax Error: Invalid Trigger option -> $TRIG" - echo "" - trigger_usage - exit - ;; - esac - let "jb_checker|=0x8" - shift - shift - ;; - -mr) - MR_TRIG=1 - let "jb_checker|=0x8" - shift - ;; - -pu) - PU_TRIG=1 - let "jb_checker|=0x8" - shift - ;; - -sb|--src-branch) - SOURCE_BRANCH="$2" - let "mr_checker|=0x1" - shift - shift - ;; - -sc|--src-commit) - SOURCE_COMMIT_ID="$2" - let "mr_checker|=0x2" - shift - shift - ;; - -tb|--target-branch) - TARGET_BRANCH="$2" - let "mr_checker|=0x4" - shift - shift - ;; - -tc|--target-commit) - TARGET_COMMIT_ID="$2" - let "mr_checker|=0x8" - shift - shift - ;; - -br|--branch) - SOURCE_BRANCH="$2" - let "pu_checker|=0x1" - shift - shift - ;; - -co|--commit) - SOURCE_COMMIT_ID="$2" - let "pu_checker|=0x2" - shift - shift - ;; - *) - echo "Syntax Error: unknown option: $key" - echo "" - usage - exit 1 - ;; -esac - -done - -if [ $jb_checker -ne 15 ] -then - echo "" - echo "Syntax Error: missing job information." - # TODO : list missing info - echo "" - exit 1 -fi - -if [ $PU_TRIG -eq 1 ] && [ $MR_TRIG -eq 1 ] -then - echo "" - echo "Syntax Error: trigger action incoherent." - echo "" - trigger_usage - exit 1 -fi - -if [ $PU_TRIG -eq 1 ] -then - if [ $pu_checker -ne 3 ] - then - echo "" - echo "Syntax Error: missing push information." - # TODO : list missing info - echo "" - exit 1 - fi -fi - -if [ $MR_TRIG -eq 1 ] -then - if [ $mr_checker -ne 15 ] - then - echo "" - echo "Syntax Error: missing merge-request information." - # TODO : list missing info - echo "" - exit 1 - fi -fi - -echo "" > ./test_simulator_results.html -echo "" >> ./test_simulator_results.html -echo "" >> ./test_simulator_results.html -echo " Simulator Results for $JOB_NAME job build #$BUILD_ID" >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo "" >> ./test_simulator_results.html -echo "" >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo "
" >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " \"\"" >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID" >> ./test_simulator_results.html -echo "
" >> ./test_simulator_results.html -echo "
" >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -echo " " >> ./test_simulator_results.html -if [ $PU_TRIG -eq 1 ]; then echo " " >> ./test_simulator_results.html; fi -if [ $MR_TRIG -eq 1 ]; then echo " " >> ./test_simulator_results.html; fi -echo " " >> ./test_simulator_results.html -if [ $PU_TRIG -eq 1 ] -then - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html -fi -if [ $MR_TRIG -eq 1 ] -then - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html -fi -echo "
Build Start Time (UTC)TEMPLATE_BUILD_TIME
GIT Repository$GIT_URL
Job TriggerPush EventMerge-Request
Branch$SOURCE_BRANCH
Commit ID$SOURCE_COMMIT_ID
Source Branch$SOURCE_BRANCH
Source Commit ID$SOURCE_COMMIT_ID
Target Branch$TARGET_BRANCH
Target Commit ID$TARGET_COMMIT_ID
" >> ./test_simulator_results.html -echo "

Test Summary

" >> ./test_simulator_results.html - -ARCHIVES_LOC=archives/basic_sim/test -if [ -d $ARCHIVES_LOC ] -then - echo "

Basic Simulator Check

" >> ./test_simulator_results.html + cd ${JENKINS_WKSP} + echo "" > ./test_simulator_results.html + echo "" >> ./test_simulator_results.html + echo "" >> ./test_simulator_results.html + echo " Simulator Results for $JOB_NAME job build #$BUILD_ID" >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo "" >> ./test_simulator_results.html + echo "" >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo "
" >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " \"\"" >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " Job Summary -- Job: $JOB_NAME -- Build-ID: $BUILD_ID" >> ./test_simulator_results.html + echo "
" >> ./test_simulator_results.html + echo "
" >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + if [ $PU_TRIG -eq 1 ]; then echo " " >> ./test_simulator_results.html; fi + if [ $MR_TRIG -eq 1 ]; then echo " " >> ./test_simulator_results.html; fi + echo " " >> ./test_simulator_results.html + if [ $PU_TRIG -eq 1 ] + then + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + fi + if [ $MR_TRIG -eq 1 ] + then + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + fi + echo "
Log File NameCommandStatusStatistics
Build Start Time (UTC)TEMPLATE_BUILD_TIME
GIT Repository$GIT_URL
Job TriggerPush EventMerge-Request
Branch$SOURCE_BRANCH
Commit ID$SOURCE_COMMIT_ID
Source Branch$SOURCE_BRANCH
Source Commit ID$SOURCE_COMMIT_ID
Target Branch$TARGET_BRANCH
Target Commit ID$TARGET_COMMIT_ID
" >> ./test_simulator_results.html + echo "

Test Summary

" >> ./test_simulator_results.html - TRANS_MODES=("fdd" "tdd") - BW_CASES=(05 10 20) - for TMODE in ${TRANS_MODES[@]} - do - for BW in ${BW_CASES[@]} + ARCHIVES_LOC=archives/basic_sim/test + if [ -d $ARCHIVES_LOC ] + then + echo "

Basic Simulator Check

" >> ./test_simulator_results.html + + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + + TRANS_MODES=("fdd" "tdd") + BW_CASES=(05 10 20) + for TMODE in ${TRANS_MODES[@]} do - ENB_LOG=$ARCHIVES_LOC/${TMODE}_${BW}MHz_enb.log - UE_LOG=`echo $ENB_LOG | sed -e "s#enb#ue#"` - if [ -f $ENB_LOG ] && [ -f $UE_LOG ] - then - NAME_ENB=`echo $ENB_LOG | sed -e "s#$ARCHIVES_LOC/##"` - NAME_UE=`echo $UE_LOG | sed -e "s#$ARCHIVES_LOC/##"` - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - NB_ENB_GOT_SYNC=`egrep -c "got sync" $ENB_LOG` - NB_UE_GOT_SYNC=`egrep -c "got sync" $UE_LOG` - NB_ENB_SYNCED_WITH_UE=`egrep -c "got UE capabilities for UE" $ENB_LOG` - if [ $NB_ENB_GOT_SYNC -eq 1 ] && [ $NB_UE_GOT_SYNC -eq 2 ] && [ $NB_ENB_SYNCED_WITH_UE -eq 1 ] + for BW in ${BW_CASES[@]} + do + ENB_LOG=$ARCHIVES_LOC/${TMODE}_${BW}MHz_enb.log + UE_LOG=`echo $ENB_LOG | sed -e "s#enb#ue#"` + if [ -f $ENB_LOG ] && [ -f $UE_LOG ] then - echo " " >> ./test_simulator_results.html - else - echo " " >> ./test_simulator_results.html - fi - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - fi - PING_CASE=$ARCHIVES_LOC/${TMODE}_${BW}MHz_ping_ue.txt - if [ -f $PING_CASE ] - then - echo " " >> ./test_simulator_results.html - NAME=`echo $PING_CASE | sed -e "s#$ARCHIVES_LOC/##"` - echo " " >> ./test_simulator_results.html - CMD=`egrep "COMMAND IS" $PING_CASE | sed -e "s#COMMAND IS: ##"` - echo " " >> ./test_simulator_results.html - FILE_COMPLETE=`egrep -c "ping statistics" $PING_CASE` - if [ $FILE_COMPLETE -eq 0 ] - then - echo " " >> ./test_simulator_results.html + NAME_ENB=`echo $ENB_LOG | sed -e "s#$ARCHIVES_LOC/##"` + NAME_UE=`echo $UE_LOG | sed -e "s#$ARCHIVES_LOC/##"` + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html - else - NB_TR_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s# packets transmitted.*##"` - NB_RC_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*packets transmitted, ##" -e "s# received,.*##"` - if [ $NB_TR_PACKETS -eq $NB_RC_PACKETS ] + NB_ENB_GOT_SYNC=`egrep -c "got sync" $ENB_LOG` + NB_UE_GOT_SYNC=`egrep -c "got sync" $UE_LOG` + NB_ENB_SYNCED_WITH_UE=`egrep -c "got UE capabilities for UE" $ENB_LOG` + if [ $NB_ENB_GOT_SYNC -eq 1 ] && [ $NB_UE_GOT_SYNC -eq 2 ] && [ $NB_ENB_SYNCED_WITH_UE -eq 1 ] then echo " " >> ./test_simulator_results.html else echo " " >> ./test_simulator_results.html fi + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + fi + PING_CASE=$ARCHIVES_LOC/${TMODE}_${BW}MHz_ping_ue.txt + if [ -f $PING_CASE ] + then + echo " " >> ./test_simulator_results.html + NAME=`echo $PING_CASE | sed -e "s#$ARCHIVES_LOC/##"` + echo " " >> ./test_simulator_results.html + CMD=`egrep "COMMAND IS" $PING_CASE | sed -e "s#COMMAND IS: ##"` + echo " " >> ./test_simulator_results.html + FILE_COMPLETE=`egrep -c "ping statistics" $PING_CASE` + if [ $FILE_COMPLETE -eq 0 ] + then + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + else + NB_TR_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s# packets transmitted.*##"` + NB_RC_PACKETS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*packets transmitted, ##" -e "s# received,.*##"` + if [ $NB_TR_PACKETS -eq $NB_RC_PACKETS ] + then + echo " " >> ./test_simulator_results.html + else + echo " " >> ./test_simulator_results.html + fi + echo " " >> ./test_simulator_results.html + fi + echo " " >> ./test_simulator_results.html + fi + + if [ -f $ARCHIVES_LOC/${TMODE}_${BW}*iperf*dl*client*txt ] + then + IPERF_TESTS=`ls $ARCHIVES_LOC/${TMODE}_${BW}*iperf*client*txt` + else + echo "There are no iperf files" + IPERF_TESTS="" + fi + for IPERF_CASE in $IPERF_TESTS + do + echo " " >> ./test_simulator_results.html + NAME=`echo $IPERF_CASE | sed -e "s#$ARCHIVES_LOC/##"` + echo " " >> ./test_simulator_results.html + CMD=`egrep "COMMAND IS" $IPERF_CASE | sed -e "s#COMMAND IS: ##"` + echo " " >> ./test_simulator_results.html + REQ_BITRATE=`echo $CMD | sed -e "s#^.*-b ##" -e "s#-i 1.*##"` + if [[ $REQ_BITRATE =~ .*K.* ]] + then + REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#K##"` + FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000.0" | bc -l` + fi + if [[ $REQ_BITRATE =~ .*M.* ]] + then + REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#M##"` + FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000000.0" | bc -l` + fi + if [[ $REQ_BITRATE =~ .*G.* ]] + then + REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#G##"` + FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000000000.0" | bc -l` + fi + FILE_COMPLETE=`egrep -c "Server Report" $IPERF_CASE` + if [ $FILE_COMPLETE -eq 0 ] + then + echo " " >> ./test_simulator_results.html + SERVER_FILE=`echo $IPERF_CASE | sed -e "s#client#server#"` + FLOAT_EFF_BITRATE=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*Bytes *##" -e "s#sec *.*#sec#" | awk 'BEGIN{s=0;n=0}{n++;if ($2 ~/Mbits/){a = $1 * 1000000};if ($2 ~/Kbits/){a = $1 * 1000};s=s+a}END{br=s/n; printf "%.0f", br}'` + EFFECTIVE_BITRATE=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*Bytes *##" -e "s#sec *.*#sec#" | awk 'BEGIN{s=0;n=0}{n++;if ($2 ~/Mbits/){a = $1 * 1000000};if ($2 ~/Kbits/){a = $1 * 1000};s=s+a}END{br=s/n; if(br>1000000){printf "%.2f MBits/sec", br/1000000}}'` + PERF=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.2f", $0}'` + JITTER=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*/sec *##" -e "s# *ms.*##" | awk 'BEGIN{s=0;n=0}{n++;s+=$1}END{jitter=s/n; printf "%.3f ms", jitter}'` + PACKETLOSS_NOSIGN=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*(##" -e "s#%.*##" | awk 'BEGIN{s=0;n=0}{n++;s+=$1}END{per=s/n; printf "%.1f", per}'` + PACKETLOSS=`echo "${PACKETLOSS_NOSIGN}%"` + else + EFFECTIVE_BITRATE=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"` + if [[ $EFFECTIVE_BITRATE =~ .*Kbits/sec.* ]] + then + EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Kbits/sec.*##"` + FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000" | bc -l` + fi + if [[ $EFFECTIVE_BITRATE =~ .*Mbits/sec.* ]] + then + EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Mbits/sec.*##"` + FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000000" | bc -l` + fi + if [[ $EFFECTIVE_BITRATE =~ .*Gbits/sec.* ]] + then + EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Gbits/sec.*##"` + FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000000000" | bc -l` + fi + PERF=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.2f", $0}'` + PERF_INT=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.0f", $0}'` + if [[ $PERF_INT -lt 90 ]] + then + echo " " >> ./test_simulator_results.html + else + echo " " >> ./test_simulator_results.html + fi + EFFECTIVE_BITRATE=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"` + JITTER=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*Mbits/sec *##" -e "s#ms.*#ms#"` + PACKETLOSS=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*(##" -e "s#).*##"` + fi echo " " >> ./test_simulator_results.html - fi - echo " " >> ./test_simulator_results.html - fi - - if [ -f $ARCHIVES_LOC/${TMODE}_${BW}*iperf*dl*client*txt ] - then - IPERF_TESTS=`ls $ARCHIVES_LOC/${TMODE}_${BW}*iperf*client*txt` - else - echo "There are no iperf files" - IPERF_TESTS="" - fi - for IPERF_CASE in $IPERF_TESTS - do - echo " " >> ./test_simulator_results.html - NAME=`echo $IPERF_CASE | sed -e "s#$ARCHIVES_LOC/##"` - echo " " >> ./test_simulator_results.html - CMD=`egrep "COMMAND IS" $IPERF_CASE | sed -e "s#COMMAND IS: ##"` - echo " " >> ./test_simulator_results.html - REQ_BITRATE=`echo $CMD | sed -e "s#^.*-b ##" -e "s#-i 1.*##"` - if [[ $REQ_BITRATE =~ .*K.* ]] - then - REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#K##"` - FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000.0" | bc -l` - fi - if [[ $REQ_BITRATE =~ .*M.* ]] - then - REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#M##"` - FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000000.0" | bc -l` - fi - if [[ $REQ_BITRATE =~ .*G.* ]] - then - REQ_BITRATE=`echo $REQ_BITRATE | sed -e "s#G##"` - FLOAT_REQ_BITRATE=`echo "$REQ_BITRATE * 1000000000.0" | bc -l` - fi - FILE_COMPLETE=`egrep -c "Server Report" $IPERF_CASE` - if [ $FILE_COMPLETE -eq 0 ] - then - echo " " >> ./test_simulator_results.html - SERVER_FILE=`echo $IPERF_CASE | sed -e "s#client#server#"` - FLOAT_EFF_BITRATE=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*Bytes *##" -e "s#sec *.*#sec#" | awk 'BEGIN{s=0;n=0}{n++;if ($2 ~/Mbits/){a = $1 * 1000000};if ($2 ~/Kbits/){a = $1 * 1000};s=s+a}END{br=s/n; printf "%.0f", br}'` - EFFECTIVE_BITRATE=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*Bytes *##" -e "s#sec *.*#sec#" | awk 'BEGIN{s=0;n=0}{n++;if ($2 ~/Mbits/){a = $1 * 1000000};if ($2 ~/Kbits/){a = $1 * 1000};s=s+a}END{br=s/n; if(br>1000000){printf "%.2f MBits/sec", br/1000000}}'` - PERF=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.2f", $0}'` - JITTER=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*/sec *##" -e "s# *ms.*##" | awk 'BEGIN{s=0;n=0}{n++;s+=$1}END{jitter=s/n; printf "%.3f ms", jitter}'` - PACKETLOSS_NOSIGN=`grep --color=never sec $SERVER_FILE | sed -e "s#^.*(##" -e "s#%.*##" | awk 'BEGIN{s=0;n=0}{n++;s+=$1}END{per=s/n; printf "%.1f", per}'` - PACKETLOSS=`echo "${PACKETLOSS_NOSIGN}%"` - else - EFFECTIVE_BITRATE=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"` - if [[ $EFFECTIVE_BITRATE =~ .*Kbits/sec.* ]] - then - EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Kbits/sec.*##"` - FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000" | bc -l` - fi - if [[ $EFFECTIVE_BITRATE =~ .*Mbits/sec.* ]] - then - EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Mbits/sec.*##"` - FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000000" | bc -l` - fi - if [[ $EFFECTIVE_BITRATE =~ .*Gbits/sec.* ]] - then - EFFECTIVE_BITRATE=`echo $EFFECTIVE_BITRATE | sed -e "s# *Gbits/sec.*##"` - FLOAT_EFF_BITRATE=`echo "$EFFECTIVE_BITRATE * 1000000000" | bc -l` - fi - PERF=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.2f", $0}'` - PERF_INT=`echo "100 * $FLOAT_EFF_BITRATE / $FLOAT_REQ_BITRATE" | bc -l | awk '{printf "%.0f", $0}'` - if [[ $PERF_INT -lt 90 ]] - then - echo " " >> ./test_simulator_results.html - else - echo " " >> ./test_simulator_results.html - fi - EFFECTIVE_BITRATE=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*MBytes *##" -e "s#sec.*#sec#"` - JITTER=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*Mbits/sec *##" -e "s#ms.*#ms#"` - PACKETLOSS=`tail -n3 $IPERF_CASE | egrep "Mbits/sec" | sed -e "s#^.*(##" -e "s#).*##"` - fi - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + done done done - done - echo "
Log File NameCommandStatusStatistics
$NAME_ENB --- $NAME_UEN/AOKKO
" >> ./test_simulator_results.html
-                if [ $NB_ENB_GOT_SYNC -eq 1 ]
-                then
-                    echo "- eNB --> got sync" >> ./test_simulator_results.html
-                else
-                    echo "- eNB NEVER got sync" >> ./test_simulator_results.html
-                fi
-                if [ $NB_UE_GOT_SYNC -eq 2 ]
-                then
-                    echo "- UE --> got sync" >> ./test_simulator_results.html
-                else
-                    echo "- UE NEVER got sync" >> ./test_simulator_results.html
-                fi
-                if [ $NB_ENB_SYNCED_WITH_UE -eq 1 ]
-                then
-                    echo "- UE attached to eNB" >> ./test_simulator_results.html
-                else
-                    echo "- UE NEVER attached to eNB" >> ./test_simulator_results.html
-                fi
-                NB_SEGFAULT_ENB=`egrep -i -c "Segmentation Fault" $ENB_LOG`
-                if [ $NB_SEGFAULT_ENB -ne 0 ]
-                then
-                    echo "- eNB --> Segmentation Fault" >> ./test_simulator_results.html
-                fi
-                NB_SEGFAULT_UE=`egrep -i -c "Segmentation Fault" $UE_LOG`
-                if [ $NB_SEGFAULT_UE -ne 0 ]
-                then
-                    echo "- UE --> Segmentation Fault" >> ./test_simulator_results.html
-                fi
-                NB_ASSERTION_ENB=`egrep -i -c "Assertion" $ENB_LOG`
-                if [ $NB_ASSERTION_ENB -ne 0 ]
-                then
-                    echo "- eNB --> Assertion" >> ./test_simulator_results.html
-                    awk 'BEGIN{assertion=10}{if(assertion < 3){print "    " $0; assertion++};if ($0 ~/Assertion/){print "    " $0;assertion=1}}END{}' $ENB_LOG >> ./test_simulator_results.html
-                fi
-                NB_ASSERTION_UE=`egrep -i -c "Assertion" $UE_LOG`
-                if [ $NB_ASSERTION_UE -ne 0 ]
-                then
-                    echo "- eNB --> Assertion" >> ./test_simulator_results.html
-                    awk 'BEGIN{assertion=10}{if(assertion < 3){print "    " $0; assertion++};if ($0 ~/Assertion/){print "    " $0;assertion=1}}END{}' $UE_LOG >> ./test_simulator_results.html
-                fi
-                echo "        
$NAME$CMDKO
$NAME_ENB --- $NAME_UEN/AOKKO
" >> ./test_simulator_results.html
+                    if [ $NB_ENB_GOT_SYNC -eq 1 ]
+                    then
+                        echo "- eNB --> got sync" >> ./test_simulator_results.html
+                    else
+                        echo "- eNB NEVER got sync" >> ./test_simulator_results.html
+                    fi
+                    if [ $NB_UE_GOT_SYNC -eq 2 ]
+                    then
+                        echo "- UE --> got sync" >> ./test_simulator_results.html
+                    else
+                        echo "- UE NEVER got sync" >> ./test_simulator_results.html
+                    fi
+                    if [ $NB_ENB_SYNCED_WITH_UE -eq 1 ]
+                    then
+                        echo "- UE attached to eNB" >> ./test_simulator_results.html
+                    else
+                        echo "- UE NEVER attached to eNB" >> ./test_simulator_results.html
+                    fi
+                    NB_SEGFAULT_ENB=`egrep -i -c "Segmentation Fault" $ENB_LOG`
+                    if [ $NB_SEGFAULT_ENB -ne 0 ]
+                    then
+                        echo "- eNB --> Segmentation Fault" >> ./test_simulator_results.html
+                    fi
+                    NB_SEGFAULT_UE=`egrep -i -c "Segmentation Fault" $UE_LOG`
+                    if [ $NB_SEGFAULT_UE -ne 0 ]
+                    then
+                        echo "- UE --> Segmentation Fault" >> ./test_simulator_results.html
+                    fi
+                    NB_ASSERTION_ENB=`egrep -i -c "Assertion" $ENB_LOG`
+                    if [ $NB_ASSERTION_ENB -ne 0 ]
+                    then
+                        echo "- eNB --> Assertion" >> ./test_simulator_results.html
+                        awk 'BEGIN{assertion=10}{if(assertion < 3){print "    " $0; assertion++};if ($0 ~/Assertion/){print "    " $0;assertion=1}}END{}' $ENB_LOG >> ./test_simulator_results.html
+                    fi
+                    NB_ASSERTION_UE=`egrep -i -c "Assertion" $UE_LOG`
+                    if [ $NB_ASSERTION_UE -ne 0 ]
+                    then
+                        echo "- eNB --> Assertion" >> ./test_simulator_results.html
+                        awk 'BEGIN{assertion=10}{if(assertion < 3){print "    " $0; assertion++};if ($0 ~/Assertion/){print "    " $0;assertion=1}}END{}' $UE_LOG >> ./test_simulator_results.html
+                    fi
+                    echo "        
$NAME$CMDKON/AOKKO" >> ./test_simulator_results.html + echo "
" >> ./test_simulator_results.html
+                        STATS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*received, ##" -e "s#, time.*##" -e "s# packet loss##"`
+                        echo "Packet Loss : $STATS" >> ./test_simulator_results.html
+                        RTTMIN=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[1] " " $5}'`
+                        echo "RTT Minimal : $RTTMIN" >> ./test_simulator_results.html
+                        RTTAVG=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[2] " " $5}'`
+                        echo "RTT Average : $RTTAVG" >> ./test_simulator_results.html
+                        RTTMAX=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[3] " " $5}'`
+                        echo "RTT Maximal : $RTTMAX" >> ./test_simulator_results.html
+                        echo "            
" >> ./test_simulator_results.html + echo "
$NAME$CMDKOKOOK" >> ./test_simulator_results.html echo "
" >> ./test_simulator_results.html
-                    STATS=`egrep "packets transmitted" $PING_CASE | sed -e "s#^.*received, ##" -e "s#, time.*##" -e "s# packet loss##"`
-                    echo "Packet Loss : $STATS" >> ./test_simulator_results.html
-                    RTTMIN=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[1] " " $5}'`
-                    echo "RTT Minimal : $RTTMIN" >> ./test_simulator_results.html
-                    RTTAVG=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[2] " " $5}'`
-                    echo "RTT Average : $RTTAVG" >> ./test_simulator_results.html
-                    RTTMAX=`egrep "rtt min" $PING_CASE | awk '{split($4,a,"/"); print a[3] " " $5}'`
-                    echo "RTT Maximal : $RTTMAX" >> ./test_simulator_results.html
+                    echo "Bitrate      : $EFFECTIVE_BITRATE" >> ./test_simulator_results.html
+                    echo "Bitrate Perf : $PERF %" >> ./test_simulator_results.html
+                    echo "Jitter       : $JITTER" >> ./test_simulator_results.html
+                    echo "Packet Loss  : $PACKETLOSS" >> ./test_simulator_results.html
                     echo "            
" >> ./test_simulator_results.html echo "
$NAME$CMDKOKOOK" >> ./test_simulator_results.html - echo "
" >> ./test_simulator_results.html
-                echo "Bitrate      : $EFFECTIVE_BITRATE" >> ./test_simulator_results.html
-                echo "Bitrate Perf : $PERF %" >> ./test_simulator_results.html
-                echo "Jitter       : $JITTER" >> ./test_simulator_results.html
-                echo "Packet Loss  : $PACKETLOSS" >> ./test_simulator_results.html
-                echo "            
" >> ./test_simulator_results.html - echo "
" >> ./test_simulator_results.html -fi + echo " " >> ./test_simulator_results.html + fi -ARCHIVES_LOC=archives/phy_sim/test -if [ -d $ARCHIVES_LOC ] -then - echo "

Physical Simulators Check

" >> ./test_simulator_results.html + ARCHIVES_LOC=archives/phy_sim/test + if [ -d $ARCHIVES_LOC ] + then + echo "

Physical Simulators Check

" >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - - XML_TESTS=`ls $ARCHIVES_LOC/*xml` - for XML_FILE in $XML_TESTS - do - echo " " >> ./test_simulator_results.html - NAME=`echo $XML_FILE | sed -e "s#$ARCHIVES_LOC/##"` - NB_TESTS=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*tests='##" -e "s#' *time=.*##"` - NB_ERRORS=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*errors='##" -e "s#' *failures=.*##"` - NB_FAILURES=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*failures='##" -e "s#' *hostname=.*##"` - NB_SKIPPED=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*skipped='##" -e "s#' *tests=.*##"` - if [ $NB_ERRORS -eq 0 ] && [ $NB_FAILURES -eq 0 ] - then - echo " " >> ./test_simulator_results.html - else - echo " " >> ./test_simulator_results.html - fi - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - done - - echo "
Log File NameNb TestsNb ErrorsNb FailuresNb Failures
$NAME$NAME$NB_TESTS$NB_ERRORS$NB_FAILURES$NB_SKIPPED
" >> ./test_simulator_results.html - - echo "

Details

" >> ./test_simulator_results.html - for XML_FILE in $XML_TESTS - do echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html - echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html - TESTCASES_LIST=`sed -e "s# #@#g" $XML_FILE | grep testcase` - for TESTCASE in $TESTCASES_LIST + + XML_TESTS=`ls $ARCHIVES_LOC/*xml` + for XML_FILE in $XML_TESTS do echo " " >> ./test_simulator_results.html - NAME=`echo $TESTCASE | sed -e "s#^.*name='##" -e "s#'@description=.*##" | sed -e "s#@# #g"` - echo " " >> ./test_simulator_results.html - DESC=`echo $TESTCASE | sed -e "s#^.*description='##" -e "s#'@Run_result=.*##" | sed -e "s#@# #g"` - echo " " >> ./test_simulator_results.html - RESULT=`echo $TESTCASE | sed -e "s#^.*RESULT='##" -e "s#'.*##" | sed -e "s#@# #g"` - if [[ $RESULT =~ .*PASS.* ]] + NAME=`echo $XML_FILE | sed -e "s#$ARCHIVES_LOC/##"` + NB_TESTS=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*tests='##" -e "s#' *time=.*##"` + NB_ERRORS=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*errors='##" -e "s#' *failures=.*##"` + NB_FAILURES=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*failures='##" -e "s#' *hostname=.*##"` + NB_SKIPPED=`egrep "testsuite errors" $XML_FILE | sed -e "s#^.*skipped='##" -e "s#' *tests=.*##"` + if [ $NB_ERRORS -eq 0 ] && [ $NB_FAILURES -eq 0 ] then - echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html else - echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html fi - TIME=`echo $TESTCASE | sed -e "s#^.*time='##" -e "s#'@RESULT=.*##" | sed -e "s#@# #g"` - echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html echo " " >> ./test_simulator_results.html done + echo "
Test NameDescriptionResultTimeLog File NameNb TestsNb ErrorsNb FailuresNb Failures
$NAME$DESC$RESULT$NAME$RESULT$NAME$TIME$NB_TESTS$NB_ERRORS$NB_FAILURES$NB_SKIPPED
" >> ./test_simulator_results.html - done -fi -echo "" >> ./test_simulator_results.html -echo "" >> ./test_simulator_results.html + echo "

Details

" >> ./test_simulator_results.html + for XML_FILE in $XML_TESTS + do + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + PREV_SECTION=0 + PREV_TIME_IN_SECS=0 + TESTCASES_LIST=`sed -e "s# #@#g" $XML_FILE | grep testcase` + for TESTCASE in $TESTCASES_LIST + do + NAME=`echo $TESTCASE | sed -e "s#^.*name='##" -e "s#'@description=.*##" | sed -e "s#@# #g"` + SECTION=`echo $NAME | sed -e "s#\..*##"` + if [ $SECTION != $PREV_SECTION ] + then + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + PREV_SECTION=$SECTION + PREV_TIME_IN_SECS=0 + fi + DESC=`echo $TESTCASE | sed -e "s#^.*description='##" -e "s#'@Run_result=.*##" | sed -e "s#@# #g"` + RESULT=`echo $TESTCASE | sed -e "s#^.*RESULT='##" -e "s#'.*##" | sed -e "s#@# #g"` + TIME_IN_SECS=`echo $TESTCASE | sed -e "s#^.*time='##" -e "s#'@RESULT=.*##" | sed -e "s#@# #g" -e "s# s.*##"` + TIME=`echo "$TIME_IN_SECS - $PREV_TIME_IN_SECS" | bc -l | awk '{printf "%.2f s", $0}'` + PREV_TIME_IN_SECS=$TIME_IN_SECS + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + if [[ $RESULT =~ .*PASS.* ]] + then + echo " " >> ./test_simulator_results.html + else + SPLITTED_LINE=`echo -e $TESTCASE | sed -e "s#@#\n#g"` + NB_RUNS=`echo -e "${SPLITTED_LINE}" | grep -v Run_result | egrep -c "Run_"` + NB_FAILS=`echo -e "${SPLITTED_LINE}" | grep -v Run_result | egrep -c "=FAIL"` + echo " " >> ./test_simulator_results.html + fi + echo " " >> ./test_simulator_results.html + echo " " >> ./test_simulator_results.html + done + echo "
Test NameDescriptionResultTime
\"$SECTION\" series
$NAME$DESC$RESULT${RESULT} (${NB_FAILS}/${NB_RUNS})$TIME
" >> ./test_simulator_results.html + done + fi -exit 0 + echo "" >> ./test_simulator_results.html + echo "" >> ./test_simulator_results.html +} diff --git a/ci-scripts/runTestOnVM.sh b/ci-scripts/runTestOnVM.sh index 0d4f116179..527fe48edb 100755 --- a/ci-scripts/runTestOnVM.sh +++ b/ci-scripts/runTestOnVM.sh @@ -20,15 +20,18 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI VM Test Run script" +function run_test_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" + echo " Requirements:" + echo " -- uvtool uvtool-libvirt apt-cacher" + echo " -- xenial image already synced" echo " Default:" echo " -- eNB with USRP" echo "" echo "Usage:" echo "------" - echo " runTestOnVM.sh [OPTIONS]" + echo " oai-ci-vm-tool test [OPTIONS]" echo "" echo "Options:" echo "--------" @@ -41,12 +44,7 @@ function usage { echo " --workspace #### OR -ws ####" echo " Specify the workspace." echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" + variant_usage echo " Specify the variant to build." echo "" echo " --keep-vm-alive OR -k" @@ -57,19 +55,6 @@ function usage { echo "" } -function variant_usage { - echo "OAI VM Test Run script" - echo " Original Author: Raphael Defosseux" - echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" - echo "" -} - function start_basic_sim_enb { local LOC_VM_IP_ADDR=$2 local LOC_EPC_IP_ADDR=$3 @@ -95,6 +80,7 @@ function start_basic_sim_enb { echo "echo \"ulimit -c unlimited && ./lte-softmodem -O /home/ubuntu/tmp/ci-scripts/conf_files/ci-$LOC_CONF_FILE\" > ./my-lte-softmodem-run.sh " >> $1 echo "chmod 775 ./my-lte-softmodem-run.sh" >> $1 echo "cat ./my-lte-softmodem-run.sh" >> $1 + echo "if [ -e /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ]; then sudo sudo rm -f /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE; fi" >> $1 echo "sudo -E daemon --inherit --unsafe --name=enb_daemon --chdir=/home/ubuntu/tmp/cmake_targets/basic_simulator/enb -o /home/ubuntu/tmp/cmake_targets/log/$LOC_LOG_FILE ./my-lte-softmodem-run.sh" >> $1 ssh -o StrictHostKeyChecking=no ubuntu@$LOC_VM_IP_ADDR < $1 @@ -112,6 +98,7 @@ function start_basic_sim_ue { echo "echo \"./lte-uesoftmodem -C ${LOC_FREQUENCY}000000 -r $LOC_NB_RBS --ue-rxgain 140\" > ./my-lte-uesoftmodem-run.sh" >> $1 echo "chmod 775 ./my-lte-uesoftmodem-run.sh" >> $1 echo "cat ./my-lte-uesoftmodem-run.sh" >> $1 + echo "if [ -e /home/ubuntu/tmp/cmake_targets/log/$LOC_UE_LOG_FILE ]; then sudo sudo rm -f /home/ubuntu/tmp/cmake_targets/log/$LOC_UE_LOG_FILE; fi" >> $1 echo "sudo -E daemon --inherit --unsafe --name=ue_daemon --chdir=/home/ubuntu/tmp/cmake_targets/basic_simulator/ue -o /home/ubuntu/tmp/cmake_targets/log/$LOC_UE_LOG_FILE ./my-lte-uesoftmodem-run.sh" >> $1 ssh -o StrictHostKeyChecking=no ubuntu@$2 < $1 @@ -299,740 +286,619 @@ function terminate_ltebox_epc { rm $1 } -if [ $# -lt 1 ] || [ $# -gt 9 ] -then - echo "Syntax Error: not the correct number of arguments" - echo "" - usage - exit 1 -fi - -VM_TEMPLATE=ci- -JOB_NAME=XX -BUILD_ID=XX -VM_NAME=ci-enb-usrp -ARCHIVES_LOC=enb_usrp/test -KEEP_VM_ALIVE=0 -RUN_OPTIONS="none" -STATUS=0 - -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 - ;; - -k|--keep-vm-alive) - KEEP_VM_ALIVE=1 - shift - ;; - -v1) - VM_NAME=ci-enb-usrp - shift - ;; - -v2) - VM_NAME=ci-basic-sim - RUN_OPTIONS="complex" - ARCHIVES_LOC=basic_sim/test - shift - ;; - -v3) - VM_NAME=ci-phy-sim - RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" - ARCHIVES_LOC=phy_sim/test - shift - ;; - -v4) - VM_NAME=ci-cppcheck - shift - ;; - -v7) - VM_NAME=ci-enb-ethernet - shift - ;; - -v8) - VM_NAME=ci-ue-ethernet - shift - ;; - --variant) - variant="$2" - case $variant in - enb-usrp) - VM_NAME=ci-enb-usrp - ;; - basic-sim) - VM_NAME=ci-basic-sim - RUN_OPTIONS="complex" - ARCHIVES_LOC=basic_sim/test - ;; - phy-sim) - VM_NAME=ci-phy-sim - RUN_OPTIONS="./run_exec_autotests.bash -g \"01510*\" -q -np -b" - ARCHIVES_LOC=phy_sim/test - ;; - cppcheck) - VM_NAME=ci-cppcheck - ;; - enb-ethernet) - VM_NAME=ci-enb-ethernet - ;; - ue-ethernet) - VM_NAME=ci-ue-ethernet - ;; - *) - echo "" - echo "Syntax Error: Invalid Variant option -> $variant" - echo "" - variant_usage - exit 1 - esac - shift - shift - ;; - *) - echo "Syntax Error: unknown option: $key" - echo "" - usage - exit 1 -esac -done - -if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] -then - VM_TEMPLATE=ci- -else - VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}- -fi - -VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"` -VM_CMDS=${VM_NAME}_cmds.txt -ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC} - -echo "VM_NAME = $VM_NAME" -echo "VM_CMD_FILE = $VM_CMDS" -echo "JENKINS_WKSP = $JENKINS_WKSP" -echo "ARCHIVES_LOC = $ARCHIVES_LOC" - -echo "############################################################" -echo "Waiting for VM to be started" -echo "############################################################" -uvt-kvm wait $VM_NAME --insecure - -VM_IP_ADDR=`uvt-kvm ip $VM_NAME` -echo "$VM_NAME has for IP addr = $VM_IP_ADDR" - -if [ "$RUN_OPTIONS" == "none" ] -then - echo "No run on VM testing for this variant currently" - exit $STATUS -fi - -if [[ $RUN_OPTIONS =~ .*run_exec_autotests.* ]] -then +function run_test_on_vm { echo "############################################################" - echo "Running test script on VM ($VM_NAME)" + echo "OAI CI VM script" echo "############################################################" - echo "echo \"sudo apt-get --yes --quiet install bc \"" > $VM_CMDS - echo "sudo apt-get update > bc-install.txt 2>&1" >> $VM_CMDS - echo "sudo apt-get --yes install bc >> bc-install.txt 2>&1" >> $VM_CMDS - echo "cd tmp" >> $VM_CMDS - echo "echo \"source oaienv\"" >> $VM_CMDS - echo "source oaienv" >> $VM_CMDS - echo "echo \"cd cmake_targets/autotests\"" >> $VM_CMDS - echo "cd cmake_targets/autotests" >> $VM_CMDS - echo "echo \"rm -Rf log\"" >> $VM_CMDS - echo "rm -Rf log" >> $VM_CMDS - echo "$RUN_OPTIONS" | sed -e 's@"@\\"@g' -e 's@^@echo "@' -e 's@$@"@' >> $VM_CMDS - echo "$RUN_OPTIONS" >> $VM_CMDS - echo "cp /home/ubuntu/bc-install.txt log" >> $VM_CMDS - echo "cd log" >> $VM_CMDS - echo "zip -r -qq tmp.zip *.* 0*" >> $VM_CMDS - - ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS + echo "VM_NAME = $VM_NAME" + echo "VM_CMD_FILE = $VM_CMDS" + echo "JENKINS_WKSP = $JENKINS_WKSP" + echo "ARCHIVES_LOC = $ARCHIVES_LOC" echo "############################################################" - echo "Creating a tmp folder to store results and artifacts" + echo "Waiting for VM to be started" echo "############################################################" + uvt-kvm wait $VM_NAME --insecure - if [ -d $ARCHIVES_LOC ] + VM_IP_ADDR=`uvt-kvm ip $VM_NAME` + echo "$VM_NAME has for IP addr = $VM_IP_ADDR" + + if [ "$RUN_OPTIONS" == "none" ] then - rm -Rf $ARCHIVES_LOC + echo "No run on VM testing for this variant currently" + exit $STATUS fi - mkdir --parents $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/autotests/log/tmp.zip $ARCHIVES_LOC - pushd $ARCHIVES_LOC - unzip -qq -DD tmp.zip - rm tmp.zip - if [ -f results_autotests.xml ] - then - FUNCTION=`echo $VM_NAME | sed -e "s@$VM_TEMPLATE@@"` - NEW_NAME=`echo "results_autotests.xml" | sed -e "s@results_autotests@results_autotests-$FUNCTION@"` - echo "" > $NEW_NAME - echo "" >> $NEW_NAME - cat results_autotests.xml >> $NEW_NAME - sed -e "s@TEMPLATE@$FUNCTION@" $JENKINS_WKSP/ci-scripts/template.xsl > $FUNCTION.xsl - #mv results_autotests.xml $NEW_NAME - rm results_autotests.xml - fi - popd - - if [ $KEEP_VM_ALIVE -eq 0 ] + if [[ $RUN_OPTIONS =~ .*run_exec_autotests.* ]] then echo "############################################################" - echo "Destroying VM" + echo "Running test script on VM ($VM_NAME)" echo "############################################################" - uvt-kvm destroy $VM_NAME - ssh-keygen -R $VM_IP_ADDR - fi - rm -f $VM_CMDS + echo "echo \"sudo apt-get --yes --quiet install bc \"" > $VM_CMDS + echo "sudo apt-get update > bc-install.txt 2>&1" >> $VM_CMDS + echo "sudo apt-get --yes install bc >> bc-install.txt 2>&1" >> $VM_CMDS + echo "cd tmp" >> $VM_CMDS + echo "echo \"source oaienv\"" >> $VM_CMDS + echo "source oaienv" >> $VM_CMDS + echo "echo \"cd cmake_targets/autotests\"" >> $VM_CMDS + echo "cd cmake_targets/autotests" >> $VM_CMDS + echo "echo \"rm -Rf log\"" >> $VM_CMDS + echo "rm -Rf log" >> $VM_CMDS + echo "$RUN_OPTIONS" | sed -e 's@"@\\"@g' -e 's@^@echo "@' -e 's@$@"@' >> $VM_CMDS + echo "$RUN_OPTIONS" >> $VM_CMDS + echo "cp /home/ubuntu/bc-install.txt log" >> $VM_CMDS + echo "cd log" >> $VM_CMDS + echo "zip -r -qq tmp.zip *.* 0*" >> $VM_CMDS - echo "############################################################" - echo "Checking run status" - echo "############################################################" + ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS - LOG_FILES=`ls $ARCHIVES_LOC/results_autotests*.xml` - NB_FOUND_FILES=0 - NB_RUNS=0 - NB_FAILURES=0 + echo "############################################################" + echo "Creating a tmp folder to store results and artifacts" + echo "############################################################" - for FULLFILE in $LOG_FILES - do - TESTSUITES=`egrep "testsuite errors" $FULLFILE` - for TESTSUITE in $TESTSUITES - do - if [[ "$TESTSUITE" == *"tests="* ]] - then - RUNS=`echo $TESTSUITE | awk 'BEGIN{FS="="}{print $2}END{}' | sed -e "s@'@@g" ` - NB_RUNS=$((NB_RUNS + RUNS)) - fi - if [[ "$TESTSUITE" == *"failures="* ]] - then - FAILS=`echo $TESTSUITE | awk 'BEGIN{FS="="}{print $2}END{}' | sed -e "s@'@@g" ` - NB_FAILURES=$((NB_FAILURES + FAILS)) - fi - done - NB_FOUND_FILES=$((NB_FOUND_FILES + 1)) - done - - echo "NB_FOUND_FILES = $NB_FOUND_FILES" - echo "NB_RUNS = $NB_RUNS" - echo "NB_FAILURES = $NB_FAILURES" - - if [ $NB_FOUND_FILES -eq 0 ]; then STATUS=-1; fi - if [ $NB_RUNS -eq 0 ]; then STATUS=-1; fi - if [ $NB_FAILURES -ne 0 ]; then STATUS=-1; fi - -fi - -if [[ "$RUN_OPTIONS" == "complex" ]] && [[ $VM_NAME =~ .*-basic-sim.* ]] -then - PING_STATUS=0 - IPERF_STATUS=0 - if [ -d $ARCHIVES_LOC ] - then - rm -Rf $ARCHIVES_LOC - fi - mkdir --parents $ARCHIVES_LOC - - EPC_VM_NAME=`echo $VM_NAME | sed -e "s#basic-sim#epc#"` - LTEBOX=0 - if [ -d /opt/ltebox-archives/ ] - then - # Checking if all ltebox archives are available to run ltebx epc on a brand new VM - if [ -f /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ] && [ -f /opt/ltebox-archives/etc-conf.zip ] && [ -f /opt/ltebox-archives/hss-sim.zip ] + if [ -d $ARCHIVES_LOC ] then - echo "############################################################" - echo "Test EPC on VM ($EPC_VM_NAME) will be using ltebox" - echo "############################################################" - LTEBOX=1 + rm -Rf $ARCHIVES_LOC fi - fi - # Here we could have other types of EPC detection + mkdir --parents $ARCHIVES_LOC - # Do we need to start the EPC VM - EPC_VM_CMDS=`echo $VM_CMDS | sed -e "s#cmds#epc-cmds#"` - echo "EPC_VM_CMD_FILE = $EPC_VM_CMDS" - IS_EPC_VM_ALIVE=`uvt-kvm list | grep -c $EPC_VM_NAME` - if [ $IS_EPC_VM_ALIVE -eq 0 ] - then - echo "############################################################" - echo "Creating test EPC VM ($EPC_VM_NAME) on Ubuntu Cloud Image base" - echo "############################################################" - uvt-kvm create $EPC_VM_NAME release=xenial --unsafe-caching - fi + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/autotests/log/tmp.zip $ARCHIVES_LOC + pushd $ARCHIVES_LOC + unzip -qq -DD tmp.zip + rm tmp.zip + if [ -f results_autotests.xml ] + then + FUNCTION=`echo $VM_NAME | sed -e "s@$VM_TEMPLATE@@"` + NEW_NAME=`echo "results_autotests.xml" | sed -e "s@results_autotests@results_autotests-$FUNCTION@"` + echo "" > $NEW_NAME + echo "" >> $NEW_NAME + cat results_autotests.xml >> $NEW_NAME + sed -e "s@TEMPLATE@$FUNCTION@" $JENKINS_WKSP/ci-scripts/template.xsl > $FUNCTION.xsl + #mv results_autotests.xml $NEW_NAME + rm results_autotests.xml + fi + popd - uvt-kvm wait $EPC_VM_NAME --insecure - EPC_VM_IP_ADDR=`uvt-kvm ip $EPC_VM_NAME` - echo "$EPC_VM_NAME has for IP addr = $EPC_VM_IP_ADDR" - scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu - - # ltebox specific actions (install and start) - LTE_BOX_TO_INSTALL=1 - if [ $LTEBOX -eq 1 ] - then - echo "ls -ls /opt/ltebox/tools/start_ltebox" > $EPC_VM_CMDS - RESPONSE=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS` - NB_EXES=`echo $RESPONSE | grep -c ltebox` - if [ $NB_EXES -eq 1 ]; then LTE_BOX_TO_INSTALL=0; fi - fi - - if [ $LTEBOX -eq 1 ] && [ $LTE_BOX_TO_INSTALL -eq 1 ] - then - echo "############################################################" - echo "Copying ltebox archives into EPC VM ($EPC_VM_NAME)" - echo "############################################################" - scp -o StrictHostKeyChecking=no /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu - scp -o StrictHostKeyChecking=no /opt/ltebox-archives/etc-conf.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu - scp -o StrictHostKeyChecking=no /opt/ltebox-archives/hss-sim.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu - - echo "############################################################" - echo "Install EPC on EPC VM ($EPC_VM_NAME)" - echo "############################################################" - echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $EPC_VM_CMDS - echo "touch /home/ubuntu/.hushlogin" >> $EPC_VM_CMDS - echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf\"" >> $EPC_VM_CMDS - echo "sudo apt-get update > zip-install.txt 2>&1" >> $EPC_VM_CMDS - echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf >> zip-install.txt 2>&1" >> $EPC_VM_CMDS - - # Installing HSS - echo "echo \"cd /opt\"" >> $EPC_VM_CMDS - echo "cd /opt" >> $EPC_VM_CMDS - echo "echo \"sudo unzip -qq /home/ubuntu/hss-sim.zip\"" >> $EPC_VM_CMDS - echo "sudo unzip -qq /home/ubuntu/hss-sim.zip" >> $EPC_VM_CMDS - echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS - echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS - - # Installing ltebox - echo "echo \"cd /home/ubuntu\"" >> $EPC_VM_CMDS - echo "cd /home/ubuntu" >> $EPC_VM_CMDS - echo "echo \"sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb \"" >> $EPC_VM_CMDS - echo "sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb >> zip-install.txt 2>&1" >> $EPC_VM_CMDS - - echo "echo \"cd /opt/ltebox/etc/\"" >> $EPC_VM_CMDS - echo "cd /opt/ltebox/etc/" >> $EPC_VM_CMDS - echo "echo \"sudo unzip -qq -o /home/ubuntu/etc-conf.zip\"" >> $EPC_VM_CMDS - echo "sudo unzip -qq -o /home/ubuntu/etc-conf.zip" >> $EPC_VM_CMDS - echo "sudo sed -i -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' gw.conf" >> $EPC_VM_CMDS - echo "sudo sed -i -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' mme.conf" >> $EPC_VM_CMDS - fi - - # Starting EPC - if [ $LTEBOX -eq 1 ] - then - echo "############################################################" - echo "Start EPC on EPC VM ($EPC_VM_NAME)" - echo "############################################################" - echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS - echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS - echo "echo \"sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real\"" >> $EPC_VM_CMDS - echo "sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real" >> $EPC_VM_CMDS - - echo "echo \"cd /opt/ltebox/tools/\"" >> $EPC_VM_CMDS - echo "cd /opt/ltebox/tools/" >> $EPC_VM_CMDS - echo "echo \"sudo ./start_ltebox\"" >> $EPC_VM_CMDS - echo "nohup sudo ./start_ltebox > /home/ubuntu/ltebox.txt" >> $EPC_VM_CMDS - - ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS - rm -f $EPC_VM_CMDS - - # We may have some adaptation to do - if [ -f /opt/ltebox-archives/adapt_ue_sim.txt ] + if [ $KEEP_VM_ALIVE -eq 0 ] then echo "############################################################" - echo "Doing some adaptation on UE side" + echo "Destroying VM" echo "############################################################" - ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < /opt/ltebox-archives/adapt_ue_sim.txt + uvt-kvm destroy $VM_NAME + ssh-keygen -R $VM_IP_ADDR + fi + rm -f $VM_CMDS + + echo "############################################################" + echo "Checking run status" + echo "############################################################" + + LOG_FILES=`ls $ARCHIVES_LOC/results_autotests*.xml` + NB_FOUND_FILES=0 + NB_RUNS=0 + NB_FAILURES=0 + + for FULLFILE in $LOG_FILES + do + TESTSUITES=`egrep "testsuite errors" $FULLFILE` + for TESTSUITE in $TESTSUITES + do + if [[ "$TESTSUITE" == *"tests="* ]] + then + RUNS=`echo $TESTSUITE | awk 'BEGIN{FS="="}{print $2}END{}' | sed -e "s@'@@g" ` + NB_RUNS=$((NB_RUNS + RUNS)) + fi + if [[ "$TESTSUITE" == *"failures="* ]] + then + FAILS=`echo $TESTSUITE | awk 'BEGIN{FS="="}{print $2}END{}' | sed -e "s@'@@g" ` + NB_FAILURES=$((NB_FAILURES + FAILS)) + fi + done + NB_FOUND_FILES=$((NB_FOUND_FILES + 1)) + done + + echo "NB_FOUND_FILES = $NB_FOUND_FILES" + echo "NB_RUNS = $NB_RUNS" + echo "NB_FAILURES = $NB_FAILURES" + + if [ $NB_FOUND_FILES -eq 0 ]; then STATUS=-1; fi + if [ $NB_RUNS -eq 0 ]; then STATUS=-1; fi + if [ $NB_FAILURES -ne 0 ]; then STATUS=-1; fi + + fi + + if [[ "$RUN_OPTIONS" == "complex" ]] && [[ $VM_NAME =~ .*-basic-sim.* ]] + then + PING_STATUS=0 + IPERF_STATUS=0 + if [ -d $ARCHIVES_LOC ] + then + rm -Rf $ARCHIVES_LOC + fi + mkdir --parents $ARCHIVES_LOC + + EPC_VM_NAME=`echo $VM_NAME | sed -e "s#basic-sim#epc#"` + LTEBOX=0 + if [ -d /opt/ltebox-archives/ ] + then + # Checking if all ltebox archives are available to run ltebx epc on a brand new VM + if [ -f /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ] && [ -f /opt/ltebox-archives/etc-conf.zip ] && [ -f /opt/ltebox-archives/hss-sim.zip ] + then + echo "############################################################" + echo "Test EPC on VM ($EPC_VM_NAME) will be using ltebox" + echo "############################################################" + LTEBOX=1 + fi + fi + # Here we could have other types of EPC detection + + # Do we need to start the EPC VM + EPC_VM_CMDS=`echo $VM_CMDS | sed -e "s#cmds#epc-cmds#"` + echo "EPC_VM_CMD_FILE = $EPC_VM_CMDS" + IS_EPC_VM_ALIVE=`uvt-kvm list | grep -c $EPC_VM_NAME` + if [ $IS_EPC_VM_ALIVE -eq 0 ] + then + echo "############################################################" + echo "Creating test EPC VM ($EPC_VM_NAME) on Ubuntu Cloud Image base" + echo "############################################################" + uvt-kvm create $EPC_VM_NAME release=xenial --unsafe-caching fi - i="0" - echo "ifconfig tun5 | egrep -c \"inet addr\"" > $EPC_VM_CMDS - while [ $i -lt 10 ] - do - sleep 2 - CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS` - if [ $CONNECTED -eq 1 ] - then - i="100" - else - i=$[$i+1] - fi - done - rm $EPC_VM_CMDS - if [ $i -lt 50 ] + uvt-kvm wait $EPC_VM_NAME --insecure + EPC_VM_IP_ADDR=`uvt-kvm ip $EPC_VM_NAME` + echo "$EPC_VM_NAME has for IP addr = $EPC_VM_IP_ADDR" + scp -o StrictHostKeyChecking=no /etc/apt/apt.conf.d/01proxy ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu + + # ltebox specific actions (install and start) + LTE_BOX_TO_INSTALL=1 + if [ $LTEBOX -eq 1 ] then - echo "Problem w/ starting ltebox EPC" + echo "ls -ls /opt/ltebox/tools/start_ltebox" > $EPC_VM_CMDS + RESPONSE=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS` + NB_EXES=`echo $RESPONSE | grep -c ltebox` + if [ $NB_EXES -eq 1 ]; then LTE_BOX_TO_INSTALL=0; fi + fi + + if [ $LTEBOX -eq 1 ] && [ $LTE_BOX_TO_INSTALL -eq 1 ] + then + echo "############################################################" + echo "Copying ltebox archives into EPC VM ($EPC_VM_NAME)" + echo "############################################################" + scp -o StrictHostKeyChecking=no /opt/ltebox-archives/ltebox_2.2.70_16_04_amd64.deb ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu + scp -o StrictHostKeyChecking=no /opt/ltebox-archives/etc-conf.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu + scp -o StrictHostKeyChecking=no /opt/ltebox-archives/hss-sim.zip ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu + + echo "############################################################" + echo "Install EPC on EPC VM ($EPC_VM_NAME)" + echo "############################################################" + echo "sudo cp 01proxy /etc/apt/apt.conf.d/" > $EPC_VM_CMDS + echo "touch /home/ubuntu/.hushlogin" >> $EPC_VM_CMDS + echo "echo \"sudo apt-get --yes --quiet install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf\"" >> $EPC_VM_CMDS + echo "sudo apt-get update > zip-install.txt 2>&1" >> $EPC_VM_CMDS + echo "sudo apt-get --yes install zip openjdk-8-jre libconfuse-dev libreadline-dev liblog4c-dev libgcrypt-dev libsctp-dev python2.7 python2.7-dev daemon iperf >> zip-install.txt 2>&1" >> $EPC_VM_CMDS + + # Installing HSS + echo "echo \"cd /opt\"" >> $EPC_VM_CMDS + echo "cd /opt" >> $EPC_VM_CMDS + echo "echo \"sudo unzip -qq /home/ubuntu/hss-sim.zip\"" >> $EPC_VM_CMDS + echo "sudo unzip -qq /home/ubuntu/hss-sim.zip" >> $EPC_VM_CMDS + echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS + echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS + + # Installing ltebox + echo "echo \"cd /home/ubuntu\"" >> $EPC_VM_CMDS + echo "cd /home/ubuntu" >> $EPC_VM_CMDS + echo "echo \"sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb \"" >> $EPC_VM_CMDS + echo "sudo dpkg -i ltebox_2.2.70_16_04_amd64.deb >> zip-install.txt 2>&1" >> $EPC_VM_CMDS + + echo "echo \"cd /opt/ltebox/etc/\"" >> $EPC_VM_CMDS + echo "cd /opt/ltebox/etc/" >> $EPC_VM_CMDS + echo "echo \"sudo unzip -qq -o /home/ubuntu/etc-conf.zip\"" >> $EPC_VM_CMDS + echo "sudo unzip -qq -o /home/ubuntu/etc-conf.zip" >> $EPC_VM_CMDS + echo "sudo sed -i -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' gw.conf" >> $EPC_VM_CMDS + echo "sudo sed -i -e 's#EPC_VM_IP_ADDRESS#$EPC_VM_IP_ADDR#' mme.conf" >> $EPC_VM_CMDS + fi + + # Starting EPC + if [ $LTEBOX -eq 1 ] + then + echo "############################################################" + echo "Start EPC on EPC VM ($EPC_VM_NAME)" + echo "############################################################" + echo "echo \"cd /opt/hss_sim0609\"" >> $EPC_VM_CMDS + echo "cd /opt/hss_sim0609" >> $EPC_VM_CMDS + echo "echo \"sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real\"" >> $EPC_VM_CMDS + echo "sudo daemon --unsafe --name=simulated_hss --chdir=/opt/hss_sim0609 ./starthss_real" >> $EPC_VM_CMDS + + echo "echo \"cd /opt/ltebox/tools/\"" >> $EPC_VM_CMDS + echo "cd /opt/ltebox/tools/" >> $EPC_VM_CMDS + echo "echo \"sudo ./start_ltebox\"" >> $EPC_VM_CMDS + echo "nohup sudo ./start_ltebox > /home/ubuntu/ltebox.txt" >> $EPC_VM_CMDS + + ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS + rm -f $EPC_VM_CMDS + + # We may have some adaptation to do + if [ -f /opt/ltebox-archives/adapt_ue_sim.txt ] + then + echo "############################################################" + echo "Doing some adaptation on UE side" + echo "############################################################" + ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < /opt/ltebox-archives/adapt_ue_sim.txt + fi + + i="0" + echo "ifconfig tun5 | egrep -c \"inet addr\"" > $EPC_VM_CMDS + while [ $i -lt 10 ] + do + sleep 2 + CONNECTED=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS` + if [ $CONNECTED -eq 1 ] + then + i="100" + else + i=$[$i+1] + fi + done + rm $EPC_VM_CMDS + if [ $i -lt 50 ] + then + echo "Problem w/ starting ltebox EPC" + exit -1 + fi + fi + + # HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC + + # Retrieve EPC real IP address + if [ $LTEBOX -eq 1 ] + then + # in our configuration file, we are using pool 5 + echo "ifconfig tun5 | egrep \"inet addr\" | sed -e 's#^.*inet addr:##' -e 's# P-t-P:.*\$##'" > $EPC_VM_CMDS + REAL_EPC_IP_ADDR=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS` + echo "EPC IP Address is : $REAL_EPC_IP_ADDR" + rm $EPC_VM_CMDS + fi + + echo "############################################################" + echo "Starting the eNB in FDD-5MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=fdd_05MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 lte-fdd-basic-sim.conf + + echo "############################################################" + echo "Starting the UE in FDD-5MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=fdd_05MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25 2680 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR exit -1 fi - fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - # HERE ADD ANY INSTALL ACTIONS FOR ANOTHER EPC + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=fdd_05MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - # Retrieve EPC real IP address - if [ $LTEBOX -eq 1 ] - then - # in our configuration file, we are using pool 5 - echo "ifconfig tun5 | egrep \"inet addr\" | sed -e 's#^.*inet addr:##' -e 's# P-t-P:.*\$##'" > $EPC_VM_CMDS - REAL_EPC_IP_ADDR=`ssh -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR < $EPC_VM_CMDS` - echo "EPC IP Address is : $REAL_EPC_IP_ADDR" - rm $EPC_VM_CMDS - fi + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_05MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 - echo "############################################################" - echo "Starting the eNB in FDD-5MHz mode" - echo "############################################################" - CURRENT_ENB_LOG_FILE=fdd_05MHz_enb.log - start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 lte-fdd-basic-sim.conf + echo "############################################################" + echo "Iperf UL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_05MHz_iperf_ul + iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2 - echo "############################################################" - echo "Starting the UE in FDD-5MHz mode" - echo "############################################################" - CURRENT_UE_LOG_FILE=fdd_05MHz_ue.log - start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25 2680 - if [ $UE_SYNC -eq 0 ] - then - echo "Problem w/ eNB and UE not syncing" + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - exit -1 - fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + sleep 10 - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=fdd_05MHz_ping_ue.txt - ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC - check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + echo "############################################################" + echo "Starting the eNB in FDD-10MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=fdd_10MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-fdd-basic-sim.conf - echo "############################################################" - echo "Iperf DL" - echo "############################################################" - CURR_IPERF_LOG_BASE=fdd_05MHz_iperf_dl - iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 + echo "############################################################" + echo "Starting the UE in FDD-10MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=fdd_10MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2680 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - echo "############################################################" - echo "Iperf UL" - echo "############################################################" - CURR_IPERF_LOG_BASE=fdd_05MHz_iperf_ul - iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2 + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=fdd_10MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - echo "############################################################" - echo "Terminate enb/ue simulators" - echo "############################################################" - terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC - recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - sleep 10 + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 - echo "############################################################" - echo "Starting the eNB in FDD-10MHz mode" - echo "############################################################" - CURRENT_ENB_LOG_FILE=fdd_10MHz_enb.log - start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-fdd-basic-sim.conf + echo "############################################################" + echo "Iperf UL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_ul + iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2 - echo "############################################################" - echo "Starting the UE in FDD-10MHz mode" - echo "############################################################" - CURRENT_UE_LOG_FILE=fdd_10MHz_ue.log - start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2680 - if [ $UE_SYNC -eq 0 ] - then - echo "Problem w/ eNB and UE not syncing" + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - exit -1 - fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + sleep 10 - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=fdd_10MHz_ping_ue.txt - ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC - check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + echo "############################################################" + echo "Starting the eNB in FDD-20MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=fdd_20MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-fdd-basic-sim.conf - echo "############################################################" - echo "Iperf DL" - echo "############################################################" - CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_dl - iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 + echo "############################################################" + echo "Starting the UE in FDD-20MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=fdd_20MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2680 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - echo "############################################################" - echo "Iperf UL" - echo "############################################################" - CURR_IPERF_LOG_BASE=fdd_10MHz_iperf_ul - iperf_ul $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 2 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 2 + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=fdd_20MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - echo "############################################################" - echo "Terminate enb/ue simulators" - echo "############################################################" - terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC - recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - sleep 10 + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=fdd_20MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 - echo "############################################################" - echo "Starting the eNB in FDD-20MHz mode" - echo "############################################################" - CURRENT_ENB_LOG_FILE=fdd_20MHz_enb.log - start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-fdd-basic-sim.conf - - echo "############################################################" - echo "Starting the UE in FDD-20MHz mode" - echo "############################################################" - CURRENT_UE_LOG_FILE=fdd_20MHz_ue.log - start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2680 - if [ $UE_SYNC -eq 0 ] - then - echo "Problem w/ eNB and UE not syncing" + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - exit -1 - fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + sleep 10 - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=fdd_20MHz_ping_ue.txt - ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC - check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + echo "############################################################" + echo "Starting the eNB in TDD-5MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=tdd_05MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 lte-tdd-basic-sim.conf - echo "############################################################" - echo "Iperf DL" - echo "############################################################" - CURR_IPERF_LOG_BASE=fdd_20MHz_iperf_dl - iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 15 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 15 + echo "############################################################" + echo "Starting the UE in TDD-5MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=tdd_05MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25 2350 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - echo "############################################################" - echo "Terminate enb/ue simulators" - echo "############################################################" - terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC - recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - sleep 10 + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=tdd_05MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - echo "############################################################" - echo "Starting the eNB in TDD-5MHz mode" - echo "############################################################" - CURRENT_ENB_LOG_FILE=tdd_05MHz_enb.log - start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 25 lte-tdd-basic-sim.conf +# Bug in TDD 5Mhz --- not running it +# echo "############################################################" +# echo "Iperf DL" +# echo "############################################################" +# CURR_IPERF_LOG_BASE=tdd_05MHz_iperf_dl +# iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE +# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC +# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC +# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 - echo "############################################################" - echo "Starting the UE in TDD-5MHz mode" - echo "############################################################" - CURRENT_UE_LOG_FILE=tdd_05MHz_ue.log - start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 25 2350 - if [ $UE_SYNC -eq 0 ] - then - echo "Problem w/ eNB and UE not syncing" + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - exit -1 - fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + sleep 10 - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=tdd_05MHz_ping_ue.txt - ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC - check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + echo "############################################################" + echo "Starting the eNB in TDD-10MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=tdd_10MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-tdd-basic-sim.conf -# Bug in TDD 5Mhz --- not running it -# echo "############################################################" -# echo "Iperf DL" -# echo "############################################################" -# CURR_IPERF_LOG_BASE=tdd_05MHz_iperf_dl -# iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE -# scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC -# scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC -# check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 + echo "############################################################" + echo "Starting the UE in TDD-10MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=tdd_10MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2350 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - echo "############################################################" - echo "Terminate enb/ue simulators" - echo "############################################################" - terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC - recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - sleep 10 + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=tdd_10MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - echo "############################################################" - echo "Starting the eNB in TDD-10MHz mode" - echo "############################################################" - CURRENT_ENB_LOG_FILE=tdd_10MHz_enb.log - start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 50 lte-tdd-basic-sim.conf + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=tdd_10MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 - echo "############################################################" - echo "Starting the UE in TDD-10MHz mode" - echo "############################################################" - CURRENT_UE_LOG_FILE=tdd_10MHz_ue.log - start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 50 2350 - if [ $UE_SYNC -eq 0 ] - then - echo "Problem w/ eNB and UE not syncing" + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - exit -1 - fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR + sleep 10 - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=tdd_10MHz_ping_ue.txt - ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC - check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 + echo "############################################################" + echo "Starting the eNB in TDD-20MHz mode" + echo "############################################################" + CURRENT_ENB_LOG_FILE=tdd_20MHz_enb.log + start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-tdd-basic-sim.conf - echo "############################################################" - echo "Iperf DL" - echo "############################################################" - CURR_IPERF_LOG_BASE=tdd_10MHz_iperf_dl - iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 + echo "############################################################" + echo "Starting the UE in TDD-20MHz mode" + echo "############################################################" + CURRENT_UE_LOG_FILE=tdd_20MHz_ue.log + start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2350 + if [ $UE_SYNC -eq 0 ] + then + echo "Problem w/ eNB and UE not syncing" + terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC + recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + exit -1 + fi + get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - echo "############################################################" - echo "Terminate enb/ue simulators" - echo "############################################################" - terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC - recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - sleep 10 + echo "############################################################" + echo "Pinging the UE" + echo "############################################################" + PING_LOG_FILE=tdd_20MHz_ping_ue.txt + ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC + check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - echo "############################################################" - echo "Starting the eNB in TDD-20MHz mode" - echo "############################################################" - CURRENT_ENB_LOG_FILE=tdd_20MHz_enb.log - start_basic_sim_enb $VM_CMDS $VM_IP_ADDR $EPC_VM_IP_ADDR $CURRENT_ENB_LOG_FILE 100 lte-tdd-basic-sim.conf + echo "############################################################" + echo "Iperf DL" + echo "############################################################" + CURR_IPERF_LOG_BASE=tdd_20MHz_iperf_dl + iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE + scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC + check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 - echo "############################################################" - echo "Starting the UE in TDD-20MHz mode" - echo "############################################################" - CURRENT_UE_LOG_FILE=tdd_20MHz_ue.log - start_basic_sim_ue $VM_CMDS $VM_IP_ADDR $CURRENT_UE_LOG_FILE 100 2350 - if [ $UE_SYNC -eq 0 ] - then - echo "Problem w/ eNB and UE not syncing" + echo "############################################################" + echo "Terminate enb/ue simulators" + echo "############################################################" terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - exit -1 + sleep 10 + + echo "############################################################" + echo "Terminate EPC" + echo "############################################################" + + if [ $LTEBOX -eq 1 ] + then + terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR + fi + + if [ $KEEP_VM_ALIVE -eq 0 ] + then + echo "############################################################" + echo "Destroying VMs" + echo "############################################################" + uvt-kvm destroy $VM_NAME + ssh-keygen -R $VM_IP_ADDR + uvt-kvm destroy $EPC_VM_NAME + ssh-keygen -R $EPC_VM_IP_ADDR + fi + + echo "############################################################" + echo "Checking run status" + echo "############################################################" + + if [ $PING_STATUS -ne 0 ]; then STATUS=-1; fi + if [ $IPERF_STATUS -ne 0 ]; then STATUS=-1; fi + fi - get_ue_ip_addr $VM_CMDS $VM_IP_ADDR - - echo "############################################################" - echo "Pinging the UE" - echo "############################################################" - PING_LOG_FILE=tdd_20MHz_ping_ue.txt - ping_ue_ip_addr $EPC_VM_CMDS $EPC_VM_IP_ADDR $UE_IP_ADDR $PING_LOG_FILE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/$PING_LOG_FILE $ARCHIVES_LOC - check_ping_result $ARCHIVES_LOC/$PING_LOG_FILE 20 - - echo "############################################################" - echo "Iperf DL" - echo "############################################################" - CURR_IPERF_LOG_BASE=tdd_20MHz_iperf_dl - iperf_dl $VM_CMDS $VM_IP_ADDR $EPC_VM_CMDS $EPC_VM_IP_ADDR 6 $CURR_IPERF_LOG_BASE - scp -o StrictHostKeyChecking=no ubuntu@$EPC_VM_IP_ADDR:/home/ubuntu/${CURR_IPERF_LOG_BASE}_client.txt $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/${CURR_IPERF_LOG_BASE}_server.txt $ARCHIVES_LOC - check_iperf $ARCHIVES_LOC/$CURR_IPERF_LOG_BASE 6 - - echo "############################################################" - echo "Terminate enb/ue simulators" - echo "############################################################" - terminate_enb_ue_basic_sim $VM_CMDS $VM_IP_ADDR - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/$CURRENT_UE_LOG_FILE $ARCHIVES_LOC - recover_core_dump $VM_CMDS $VM_IP_ADDR $ARCHIVES_LOC/$CURRENT_ENB_LOG_FILE $ARCHIVES_LOC - sleep 10 - - echo "############################################################" - echo "Terminate EPC" - echo "############################################################" - - if [ $LTEBOX -eq 1 ] - then - terminate_ltebox_epc $EPC_VM_CMDS $EPC_VM_IP_ADDR - fi - - echo "############################################################" - echo "Checking run status" - echo "############################################################" - - if [ $PING_STATUS -ne 0 ]; then STATUS=-1; fi - if [ $IPERF_STATUS -ne 0 ]; then STATUS=-1; fi - -fi - -if [ $STATUS -eq 0 ] -then - echo "STATUS seems OK" -else - echo "STATUS failed?" -fi - -exit $STATUS +} diff --git a/ci-scripts/waitBuildOnVM.sh b/ci-scripts/waitBuildOnVM.sh index 011a32bbb9..a6f4edace8 100755 --- a/ci-scripts/waitBuildOnVM.sh +++ b/ci-scripts/waitBuildOnVM.sh @@ -20,8 +20,8 @@ # * contact@openairinterface.org # */ -function usage { - echo "OAI VM Build Check script" +function wait_usage { + echo "OAI CI VM script" echo " Original Author: Raphael Defosseux" echo " Requirements:" echo " -- uvtool uvtool-libvirt apt-cacher" @@ -31,9 +31,9 @@ function usage { echo "" echo "Usage:" echo "------" - echo " waitBuildOnVM.sh [OPTIONS]" + echo " oai-ci-vm-tool wait [OPTIONS]" echo "" - echo "Options:" + echo "Mandatory Options:" echo "--------" echo " --job-name #### OR -jn ####" echo " Specify the name of the Jenkins job." @@ -44,16 +44,11 @@ function usage { echo " --workspace #### OR -ws ####" echo " Specify the workspace." echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant gnb-usrp OR -v5" - echo " --variant nu-ue-usrp OR -v6" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" + variant_usage echo " Specify the variant to build." echo "" + echo "Options:" + echo "--------" echo " --keep-vm-alive OR -k" echo " Keep the VM alive after the build." echo "" @@ -62,345 +57,114 @@ function usage { echo "" } -function variant_usage { - echo "OAI VM Build Check script" - echo " Original Author: Raphael Defosseux" - echo "" - echo " --variant enb-usrp OR -v1" - echo " --variant basic-sim OR -v2" - echo " --variant phy-sim OR -v3" - echo " --variant cppcheck OR -v4" - echo " --variant gnb-usrp OR -v5" - echo " --variant nu-ue-usrp OR -v6" - echo " --variant enb-ethernet OR -v7" - echo " --variant ue-ethernet OR -v8" - echo "" +function wait_on_vm_build { + echo "############################################################" + echo "OAI CI VM script" + echo "############################################################" + + echo "VM_NAME = $VM_NAME" + echo "VM_CMD_FILE = $VM_CMDS" + echo "JENKINS_WKSP = $JENKINS_WKSP" + echo "ARCHIVES_LOC = $ARCHIVES_LOC" + echo "BUILD_OPTIONS = $BUILD_OPTIONS" + + IS_VM_ALIVE=`uvt-kvm list | grep -c $VM_NAME` + + if [ $IS_VM_ALIVE -eq 0 ] + then + echo "############################################################" + echo "You should have created the VM before doing anything" + echo "############################################################" + STATUS=1 + return + fi + + echo "Waiting for VM to be started" + uvt-kvm wait $VM_NAME --insecure + + VM_IP_ADDR=`uvt-kvm ip $VM_NAME` + echo "$VM_NAME has for IP addr = $VM_IP_ADDR" + + echo "############################################################" + echo "Waiting build process to end on VM ($VM_NAME)" + echo "############################################################" + + if [[ "$VM_NAME" == *"-cppcheck"* ]] + then + echo "echo \"ps -aux | grep cppcheck \"" >> $VM_CMDS + echo "while [ \$(ps -aux | grep --color=never cppcheck | grep -v grep | wc -l) -gt 0 ]; do sleep 3; done" >> $VM_CMDS + else + echo "echo \"ps -aux | grep build \"" >> $VM_CMDS + echo "while [ \$(ps -aux | grep --color=never build_oai | grep -v grep | wc -l) -gt 0 ]; do sleep 3; done" >> $VM_CMDS + fi + + ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS + rm -f $VM_CMDS } -if [ $# -lt 1 ] || [ $# -gt 9 ] -then - echo "Syntax Error: not the correct number of arguments" - echo "" - usage - exit 1 -fi - -VM_TEMPLATE=ci- -JOB_NAME=XX -BUILD_ID=XX -VM_NAME=ci-enb-usrp -VM_MEMORY=2048 -VM_CPU=4 -ARCHIVES_LOC=enb_usrp -LOG_PATTERN=.Rel15.txt -NB_PATTERN_FILES=4 -BUILD_OPTIONS="--eNB -w USRP" -KEEP_VM_ALIVE=0 - -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 - ;; - -k|--keep-vm-alive) - KEEP_VM_ALIVE=1 - shift - ;; - -v1) - VM_NAME=ci-enb-usrp - ARCHIVES_LOC=enb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--eNB -w USRP --mu" - shift - ;; - -v2) - VM_NAME=ci-basic-sim - ARCHIVES_LOC=basic_sim - LOG_PATTERN=basic_simulator - NB_PATTERN_FILES=2 - BUILD_OPTIONS="--basic-simulator" - VM_MEMORY=8192 - VM_CPU=4 - shift - ;; - -v3) - VM_NAME=ci-phy-sim - ARCHIVES_LOC=phy_sim - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--phy_simulators" - shift - ;; - -v4) - VM_NAME=ci-cppcheck - VM_MEMORY=8192 - ARCHIVES_LOC=cppcheck - LOG_PATTERN=cppcheck.xml - NB_PATTERN_FILES=1 - BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2 -i openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c" - shift - ;; - -v5) - VM_NAME=ci-gnb-usrp - ARCHIVES_LOC=gnb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--gNB -w USRP" - shift - ;; - -v6) - VM_NAME=ci-ue-nr-usrp - ARCHIVES_LOC=nrue_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--nrUE -w USRP" - shift - ;; - -v7) - VM_NAME=ci-enb-ethernet - ARCHIVES_LOC=enb_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET --noS1" - shift - ;; - -v8) - VM_NAME=ci-ue-ethernet - ARCHIVES_LOC=ue_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--UE -t ETHERNET --noS1" - shift - ;; - --variant) - variant="$2" - case $variant in - enb-usrp) - VM_NAME=ci-enb-usrp - ARCHIVES_LOC=enb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--eNB -w USRP --mu" - ;; - basic-sim) - VM_NAME=ci-basic-sim - ARCHIVES_LOC=basic_sim - LOG_PATTERN=basic_simulator - NB_PATTERN_FILES=2 - BUILD_OPTIONS="--basic-simulator" - VM_MEMORY=8192 - VM_CPU=4 - ;; - phy-sim) - VM_NAME=ci-phy-sim - ARCHIVES_LOC=phy_sim - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--phy_simulators" - ;; - cppcheck) - VM_NAME=ci-cppcheck - VM_MEMORY=8192 - ARCHIVES_LOC=cppcheck - LOG_PATTERN=cppcheck.xml - NB_PATTERN_FILES=1 - BUILD_OPTIONS="--enable=warning --force --xml --xml-version=2 -i openair1/PHY/CODING/nrLDPC_decoder/nrLDPC_decoder.c" - ;; - gnb-usrp) - VM_NAME=ci-gnb-usrp - ARCHIVES_LOC=gnb_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--gNB -w USRP" - ;; - nu-ue-usrp) - VM_NAME=ci-ue-nr-usrp - ARCHIVES_LOC=nrue_usrp - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=4 - BUILD_OPTIONS="--nrUE -w USRP" - ;; - enb-ethernet) - VM_NAME=ci-enb-ethernet - ARCHIVES_LOC=enb_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--eNB -t ETHERNET --noS1" - ;; - ue-ethernet) - VM_NAME=ci-ue-ethernet - ARCHIVES_LOC=ue_eth - LOG_PATTERN=.Rel15.txt - NB_PATTERN_FILES=6 - BUILD_OPTIONS="--UE -t ETHERNET --noS1" - ;; - *) - echo "" - echo "Syntax Error: Invalid Variant option -> $variant" - echo "" - variant_usage - exit 1 - esac - 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 [ ! -f /etc/apt/apt.conf.d/01proxy ] -then - echo "Missing /etc/apt/apt.conf.d/01proxy file!" - echo "Is apt-cacher installed and configured?" - exit 1 -fi - -if [ "$JOB_NAME" == "XX" ] || [ "$BUILD_ID" == "XX" ] -then - VM_TEMPLATE=ci- -else - VM_TEMPLATE=${JOB_NAME}-b${BUILD_ID}- -fi - -VM_NAME=`echo $VM_NAME | sed -e "s#ci-#$VM_TEMPLATE#"` -VM_CMDS=${VM_NAME}_cmds.txt -ARCHIVES_LOC=${JENKINS_WKSP}/archives/${ARCHIVES_LOC} - -echo "VM_NAME = $VM_NAME" -echo "VM_CMD_FILE = $VM_CMDS" -echo "JENKINS_WKSP = $JENKINS_WKSP" -echo "ARCHIVES_LOC = $ARCHIVES_LOC" -echo "BUILD_OPTIONS = $BUILD_OPTIONS" - -IS_VM_ALIVE=`uvt-kvm list | grep -c $VM_NAME` - -if [ $IS_VM_ALIVE -eq 0 ] -then +function check_on_vm_build { echo "############################################################" - echo "You should have created the VM before doing anything" + echo "Creating a tmp folder to store results and artifacts" echo "############################################################" - exit 1 -fi - -echo "Waiting for VM to be started" -uvt-kvm wait $VM_NAME --insecure - -VM_IP_ADDR=`uvt-kvm ip $VM_NAME` -echo "$VM_NAME has for IP addr = $VM_IP_ADDR" - -echo "############################################################" -echo "Waiting build process to end on VM ($VM_NAME)" -echo "############################################################" - -if [[ "$VM_NAME" == *"-cppcheck"* ]] -then - echo "echo \"ps -aux | grep cppcheck \"" >> $VM_CMDS - echo "while [ \$(ps -aux | grep --color=never cppcheck | grep -v grep | wc -l) -gt 0 ]; do sleep 3; done" >> $VM_CMDS -else - echo "echo \"ps -aux | grep build \"" >> $VM_CMDS - echo "while [ \$(ps -aux | grep --color=never build_oai | grep -v grep | wc -l) -gt 0 ]; do sleep 3; done" >> $VM_CMDS -fi - -ssh -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR < $VM_CMDS - -echo "############################################################" -echo "Creating a tmp folder to store results and artifacts" -echo "############################################################" -if [ ! -d $JENKINS_WKSP/archives ] -then - mkdir $JENKINS_WKSP/archives -fi - -if [ ! -d $ARCHIVES_LOC ] -then - mkdir $ARCHIVES_LOC -fi - -scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.txt $ARCHIVES_LOC -if [[ "$VM_NAME" == *"-cppcheck"* ]] -then - scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.xml $ARCHIVES_LOC -fi - -if [ $KEEP_VM_ALIVE -eq 0 ] -then - echo "############################################################" - echo "Destroying VM" - echo "############################################################" - uvt-kvm destroy $VM_NAME - ssh-keygen -R $VM_IP_ADDR -fi -rm -f $VM_CMDS - -echo "############################################################" -echo "Checking build status" -echo "############################################################" - -LOG_FILES=`ls $ARCHIVES_LOC/*.txt $ARCHIVES_LOC/*.xml` -STATUS=0 -NB_FOUND_FILES=0 - -for FULLFILE in $LOG_FILES -do - if [[ $FULLFILE == *"$LOG_PATTERN"* ]] + if [ ! -d $JENKINS_WKSP/archives ] then - filename=$(basename -- "$FULLFILE") - if [ "$LOG_PATTERN" == ".Rel15.txt" ] - then - PASS_PATTERN=`echo $filename | sed -e "s#$LOG_PATTERN##"` - fi - if [ "$LOG_PATTERN" == "basic_simulator" ] - then - PASS_PATTERN="lte-" - fi - if [ "$LOG_PATTERN" == "cppcheck.xml" ] - then - PASS_PATTERN="results version" - LOCAL_STAT=`egrep -c "$PASS_PATTERN" $FULLFILE` - else - LOCAL_STAT=`egrep -c "Built target $PASS_PATTERN" $FULLFILE` - fi - if [ $LOCAL_STAT -eq 0 ]; then STATUS=-1; fi - NB_FOUND_FILES=$((NB_FOUND_FILES + 1)) + mkdir $JENKINS_WKSP/archives fi -done -if [ $NB_PATTERN_FILES -ne $NB_FOUND_FILES ]; then STATUS=-1; fi + if [ ! -d $ARCHIVES_LOC ] + then + mkdir $ARCHIVES_LOC + fi -if [ $STATUS -eq 0 ] -then - echo "STATUS seems OK" -else - echo "STATUS failed?" -fi -exit $STATUS + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.txt $ARCHIVES_LOC + if [[ "$VM_NAME" == *"-cppcheck"* ]] + then + scp -o StrictHostKeyChecking=no ubuntu@$VM_IP_ADDR:/home/ubuntu/tmp/cmake_targets/log/*.xml $ARCHIVES_LOC + fi + + if [ $KEEP_VM_ALIVE -eq 0 ] + then + echo "############################################################" + echo "Destroying VM" + echo "############################################################" + uvt-kvm destroy $VM_NAME + ssh-keygen -R $VM_IP_ADDR + fi + rm -f $VM_CMDS + + echo "############################################################" + echo "Checking build status" + echo "############################################################" + + LOG_FILES=`ls $ARCHIVES_LOC/*.txt $ARCHIVES_LOC/*.xml` + STATUS=0 + NB_FOUND_FILES=0 + + for FULLFILE in $LOG_FILES + do + if [[ $FULLFILE == *"$LOG_PATTERN"* ]] + then + filename=$(basename -- "$FULLFILE") + if [ "$LOG_PATTERN" == ".Rel15.txt" ] + then + PASS_PATTERN=`echo $filename | sed -e "s#$LOG_PATTERN##"` + fi + if [ "$LOG_PATTERN" == "basic_simulator" ] + then + PASS_PATTERN="lte-" + fi + if [ "$LOG_PATTERN" == "cppcheck.xml" ] + then + PASS_PATTERN="results version" + LOCAL_STAT=`egrep -c "$PASS_PATTERN" $FULLFILE` + else + LOCAL_STAT=`egrep -c "Built target $PASS_PATTERN" $FULLFILE` + fi + 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 STATUS=-1; fi + +} From d348c414a835d74ea60c68f20979f27da6468c65 Mon Sep 17 00:00:00 2001 From: Florian Kaltenberger Date: Wed, 7 Nov 2018 18:34:56 +0100 Subject: [PATCH 20/23] nr_pbchsim CI improvements --- cmake_targets/autotests/test_case_list.xml | 2 +- openair1/SIMULATION/NR_PHY/pbchsim.c | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index 57b16bcca4..64ea824187 100644 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -1055,7 +1055,7 @@ -s-11 -S-10 -n1000 -s-11 -S-10 -n10 -I nr_pbchsim.test1 - n_errors \(negative CRC\) = 0 + PBCH test OK segmentation fault|assertion|exiting|fatal 3 diff --git a/openair1/SIMULATION/NR_PHY/pbchsim.c b/openair1/SIMULATION/NR_PHY/pbchsim.c index 5652c5712a..c8d8d39783 100644 --- a/openair1/SIMULATION/NR_PHY/pbchsim.c +++ b/openair1/SIMULATION/NR_PHY/pbchsim.c @@ -133,6 +133,8 @@ int main(int argc, char **argv) int loglvl=OAILOG_WARNING; + float target_error_rate = 0.01; + cpuf = get_cpu_freq_GHz(); if ( load_configmodule(argc,argv) == 0) { @@ -296,6 +298,7 @@ int main(int argc, char **argv) case 'I': run_initial_sync=1; + target_error_rate=0.1; break; case 'L': @@ -571,7 +574,12 @@ int main(int argc, char **argv) printf("SNR %f : n_errors (negative CRC) = %d/%d\n", SNR,n_errors,n_trials); - if (n_trials==1 || ((float)n_errors/(float)n_trials < 0.01)) + if ((float)n_errors/(float)n_trials <= target_error_rate) { + printf("PBCH test OK\n"); + break; + } + + if (n_trials==1) break; } // NSR From b4b8db63894aff8a654bb17353bdfc9e1bf46b9e Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Thu, 8 Nov 2018 16:35:44 +0100 Subject: [PATCH 21/23] CI: adding support for slave jobs to support non-develop branch targets Signed-off-by: Raphael Defosseux --- ci-scripts/Jenkinsfile-gitlab | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/ci-scripts/Jenkinsfile-gitlab b/ci-scripts/Jenkinsfile-gitlab index f170aa081f..b371f6af20 100644 --- a/ci-scripts/Jenkinsfile-gitlab +++ b/ci-scripts/Jenkinsfile-gitlab @@ -338,7 +338,8 @@ pipeline { string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) + booleanParam(name: 'eNB_mergeRequest', value: true), + string(name: 'eNB_TargetBranch', value: String.valueOf(env.gitlabTargetBranch)) ] } } else { @@ -383,7 +384,8 @@ pipeline { string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) + booleanParam(name: 'eNB_mergeRequest', value: true), + string(name: 'eNB_TargetBranch', value: String.valueOf(env.gitlabTargetBranch)) ] } } else { @@ -428,7 +430,8 @@ pipeline { string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) + booleanParam(name: 'eNB_mergeRequest', value: true), + string(name: 'eNB_TargetBranch', value: String.valueOf(env.gitlabTargetBranch)) ] } } else { @@ -473,7 +476,8 @@ pipeline { string(name: 'eNB_Repository', value: String.valueOf(GIT_URL)), string(name: 'eNB_Branch', value: String.valueOf(env.gitlabSourceBranch)), string(name: 'eNB_CommitID', value: String.valueOf(env.gitlabMergeRequestLastCommit)), - booleanParam(name: 'eNB_mergeRequest', value: true) + booleanParam(name: 'eNB_mergeRequest', value: true), + string(name: 'eNB_TargetBranch', value: String.valueOf(env.gitlabTargetBranch)) ] } } else { From ec1fc635c03de9450e61a3560dbb050276a8f168 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Thu, 8 Nov 2018 19:15:37 +0100 Subject: [PATCH 22/23] CI: normalize IPv4 addresses for scripts Signed-off-by: Raphael Defosseux --- .../enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf | 10 ++++------ .../enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf | 10 ++++------ .../enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf | 10 ++++------ .../conf_files/enb.band7.tm1.100PRB.usrpb210.conf | 9 ++++----- .../conf_files/enb.band7.tm1.25PRB.usrpb210.conf | 9 ++++----- .../conf_files/enb.band7.tm1.50PRB.usrpb210.conf | 9 ++++----- ci-scripts/conf_files/lte-fdd-basic-sim.conf | 1 - ci-scripts/conf_files/lte-tdd-basic-sim.conf | 2 -- .../rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf | 10 ++++------ .../rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf | 10 ++++------ .../rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf | 10 ++++------ .../rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf | 9 ++++----- .../rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf | 9 ++++----- .../rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf | 9 ++++----- ci-scripts/main.py | 6 ++---- 15 files changed, 50 insertions(+), 73 deletions(-) diff --git a/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf index ec968e8cef..b6028a8152 100644 --- a/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band40.tm1.100PRB.FairScheduler.usrpb210.conf @@ -134,7 +134,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "10.0.0.2"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -144,13 +144,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "10.0.0.1/24"; - + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "10.0.0.1/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf index c2f69cb1b9..10cbd04e9a 100644 --- a/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band40.tm1.25PRB.FairScheduler.usrpb210.conf @@ -134,7 +134,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "10.0.0.2"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -144,13 +144,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "10.0.0.1/24"; - + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "10.0.0.1/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf index 6bdbd4e39b..c79dbf1ac0 100644 --- a/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band40.tm1.50PRB.FairScheduler.usrpb210.conf @@ -134,7 +134,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "10.0.0.2"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -144,13 +144,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "10.0.0.1/24"; - + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "10.0.0.1/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf index 1a566e9579..f3cb31f449 100644 --- a/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band7.tm1.100PRB.usrpb210.conf @@ -171,7 +171,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.26"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -181,12 +181,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } diff --git a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf index fd49fe9d83..e33daa7a8a 100644 --- a/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band7.tm1.25PRB.usrpb210.conf @@ -171,7 +171,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.26"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -181,12 +181,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } diff --git a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf index 1613dd4c32..32e8bb9931 100644 --- a/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf +++ b/ci-scripts/conf_files/enb.band7.tm1.50PRB.usrpb210.conf @@ -171,7 +171,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.26"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -181,12 +181,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } diff --git a/ci-scripts/conf_files/lte-fdd-basic-sim.conf b/ci-scripts/conf_files/lte-fdd-basic-sim.conf index 0211e126a1..1d1395cf6d 100644 --- a/ci-scripts/conf_files/lte-fdd-basic-sim.conf +++ b/ci-scripts/conf_files/lte-fdd-basic-sim.conf @@ -186,7 +186,6 @@ eNBs = ENB_INTERFACE_NAME_FOR_S1U = "eth0"; ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/lte-tdd-basic-sim.conf b/ci-scripts/conf_files/lte-tdd-basic-sim.conf index a7bc31eed8..32a84fd206 100644 --- a/ci-scripts/conf_files/lte-tdd-basic-sim.conf +++ b/ci-scripts/conf_files/lte-tdd-basic-sim.conf @@ -145,11 +145,9 @@ eNBs = { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; - ENB_INTERFACE_NAME_FOR_S1U = "eth0"; ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf index 217991f69f..285b7eaf9f 100644 --- a/ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band40.tm1.100PRB.FairScheduler.usrpb210.conf @@ -137,7 +137,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "10.0.0.2"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -147,13 +147,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "10.0.0.1/24"; - + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "10.0.0.1/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf index 21f4f34ba9..62e7fb48a4 100644 --- a/ci-scripts/conf_files/rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band40.tm1.25PRB.FairScheduler.usrpb210.conf @@ -137,7 +137,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "10.0.0.2"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -147,13 +147,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "10.0.0.1/24"; - + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "10.0.0.1/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf b/ci-scripts/conf_files/rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf index 2fdfa3c4e7..f99b701b8e 100644 --- a/ci-scripts/conf_files/rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band40.tm1.50PRB.FairScheduler.usrpb210.conf @@ -137,7 +137,7 @@ eNBs = }; ////////// MME parameters: - mme_ip_address = ( { ipv4 = "10.0.0.2"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -147,13 +147,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "10.0.0.1/24"; - + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "10.0.0.1/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; diff --git a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf index 28ffc43b23..fc2f24b8a1 100644 --- a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.100PRB.usrpb210.conf @@ -174,7 +174,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.26"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -184,12 +184,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } diff --git a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf index 4d064ecc0e..010ef28061 100644 --- a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.25PRB.usrpb210.conf @@ -174,7 +174,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.26"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -184,12 +184,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } diff --git a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf index efb1e823ad..ddf01096cd 100644 --- a/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf +++ b/ci-scripts/conf_files/rcc.band7.tm1.if4p5.lo.50PRB.usrpb210.conf @@ -174,7 +174,7 @@ eNBs = ////////// MME parameters: - mme_ip_address = ( { ipv4 = "192.168.12.26"; + mme_ip_address = ( { ipv4 = "CI_MME_IP_ADDR"; ipv6 = "192:168:30::17"; active = "yes"; preference = "ipv4"; @@ -184,12 +184,11 @@ eNBs = NETWORK_INTERFACES : { ENB_INTERFACE_NAME_FOR_S1_MME = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1_MME = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1_MME = "CI_ENB_IP_ADDR"; ENB_INTERFACE_NAME_FOR_S1U = "eth0"; - ENB_IPV4_ADDRESS_FOR_S1U = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_S1U = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_S1U = 2152; # Spec 2152 - - ENB_IPV4_ADDRESS_FOR_X2C = "192.168.12.111/24"; + ENB_IPV4_ADDRESS_FOR_X2C = "CI_ENB_IP_ADDR"; ENB_PORT_FOR_X2C = 36422; # Spec 36422 }; } diff --git a/ci-scripts/main.py b/ci-scripts/main.py index b54c6f3fab..24475f7eb3 100644 --- a/ci-scripts/main.py +++ b/ci-scripts/main.py @@ -367,10 +367,8 @@ class SSHConnection(): rruCheck = True # Make a copy and adapt to EPC / eNB IP addresses self.command('cp ' + full_config_file + ' ' + ci_full_config_file, '\$', 5) - self.command('sed -i -e \'s/mme_ip_address.*$/mme_ip_address = ( { ipv4 = "' + self.EPCIPAddress + '";/\' ' + ci_full_config_file, '\$', 2); - self.command('sed -i -e \'s/ENB_IPV4_ADDRESS_FOR_S1_MME.*$/ENB_IPV4_ADDRESS_FOR_S1_MME = "' + self.eNBIPAddress + '";/\' ' + ci_full_config_file, '\$', 2); - self.command('sed -i -e \'s/ENB_IPV4_ADDRESS_FOR_S1U.*$/ENB_IPV4_ADDRESS_FOR_S1U = "' + self.eNBIPAddress + '";/\' ' + ci_full_config_file, '\$', 2); - self.command('sed -i -e \'s/ENB_IPV4_ADDRESS_FOR_X2C.*$/ENB_IPV4_ADDRESS_FOR_X2C = "' + self.eNBIPAddress + '";/\' ' + ci_full_config_file, '\$', 2); + self.command('sed -i -e \'s/CI_MME_IP_ADDR/' + self.EPCIPAddress + '/\' ' + ci_full_config_file, '\$', 2); + self.command('sed -i -e \'s/CI_ENB_IP_ADDR/' + self.eNBIPAddress + '/\' ' + ci_full_config_file, '\$', 2); # Launch eNB with the modified config file self.command('source oaienv', '\$', 5) self.command('cd cmake_targets', '\$', 5) From 01aead2b86eea940c7c62b2b959d47485adb88c6 Mon Sep 17 00:00:00 2001 From: Raphael Defosseux Date: Fri, 9 Nov 2018 11:55:44 +0100 Subject: [PATCH 23/23] CI: proper description of the phy-sim test-cases Signed-off-by: Raphael Defosseux --- .../autotests/run_exec_autotests.bash | 5 +- cmake_targets/autotests/test_case_list.xml | 63 ++++++++++--------- 2 files changed, 38 insertions(+), 30 deletions(-) diff --git a/cmake_targets/autotests/run_exec_autotests.bash b/cmake_targets/autotests/run_exec_autotests.bash index 9a1a5cad02..895bd9554b 100755 --- a/cmake_targets/autotests/run_exec_autotests.bash +++ b/cmake_targets/autotests/run_exec_autotests.bash @@ -303,8 +303,9 @@ function test_compile_and_run() { do global_result=1 result_string="" - PROPER_DESC=`echo ${desc_array[$tags_array_index]} | sed -e "s@^.*lsim.*est case.*(Test@Test@" -e "s@^ *(@@" -e "s/),$//"` - + PROPER_DESC=`echo ${desc_array[$tags_array_index]} | sed -e "s@^.*Test cases.*(Test@Test@" -e "s@^ *(@@" -e"s/)$//" -e "s/),$//"` + echo_info "$PROPER_DESC" + for (( run_index=1; run_index <= $nruns; run_index++ )) do temp_exec_log=$log_dir/test.$test_case_name.${tags_array[$tags_array_index]}.run_$run_index diff --git a/cmake_targets/autotests/test_case_list.xml b/cmake_targets/autotests/test_case_list.xml index 64ea824187..4c4ed12ca5 100644 --- a/cmake_targets/autotests/test_case_list.xml +++ b/cmake_targets/autotests/test_case_list.xml @@ -933,23 +933,20 @@ execution - dlsim test cases (Test 1: 10 MHz, R2.FDD (MCS 5), EVA5, -1dB), + dlsim Test cases. (Test 1: 10 MHz, R2.FDD (MCS 5), EVA5, -1dB), (Test 5: 1.4 MHz, R4.FDD (MCS 4), EVA5, 0dB (70%)), - (Test 6, 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)), - (Test 6b, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)), - (Test 7, 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)), - (Test 7b, 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)), - (Test 10, 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)), - (Test 10b, 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)), - (Test 11, 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%)), - (Test 11b, 10 MHz, R7-1.FDD (MCS 25), EVA5, 16.7dB (70%)), - (Test 15, 20 MHz, R.9 FDD (MCS 26), EVA5, 17.6dB (70%)), - (Test 15b, 20 MHz, R.9-2 FDD (MCS 26, 17PRB), EVA5, 17.3dB (70%)), - (Test 15c, 20 MHz, R.9-1 FDD (MCS 26, 83 PRB), EVA5, 16.6dB (70%)), - - (TM2 Test 1 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)), - (TM2 Test 1b 5 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)), - + (Test 6: 10 MHz, R3.FDD (MCS 15), EVA5, 6.7dB (70%)), + (Test 6b: 5 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (70%)), + (Test 7: 10 MHz, R3-1.FDD (MCS 15), EVA5, 6.7dB (30%)), + (Test 7b: 5 MHz, R3-1.FDD (MCS 15), ETU70, 1.4 dB (30%)), + (Test 10: 5 MHz, R6.FDD (MCS 25), EVA5, 17.4 dB (70%)), + (Test 10b: 5 MHz, R6-1.FDD (MCS 24,18 PRB), EVA5, 17.5dB (70%)), + (Test 11: 10 MHz, R7.FDD (MCS 25), EVA5, 17.7dB (70%)), + (Test 15: 20 MHz, R.9 FDD (MCS 26), EVA5, 17.6dB (70%)), + (Test 15b: 20 MHz, R.9-2 FDD (MCS 26, 17PRB), EVA5, 17.3dB (70%)), + (Test 15c: 20 MHz, R.9-1 FDD (MCS 26, 83 PRB), EVA5, 16.6dB (70%)), + (TM2 Test 1: 10 MHz, R.11 FDD (MCS 14), EVA5, 6.8 dB (70%)), + (TM2 Test 1b: 5 MHz, R.11-2 FDD (MCS 13), EVA5, 5.9 dB (70%)) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -970,7 +967,7 @@ -m26 -gF -s16.6 -w1.0 -f.2 -n500 -B100 -c2 -z2 -r1899 -O60 -m14 -gF -s6.8 -w1.0 -f.2 -n500 -B50 -c2 -x2 -y2 -z2 -O60 -m13 -gF -s5.9 -w1.0 -f.2 -n500 -B25 -c3 -x2 -y2 -z2 -O60 - dlsim.test1 dlsim.test5 dlsim.test6 dlsim.test6b dlsim.test7 dlsim.test7b dlsim.test10 dlsim.test10b dlsim.test11 dlsim.TM2_test1 dlsim.TM2_test1b + dlsim.test1 dlsim.test5 dlsim.test6 dlsim.test6b dlsim.test7 dlsim.test7b dlsim.test10 dlsim.test10b dlsim.test11 dlsim.test11a dlsim.test11b dlsim.test11c dlsim.TM2_test1 dlsim.TM2_test1b "passed" segmentation fault|assertion|exiting|fatal 3 @@ -978,12 +975,12 @@ execution - ulsim Test cases. (Test 1, 5 MHz, FDD (MCS 5), AWGN, 6dB), - (Test 2, 5 MHz, FDD (MCS 16), AWGN , 12dB (70%)), - (Test 3, 10 MHz, R3.FDD (MCS 5), AWGN, 6dB (70%)), - (Test 4, 10 MHz, R3-1.FDD (MCS 16), AWGN, 12dB (70%)), - (Test 5, 20 MHz, FDD (MCS 5), AWGN, 6dB (70%)), - (Test 6, 20 MHz, FDD (MCS 16), AWGN, 12 dB (70%)) + ulsim Test cases. (Test 1: 5 MHz, FDD (MCS 5), AWGN, 6dB), + (Test 2: 5 MHz, FDD (MCS 16), AWGN , 12dB (70%)), + (Test 3: 10 MHz, R3.FDD (MCS 5), AWGN, 6dB (70%)), + (Test 4: 10 MHz, R3-1.FDD (MCS 16), AWGN, 12dB (70%)), + (Test 5: 20 MHz, FDD (MCS 5), AWGN, 6dB (70%)), + (Test 6: 20 MHz, FDD (MCS 16), AWGN, 12 dB (70%)) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1004,7 +1001,16 @@ execution - ldpctest test cases. + ldpc Test cases. (Test1: block length = 3872), + (Test2: block length = 4224), + (Test3: block length = 4576), + (Test4: block length = 4928), + (Test5: block length = 5280), + (Test6: block length = 5632), + (Test7: block length = 6336), + (Test8: block length = 7040), + (Test9: block length = 7744), + (Test10: block length = 8448) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1021,7 +1027,7 @@ -l7040 -s10 -n100 -l7744 -s10 -n100 -l8448 -s10 -n100 - ldpctest.test1 + ldpctest.test1 ldpctest.test2 ldpctest.test3 ldpctest.test4 ldpctest.test5 ldpctest.test6 ldpctest.test7 ldpctest.test8 ldpctest.test9 ldpctest.test10 BLER 0.000000 segmentation fault|assertion|exiting|fatal 3 @@ -1029,7 +1035,7 @@ execution - polartest test cases. + polartest Test cases. (Test1: PBCH polar test) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1045,7 +1051,8 @@ execution - nr_pbchsim test cases. + nr_pbchsim Test cases. (Test1: PBCH-only), + (Test2: PBCH and synchronization) $OPENAIR_DIR/cmake_targets/build_oai --phy_simulators -c @@ -1054,7 +1061,7 @@ $OPENAIR_DIR/targets/bin/nr_pbchsim.Rel15 -s-11 -S-10 -n1000 -s-11 -S-10 -n10 -I - nr_pbchsim.test1 + nr_pbchsim.test1 nr_pbchsim.test2 PBCH test OK segmentation fault|assertion|exiting|fatal 3