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 && \
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
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
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
-GS-Lite based Measurement Campaign (MC) xApp
-
-
-
-
-
+GS-Lite based Measurement Campaign xApp
---
-tag: '2.0.1'
+tag: '3.0.1'
# this is used by the CI jobs to tag the image it builds
fi
+
# ---- finally, start the core MC application -----------------------------
cd ${GSLITE_ROOT:-/mc/gs-lite}/demo/queries
./runall
+
<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>
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
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.
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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// 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
// ???
// 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
// ???
// 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
// ???
// 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
// ???
// 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
// ???
// 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
// ???
// 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
//
// 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
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;
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){
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);
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
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
}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{
}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;
"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
}
}
--- /dev/null
+# ------------------------------------------------
+# 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
+
--- /dev/null
+/* ------------------------------------------------
+ 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);
+ }
+ }
+}
+
--- /dev/null
+#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);
+
+}
--- /dev/null
+#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);
+}
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';}
gnb_id,
1 as event_type
from RECONCOMPLETE.reconfig_success
-where schemaId=101
+//where schemaId=101
;
DEFINE{query_name 'addreq_events';}
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,
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
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
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
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
) / 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
) / 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
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,
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';
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';}
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,
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,
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,
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,
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,
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
;
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
;
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
;
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
--- /dev/null
+# ------------------------------------------------
+#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)
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;}
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
--- /dev/null
+{
+ "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
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,
gnb_id,
1 as event_type
from RECONCOMPLETE.reconfig_success
-where schemaId=101
+// where schemaId=101
;
DEFINE{query_name 'reconfig_status_events';}
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,
// 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,
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
;
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
;
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,
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
;
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
;
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
;
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,
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,
gnb_id,
1 as event_type
from CONRELEASE.dc_release
-where schemaId=201
+// where schemaId=201
;
DEFINE{query_name 'release_req_events';
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,
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
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
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
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
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
;
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
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
;
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
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
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
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
) / 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
) / 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
) / 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
) / 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
) / 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
) / 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
+DEFINE{
+ max_lfta_disorder '1'; max_hfta_disorder '1'; real_time 'true';
+}
PARAM{ window uint;}
// rsrp, rsrq, sinr ranges are 0 .. 127
/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
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,
, 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
;
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,
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,
, 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