Adding MC-NIB support 49/2549/2
authorvlad shkapenyuk <vshkap@research.att.com>
Fri, 21 Feb 2020 00:34:50 +0000 (19:34 -0500)
committerVlad Shkapenyuk <vshkap@research.att.com>
Fri, 21 Feb 2020 00:47:11 +0000 (00:47 +0000)
Signed-off-by: vlad shkapenyuk <vshkap@research.att.com>
Change-Id: Iedee46f11b7995f2c04abd5e077238184af9c7ee

29 files changed:
mc-core/Dockerfile
mc-core/README.md
mc-core/container-tag.yaml
mc-core/container_start.sh
mc-core/mc/cfg/ifres.xml
mc-core/mc/cfg/packet_schema.txt
mc-core/mc/local/SgNB_release_rqd.h
mc-core/mc/local_datasource/rts_proto.c
mc-core/mc/mc_deployment.json
mc-core/mc/mcnib/Makefile [new file with mode: 0644]
mc-core/mc/mcnib/gsmcnib.cc [new file with mode: 0644]
mc-core/mc/mcnib/mc_clear.cc [new file with mode: 0644]
mc-core/mc/mcnib/mc_store_schema.cc [new file with mode: 0644]
mc-core/mc/queries/addn_req_time.gsql
mc-core/mc/queries/addreq_pdf.gsql
mc-core/mc/queries/addreq_stats.gsql
mc-core/mc/queries/admitted_erabs.gsql
mc-core/mc/queries/dc_conn_stats.gsql
mc-core/mc/queries/debug.gsql
mc-core/mc/queries/generate_runall.py [new file with mode: 0644]
mc-core/mc/queries/mod_req_failure.gsql
mc-core/mc/queries/nib.json [new file with mode: 0644]
mc-core/mc/queries/reconfig_status.gsql
mc-core/mc/queries/release_req_time.gsql
mc-core/mc/queries/rrcx_pdf_cell.gsql
mc-core/mc/queries/rrcx_stats.gsql
mc-core/mc/queries/rrcx_stats_cell.gsql
mc-core/mc/queries/runall
mc-core/mc/queries/throughput.gsql

index eebfffd..8073475 100644 (file)
@@ -16,8 +16,7 @@
 
 ARG STAGE_DIR=/mc
 
-FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu16-c-go:3-u16.04-nng AS project-build
-
+FROM nexus3.o-ran-sc.org:10004/bldr-ubuntu18-c-go:4-u18.04-nng AS project-build
 # Update & installation of linux packages
 RUN apt-get update -y && \
         apt-get install -y curl && \
@@ -28,6 +27,15 @@ ARG STAGE_DIR
 
 COPY mc ${STAGE_DIR}
 WORKDIR ${STAGE_DIR}
+RUN apt-get install -y libboost-all-dev
+RUN apt-get install -y libhiredis-dev
+RUN git clone https://gerrit.o-ran-sc.org/r/ric-plt/sdl
+WORKDIR ${STAGE_DIR}/sdl
+RUN ./autogen.sh
+RUN ./configure
+RUN make all
+RUN make install
+WORKDIR ${STAGE_DIR}
 RUN git clone https://github.com/protocolbuffers/protobuf.git
 WORKDIR ${STAGE_DIR}/protobuf
 RUN ./autogen.sh
@@ -47,27 +55,21 @@ RUN make install
 RUN ldconfig
 RUN pip install protobuf
 WORKDIR ${STAGE_DIR}
-RUN git clone -b Amber https://gerrit.o-ran-sc.org/r/com/gs-lite
+RUN git clone -b release/0.1.0 https://gerrit.o-ran-sc.org/r/com/gs-lite
 WORKDIR ${STAGE_DIR}/gs-lite
 COPY mc/cfg ${STAGE_DIR}/gs-lite/cfg
 COPY mc/local_datasource ${STAGE_DIR}/gs-lite/src/lib/gscprts/local_datasource
 COPY mc/local ${STAGE_DIR}/gs-lite/include/lfta/local
 COPY mc/queries ${STAGE_DIR}/gs-lite/demo/queries
+COPY mc/mcnib/* ${STAGE_DIR}/gs-lite/src/tools/
 RUN ./build_and_install.sh
 WORKDIR ${STAGE_DIR}/gs-lite/demo/queries
 ENV GSLITE_ROOT ${STAGE_DIR}/gs-lite
 RUN bash ${STAGE_DIR}/gs-lite/bin/buildit
+RUN python generate_runall.py
 
-# Update & installation of linux packages
-RUN apt-get update -y && \
-        apt-get install -y curl && \
-        apt-get install -y procps && \
-        apt-get install -y python-pip
 
 # now install the binaries and libraries into smaller docker image
-# use the mc_listener container as the base; all of it's stuff is in /playpen and can
-# stay where it is
-#
 FROM nexus3.o-ran-sc.org:10004/o-ran-sc/ric-app-mc-listener:1.3.2
 
 ARG STAGE_DIR
@@ -78,11 +80,13 @@ COPY --from=project-build ${STAGE_DIR}/data_gen /mc/data_gen
 COPY --from=project-build ${STAGE_DIR}/mc_deployment.json /mc/
 COPY --from=project-build ${STAGE_DIR}/extract_params.py /mc/
 COPY --from=project-build /usr/local/lib/libproto* /usr/local/lib/
+COPY --from=project-build /usr/local/lib/libsdl* /usr/local/lib/
 
 COPY container_start.sh /playpen/bin/
 
 RUN apt-get update && \
-    apt-get install -y curl python python-pip && \
+    apt-get install -y curl python python-pip libboost-all-dev libhiredis-dev && \
+# redis-tools && \
     apt-get clean
 
 RUN ldconfig
index 24ba629..1da21bc 100644 (file)
@@ -1,6 +1 @@
-GS-Lite based Measurement Campaign (MC) xApp
-
-
-
+GS-Lite based Measurement Campaign xApp
index bd28b38..1add03f 100644 (file)
@@ -1,4 +1,4 @@
 ---
-tag: '2.0.1'
+tag: '3.0.1'
 
 # this is used by the CI jobs to tag the image it builds
index 1af09d4..cc322e0 100755 (executable)
@@ -61,6 +61,7 @@ echo "listener was started" >&2
 
 fi
 
+
 # ---- finally, start the core MC application -----------------------------
 cd ${GSLITE_ROOT:-/mc/gs-lite}/demo/queries
 ./runall
index c559415..edef128 100644 (file)
+
 <Resources>
        <Host Name='localhost'>
                <Interface Name='CONRELEASE'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010050'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='dc_release'/>
+                       <SingleFile value='TRUE'/>
+               </Interface>
+               <Interface Name='RATDATAUSAGE'>
+                       <InterfaceType value='PROTO'/>
+                       <Filename value='/tmp/mcl/fifos/MT_000010380'/>
+                       <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
+                       <Verbose value='TRUE'/>
+                       <Schemas value='rat_data_usage'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='RECONCOMPLETE'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010280'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='reconfig_all'/>
+                       <Schemas value='reconfig_success'/>
+                       <Schemas value='reconfig_reject'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='RELCONF'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010321'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_release_confirm_from_menb_erabs'/>
+                       <Schemas value='sgnb_release_confirm_from_menb'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='RELREQ'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010310'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='release_req'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='RELREQACK'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010311'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='release_req_ack'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='SGNBRELEASERQD'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010320'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='SgNB_release_rqd'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='RRCXFER'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010350'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='serv_nr_cell'/>
+                       <Schemas value='nr_neighbor'/>
+                       <Schemas value='serv_cell_beam_csi'/>
+                       <Schemas value='neighbor_beam_csi'/>
+                       <Schemas value='serv_cell_beam_ssb'/>
+                       <Schemas value='neighbor_beam_ssb'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='ADDREQREJECT'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010272'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_add_req_reject'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='SGNB_ADDITION_REQ_ACK'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010271'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='eRABs_notadmitted_for_ue'/>
+                       <Schemas value='eRABs_acked_for_admit_for_ue'/>
+                       <Schemas value='SgNB_ack_for_ue_NRfreqs'/>
+                       <Schemas value='SgNB_ack_for_add_mod_for_ue'/>
+                       <Schemas value='SgNB_ack_for_ue_measurements'/>
+                       <Schemas value='SgNB_ack_for_ue_beam_csi'/>
+                       <Schemas value='SgNB_ack_for_ue_beam_ssb'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='SGNB_ADDITION_REQ'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010270'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_addreq_for_ue'/>
+                       <Schemas value='sgnb_addreq_for_ue_bearers'/>
+                       <Schemas value='sgnb_addreq_for_ue_sn_serv_ssb'/>
+                       <Schemas value='sgnb_addreq_for_ue_sn_serv_csi_rs'/>
+                       <Schemas value='sgnb_addreq_for_ue_mn_serv_ssb'/>
+                       <Schemas value='sgnb_addreq_for_ue_mn_serv_csi_rs'/>
+                       <Schemas value='sgnb_addreq_for_ue_sn_neigh_ssb'/>
+                       <Schemas value='sgnb_addreq_for_ue_sn_neigh_csi_rs'/>
+                       <Schemas value='sgnb_addreq_for_ue_mn_neigh_ssb'/>
+                       <Schemas value='sgnb_addreq_for_ue_mn_neigh_csi_rs'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODCONF'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010301'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_mod_conf'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREQ'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010290'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_mod_req'/>
+                       <SingleFile value='TRUE'/>
+               </Interface>
+               <Interface Name='SGNBMODREQACK'>
+                       <InterfaceType value='PROTO'/>
+                       <Filename value='/tmp/mcl/fifos/MT_000010291'/>
+                       <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
+                       <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_mod_req_ack'/>
+                       <SingleFile value='TRUE'/>
+               </Interface>
+               <Interface Name='SGNBMODREQREJECT'>
+                       <InterfaceType value='PROTO'/>
+                       <Filename value='/tmp/mcl/fifos/MT_000010292'/>
+                       <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
+                       <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_mod_req_reject'/>
+                       <SingleFile value='TRUE'/>
+               </Interface>
+               <Interface Name='SGNBMODREQUIRED'>
+                       <InterfaceType value='PROTO'/>
+                       <Filename value='/tmp/mcl/fifos/MT_000010300'/>
+                       <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
+                       <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_mod_required'/>
                        <SingleFile value='TRUE'/>
                </Interface>
                <Interface Name='SGNBMODREFUSE'>
                        <InterfaceType value='PROTO'/>
                        <Filename value='/tmp/mcl/fifos/MT_000010302'/>
                        <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
+                       <Verbose value='TRUE'/>
+                       <Schemas value='sgnb_mod_refuse'/>
+                       <SingleFile value='TRUE'/>
+               </Interface>
+               <Interface Name='SNSTATUSXFER'>
+                       <InterfaceType value='PROTO'/>
+                       <Filename value='/tmp/mcl/fifos/MT_000010040'/>
+                       <StartUpDelay value='10'/>
+                       <Time_Correlation value='60'/>
                        <Verbose value='TRUE'/>
+                       <Schemas value='sn_status_transfer'/>
                        <SingleFile value='TRUE'/>
                </Interface>
-                <Interface Name='RATDATAUSAGE'>
-                        <InterfaceType value='PROTO'/>
-                        <Filename value='/tmp/mcl/fifos/MT_000010380'/>
-                        <StartUpDelay value='10'/>
-                        <Verbose value='TRUE'/>
-                        <SingleFile value='TRUE'/>
-                </Interface>
+
        </Host>
 </Resources>
index f3cde05..4ed16af 100644 (file)
@@ -7,7 +7,7 @@ PROTOCOL base{
 // indicates release of dual connectivity for the UE
 // Defined in context_release.json on ue_context_release.proto
 // schemaId = 201, interface CONRELEASE
-PROTOCOL dc_release (base){
+PROTOCOL dc_release (base, schema_id 201){
 // timestamp in milliseconds
        ullong timestamp_ms get_dc_release__timestamp_ms (required,increasing);
 // gNB ID
@@ -27,7 +27,7 @@ PROTOCOL dc_release (base){
 // transfer per UE and bearere between given time intervals
 // Defined in rat_data_usage.json on secondary_rat_data_usage_report.proto
 // schemaId = 1501, interface RATDATAUSAGE
-PROTOCOL rat_data_usage (base){
+PROTOCOL rat_data_usage (base, schema_id 1501){
 // timestamp in milliseconds
        ullong timestamp_ms get_rat_data_usage__timestamp_ms (required,increasing);
 // gNB ID
@@ -50,7 +50,7 @@ PROTOCOL rat_data_usage (base){
 // indicates successful configuration of Dual Connectivity
 // Defined in recon_complete.json on sgnb_reconfiguration_complete.proto
 // schemaId = 103, interface RECONCOMPLETE
-PROTOCOL reconfig_all (base){
+PROTOCOL reconfig_all (base, schema_id 103){
 // timestamp in milliseconds
        ullong timestamp_ms get_reconfig_all__timestamp_ms (required,increasing);
 // gNB ID
@@ -66,7 +66,7 @@ PROTOCOL reconfig_all (base){
 // indicates unsuccessful configuration of Dual Connectivity`
 // Defined in recon_complete.json on sgnb_reconfiguration_complete.proto
 // schemaId = 101, interface RECONCOMPLETE
-PROTOCOL reconfig_success (base){
+PROTOCOL reconfig_success (base, schema_id 101){
 // timestamp in milliseconds
        ullong timestamp_ms get_reconfig_success__timestamp_ms (required,increasing);
 // gNB ID
@@ -82,7 +82,7 @@ PROTOCOL reconfig_success (base){
 // indicates unsuccessful configuration of Dual Connectivity`
 // Defined in recon_complete.json on sgnb_reconfiguration_complete.proto
 // schemaId = 102, interface RECONCOMPLETE
-PROTOCOL reconfig_reject (base){
+PROTOCOL reconfig_reject (base, schema_id 102){
 // timestamp in milliseconds
        ullong timestamp_ms get_reconfig_reject__timestamp_ms (required,increasing);
 // gNB ID
@@ -106,7 +106,7 @@ PROTOCOL reconfig_reject (base){
 // Confirmation of release of SgNB and SCG resources by the MeNB, list the eRABs if any (default is ALL in which case no eRABs are listed).
 // Defined in release_confirm.json on sgnb_release_confirm.proto
 // schemaId = 1101, interface RELCONF
-PROTOCOL sgnb_release_confirm_from_menb_erabs (base){
+PROTOCOL sgnb_release_confirm_from_menb_erabs (base, schema_id 1101){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_release_confirm_from_menb_erabs__timestamp_ms (required,increasing);
 // gNB ID
@@ -134,7 +134,7 @@ PROTOCOL sgnb_release_confirm_from_menb_erabs (base){
 // Confirmation of release of SgNB and SCG resources by the MeNB.
 // Defined in release_confirm.json on sgnb_release_confirm.proto
 // schemaId = 1102, interface RELCONF
-PROTOCOL sgnb_release_confirm_from_menb (base){
+PROTOCOL sgnb_release_confirm_from_menb (base, schema_id 1102){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_release_confirm_from_menb__timestamp_ms (required,increasing);
 // gNB ID
@@ -150,7 +150,7 @@ PROTOCOL sgnb_release_confirm_from_menb (base){
 // initiated by the MeNB to request SgNB to release its SCG resources for the UE
 // Defined in release_req.json on sgnb_release_request.proto
 // schemaId = 801, interface RELREQ
-PROTOCOL release_req (base){
+PROTOCOL release_req (base, schema_id 801){
 // timestamp in milliseconds
        ullong timestamp_ms get_release_req__timestamp_ms (required,increasing);
 // gNB ID
@@ -174,7 +174,7 @@ PROTOCOL release_req (base){
 // response by the SgNB back to the MeNB acknowledging release of SCG resources for the UE.
 // Defined in release_req_ack.json on sgnb_release_request_acknowledge.proto
 // schemaId = 901, interface RELREQACK
-PROTOCOL release_req_ack (base){
+PROTOCOL release_req_ack (base, schema_id 901){
 // timestamp in milliseconds
        ullong timestamp_ms get_release_req_ack__timestamp_ms (required,increasing);
 // gNB ID
@@ -190,7 +190,7 @@ PROTOCOL release_req_ack (base){
 // Initiated by the SgNB indicating to MeNB that SCG resources need to be released for the given underlying cause.
 // Defined in release_rqd.json on sgnb_release_required.proto
 // schemaId = 1001, interface SGNBRELEASERQD
-PROTOCOL SgNB_release_rqd (base){
+PROTOCOL SgNB_release_rqd (base, schema_id 1001){
 // timestamp in milliseconds
        ullong timestamp_ms get_SgNB_release_rqd__timestamp_ms (required,increasing);
 // gNB ID
@@ -201,12 +201,6 @@ PROTOCOL SgNB_release_rqd (base){
        llong id_MeNB_UE_X2AP_ID get_SgNB_release_rqd__id_MeNB_UE_X2AP_ID (required);
 //   default=-1
        llong cause_transport get_SgNB_release_rqd__cause_transport (required);
-//   default=-1
-       llong cause_radio_network get_SgNB_release_rqd__cause_radio_network (required);
-// UE_ID assigned by gNB for the UE over an X2. primary key for referring to the UE within SgNB.
-       llong id_SgNB_UE_X2AP_ID get_SgNB_release_rqd__id_SgNB_UE_X2AP_ID (required);
-//   default=-1
-       llong cause_misc get_SgNB_release_rqd__cause_misc (required);
 // max is 8, for piz trial 4.  Optional.  If not present, release ALL bearers.
        llong e_RAB_ID0 get_SgNB_release_rqd__e_RAB_ID0;
 // max is 8, for piz trial 4.  Optional.  If not present, release ALL bearers.
@@ -223,12 +217,18 @@ PROTOCOL SgNB_release_rqd (base){
        llong e_RAB_ID6 get_SgNB_release_rqd__e_RAB_ID6;
 // max is 8, for piz trial 4.  Optional.  If not present, release ALL bearers.
        llong e_RAB_ID7 get_SgNB_release_rqd__e_RAB_ID7;
+//   default=-1
+       llong cause_radio_network get_SgNB_release_rqd__cause_radio_network (required);
+// UE_ID assigned by gNB for the UE over an X2. primary key for referring to the UE within SgNB.
+       llong id_SgNB_UE_X2AP_ID get_SgNB_release_rqd__id_SgNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_misc get_SgNB_release_rqd__cause_misc (required);
 }
 
 // Cell-wide CSI-RS measurement tuple and SSB measurement (on serving cells)
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 1, interface RRCXFER
-PROTOCOL serv_nr_cell (base){
+PROTOCOL serv_nr_cell (base, schema_id 1){
 // timestamp in milliseconds
        ullong timestamp_ms get_serv_nr_cell__timestamp_ms (required,increasing);
 // gNB ID
@@ -249,7 +249,7 @@ PROTOCOL serv_nr_cell (base){
 // Cell-wide  SSB measurement (from neighbor cells)
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 4, interface RRCXFER
-PROTOCOL nr_neighbor (base){
+PROTOCOL nr_neighbor (base, schema_id 4){
 // timestamp in milliseconds
        ullong timestamp_ms get_nr_neighbor__timestamp_ms (required,increasing);
 // gNB ID
@@ -268,7 +268,7 @@ PROTOCOL nr_neighbor (base){
 // Cell-wide beam-specific CSI-RS measurements (on serving cells) 
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 2, interface RRCXFER
-PROTOCOL serv_cell_beam_csi (base){
+PROTOCOL serv_cell_beam_csi (base, schema_id 2){
 // timestamp in milliseconds
        ullong timestamp_ms get_serv_cell_beam_csi__timestamp_ms (required,increasing);
 // gNB ID
@@ -291,7 +291,7 @@ PROTOCOL serv_cell_beam_csi (base){
 // Cell-wide beam-specific CSI-RS measurements (from neighbor cells) 
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 5, interface RRCXFER
-PROTOCOL neighbor_beam_csi (base){
+PROTOCOL neighbor_beam_csi (base, schema_id 5){
 // timestamp in milliseconds
        ullong timestamp_ms get_neighbor_beam_csi__timestamp_ms (required,increasing);
 // gNB ID
@@ -312,7 +312,7 @@ PROTOCOL neighbor_beam_csi (base){
 // Cell-wide beam-specific LIST of SS/PBCH reference signal measurement (on serving cells)
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 3, interface RRCXFER
-PROTOCOL serv_cell_beam_ssb (base){
+PROTOCOL serv_cell_beam_ssb (base, schema_id 3){
 // timestamp in milliseconds
        ullong timestamp_ms get_serv_cell_beam_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -335,7 +335,7 @@ PROTOCOL serv_cell_beam_ssb (base){
 // Cell-wide beam-specific LIST of SS/PBCH reference signal measurement (from neighbor cell)
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 6, interface RRCXFER
-PROTOCOL neighbor_beam_ssb (base){
+PROTOCOL neighbor_beam_ssb (base, schema_id 6){
 // timestamp in milliseconds
        ullong timestamp_ms get_neighbor_beam_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -356,7 +356,7 @@ PROTOCOL neighbor_beam_ssb (base){
 // Rejection by the gNMB of an incoming request from the MeNB to the gNB for getting added as a secondary node.
 // Defined in sgnb_add_req_reject.json on sgnb_addition_request_reject.proto
 // schemaId = 701, interface ADDREQREJECT
-PROTOCOL sgnb_add_req_reject (base){
+PROTOCOL sgnb_add_req_reject (base, schema_id 701){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_add_req_reject__timestamp_ms (required,increasing);
 // gNB ID
@@ -378,7 +378,7 @@ PROTOCOL sgnb_add_req_reject (base){
 // Indicates positive response for adding secondary node to the UE.  This record has indicated bearers not admitted by the secondary node.
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 501, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL eRABs_notadmitted_for_ue (base){
+PROTOCOL eRABs_notadmitted_for_ue (base, schema_id 501){
 // timestamp in milliseconds
        ullong timestamp_ms get_eRABs_notadmitted_for_ue__timestamp_ms (required,increasing);
 // gNB ID
@@ -404,7 +404,7 @@ PROTOCOL eRABs_notadmitted_for_ue (base){
 // Indicates positive response for adding secondary node to the UE.  This record indicates eRABs acknowledged for admission for the UE. 
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 502, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL eRABs_acked_for_admit_for_ue (base){
+PROTOCOL eRABs_acked_for_admit_for_ue (base, schema_id 502){
 // timestamp in milliseconds
        ullong timestamp_ms get_eRABs_acked_for_admit_for_ue__timestamp_ms (required,increasing);
 // gNB ID
@@ -429,7 +429,7 @@ PROTOCOL eRABs_acked_for_admit_for_ue (base){
 // Extracts the frequencies of the NR cells serving the eRAB.
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 503, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL SgNB_ack_for_ue_NRfreqs (base){
+PROTOCOL SgNB_ack_for_ue_NRfreqs (base, schema_id 503){
 // timestamp in milliseconds
        ullong timestamp_ms get_SgNB_ack_for_ue_NRfreqs__timestamp_ms (required,increasing);
 // gNB ID
@@ -479,7 +479,7 @@ PROTOCOL SgNB_ack_for_ue_NRfreqs (base){
 // list of eRABs with sgNB radio bearer config info for addition or modification.
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 504, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL SgNB_ack_for_add_mod_for_ue (base){
+PROTOCOL SgNB_ack_for_add_mod_for_ue (base, schema_id 504){
 // timestamp in milliseconds
        ullong timestamp_ms get_SgNB_ack_for_add_mod_for_ue__timestamp_ms (required,increasing);
 // gNB ID
@@ -507,7 +507,7 @@ PROTOCOL SgNB_ack_for_add_mod_for_ue (base){
 // signaling measurements of the user while serving the eRABs
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 505, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL SgNB_ack_for_ue_measurements (base){
+PROTOCOL SgNB_ack_for_ue_measurements (base, schema_id 505){
 // timestamp in milliseconds
        ullong timestamp_ms get_SgNB_ack_for_ue_measurements__timestamp_ms (required,increasing);
 // gNB ID
@@ -532,7 +532,7 @@ PROTOCOL SgNB_ack_for_ue_measurements (base){
 // CSI beam measurements of the user while serving the eRABs
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 506, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL SgNB_ack_for_ue_beam_csi (base){
+PROTOCOL SgNB_ack_for_ue_beam_csi (base, schema_id 506){
 // timestamp in milliseconds
        ullong timestamp_ms get_SgNB_ack_for_ue_beam_csi__timestamp_ms (required,increasing);
 // gNB ID
@@ -559,7 +559,7 @@ PROTOCOL SgNB_ack_for_ue_beam_csi (base){
 // SSB beam measurements of the user while serving the eRABs
 // Defined in sgnb_addition_ack.json on sgnb_addition_request_acknowledge.proto
 // schemaId = 507, interface SGNB_ADDITION_REQ_ACK
-PROTOCOL SgNB_ack_for_ue_beam_ssb (base){
+PROTOCOL SgNB_ack_for_ue_beam_ssb (base, schema_id 507){
 // timestamp in milliseconds
        ullong timestamp_ms get_SgNB_ack_for_ue_beam_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -586,7 +586,7 @@ PROTOCOL SgNB_ack_for_ue_beam_ssb (base){
 // Indicates request for adding secondary node to the UE
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 401, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue (base){
+PROTOCOL sgnb_addreq_for_ue (base, schema_id 401){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue__timestamp_ms (required,increasing);
 // gNB ID
@@ -606,7 +606,7 @@ PROTOCOL sgnb_addreq_for_ue (base){
 // Indicates request for adding secondary node to the UE, with bearer details
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 402, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_bearers (base){
+PROTOCOL sgnb_addreq_for_ue_bearers (base, schema_id 402){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_bearers__timestamp_ms (required,increasing);
 // gNB ID
@@ -656,7 +656,7 @@ PROTOCOL sgnb_addreq_for_ue_bearers (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 403, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_sn_serv_ssb (base){
+PROTOCOL sgnb_addreq_for_ue_sn_serv_ssb (base, schema_id 403){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_sn_serv_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -678,7 +678,7 @@ PROTOCOL sgnb_addreq_for_ue_sn_serv_ssb (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 404, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_sn_serv_csi_rs (base){
+PROTOCOL sgnb_addreq_for_ue_sn_serv_csi_rs (base, schema_id 404){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_sn_serv_csi_rs__timestamp_ms (required,increasing);
 // gNB ID
@@ -700,7 +700,7 @@ PROTOCOL sgnb_addreq_for_ue_sn_serv_csi_rs (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 405, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_mn_serv_ssb (base){
+PROTOCOL sgnb_addreq_for_ue_mn_serv_ssb (base, schema_id 405){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_mn_serv_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -722,7 +722,7 @@ PROTOCOL sgnb_addreq_for_ue_mn_serv_ssb (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 406, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_mn_serv_csi_rs (base){
+PROTOCOL sgnb_addreq_for_ue_mn_serv_csi_rs (base, schema_id 406){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_mn_serv_csi_rs__timestamp_ms (required,increasing);
 // gNB ID
@@ -744,7 +744,7 @@ PROTOCOL sgnb_addreq_for_ue_mn_serv_csi_rs (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 408, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_sn_neigh_ssb (base){
+PROTOCOL sgnb_addreq_for_ue_sn_neigh_ssb (base, schema_id 408){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_sn_neigh_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -766,7 +766,7 @@ PROTOCOL sgnb_addreq_for_ue_sn_neigh_ssb (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 409, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_sn_neigh_csi_rs (base){
+PROTOCOL sgnb_addreq_for_ue_sn_neigh_csi_rs (base, schema_id 409){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_sn_neigh_csi_rs__timestamp_ms (required,increasing);
 // gNB ID
@@ -788,7 +788,7 @@ PROTOCOL sgnb_addreq_for_ue_sn_neigh_csi_rs (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 410, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_mn_neigh_ssb (base){
+PROTOCOL sgnb_addreq_for_ue_mn_neigh_ssb (base, schema_id 410){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_mn_neigh_ssb__timestamp_ms (required,increasing);
 // gNB ID
@@ -810,7 +810,7 @@ PROTOCOL sgnb_addreq_for_ue_mn_neigh_ssb (base){
 // Indicates request for adding secondary node to the UE.  Extract the SN / serving cell / ssb measurements.
 // Defined in sgnb_addition_req.json on sgnb_addition_request.proto
 // schemaId = 411, interface SGNB_ADDITION_REQ
-PROTOCOL sgnb_addreq_for_ue_mn_neigh_csi_rs (base){
+PROTOCOL sgnb_addreq_for_ue_mn_neigh_csi_rs (base, schema_id 411){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_addreq_for_ue_mn_neigh_csi_rs__timestamp_ms (required,increasing);
 // gNB ID
@@ -832,7 +832,7 @@ PROTOCOL sgnb_addreq_for_ue_mn_neigh_csi_rs (base){
 // ??? 
 // Defined in sgnb_mod_confirm.json on sgnb_modification_confirm.proto
 // schemaId = 1301, interface SGNBMODCONF
-PROTOCOL sgnb_mod_conf (base){
+PROTOCOL sgnb_mod_conf (base, schema_id 1301){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_mod_conf__timestamp_ms (required,increasing);
 // gNB ID
@@ -846,7 +846,7 @@ PROTOCOL sgnb_mod_conf (base){
 // ??? 
 // Defined in sgnb_mod_req.json on sgnb_modification_request.proto
 // schemaId = 1201, interface SGNBMODREQ
-PROTOCOL sgnb_mod_req (base){
+PROTOCOL sgnb_mod_req (base, schema_id 1201){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_mod_req__timestamp_ms (required,increasing);
 // gNB ID
@@ -870,7 +870,7 @@ PROTOCOL sgnb_mod_req (base){
 // ??? 
 // Defined in sgnb_mod_req_ack.json on sgnb_modification_request_acknowledge.proto
 // schemaId = 1701, interface SGNBMODREQACK
-PROTOCOL sgnb_mod_req_ack (base){
+PROTOCOL sgnb_mod_req_ack (base, schema_id 1701){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_mod_req_ack__timestamp_ms (required,increasing);
 // gNB ID
@@ -884,7 +884,7 @@ PROTOCOL sgnb_mod_req_ack (base){
 // ??? 
 // Defined in sgnb_mod_req_reject.json on sgnb_modification_request_reject.proto
 // schemaId = 1801, interface SGNBMODREQREJECT
-PROTOCOL sgnb_mod_req_reject (base){
+PROTOCOL sgnb_mod_req_reject (base, schema_id 1801){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_mod_req_reject__timestamp_ms (required,increasing);
 // gNB ID
@@ -906,7 +906,7 @@ PROTOCOL sgnb_mod_req_reject (base){
 // ??? 
 // Defined in sgnb_mod_rqd.json on sgnb_modification_required.proto
 // schemaId = 1901, interface SGNBMODREQUIRED
-PROTOCOL sgnb_mod_required (base){
+PROTOCOL sgnb_mod_required (base, schema_id 1901){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_mod_required__timestamp_ms (required,increasing);
 // gNB ID
@@ -928,7 +928,7 @@ PROTOCOL sgnb_mod_required (base){
 // ??? 
 // Defined in sgnb_modification_refuse.json on sgnb_modification_refuse.proto
 // schemaId = 1401, interface SGNBMODREFUSE
-PROTOCOL sgnb_mod_refuse (base){
+PROTOCOL sgnb_mod_refuse (base, schema_id 1401){
 // timestamp in milliseconds
        ullong timestamp_ms get_sgnb_mod_refuse__timestamp_ms (required,increasing);
 // gNB ID
@@ -950,7 +950,7 @@ PROTOCOL sgnb_mod_refuse (base){
 //  
 // Defined in snstatusxfer.json on sn_status_transfer.proto
 // schemaId = 1601, interface SNSTATUSXFER
-PROTOCOL sn_status_transfer (base){
+PROTOCOL sn_status_transfer (base, schema_id 1601){
 // timestamp in milliseconds
        ullong timestamp_ms get_sn_status_transfer__timestamp_ms (required,increasing);
 // gNB ID
index 25e8f96..7215cd4 100644 (file)
@@ -29,9 +29,6 @@ struct _SgNB_release_rqd {
        gs_int64_t cause_protocol;
        gs_int64_t id_MeNB_UE_X2AP_ID;
        gs_int64_t cause_transport;
-       gs_int64_t cause_radio_network;
-       gs_int64_t id_SgNB_UE_X2AP_ID;
-       gs_int64_t cause_misc;
        gs_int64_t e_RAB_ID0;
        gs_int8_t e_RAB_ID0_exists;
        gs_int64_t e_RAB_ID1;
@@ -48,6 +45,9 @@ struct _SgNB_release_rqd {
        gs_int8_t e_RAB_ID6_exists;
        gs_int64_t e_RAB_ID7;
        gs_int8_t e_RAB_ID7_exists;
+       gs_int64_t cause_radio_network;
+       gs_int64_t id_SgNB_UE_X2AP_ID;
+       gs_int64_t cause_misc;
 };
 
 static inline void init__SgNB_release_rqd(struct _SgNB_release_rqd *m){
@@ -88,21 +88,6 @@ static inline gs_retval_t get_SgNB_release_rqd__cause_transport(struct packet *p
        return 0;
 }
 
-static inline gs_retval_t get_SgNB_release_rqd__cause_radio_network(struct packet *p, gs_int64_t *t){
-       *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->cause_radio_network;
-       return 0;
-}
-
-static inline gs_retval_t get_SgNB_release_rqd__id_SgNB_UE_X2AP_ID(struct packet *p, gs_int64_t *t){
-       *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->id_SgNB_UE_X2AP_ID;
-       return 0;
-}
-
-static inline gs_retval_t get_SgNB_release_rqd__cause_misc(struct packet *p, gs_int64_t *t){
-       *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->cause_misc;
-       return 0;
-}
-
 static inline gs_retval_t get_SgNB_release_rqd__e_RAB_ID0(struct packet *p, gs_int64_t *t){
        *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->e_RAB_ID0;
        return (((struct _SgNB_release_rqd *)(p->record.packed.values))->e_RAB_ID0==0);
@@ -143,4 +128,19 @@ static inline gs_retval_t get_SgNB_release_rqd__e_RAB_ID7(struct packet *p, gs_i
        return (((struct _SgNB_release_rqd *)(p->record.packed.values))->e_RAB_ID7==0);
 }
 
+static inline gs_retval_t get_SgNB_release_rqd__cause_radio_network(struct packet *p, gs_int64_t *t){
+       *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->cause_radio_network;
+       return 0;
+}
+
+static inline gs_retval_t get_SgNB_release_rqd__id_SgNB_UE_X2AP_ID(struct packet *p, gs_int64_t *t){
+       *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->id_SgNB_UE_X2AP_ID;
+       return 0;
+}
+
+static inline gs_retval_t get_SgNB_release_rqd__cause_misc(struct packet *p, gs_int64_t *t){
+       *t = ((struct _SgNB_release_rqd *)(p->record.packed.values))->cause_misc;
+       return 0;
+}
+
 #endif
index 7f763b7..42ac898 100644 (file)
@@ -600,7 +600,6 @@ gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t bufle
        struct _SgNB_release_rqd *SgNB_release_rqd = NULL;
        Uenibstreamprotobuf__SgNBReleaseRequired *node_0_0 = NULL;
        Uenibstreamprotobuf__SgNBReleaseRequiredIEs *node_0_1 = NULL;
-       Uenibstreamprotobuf__ERABsToBeReleasedSgNBRelReqdList *node_0_2 = NULL;
 
 // --------------------------------------------------
 // ---  Specialized processing for .proto sgnb_release_required.json, path release_rqd.json
@@ -634,6 +633,54 @@ gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t bufle
                }else{
                        SgNB_release_rqd->cause_transport = -1;
                }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 0){
+                       SgNB_release_rqd->e_RAB_ID0 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID0_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID0_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 1){
+                       SgNB_release_rqd->e_RAB_ID1 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID1_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID1_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 2){
+                       SgNB_release_rqd->e_RAB_ID2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID2_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID2_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 3){
+                       SgNB_release_rqd->e_RAB_ID3 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID3_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID3_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 4){
+                       SgNB_release_rqd->e_RAB_ID4 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID4_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID4_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 5){
+                       SgNB_release_rqd->e_RAB_ID5 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID5_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID5_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 6){
+                       SgNB_release_rqd->e_RAB_ID6 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID6_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID6_exists = 0;
+               }
+               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 7){
+                       SgNB_release_rqd->e_RAB_ID7 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id;
+                       SgNB_release_rqd->e_RAB_ID7_exists = 1;
+               }else{
+                       SgNB_release_rqd->e_RAB_ID7_exists = 0;
+               }
                if(node_0_1->id_cause && node_0_1->id_cause->radionetwork){
                        SgNB_release_rqd->cause_radio_network = node_0_1->id_cause->radionetwork->value;
                }else{
@@ -645,58 +692,7 @@ gs_uint32_t process_buffer_SGNBRELEASERQD(gs_uint8_t * buffer, gs_uint32_t bufle
                }else{
                        SgNB_release_rqd->cause_misc = -1;
                }
-               node_0_2 = node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist;
-               if(node_0_1->id_e_rabs_tobereleased_sgnbrelreqdlist){
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 0){
-                               SgNB_release_rqd->e_RAB_ID0 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[0]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID0_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID0_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 1){
-                               SgNB_release_rqd->e_RAB_ID1 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[1]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID1_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID1_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 2){
-                               SgNB_release_rqd->e_RAB_ID2 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[2]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID2_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID2_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 3){
-                               SgNB_release_rqd->e_RAB_ID3 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[3]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID3_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID3_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 4){
-                               SgNB_release_rqd->e_RAB_ID4 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[4]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID4_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID4_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 5){
-                               SgNB_release_rqd->e_RAB_ID5 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[5]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID5_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID5_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 6){
-                               SgNB_release_rqd->e_RAB_ID6 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[6]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID6_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID6_exists = 0;
-                       }
-                       if(node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item && node_0_2->n_id_e_rabs_tobereleased_sgnbrelreqd_item > 7){
-                               SgNB_release_rqd->e_RAB_ID7 = node_0_2->id_e_rabs_tobereleased_sgnbrelreqd_item[7]->e_rab_id;
-                               SgNB_release_rqd->e_RAB_ID7_exists = 1;
-                       }else{
-                               SgNB_release_rqd->e_RAB_ID7_exists = 0;
-                       }
-                       rts_fta_process_packet(&cur_packet);
-               }
+               rts_fta_process_packet(&cur_packet);
        }
        uenibstreamprotobuf__sg_nbrelease_required__free_unpacked(node_0_0,NULL);
        return 0;
index 643f115..2ea02f1 100644 (file)
@@ -33,6 +33,8 @@
                "ves_collector_address":"envy15:8888",
                "measurement_interval": 10000,
                "simulator_mode": "true",
-               "debug_mode": "true"
+               "debug_mode": "true",
+               "__DBAAS_SERVICE_HOST__": "tuska",
+               "__DBAAS_SERVICE_PORT__": 6379
        }
 }
diff --git a/mc-core/mc/mcnib/Makefile b/mc-core/mc/mcnib/Makefile
new file mode 100644 (file)
index 0000000..2e36b36
--- /dev/null
@@ -0,0 +1,132 @@
+# ------------------------------------------------
+#   Copyright 2014 AT&T Intellectual Property
+#   Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+#
+#   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.
+# -------------------------------------------
+
+CC= gcc -O4 -g   -I ../../include -D_FILE_OFFSET_BITS=64 
+CXX=g++
+C++OPTS = -ggdb  -D_BSD_SIGNALS $(INCLUDES) -std=c++11  -I ../../include
+C++LDOPTS = -ggdb 
+
+INCDIR=../../include
+
+# we need to suppress writable strings warnings on Mac for flex/bison generated C++ code
+OS= $(shell uname -s)
+ifeq ($(OS),Darwin)
+       WARN=-Wno-deprecated-writable-strings
+endif
+ifeq ($(OS),Linux)
+       WARN=-Wno-write-strings
+endif
+
+all:   gdatcat gsprintconsole gsprintconsole_ves gsgdatprint  gdat2ascii gsexit gssinksim process_logs ascii2gdat gsmcnib mc_clear mc_store_schema
+
+install: all
+       cp gsprintconsole gsprintconsole_ves  gsgdatprint  gdat2ascii  process_logs gsexit ascii2gdat gsmcnib mc_clear mc_store_schema ../../bin/ 
+
+gsgdatprint: gsgdatprint.o ../../lib/libgscphostaux.a ../../lib/libgscphost.a ../../lib/libgscpinterface.a ../../lib/libgscpapp.a
+       g++ -g -o gsgdatprint gsgdatprint.o -L../../lib  -lgscpapp  -lgscphostaux -lgscphost -lgscpinterface -lgscplftaaux -lclearinghouse -lgscpaux 
+
+gsgdatprint.o: gsgdatprint.c
+
+
+
+gsexit: gsexit.o ../../lib/libgscphostaux.a ../../lib/libgscphost.a ../../lib/libgscpinterface.a ../../lib/libgscpapp.a
+       g++ -g -o gsexit gsexit.o -L../../lib  -lgscpapp  -lgscphostaux -lgscphost -lgscpinterface -lgscplftaaux -lclearinghouse -lgscpaux 
+
+gsexit.o: gsexit.c
+
+
+gsgdatprint.c: $(INCDIR/gsconfig.h) $(INCDIR/gstypes.h)
+
+gdat2ascii: gdat2ascii.o ../../lib/libgscphostaux.a  ../../lib/libgscpinterface.a 
+       g++ -g -o gdat2ascii gdat2ascii.o -L../../lib   -lgscphostaux  -lgscpinterface -lgscpaux 
+
+gdat2ascii.o: gdat2ascii.c
+
+gdat2ascii.c : $(INCDIR/gsconfig.h) $(INCDIR/gstypes.h)
+
+gsprintconsole: gsprintconsole.o ../../lib/libgscphostaux.a ../../lib/libgscphost.a ../../lib/libgscpinterface.a ../../lib/libgscpapp.a
+       g++ -g -o gsprintconsole gsprintconsole.o -L../../lib -lgscpapp  -lgscphostaux -lgscphost -lgscpinterface -lgscplftaaux -lclearinghouse -lgscpaux  
+
+gsprintconsole_ves: gsprintconsole_ves.o ../../lib/libgscphostaux.a ../../lib/libgscphost.a ../../lib/libgscpinterface.a ../../lib/libgscpapp.a
+       g++ -g -o gsprintconsole_ves gsprintconsole_ves.o -L../../lib -lgscpapp  -lgscphostaux -lgscphost -lgscpinterface -lgscplftaaux -lclearinghouse -lgscpaux  
+
+gsmcnib: gsmcnib.o ../../lib/libgscphostaux.a ../../lib/libgscphost.a ../../lib/libgscpinterface.a ../../lib/libgscpapp.a
+       g++ -g -o gsmcnib gsmcnib.o -L../../lib -lgscpapp  -lgscphostaux -lgscphost -lgscpinterface -lgscplftaaux -lclearinghouse -lgscpaux -lsdl
+
+mc_clear: mc_clear.o
+       g++ -g -o mc_clear mc_clear.o -lsdl
+
+mc_store_schema:       mc_store_schema.o
+       g++ -g -o mc_store_schema mc_store_schema.o -lsdl
+
+gsprintconsole.o: gsprintconsole.c
+
+gsprintconsole.c : $(INCDIR/gsconfig.h) $(INCDIR/gstypes.h)
+
+gsprintconsole_ves.o: gsprintconsole_ves.c
+
+gsprintconsole_ves.c : $(INCDIR/gsconfig.h) $(INCDIR/gstypes.h)
+
+gsmcnib.o :
+       g++ $(C++OPTS) -c gsmcnib.cc
+
+mc_clear.o :
+       g++ $(C++OPTS) -c mc_clear.cc
+
+mc_store_schema.o :
+       g++ $(C++OPTS) -c mc_store_schema.cc
+
+gssinksim: gssinksim.o ../../lib/libgscphostaux.a ../../lib/libgscphost.a ../../lib/libgscpinterface.a ../../lib/libgscpapp.a
+       g++ -g -o gssinksim gssinksim.o -L../../lib -lgscpapp  -lgscphostaux -lgscphost -lgscpinterface -lgscplftaaux -lclearinghouse -lgscpaux 
+
+gssinksim.o: gssinksim.c
+
+gssource: gssource.o
+       g++ -g -o gssource gssource.o -L../../lib   -lgscpaux 
+
+gssource.o: gssource.c
+
+gdatcat: gdatcat.o
+       $(CC) -o gdatcat gdatcat.o
+
+process_logs: process_logs.o xml.tab.o xmllexer.o xml_t.o
+       g++ -g -o process_logs process_logs.o xml.tab.o xmllexer.o xml_t.o
+
+xml.tab.o: xml.tab.cc
+       g++ $(WARN) -g -o xml.tab.o -c xml.tab.cc
+
+xmllexer.o: xmllexer.cc
+       g++ $(WARN) -g -o xmllexer.o -c xmllexer.cc
+
+xml_t.o: xml_t.cc
+       g++ -g -o xml_t.o -c xml_t.cc
+
+process_logs.o: process_logs.cc
+       g++ -g -o process_logs.o -c process_logs.cc
+
+ascii2gdat: ascii2gdat.o ../../lib/libgscpinterface.a
+       g++ -g -o ascii2gdat ascii2gdat.o -L../../lib   -lgscphostaux  -lgscpinterface -lgscpaux
+
+ascii2gdat.o: ascii2gdat.c
+
+ascii2gdat.c : $(INCDIR/gsconfig.h) $(INCDIR/gstypes.h)
+
+gdatcat.o: gdatcat.c
+
+gdatcat.c : $(INCDIR/gsconfig.h) $(INCDIR/gstypes.h)
+
+clean:
+       rm -ff ../../bin/gsprintconsole ../../bin/gsprintconsole_ves  ../../bin/gsgdatprint  ../../bin/gdat2ascii  ../../bin/process_logs ../../bin/gsexit ../../bin/ascii2gdat gsprintconsole gsprintconsole_ves  gsgdatprint  gdat2ascii gdat2hex process_logs gsexit gssinksim gdatcat ascii2gdat gsmcnib mc_clear mc_store_schema *.o
+
diff --git a/mc-core/mc/mcnib/gsmcnib.cc b/mc-core/mc/mcnib/gsmcnib.cc
new file mode 100644 (file)
index 0000000..e6b1816
--- /dev/null
@@ -0,0 +1,544 @@
+/* ------------------------------------------------
+ Copyright 2014 AT&T Intellectual Property
+ Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+ 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.
+ ------------------------------------------- */
+#include <app.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <signal.h>
+#include <time.h>
+#include <string.h>
+#include <sys/time.h>
+#include <sys/stat.h>
+#include <sys/types.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+
+
+#include "gsconfig.h"
+#include "gstypes.h"
+#include "gshub.h"
+
+#include <schemaparser.h>
+
+#include <sdl/syncstorage.hpp>
+
+using namespace std;
+
+//     data type definitions from sdl
+using Namespace = std::string;
+using Key = std::string;
+using Data = std::vector<uint8_t>;
+using DataMap = std::map<Key, Data>;
+using Keys = std::set<Key>;
+
+
+
+#define MAXLINE 100000
+static unsigned tcpport=0;
+static char linebuf[MAXLINE];
+int listensockfd=0;
+int fd=0;
+
+FILE* outf;
+
+// Not all systems have timersub defined so make sure its ther
+#ifndef timersub
+
+#define timersub(tvp, uvp, vvp)                                         \
+do {                                                            \
+(vvp)->tv_sec = (tvp)->tv_sec - (uvp)->tv_sec;          \
+(vvp)->tv_usec = (tvp)->tv_usec - (uvp)->tv_usec;       \
+if ((vvp)->tv_usec < 0) {                               \
+(vvp)->tv_sec--;                                \
+(vvp)->tv_usec += 1000000;                      \
+}                                                       \
+} while (0)
+
+#endif
+
+void hand(int iv) {
+    ftaapp_exit();
+    fprintf(stderr, "exiting via signal handler %d...\n", iv);
+    exit(1);
+}
+
+static void wait_for_client() {
+    struct sockaddr_in serv_addr,cli_addr;
+    socklen_t clilen;
+    if (listensockfd==0) {
+               gs_int32_t on = 1;
+               listensockfd=socket(AF_INET, SOCK_STREAM, 0);
+        if (listensockfd < 0) {
+                       gslog(LOG_EMERG,"Error:Could not create socket for tcp data stream");
+                       exit(1);
+               }
+               bzero((char *) &serv_addr, sizeof(serv_addr));
+               serv_addr.sin_family = AF_INET;
+               serv_addr.sin_addr.s_addr = INADDR_ANY;
+               serv_addr.sin_port = htons(tcpport);
+#ifndef __linux__
+        /* make sure we can reuse the common port rapidly */
+        if (setsockopt(listensockfd, SOL_SOCKET, SO_REUSEPORT,
+                       (gs_sp_t )&on, sizeof(on)) != 0) {
+            gslog(LOG_EMERG,"Error::could not set socket option\n");
+            exit(1);
+        }
+#endif
+        if (setsockopt(listensockfd, SOL_SOCKET, SO_REUSEADDR,
+                       (gs_sp_t )&on, sizeof(on)) != 0) {
+            gslog(LOG_EMERG,"Error::could not set socket option\n");
+            exit(1);
+               }
+        
+               if (bind(listensockfd, (struct sockaddr *) &serv_addr,
+                 sizeof(serv_addr)) < 0) {
+                       gslog(LOG_EMERG,"Error:Could not bind socket for tcp data stream");
+            exit(1);
+        }
+       }
+    
+       do {
+               listen(listensockfd,5);
+               clilen = sizeof(cli_addr);
+               fd=accept(listensockfd, (struct sockaddr *) &cli_addr, &clilen);
+               if (fd<0) {
+            gslog(LOG_EMERG,"Error:Could not accept connection on tcp socket");
+               }
+       } while (fd==0);
+}
+
+
+static void emit_socket() {
+       unsigned o,w,l;
+       o=0;
+       w=0;
+       l=strlen(linebuf);
+       do {
+               if((w=write(fd,&linebuf[o],l))==0) {
+                       close(fd);
+                       wait_for_client();
+               }
+               o=o+w;
+       } while (o<l);
+}
+
+static void emit_line() {
+    
+    if (tcpport==0) {
+        fprintf(outf,"%s",linebuf);
+    } else {
+        emit_socket();
+    }
+    
+}
+
+int split_string(char *instr,char sep, char **words,int max_words){
+   char *loc;
+   char *str;
+   int nwords = 0;
+
+   str = instr;
+   words[nwords++] = str;
+   while( (loc = strchr(str,sep)) != NULL){
+        *loc = '\0';
+        str = loc+1;
+        if(nwords >= max_words){
+                fprintf(stderr,"Error in split_string, too many words discovered (max is %d)\n",max_words);
+                nwords = max_words-1;
+        }
+        words[nwords++] = str;
+   }
+
+   return(nwords);
+}
+
+std::vector<string> split_string(const string &str, char sep){
+       char *instr = strdup(str.c_str());
+       char *words[1000];
+       int nwords = split_string(instr, sep, words, 1000);
+       vector<string> ret;
+       for(int i=0;i<nwords;++i){
+               ret.push_back(words[i]);
+       }
+       delete instr;
+       return ret;
+}
+
+vector<uint8_t> packData(const char *d, int len){
+       const uint8_t *d8 = (const uint8_t *)d;
+       return Data(d8, d8+len+1);
+}
+
+
+
+int main(int argc, char* argv[]) {
+    gs_sp_t me = argv[0];
+    FTAID fta_id;
+    gs_int32_t schema, ch;
+    
+    FTAID rfta_id;
+    gs_uint32_t rsize;
+    gs_uint32_t bufsz=8*1024*1024;
+    gs_int8_t rbuf[2*MAXTUPLESZ];
+    
+    gs_int32_t numberoffields;
+    gs_int32_t verbose=0;
+    gs_int32_t y, lcv;
+    
+    void *pblk;
+    gs_int32_t pblklen;
+       gs_int32_t n_actual_param;
+       gs_int32_t n_expected_param;
+    gs_int32_t xit = 0;
+    gs_int32_t dump = 0;
+    struct timeval tvs, tve, tvd;
+    gs_retval_t code;
+    endpoint gshub;
+    endpoint dummyep;
+    gs_uint32_t tip1,tip2,tip3,tip4;
+    gs_sp_t instance_name;
+
+       string keys_s;
+       vector<string> keys_v;
+       vector<int> keys_i;
+
+    gs_uint32_t tlimit = 0;     // time limit in seconds
+    time_t start_time, curr_time;
+    
+       gsopenlog(argv[0]);
+
+    // by default the output will go to stdout
+    outf = stdout;
+    
+    while ((ch = getopt(argc, argv, "l:p:r:veXDK:")) != -1) {
+        switch (ch) {
+            case 'r':
+                bufsz=atoi(optarg);
+                break;
+            case 'p':
+                tcpport=atoi(optarg);
+                break;
+            case 'v':
+                verbose++;
+                break;
+            case 'e':
+                outf = stderr;
+                break;
+            case 'X':
+                xit++;
+                break;
+            case 'D':
+                dump++;
+                break;
+            case 'l':
+                tlimit = atoi(optarg);
+                break;
+                       case 'K':
+                               keys_s = optarg;
+                               keys_v = split_string(keys_s, ',');
+                               break;
+            default:
+            usage:
+                fprintf(stderr, "usage: %s [-r <bufsz>] [-e] [-p <port>] [-l <time_limit>] [-v] [-X] [-D] [-K comma_separated_key_fields] <gshub-hostname>:<gshub-port> <gsinstance_name>  query param1 param2...\n", *argv);
+                exit(1);
+        }
+    }
+    argc -= optind;
+    argv += optind;
+    if (argc<3) goto usage;
+    
+    if (sscanf(argv[0],"%u.%u.%u.%u:%hu",&tip1,&tip2,&tip3,&tip4,&(gshub.port))!= 5 ) {
+        gslog(LOG_EMERG,"HUB IP NOT DEFINED");
+        exit(1);
+    }
+    gshub.ip=htonl(tip1<<24|tip2<<16|tip3<<8|tip4);
+    gshub.port=htons(gshub.port);
+    instance_name=strdup(argv[1]);
+    if (set_hub(gshub)!=0) {
+        gslog(LOG_EMERG,"Could not set hub");
+        exit(1);
+    }
+    if (set_instance_name(instance_name)!=0) {
+        gslog(LOG_EMERG,"Could not set instance name");
+        exit(1);
+    }
+    
+    if (get_initinstance(gshub,instance_name,&dummyep,1)!=0) {
+        gslog(LOG_EMERG,"Did not receive signal that GS is initiated\n");
+    }
+    
+    gettimeofday(&tvs, 0);
+    argc -=2;
+    argv +=2;
+    if (argc < 1)
+        goto usage;
+    
+    /* initialize host library and the sgroup  */
+    
+    if (verbose>=2) fprintf(stderr,"Inializin gscp\n");
+    
+    if (ftaapp_init(bufsz)!=0) {
+        fprintf(stderr,"%s::error:could not initialize gscp\n", me);
+        exit(1);
+    }
+    
+    signal(SIGTERM, hand);
+    signal(SIGINT, hand);
+
+       Namespace ns("mcnib");  
+       string key_base = argv[0];
+    
+    schema = ftaapp_get_fta_schema_by_name(argv[0]);
+    if (schema < 0) {
+        fprintf(stderr,"%s::error:could not get fta '%s' schema\n",
+                me ,argv[0]);
+        exit(1);
+    }
+       n_expected_param = ftaschema_parameter_len(schema);
+    if (n_expected_param == 0) {
+        pblk = 0;
+        pblklen = 0;
+    } else {
+        /* parse the params */
+               n_actual_param = argc-1;
+               if(n_actual_param < n_expected_param){
+                       fprintf(stderr,"Error, %d query parameters expected, %d provided.\n",n_expected_param, n_actual_param);
+                       exit(1);
+               }
+        for (lcv = 1 ; lcv < argc ; lcv++) {
+            char *k, *e;
+            int rv;
+            k = argv[lcv];
+            e = k;
+            while (*e && *e != '=') e++;
+            if (*e == 0) {
+                fprintf(stderr,"param parse error '%s' (fmt 'key=val')\n",
+                        argv[lcv]);
+                exit(1);
+            }
+            *e = 0;
+            rv = ftaschema_setparam_by_name(schema, k, e+1, strlen(e+1));
+            *e = '=';
+            if (rv < 0) {
+                fprintf(stderr,"param setparam error '%s' (fmt 'key=val')\n",
+                        argv[lcv]);
+                exit(1);
+            }
+        }
+        if (ftaschema_create_param_block(schema, &pblk, &pblklen) < 0) {
+            fprintf(stderr, "ftaschema_create_param_block failed!\n");
+            exit(1);
+        }
+    }
+    ftaschema_free(schema); /* XXXCDC */
+    
+    
+    if (verbose>=2) fprintf(stderr,"Initalize FTA\n");
+    
+    fta_id=ftaapp_add_fta(argv[0],0,0,0,pblklen,pblk);
+    if (fta_id.streamid==0) {
+        fprintf(stderr,"%s::error:could not initialize fta %s\n",
+                me, argv[0]);
+        exit(1);
+    }
+    /* XXXCDC: pblk is malloc'd, should we free it? */
+    
+    if (verbose>=2) fprintf(stderr,"Get schema handle\n");
+    
+    if ((schema=ftaapp_get_fta_schema(fta_id))<0) {
+        fprintf(stderr,"%s::error:could not get schema\n", me);
+        exit(1);
+    }
+    
+    if ((numberoffields=ftaschema_tuple_len(schema))<0) {
+        fprintf(stderr,"%s::error:could not get number of fields in schema\n",
+                me);
+        exit(1);
+    }
+    
+    if (verbose>=1) {
+        for(y=0; y<numberoffields;y++) {
+            printf("%s",ftaschema_field_name(schema,y));
+            if (y<numberoffields-1) printf("|");
+        }
+        printf("\n");
+    }
+    if (xit) {
+        gettimeofday(&tve, 0);
+        timersub(&tve, &tvs, &tvd);
+        printf("TIME= %ld.%06ld sec\n", tvd.tv_sec, tvd.tv_usec);
+        hand(0);
+    }
+    if (tcpport!=0) {
+       wait_for_client();
+    }
+
+// Get the vector of keys, bail out if there is a mismatch
+       for(int ki=0;ki<keys_v.size();++ki){
+               int fi;
+               for(fi=0; fi<numberoffields;fi++) {
+                       if(ftaschema_field_name(schema, fi) == keys_v[ki]){
+                               keys_i.push_back(fi);
+                               break;
+                       }
+               }
+               if(fi>=numberoffields){
+                       fprintf(stderr,"ERROR key field %s is not in the schema.\n",keys_v[ki].c_str());
+                       exit(1);
+               }
+       }
+
+//             Get SDL handle
+       std::unique_ptr<shareddatalayer::SyncStorage> sdl(shareddatalayer::SyncStorage::create());
+
+    start_time = time(NULL);
+
+    while((code=ftaapp_get_tuple(&rfta_id,&rsize,rbuf,2*MAXTUPLESZ,0))>=0) {
+        if (dump)
+            continue;
+        if (ftaschema_is_eof_tuple(schema, rbuf)) {
+            /* initiate shutdown or something of that nature */
+            printf("#All data proccessed\n");
+            exit(0);
+        }
+        if (!rsize)
+            continue;
+        if (verbose >=2) {
+            snprintf(linebuf,MAXLINE,"RESULT CODE => %u\n",code);
+            emit_line();
+        }
+
+        if ((code==0)&&(rfta_id.streamid == fta_id.streamid)) {
+                       string key = key_base;
+                       for(int fi=0;fi<keys_i.size();++fi){
+                               y = keys_i[fi]; //n match gsprintconsole
+                access_result ar=ftaschema_get_field_by_index(schema,y,rbuf,rsize);
+                switch (ar.field_data_type) {
+                    case INT_TYPE:
+                                               key += ":"+to_string(ar.r.i);
+                        break;
+                    case UINT_TYPE:
+                                               key += ":"+to_string(ar.r.ui);
+                        break;
+                    case IP_TYPE:
+                        snprintf(linebuf,MAXLINE,"%u.%u.%u.%u",ar.r.ui>>24&0xff,
+                                 ar.r.ui>>16&0xff,
+                                 ar.r.ui>>8&0xff,
+                                 ar.r.ui&0xff);
+                                               key += ":"+string(linebuf);
+                        break;
+                    case IPV6_TYPE:
+                    {
+                        unsigned x;
+                        unsigned zc=0;
+                        for(x=0;x<4;x++) { if (ar.r.ip6.v[x]==0) zc++;}
+                        if (zc!=4) {
+                            for(x=0;x<8;x++) {
+                                unsigned char * a = (unsigned char *)  &(ar.r.ip6.v[0]);
+                                unsigned y;
+                                y=((unsigned)a[2*x])<<8|((unsigned) a[2*x+1]);
+                                snprintf(&linebuf[strlen(linebuf)],MAXLINE,"%04x",y);
+                                if (x<7) snprintf(&linebuf[strlen(linebuf)],MAXLINE,":");
+                            }
+                        } else {
+                            snprintf(linebuf,MAXLINE,"::");
+                        }
+                                               key += ":"+string(linebuf);
+                    }
+                    break;
+                    case USHORT_TYPE:
+                                               key += ":"+to_string(ar.r.ui);
+                        break;
+                    case BOOL_TYPE:
+                        if (ar.r.ui==0) {
+                                                       key += ":FALSE";
+                        } else {
+                                                       key += ":TRUE";
+                        }
+                        break;
+                    case ULLONG_TYPE:
+                                               key += ":"+to_string(ar.r.ul);
+                        break;
+                    case LLONG_TYPE:
+                                               key += ":"+to_string(ar.r.l);
+                        break;
+                    case FLOAT_TYPE:
+                                               key += ":"+to_string(ar.r.f);
+                        break;
+                    case TIMEVAL_TYPE:
+                    {
+                        gs_float_t t;
+                        t= ar.r.t.tv_usec;
+                        t=t/1000000;
+                        t=t+ar.r.t.tv_sec;
+                        snprintf(linebuf,MAXLINE,"%f sec",t);
+                                               key += ":"+string(linebuf);
+                    }
+                        break;
+                    case VSTR_TYPE:
+                    {
+                        int x;
+                        int c;
+                        int d=0;
+                        char * src;
+                        src=(char*)ar.r.vs.offset;
+                        if(d<MAXLINE){
+                            linebuf[d] = '\0';
+                        }
+                        for(x=0;x<ar.r.vs.length;x++) {
+                            c=src[x];
+                            if ((c<='~') && (c>=' ')) {
+                                if (d<MAXLINE-1) {
+                                    linebuf[d]=c;
+                                    linebuf[d+1]=0;
+                                    d++;
+                                }
+                            } else {
+                                if (d<MAXLINE-1) {
+                                    linebuf[d]='.';
+                                    linebuf[d+1]=0;
+                                    d++;
+                                }
+                            }
+                        }
+                                               key += ":"+string(linebuf);
+                    }
+                        break;
+                    default:
+                        linebuf[0]=0;
+                        break;
+                }
+            }
+                       if(keys_i.size()==0){
+                               key += ":";
+                       }
+                       DataMap D;
+                       D[key] = packData(rbuf, rsize);
+                       sdl->set(ns, D);
+
+        } else {
+            if (rfta_id.streamid != fta_id.streamid)
+                fprintf(stderr,"Got unkown streamid %llu \n",rfta_id.streamid);
+        }
+
+        // whenever we receive a temp tuple check if we reached time limit
+        if ((code==2)  && tlimit && (time(NULL)-start_time)>=tlimit) {
+            fprintf(stderr,"Reached time limit of %d seconds\n",tlimit);    
+            ftaapp_exit();
+            exit(0);
+        }        
+    }
+}
+
diff --git a/mc-core/mc/mcnib/mc_clear.cc b/mc-core/mc/mcnib/mc_clear.cc
new file mode 100644 (file)
index 0000000..d20a05e
--- /dev/null
@@ -0,0 +1,35 @@
+#include<stdlib.h>
+#include<stdio.h>
+#include<string.h>
+
+#include <sdl/syncstorage.hpp>
+
+
+//     data type definitions from sdl
+using Namespace = std::string;
+using Key = std::string;
+using Data = std::vector<uint8_t>;
+using DataMap = std::map<Key, Data>;
+using Keys = std::set<Key>;
+
+int main(int argc, char **argv){
+
+       Namespace ns("mcnib");  
+       std::string prefix = "";
+       if(argc>1){
+               prefix = argv[1];
+       }
+       
+       std::unique_ptr<shareddatalayer::SyncStorage> sdl(shareddatalayer::SyncStorage::create());
+
+       Keys K = sdl->findKeys(ns, prefix);     // just the prefix
+       
+       DataMap Dk = sdl->get(ns, K);
+       printf("Deleting:\n");
+       for(auto si=K.begin();si!=K.end();++si){
+               printf("\t%s\n",(*si).c_str());
+       }
+
+       sdl->remove(ns, K);
+
+}
diff --git a/mc-core/mc/mcnib/mc_store_schema.cc b/mc-core/mc/mcnib/mc_store_schema.cc
new file mode 100644 (file)
index 0000000..4815df1
--- /dev/null
@@ -0,0 +1,58 @@
+#include<stdio.h>
+#include<stdlib.h>
+#include<string.h>
+
+#include<string>
+#include<iostream>
+#include<fstream>
+
+#include <sdl/syncstorage.hpp>
+
+//     data type definitions from sdl
+using Namespace = std::string;
+using Key = std::string;
+using Data = std::vector<uint8_t>;
+using DataMap = std::map<Key, Data>;
+using Keys = std::set<Key>;
+
+
+using namespace std;
+
+vector<uint8_t> packData(const char *d, int len){
+       const uint8_t *d8 = (const uint8_t *)d;
+       return Data(d8, d8+len+1);
+}
+
+int main(int argc, char **argv){
+       Namespace ns("mcnib");  
+
+       string directory = ".";
+       if(argc>1){
+               directory = argv[1];
+       }
+       string inflnm = directory + "/" + string("nib.json");
+
+       ifstream infl(inflnm);
+       if(!infl){
+               cerr << "Error, can't open " << inflnm << endl;
+               exit(1);
+       }
+       string line;
+       string nib_str;
+       while(getline(infl, line)){
+               nib_str += line;
+       }
+       infl.close();
+
+
+// ---------------------------------------------
+       std::unique_ptr<shareddatalayer::SyncStorage> sdl(shareddatalayer::SyncStorage::create());
+       DataMap D;
+
+// --------------------------------------------
+
+       vector<uint8_t> schema_buf = packData(nib_str.c_str(), nib_str.size());
+       D["_schema"] = schema_buf;
+
+       sdl->set(ns, D);
+}
index 764642d..9098949 100644 (file)
@@ -7,7 +7,7 @@ select timestamp_ms as timestamp,
        gnb_id,
        0 as event_type
 from SGNB_ADDITION_REQ.sgnb_addreq_for_ue
-where schemaId=401
+//where schemaId=401
 ;
 
 DEFINE{query_name 'add_req_success';}
@@ -19,7 +19,7 @@ select timestamp_ms as timestamp,
        gnb_id,
        1 as event_type
 from RECONCOMPLETE.reconfig_success
-where schemaId=101
+//where schemaId=101
 ;
 
 DEFINE{query_name 'addreq_events';}
@@ -42,6 +42,7 @@ having max(end_time)>0 and max(start_time)>0 and max(end_time)>max(start_time)
 
 DEFINE{query_name 'addreq_success_stats';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the time to successfully make a DC connection';
 }
 PARAM{ window uint; }
 select gnb_id as GNB_ID,
index a06d137..400d313 100644 (file)
@@ -1,5 +1,6 @@
 DEFINE{ query_name 'addreq_pdf_nr_cell'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'histogram of neighboring cell RSRP, aggregated by cell id';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -14,12 +15,13 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,68)*LEQ(rsrp,82)) as rsrp_good,
        sum(GEQ(rsrp,83)*LEQ(rsrp,127)) as rsrp_vgood
 from SGNB_ADDITION_REQ.sgnb_addreq_for_ue_mn_neigh_ssb
-where schemaId = 410
+//where schemaId = 410
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 DEFINE{ query_name 'addreq_pdf_nr_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'histogram of neighboring cell RSRP, aggregated by GNB, as computed from addition request events.';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -34,6 +36,6 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,68)*LEQ(rsrp,82)) as rsrp_good,
        sum(GEQ(rsrp,83)*LEQ(rsrp,127)) as rsrp_vgood
 from SGNB_ADDITION_REQ.sgnb_addreq_for_ue_mn_neigh_ssb
-where schemaId = 410
+//where schemaId = 410
 group by timestamp_ms/$window as tb, gnb_id
 
index 84bfd8e..8e0cf03 100644 (file)
@@ -1,5 +1,6 @@
 DEFINE{ query_name 'addreq_stats_nr_cell'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics about neighboring cell RSRP aggregated by cell id';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -18,12 +19,13 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from SGNB_ADDITION_REQ.sgnb_addreq_for_ue_mn_neigh_ssb
-where schemaId = 410
+//where schemaId = 410
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 DEFINE{ query_name 'addreq_stats_nr_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics about neighboring cell RSRP aggregated by GNB, as computed from addition request events.';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -42,5 +44,5 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from SGNB_ADDITION_REQ.sgnb_addreq_for_ue_mn_neigh_ssb
-where schemaId = 410
+//where schemaId = 410
 group by timestamp_ms/$window as tb, gnb_id
index 1e15232..21b971e 100644 (file)
@@ -10,13 +10,14 @@ PARAM{ window uint; }
 select e.timestamp_ms/10000 as TB10, e.id_SgNB_UE_X2AP_ID, e.e_RAB_ID, e.qCI
 INNER_JOIN from SGNB_ADDITION_REQ_ACK.eRABs_acked_for_admit_for_ue e,
        RECONCOMPLETE.reconfig_success r
-where r.schemaId = 101 and e.schemaId = 502
-and r.id_SgNB_UE_X2AP_ID = e.id_SgNB_UE_X2AP_ID
+where // r.schemaId = 101 and e.schemaId = 502 and
+ r.id_SgNB_UE_X2AP_ID = e.id_SgNB_UE_X2AP_ID
 and r.timestamp_ms/10000 = e.timestamp_ms/10000
 ;
 
 DEFINE{query_name 'erab_stats';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'number of admitted bearers and the distribution of their qCI';
 }
 PARAM{ window uint; }
 Select (TB*$window)/1000 as TS, 
index 1551869..eec71a2 100644 (file)
@@ -7,7 +7,7 @@ select timestamp_ms as timestamp,
        UINT(id_SgNB_UE_X2AP_ID) as gUE_ID,
        1 as event_type
 from RECONCOMPLETE.reconfig_success
-where schemaId=101
+// where schemaId=101
 ;
 
 DEFINE{query_name 'dc_terminate';
@@ -19,7 +19,7 @@ select timestamp_ms as timestamp,
        id_SgNB_UE_X2AP_ID as gUE_ID,
        0 as event_type
 from CONRELEASE.dc_release
-where schemaId=201
+// where schemaId=201
 ;
 
 DEFINE{query_name 'dc_events';}
@@ -43,6 +43,7 @@ CLOSING_WHEN LAST(event_type) = 0
 
 DEFINE{ query_name 'mc_connected_cnt'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'Number of dual connected users';
 }
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS, 
@@ -67,6 +68,7 @@ CLOSING_WHEN LAST(event_type) = 0
 
 DEFINE{ query_name 'mc_connection_stats'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics about the length of dual connected sessions';
 }
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS, 
@@ -86,6 +88,7 @@ GROUP BY (TB_1000 * 1000) / $window as TB
 
 DEFINE{ query_name 'mc_connects_cnt'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'number of DC connection requests';
 }
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS,
@@ -98,6 +101,7 @@ GROUP BY timestamp / $window as TB
 
 DEFINE{ query_name 'mc_disconnects_cnt'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'number of DC connection releases';
 }
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS, 
@@ -119,6 +123,7 @@ GROUP BY timestamp / $window as TB, gUE_ID as UE_ID
 
 DEFINE{ query_name 'mc_unique_ue_cnt'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'Number of distinct UEs making a DC request or release';
 }
 PARAM{ window uint; } 
 SELECT ($window*(TB+1))/1000 as TS, 
index 69661b6..cd2ac92 100644 (file)
@@ -6,7 +6,7 @@ select 'reconfig_all_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
         $window/1000.0 as measurementInterval
 from RECONCOMPLETE.reconfig_all
-where schemaId=103
+// where schemaId=103
 group by timestamp_ms / $window as TB
 ;
 
@@ -18,7 +18,7 @@ select 'reconfig_success_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
         $window/1000.0 as measurementInterval
 from RECONCOMPLETE.reconfig_success
-where schemaId=101
+// where schemaId=101
 group by timestamp_ms / $window as TB
 ;
 
@@ -30,7 +30,7 @@ select 'reconfig_reject_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
         $window/1000.0 as measurementInterval
 from RECONCOMPLETE.reconfig_reject
-where schemaId=102
+// where schemaId=102
 group by timestamp_ms / $window as TB
 ;
 
@@ -42,7 +42,7 @@ select 'dc_release_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
         $window/1000.0 as measurementInterval
 from CONRELEASE.dc_release
-where schemaId=201
+// where schemaId=201
 group by timestamp_ms / $window as TB
 
 
diff --git a/mc-core/mc/queries/generate_runall.py b/mc-core/mc/queries/generate_runall.py
new file mode 100644 (file)
index 0000000..51e13d2
--- /dev/null
@@ -0,0 +1,153 @@
+# ------------------------------------------------
+#Copyright 2020 AT&T Intellectual Property
+#   Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+#
+#   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.
+# ------------------------------------------- 
+
+import xml.etree.ElementTree as ET
+import json
+from optparse import OptionParser
+import sys
+import os
+
+
+
+optparser = OptionParser(usage="usage: %prog [options] path_file [path_file*]")
+optparser.add_option("-Q", "--querydir", dest="querydir",
+                 default=".",help="directory with qtree.xml and output_spec.cfg" )
+(options, args) = optparser.parse_args()
+
+odoc = ""
+
+nibflnm = options.querydir+"/nib.json"
+nibfl = open(nibflnm, "r")
+nib = json.load(nibfl)
+nibfl.close()
+
+osflnm = options.querydir+"/output_spec.cfg"
+osfl = open(osflnm, "r")
+oqy = {}
+for line in osfl:
+       flds = line.split(",")
+       oqy[flds[0]]=1
+
+runall = """
+#!/bin/bash
+
+# -------------------------------------------------------------------------------
+#    Copyright (c) 2018-2019 AT&T Intellectual Property.
+#
+#   Licensed under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
+#
+#   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.
+# -------------------------------------------------------------------------------
+
+set -m
+
+FIFO_DIR="/tmp/mcl/fifos"
+
+SIMULATOR_MODE=`python /mc/extract_params.py $XAPP_DESCRIPTOR_PATH simulator_mode`
+
+DEBUG_MODE=`python /mc/extract_params.py $XAPP_DESCRIPTOR_PATH debug_mode`
+
+WINDOW=`python /mc/extract_params.py $XAPP_DESCRIPTOR_PATH measurement_interval`
+
+export DBAAS_SERVICE_HOST=`python /mc/extract_params.py $XAPP_DESCRIPTOR_PATH __DBAAS_SERVICE_HOST__`
+export DBAAS_SERVICE_PORT=`python /mc/extract_params.py $XAPP_DESCRIPTOR_PATH __DBAAS_SERVICE_PORT__`
+
+if [ "$SIMULATOR_MODE" = "true" ]
+then
+       mkdir -p $FIFO_DIR
+       python /mc/data_gen/dc_gen.py &
+       python /mc/data_gen/rrcx_gen.py &
+fi
+
+if [ "$WINDOW" = "" ]
+then
+       WINDOW="10000"
+fi
+
+VES_COLLECTOR=`python /mc/extract_params.py $XAPP_DESCRIPTOR_PATH ves_collector_address`
+
+VES_NAME=`echo $VES_COLLECTOR | awk 'BEGIN{FS=":"} {print $1}'`
+VES_PORT=`echo $VES_COLLECTOR | awk 'BEGIN{FS=":"} {print $2}'`
+VES_IP=`getent ahosts $VES_NAME | awk '{ print $1; exit }'`
+
+echo "Clearing MC NIB namespace"
+/mc/gs-lite/bin/mc_clear
+
+echo "Storing MC NIB schemas" >&2
+/mc/gs-lite/bin/mc_store_schema >&2
+
+./runit
+sleep 1
+
+"""
+
+debug_q = ""
+for q in oqy:
+       if "debug" in q:
+               debug_q += "\t/mc/gs-lite/bin/gsprintconsole -e `cat gshub.log` default "+q+" window=$WINDOW &\n"
+
+if len(debug_q)>0:
+       runall += """
+if [ "$DEBUG_MODE" = "true" ]
+then
+    # invoke gsprintconsole for all the queries with debug in their name
+"""
+       runall += debug_q
+       runall += """
+fi
+"""
+
+runall += """
+
+# invoke gsprintconsole_ves gsmcnib for all non-debug queries
+"""
+
+for q in oqy:
+       if "debug" not in q:
+               runall += " /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default "+q+" window=$WINDOW &\n"
+               keys = nib[q]["keys"]
+               if len(keys)>0:
+                       keys_str = ",".join(keys)
+                       runall += " /mc/gs-lite/bin/gsmcnib -K "+keys_str+" `cat gshub.log` default "+q+" window=$WINDOW &\n"
+               else:
+                       runall += " /mc/gs-lite/bin/gsmcnib `cat gshub.log` default "+q+" window=$WINDOW &\n"
+
+runall += """
+
+sleep 1
+bash /mc/gs-lite/bin/start_processing
+fg %1
+"""
+
+rflnm = options.querydir+"/runall"
+rfl = open(rflnm, "w")
+rfl.write(runall)
+rfl.close()
+
+cmd = "chmod +x "+rflnm
+sys.stderr.write("Executing "+cmd+"\n")
+ret = os.system(cmd)
+if ret != 0:
+       sys.stderr.write("Error executing "+cmd+"\n")
+       exit(1)
+exit(0)
index 96a274e..887f1cb 100644 (file)
@@ -1,5 +1,6 @@
 DEFINE{ query_name 'mod_req_failure_distribution'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       commetn 'distribution of causes of a modification requet failure';
 }
 PARAM{ window uint;}
 
@@ -14,6 +15,6 @@ select ($window*(tb+1))/1000 as TS,
        sum(EQ(UINT(failureType),5)) as count_scg_reconfigFailure,
        sum(EQ(UINT(failureType),6)) as count_srb3_IntegrityFailure
 From SGNBMODREQ.sgnb_mod_req
-where schemaId=1201
+// where schemaId=1201
 group by timestamp_ms/$window as tb
 
diff --git a/mc-core/mc/queries/nib.json b/mc-core/mc/queries/nib.json
new file mode 100644 (file)
index 0000000..e867313
--- /dev/null
@@ -0,0 +1,2098 @@
+{
+  "rrcx_stats_neigh_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "reconfig_status_reject_cause": {
+    "keys": [
+      "gnb_id"
+    ], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "gnb_id", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TB", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "total_reconfig_reject", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_radio_network", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_transport", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_protocol", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_misc", 
+        "pos": "6"
+      }
+    ]
+  }, 
+  "rrcx_stats_neighbor_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "mc_disconnects_cnt": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "count_ue_disconnects", 
+        "pos": "2"
+      }
+    ]
+  }, 
+  "rrcx_stats_neighbor_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "mc_connects_cnt": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "count_ue_connects", 
+        "pos": "2"
+      }
+    ]
+  }, 
+  "erab_stats": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "total_erabs", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_1", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_2", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_3", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_4", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_5", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_6", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_7", 
+        "pos": "9"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_8", 
+        "pos": "10"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_9", 
+        "pos": "11"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "qCI_other", 
+        "pos": "12"
+      }
+    ]
+  }, 
+  "reconfig_status_success_rate": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "total_reconfiguration_requests", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "successful_reconfiguration_requests", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "success_rate", 
+        "pos": "5"
+      }
+    ]
+  }, 
+  "rrcx_pdf_neigh_cell_csi": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "rrcx_pdf_neigh_gnb_ssb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "throughput_rollup": {
+    "keys": [
+      "GNB_ID", 
+      "e_RAB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "e_RAB_ID", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "count_ues", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "average_throughput_percentile_05", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "average_throughput_percentile_50", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "average_average_throughput", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "average_throughput_percentile_95", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "active_throughput_percentile_05", 
+        "pos": "9"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "active_throughput_percentile_50", 
+        "pos": "10"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "average_active_throughput", 
+        "pos": "11"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "active_throughput_percentile_95", 
+        "pos": "12"
+      }
+    ]
+  }, 
+  "rrcx_pdf_neigh_cell_ssb": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "rrcx_pdf_neighbor_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "addreq_success_stats": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "min_success_time", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "max_success_time", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "avg_success_time", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "pctl_05_success_time", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "pctl_95_success_time", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_success_time", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "mc_connection_stats": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "min_connected_time", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "max_connected_time", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "avg_connected_time", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "pctl_05_connected_time", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "pctl_95_connected_time", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_connected_time", 
+        "pos": "7"
+      }
+    ]
+  }, 
+  "addreq_stats_nr_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "addreq_pdf_nr_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "rrcx_stats_neigh_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "reconfig_reject_debug": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "name", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "3"
+      }
+    ]
+  }, 
+  "release_req_success_stats": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "min_success_time", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "max_success_time", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "avg_success_time", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "pctl_05_success_time", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "pctl_95_success_time", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_success_time", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "rrcx_pdf_serv_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "mod_req_failure_distribution": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_protobuf_unspecified", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_t310_Expiry", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_randomAccessProblem", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_rlc_MaxNumRetx", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_synchReconfigFailure_SCG", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_scg_reconfigFailure", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_srb3_IntegrityFailure", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "rrcx_stats_serv_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "release_cause": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "total_reconfig_refuse", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_radio_network", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_transport", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_protocol", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_misc", 
+        "pos": "7"
+      }
+    ]
+  }, 
+  "reconfig_success_debug": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "name", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "3"
+      }
+    ]
+  }, 
+  "reconfig_all_debug": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "name", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "3"
+      }
+    ]
+  }, 
+  "mc_unique_ue_cnt": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "count_unique_ue", 
+        "pos": "2"
+      }
+    ]
+  }, 
+  "rrcx_pdf_neigh_gnb_csi": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "dc_release_debug": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "name", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "3"
+      }
+    ]
+  }, 
+  "throughput_gnb": {
+    "keys": [
+      "GNB_ID", 
+      "e_RAB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "e_RAB_ID", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "active_throughput", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "average_throughput", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "min_throughput", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "max_throughput", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "extr_quant_hfta0_fcn_quant_udaf_hfta0", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "extr_quant_hfta0_fcn_quant_udaf_hfta01", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "addreq_stats_nr_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "rrcx_pdf_serv_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "rrcx_pdf_neighbor_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "rrcx_stats_serv_gnb": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "min_rsrp", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_05_rsrp", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "median_rsrp", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "pctl_95_rsrp", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "stddev_rsrp", 
+        "pos": "8"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "max_rsrp", 
+        "pos": "9"
+      }
+    ]
+  }, 
+  "throughput_ue": {
+    "keys": [
+      "UE_ID", 
+      "GNB_ID", 
+      "e_RAB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "e_RAB_ID", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "UE_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "active_throughput", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "average_throughput", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "min_throughput", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "LLONG", 
+        "name": "max_throughput", 
+        "pos": "8"
+      }
+    ]
+  }, 
+  "mc_connected_cnt": {
+    "keys": [], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "count_connected_ue", 
+        "pos": "2"
+      }
+    ]
+  }, 
+  "mod_status_refuse_cause": {
+    "keys": [
+      "GNB_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": false, 
+        "type": "V_STR", 
+        "name": "GNB_ID", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "total_reconfig_refuse", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_radio_network", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_transport", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_protocol", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "count_misc", 
+        "pos": "7"
+      }
+    ]
+  }, 
+  "addreq_pdf_nr_cell": {
+    "keys": [
+      "CELL_ID"
+    ], 
+    "fields": [
+      {
+        "is_ts": true, 
+        "type": "ULLONG", 
+        "name": "TS", 
+        "pos": "0"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "FLOAT", 
+        "name": "measurementInterval", 
+        "pos": "1"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "CELL_ID", 
+        "pos": "2"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "INT", 
+        "name": "cnt", 
+        "pos": "3"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vbad", 
+        "pos": "4"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_bad", 
+        "pos": "5"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_medium", 
+        "pos": "6"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_good", 
+        "pos": "7"
+      }, 
+      {
+        "is_ts": false, 
+        "type": "UINT", 
+        "name": "rsrp_vgood", 
+        "pos": "8"
+      }
+    ]
+  }
+}
\ No newline at end of file
index d7ff5c1..c3d9b7a 100644 (file)
@@ -7,10 +7,11 @@ select timestamp_ms as timestamp,
        gnb_id,
        0 as event_type
 from SGNB_ADDITION_REQ.sgnb_addreq_for_ue
-where schemaId=401
+// where schemaId=401
 ;
 
-DEFINE{query_name 'reconfig_status_success';}
+DEFINE{query_name 'reconfig_status_success';
+}
 PARAM{ window uint; }
 select timestamp_ms as timestamp,
        0ULL as start_time,
@@ -19,7 +20,7 @@ select timestamp_ms as timestamp,
        gnb_id,
        1 as event_type
 from RECONCOMPLETE.reconfig_success
-where schemaId=101
+// where schemaId=101
 ;
 
 DEFINE{query_name 'reconfig_status_events';}
@@ -42,6 +43,7 @@ group by eUE_ID, gnb_id, timestamp / $window as TB
 
 DEFINE{query_name 'reconfig_status_success_rate';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'fraction of DC connect requests which are successful';
 }
 PARAM{ window uint; }
 select gnb_id as GNB_ID,
@@ -58,6 +60,7 @@ group by gnb_id, TB
 //     Merge in reconfig_reject causes and aggregate with this.
 DEFINE{query_name 'reconfig_status_reject_cause';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of causes for DC rejection';
 }
 PARAM{ window uint; }
 Select gnb_id, TB,
@@ -67,7 +70,7 @@ Select gnb_id, TB,
        sum(GEQ(UINT(cause_protocol),0)) as count_protocol,
        sum(GEQ(UINT(cause_misc),0)) as count_misc
 from ADDREQREJECT.sgnb_add_req_reject
-where schemaId=701
+// where schemaId=701
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
@@ -82,7 +85,7 @@ Select gnb_id, TB,
        sum(GEQ(UINT(cause_protocol),0)) as count_protocol,
        sum(GEQ(UINT(cause_misc),0)) as count_misc
 from RECONCOMPLETE.reconfig_reject
-where schemaId=102
+// where schemaId=102
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
@@ -111,6 +114,7 @@ group by gnb_id, TB
 
 DEFINE{query_name 'mod_status_refuse_cause';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of causes for a sgnb modification refusal';
 }
 PARAM{ window uint; }
 Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, 
@@ -121,7 +125,7 @@ Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS,
        sum(GEQ(UINT(cause_protocol),0)) as count_protocol,
        sum(GEQ(UINT(cause_misc),0)) as count_misc
 from SGNBMODREFUSE.sgnb_mod_refuse
-where schemaId=1401
+// where schemaId=1401
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
@@ -137,7 +141,7 @@ Select gnb_id, TB,
        sum(GEQ(UINT(cause_protocol),0)) as count_protocol,
        sum(GEQ(UINT(cause_misc),0)) as count_misc
 from SGNBRELEASERQD.SgNB_release_rqd
-where schemaId=1001
+// where schemaId=1001
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
@@ -152,7 +156,7 @@ Select gnb_id, TB,
        sum(GEQ(UINT(cause_protocol),0)) as count_protocol,
        sum(GEQ(UINT(cause_misc),0)) as count_misc
 from RELREQ.release_req
-where schemaId=801
+// where schemaId=801
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
@@ -164,6 +168,7 @@ from release_rqd_cause p1, release_request_cause p2
 
 DEFINE{query_name 'release_cause';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the causes of a DC release';
 }
 PARAM{ window uint; }
 Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, 
index 9b4c64d..e1d0dee 100644 (file)
@@ -10,11 +10,12 @@ select timestamp_ms as timestamp,
        gnb_id,
        0 as event_type
 from RELREQ.release_req
-where schemaId=801
+// where schemaId=801
 ;
 
 DEFINE{query_name 'release_req_success';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the time to delease a DC connection';
 }
 PARAM{ window uint; }
 select timestamp_ms as timestamp,
@@ -25,7 +26,7 @@ select timestamp_ms as timestamp,
        gnb_id,
        1 as event_type
 from CONRELEASE.dc_release
-where schemaId=201
+// where schemaId=201
 ;
 
 DEFINE{query_name 'release_req_events';
@@ -50,6 +51,7 @@ having max(end_time)>0 and max(start_time)>0 and max(end_time)>max(start_time)
 
 DEFINE{query_name 'release_req_success_stats';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the time to delease a DC connection';
 }
 PARAM{ window uint; }
 select gnb_id as GNB_ID,
index 4ecb20b..64eaa24 100644 (file)
@@ -1,6 +1,7 @@
 
 DEFINE{ query_name 'rrcx_pdf_neigh_cell_csi'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the beam csi rsrp of neighboring cells, aggregated by cell id, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -15,12 +16,13 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,68)*LEQ(rsrp,82)) as rsrp_good,
        sum(GEQ(rsrp,83)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.neighbor_beam_csi
-where schemaId = 5
+// where schemaId = 5
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 DEFINE{ query_name 'rrcx_pdf_neigh_gnb_csi'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the beam csi rsrp of neighboring cells, aggregated by gNB, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -35,13 +37,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,68)*LEQ(rsrp,82)) as rsrp_good,
        sum(GEQ(rsrp,83)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.neighbor_beam_csi
-where schemaId = 5
+// where schemaId = 5
 group by timestamp_ms/$window as tb, gnb_id
 ;
 
 
 DEFINE{ query_name 'rrcx_pdf_neigh_cell_ssb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the beam ssb rsrp of neighboring cells, aggregated by cell id, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -56,12 +59,13 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,68)*LEQ(rsrp,82)) as rsrp_good,
        sum(GEQ(rsrp,83)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.neighbor_beam_ssb
-where schemaId = 5
+// where schemaId = 6
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 DEFINE{ query_name 'rrcx_pdf_neigh_gnb_ssb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the beam ssb rsrp of neighboring cells, aggregated by gNB, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -76,7 +80,7 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,68)*LEQ(rsrp,82)) as rsrp_good,
        sum(GEQ(rsrp,83)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.neighbor_beam_ssb
-where schemaId = 5
+// where schemaId = 6
 group by timestamp_ms/$window as tb, gnb_id
 ;
 
@@ -84,6 +88,7 @@ group by timestamp_ms/$window as tb, gnb_id
 
 DEFINE{ query_name 'rrcx_pdf_serv_cell'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the  ssb rsrp of serving cell aggregated by cell id, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -98,7 +103,7 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,52)*LEQ(rsrp,66)) as rsrp_good,
        sum(GEQ(rsrp,67)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.serv_nr_cell
-where schemaId = 1
+// where schemaId = 1
 group by timestamp_ms/$window as tb, physCellId
 ;
 
@@ -118,13 +123,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,52)*LEQ(rsrp,66)) as rsrp_good,
        sum(GEQ(rsrp,67)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.nr_neighbor
-where schemaId = 4
+// where schemaId = 4
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 
 DEFINE{ query_name 'rrcx_pdf_serv_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the  ssb rsrp of neighbor cells aggregated by cell id, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -139,12 +145,13 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,52)*LEQ(rsrp,66)) as rsrp_good,
        sum(GEQ(rsrp,67)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.serv_nr_cell
-where schemaId = 1
+// where schemaId = 1
 group by timestamp_ms/$window as tb, gnb_id
 ;
 
 DEFINE{ query_name 'rrcx_pdf_neighbor_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'distribution of the  ssb rsrp of neighbor cells aggregated by gNB, computed from rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -159,7 +166,7 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        sum(GEQ(rsrp,52)*LEQ(rsrp,66)) as rsrp_good,
        sum(GEQ(rsrp,67)*LEQ(rsrp,127)) as rsrp_vgood
 from RRCXFER.nr_neighbor
-where schemaId = 4
+// where schemaId = 4
 group by timestamp_ms/$window as tb, gnb_id
 
 
index edb7215..f8b1958 100644 (file)
@@ -1,5 +1,6 @@
 DEFINE{ query_name 'rrcx_stats_neigh_cell'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on ssb RSRP on the beams of nrighboring cells, aggregated by cell ID, computed using rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -18,12 +19,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from RRCXFER.neighbor_beam_ssb
-where schemaId = 6 and rsrp<128
+//where schemaId = 6 and rsrp<128
+where  rsrp<128
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 DEFINE{ query_name 'rrcx_stats_neigh_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on ssb RSRP on the beams of nrighboring cells, aggregated by gNB, computed using rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -42,13 +45,15 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from RRCXFER.neighbor_beam_ssb
-where schemaId = 6 and rsrp<128
+where  rsrp<128
+//where schemaId = 6 and rsrp<128
 group by timestamp_ms/$window as tb, gnb_id
 ;
 
 
 DEFINE{ query_name 'rrcx_stats_serv_cell'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the ssb rsrp of the serving cell, aggregated by cell id, computed using rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -67,12 +72,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from RRCXFER.serv_nr_cell
-where schemaId = 1 and rsrp<128
+where rsrp<128
+//where schemaId = 1 and rsrp<128
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 DEFINE{ query_name 'rrcx_stats_neighbor_cell'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the ssb rsrp of the neighbor cells, aggregated by cell id, computed using rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -91,13 +98,15 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from RRCXFER.nr_neighbor
-where schemaId = 4 and rsrp<128
+//where schemaId = 4 and rsrp<128
+where  rsrp<128
 group by timestamp_ms/$window as tb, physCellId
 ;
 
 
 DEFINE{ query_name 'rrcx_stats_serv_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the ssb srp of the serving cell, aggregated by gNB, computed using rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -116,12 +125,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from RRCXFER.serv_nr_cell
-where schemaId = 1 and rsrp<128
+//where schemaId = 1 and rsrp<128
+where  rsrp<128
 group by timestamp_ms/$window as tb, gnb_id
 ;
 
 DEFINE{ query_name 'rrcx_stats_neighbor_gnb'; 
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the ssb rsrp of the neighbor cells, aggregated by gNB, computed using rrc transfer';
 }
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
@@ -140,6 +151,7 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
 from RRCXFER.nr_neighbor
-where schemaId = 4 and rsrp<128
+//where schemaId = 4 and rsrp<128
+where  rsrp<128
 group by timestamp_ms/$window as tb, gnb_id
 
index affb1f9..8e1d9c4 100644 (file)
@@ -1,3 +1,6 @@
+DEFINE{ 
+       max_lfta_disorder '1'; max_hfta_disorder '1'; real_time 'true';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 
index fa2207e..f4f7727 100755 (executable)
@@ -98,9 +98,9 @@ else
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default release_cause window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default erab_stats window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_ue window=$WINDOW &
-        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_rollup window=$WINDOW &
-        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_gnb window=$WINDOW &
-        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mod_req_failure_distribution window=$WINDOW &
+    /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_rollup window=$WINDOW &
+    /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default throughput_gnb window=$WINDOW &
+    /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mod_req_failure_distribution window=$WINDOW &
 fi
 
 sleep 1
index 0e5c9eb..6e61502 100644 (file)
@@ -1,5 +1,7 @@
 DEFINE{query_name 'throughput_ue';
+       extra_keys 'TS';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'throughput experienced by UE over a measurement interval.   *Active* throughput is throughput while actively downloading, *average* averages bytes transfered over the measurement interval';
 }
 PARAM{ window uint; }
 select ($window*(TB+1))/1000 as TS, e_RAB_ID, UE_ID, GNB_ID,
@@ -26,7 +28,7 @@ select ($window*(TB+1))/1000 as TS, e_RAB_ID, UE_ID, GNB_ID,
                  , 1) ) as max_throughput
 
 from RATDATAUSAGE.rat_data_usage
-where schemaId=1501
+//where schemaId=1501
 group by e_RAB_ID, id_SgNB_UE_X2AP_ID as UE_ID, gnb_id as GNB_ID, timestamp_ms/$window as TB
 ;
 
@@ -36,7 +38,9 @@ group by e_RAB_ID, id_SgNB_UE_X2AP_ID as UE_ID, gnb_id as GNB_ID, timestamp_ms/$
 
 
 DEFINE{query_name 'throughput_rollup';
+       extra_keys 'TS';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'statistics on the per-UE throughput';
 }
 PARAM{ window uint; }
 select TS, e_RAB_ID, GNB_ID,
@@ -56,6 +60,7 @@ group by TS, e_RAB_ID, GNB_ID
 
 DEFINE{query_name 'throughput_gnb';
        max_lfta_disorder '1'; max_hfta_disorder '1';
+       comment 'throughput experienced by a GNB over a measurement interval.   *Active* throughput is throughput while actively downloading, *average* averages bytes transfered over the measurement interval';
 }
 PARAM{ window uint; }
 select ($window*(TB+1))/1000 as TS, e_RAB_ID, GNB_ID,
@@ -92,7 +97,7 @@ select ($window*(TB+1))/1000 as TS, e_RAB_ID, GNB_ID,
                  , 1) ), .95)
 
 from RATDATAUSAGE.rat_data_usage
-where schemaId=1501
+//where schemaId=1501
 group by e_RAB_ID, gnb_id as GNB_ID, timestamp_ms/$window as TB