Adding additional KPIs, adding required documentation 78/1478/1
authorvlad shkapenyuk <vshkap@research.att.com>
Mon, 11 Nov 2019 20:29:31 +0000 (15:29 -0500)
committervlad shkapenyuk <vshkap@research.att.com>
Mon, 11 Nov 2019 20:35:13 +0000 (15:35 -0500)
Signed-off-by: vlad shkapenyuk <vshkap@research.att.com>
Change-Id: If4cc7a0bd64a4509ab70908f1094bdee77c1f57d

28 files changed:
.gitignore [new file with mode: 0644]
.readthedocs.yaml [new file with mode: 0644]
docs/_static/logo.png [new file with mode: 0644]
docs/conf.py [new file with mode: 0644]
docs/conf.yaml [new file with mode: 0644]
docs/favicon.ico [new file with mode: 0644]
docs/index.rst [new file with mode: 0644]
docs/readme.rst [new file with mode: 0644]
docs/requirements-docs.txt [new file with mode: 0644]
mc-core/Dockerfile
mc-core/mc/cfg/packet_schema.txt
mc-core/mc/cfg/packet_schema.txt.fragment
mc-core/mc/local_datasource/rts_proto.c
mc-core/mc/queries/addn_req_time.gsql
mc-core/mc/queries/addreq_pdf.gsql
mc-core/mc/queries/addreq_stats.gsql
mc-core/mc/queries/admitted_erabs.gsql
mc-core/mc/queries/dc_conn_stats.gsql
mc-core/mc/queries/debug.gsql
mc-core/mc/queries/mod_req_failure.gsql [new file with mode: 0644]
mc-core/mc/queries/output_spec.cfg
mc-core/mc/queries/reconfig_status.gsql
mc-core/mc/queries/release_req_time.gsql
mc-core/mc/queries/rrcx_pdf_cell.gsql
mc-core/mc/queries/rrcx_stats.gsql
mc-core/mc/queries/runall
mc-core/mc/queries/throughput.gsql
tox.ini [new file with mode: 0644]

diff --git a/.gitignore b/.gitignore
new file mode 100644 (file)
index 0000000..71d7636
--- /dev/null
@@ -0,0 +1,2 @@
+.tox
+docs/_build/*
diff --git a/.readthedocs.yaml b/.readthedocs.yaml
new file mode 100644 (file)
index 0000000..959edc2
--- /dev/null
@@ -0,0 +1,36 @@
+#==================================================================================
+##      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.
+##==================================================================================
+
+---
+# .readthedocs.yml
+# Read the Docs configuration file
+# See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
+# Required
+version: 2
+
+formats:
+  - htmlzip
+
+build:
+  image: latest
+
+python:
+  version: 3.7
+  install:
+    - requirements: docs/requirements-docs.txt
+
+sphinx:
+  configuration: docs/conf.py
diff --git a/docs/_static/logo.png b/docs/_static/logo.png
new file mode 100644 (file)
index 0000000..b6a016d
Binary files /dev/null and b/docs/_static/logo.png differ
diff --git a/docs/conf.py b/docs/conf.py
new file mode 100644 (file)
index 0000000..aa2cfa2
--- /dev/null
@@ -0,0 +1,10 @@
+from docs_conf.conf import *
+
+branch = 'latest'
+
+linkcheck_ignore = [
+      'http://localhost',
+]
+
+intersphinx_mapping = {}
+intersphinx_mapping['portal-ric-dashboard'] = ('https://docs.o-ran-sc.org/projects/o-ran-sc-portal-ric-dashboard/en/%s' % branch, None)
diff --git a/docs/conf.yaml b/docs/conf.yaml
new file mode 100644 (file)
index 0000000..c46cce4
--- /dev/null
@@ -0,0 +1,3 @@
+---
+project_cfg: oran
+project: oran
diff --git a/docs/favicon.ico b/docs/favicon.ico
new file mode 100644 (file)
index 0000000..00b0fd0
Binary files /dev/null and b/docs/favicon.ico differ
diff --git a/docs/index.rst b/docs/index.rst
new file mode 100644 (file)
index 0000000..80e0ce5
--- /dev/null
@@ -0,0 +1,16 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.
+.. SPDX-License-Identifier: CC-BY-4.0
+
+
+RIC Measurement Campaign (MC) xApp
+==================================
+
+
+.. toctree::
+   :maxdepth: 1
+   :caption: Documents:
+
+   readme.rst
+
+
+* :ref:`search`
diff --git a/docs/readme.rst b/docs/readme.rst
new file mode 100644 (file)
index 0000000..3b84a97
--- /dev/null
@@ -0,0 +1,469 @@
+.. This work is licensed under a Creative Commons Attribution 4.0 International License.\r
+.. SPDX-License-Identifier: CC-BY-4.0\r
+\r
+\r
+RIC Measurement Campaign (MC) supported KPIs\r
+============================================\r
+\r
+name: throughput_ue\r
+description: throughput experienced by UE over a measurement interval. "Active" throughput is throughput while actively downloading, "average" averages bytes transfered over the measurement interval\r
+- ULLONG TS\r
+- LLONG e_RAB_ID\r
+- LLONG UE_ID\r
+- V_STR GNB_ID\r
+- FLOAT measurementInterval\r
+- LLONG active_throughput\r
+- LLONG average_throughput\r
+- LLONG min_throughput\r
+- LLONG max_throughput\r
+\r
+\r
+name: addreq_success_stats\r
+description: statistics on the time to successfully make a DC connection\r
+\r
+- V_STR GNB_ID\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- FLOAT min_success_time\r
+- FLOAT max_success_time\r
+- FLOAT avg_success_time\r
+- FLOAT pctl_05_success_time\r
+- FLOAT pctl_95_success_time\r
+- FLOAT stddev_success_time\r
+\r
+\r
+name: addreq_pdf_nr_cell\r
+description : histogram of neighboring cell RSRP, aggregated by cell id\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: addreq_pdf_nr_gnb\r
+description : histogram of neighboring cell RSRP, aggregated by GNB, as computed from addition request events.\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: addreq_stats_nr_cell\r
+description : statistics about neighboring cell RSRP aggregated by cell id\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: addreq_stats_nr_gnb\r
+description : statistics about neighboring cell RSRP aggregated by GNB, as computed from addition request events.\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: erab_stats\r
+description: number of admitted bearers and the distribution of their qCI\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT total_erabs\r
+- UINT qCI_1\r
+- UINT qCI_2\r
+- UINT qCI_3\r
+- UINT qCI_4\r
+- UINT qCI_5\r
+- UINT qCI_6\r
+- UINT qCI_7\r
+- UINT qCI_8\r
+- UINT qCI_9\r
+- UINT qCI_other\r
+\r
+\r
+name: mc_connected_cnt\r
+description: Number of dual connected users\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT count_connected_ue\r
+\r
+\r
+name: mc_connection_stats\r
+description : statistics about the length of dual connected sessions\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- FLOAT min_connected_time\r
+- FLOAT max_connected_time\r
+- FLOAT avg_connected_time\r
+- FLOAT pctl_05_connected_time\r
+- FLOAT pctl_95_connected_time\r
+- FLOAT stddev_connected_time\r
+\r
+\r
+name: mc_connects_cnt\r
+description: number of DC connection requests\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT count_ue_connects\r
+\r
+\r
+name: mc_disconnects_cnt\r
+description: number of DC connection releases\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT count_ue_disconnects\r
+\r
+\r
+name: mc_unique_ue_cnt\r
+description: Number of distinct UEs making a DC request or release\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT count_unique_ue\r
+\r
+\r
+name: mod_req_failure_distribution\r
+description: distribution of causes of a modification requet failure\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT cnt\r
+- UINT count_protobuf_unspecified\r
+- UINT count_t310_Expiry\r
+- UINT count_randomAccessProblem\r
+- UINT count_rlc_MaxNumRetx\r
+- UINT count_synchReconfigFailure_SCG\r
+- UINT count_scg_reconfigFailure\r
+- UINT count_srb3_IntegrityFailure\r
+\r
+\r
+name: reconfig_status_success_rate\r
+description: fraction of DC connect requests which are successful\r
+\r
+- V_STR GNB_ID\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT total_reconfiguration_requests\r
+- UINT successful_reconfiguration_requests\r
+- FLOAT success_rate\r
+\r
+\r
+name: reconfig_status_reject_cause\r
+description: distribution of causes for DC rejection\r
+\r
+- V_STR gnb_id\r
+- ULLONG TB\r
+- INT total_reconfig_reject\r
+- UINT count_radio_network\r
+- UINT count_transport\r
+- UINT count_protocol\r
+- UINT count_misc\r
+\r
+\r
+name: mod_status_refuse_cause\r
+description: distribution of causes for a sgnb modification refusal\r
+\r
+- V_STR GNB_ID\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT total_reconfig_refuse\r
+- UINT count_radio_network\r
+- UINT count_transport\r
+- UINT count_protocol\r
+- UINT count_misc\r
+\r
+\r
+name: release_cause\r
+description: distribution of the causes of a DC release\r
+\r
+- V_STR GNB_ID\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- INT total_reconfig_refuse\r
+- UINT count_radio_network\r
+- UINT count_transport\r
+- UINT count_protocol\r
+- UINT count_misc\r
+\r
+\r
+name: release_req_success_stats\r
+description: statistics on the time to delease a DC connection\r
+\r
+- V_STR GNB_ID\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- FLOAT min_success_time\r
+- FLOAT max_success_time\r
+- FLOAT avg_success_time\r
+- FLOAT pctl_05_success_time\r
+- FLOAT pctl_95_success_time\r
+- FLOAT stddev_success_time\r
+\r
+\r
+name: rrcx_pdf_neigh_cell_csi\r
+description: distribution of the beam csi rsrp of neighboring cells, aggregated by cell id, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_neigh_gnb_csi\r
+description: distribution of the beam csi rsrp of neighboring cells, aggregated by gNB, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_neigh_cell_ssb\r
+description: distribution of the beam ssb rsrp of neighboring cells, aggregated by cell id, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_neigh_gnb_ssb\r
+description: distribution of the beam ssb rsrp of neighboring cells, aggregated by gNB, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_serv_cell\r
+description: distribution of the  ssb rsrp of serving cell aggregated by cell id, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_neighbor_cell\r
+description: distribution of the  ssb rsrp of neighbor cells aggregated by cell id, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_serv_gnb\r
+description: distribution of the  ssb rsrp of serving cell aggregated by gnb, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_pdf_neighbor_gnb\r
+description: distribution of the  ssb rsrp of serving cell aggregated by cell id, computed from rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- UINT rsrp_vbad\r
+- UINT rsrp_bad\r
+- UINT rsrp_medium\r
+- UINT rsrp_good\r
+- UINT rsrp_vgood\r
+\r
+\r
+name: rrcx_stats_neigh_cell\r
+description: statistics on ssb RSRP on the beams of nrighboring cells, aggregated by cell ID, computed using rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: rrcx_stats_neigh_gnb\r
+description: statistics on ssb RSRP on the beams of nrighboring cells, aggregated by gNB, computed using rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: rrcx_stats_serv_cell\r
+description: statistics on the ssb rsrp of the serving cell, aggregated by cell id, computed using rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: rrcx_stats_neighbor_cell\r
+description: statistics on the ssb rsrp of the neighbor cells, aggregated by cell id, computed using rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- UINT CELL_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: rrcx_stats_serv_gnb\r
+description: statistics on the ssb srp of the serving cell, aggregated by gNB, computed using rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: rrcx_stats_neighbor_gnb\r
+description: statistics on the ssb rsrp of the neighbor cells, aggregated by gNB, computed using rrc transfer\r
+\r
+- ULLONG TS\r
+- FLOAT measurementInterval\r
+- V_STR GNB_ID\r
+- INT cnt\r
+- INT min_rsrp\r
+- INT pctl_05_rsrp\r
+- INT median_rsrp\r
+- INT pctl_95_rsrp\r
+- FLOAT stddev_rsrp\r
+- INT max_rsrp\r
+\r
+\r
+name: throughput_rollup\r
+description: statistics on the per-UE throughput\r
+\r
+- ULLONG TS\r
+- LLONG e_RAB_ID\r
+- V_STR GNB_ID\r
+- FLOAT measurementInterval\r
+- INT count_ues\r
+- UINT average_throughput_percentile_05\r
+- UINT average_throughput_percentile_50\r
+- FLOAT average_average_throughput\r
+- UINT average_throughput_percentile_95\r
+- UINT active_throughput_percentile_05\r
+- UINT active_throughput_percentile_50\r
+- FLOAT average_active_throughput\r
+- UINT active_throughput_percentile_95\r
+\r
+\r
+name: throughput_gnb\r
+description: throughput experienced by a GNB over a measurement interval. "Active" throughput is throughput while actively downloading, "average" averages bytes transfered over the measurement interval\r
+\r
+- ULLONG TS\r
+- LLONG e_RAB_ID\r
+- V_STR GNB_ID\r
+- FLOAT measurementInterval\r
+- LLONG active_throughput\r
+- LLONG average_throughput\r
+- LLONG min_throughput\r
+- LLONG max_throughput\r
+- UINT extr_quant_hfta0_fcn_quant_udaf_hfta0\r
+- UINT extr_quant_hfta0_fcn_quant_udaf_hfta01\r
+\r
+\r
+\r
diff --git a/docs/requirements-docs.txt b/docs/requirements-docs.txt
new file mode 100644 (file)
index 0000000..09a0c1c
--- /dev/null
@@ -0,0 +1,5 @@
+sphinx
+sphinx-rtd-theme
+sphinxcontrib-httpdomain
+recommonmark
+lfdocs-conf
index 8cf8916..0c5c14a 100644 (file)
@@ -46,7 +46,7 @@ RUN make install
 RUN ldconfig
 RUN pip install protobuf
 WORKDIR ${STAGE_DIR}
-RUN git clone 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
index 36ddd71..f3cde05 100644 (file)
@@ -246,7 +246,7 @@ PROTOCOL serv_nr_cell (base){
        uint sinr get_serv_nr_cell__sinr;
 }
 
-// Cell-wide CSI-RS measurement tuple and SSB measurement (from neighbor cells)
+// Cell-wide  SSB measurement (from neighbor cells)
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 4, interface RRCXFER
 PROTOCOL nr_neighbor (base){
@@ -857,6 +857,8 @@ PROTOCOL sgnb_mod_req (base){
        llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req__id_MeNB_UE_X2AP_ID (required);
 //   default=-1
        llong cause_transport get_sgnb_mod_req__cause_transport (required);
+//   default=-1
+       llong failureType get_sgnb_mod_req__failureType (required);
 //   default=-1
        llong cause_radio_network get_sgnb_mod_req__cause_radio_network (required);
 // UE_ID assigned by gNB for the UE over the X2.  Is mandatory
@@ -865,6 +867,64 @@ PROTOCOL sgnb_mod_req (base){
        llong cause_misc get_sgnb_mod_req__cause_misc (required);
 }
 
+// ??? 
+// Defined in sgnb_mod_req_ack.json on sgnb_modification_request_acknowledge.proto
+// schemaId = 1701, interface SGNBMODREQACK
+PROTOCOL sgnb_mod_req_ack (base){
+// timestamp in milliseconds
+       ullong timestamp_ms get_sgnb_mod_req_ack__timestamp_ms (required,increasing);
+// gNB ID
+       string gnb_id get_sgnb_mod_req_ack__gnb_id (required);
+// UE_ID assigned by eNB for the UE over an X2. Is mandatory
+       llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_MeNB_UE_X2AP_ID (required);
+// UE_ID assigned by gNB for the UE over the X2.  Is mandatory
+       llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_SgNB_UE_X2AP_ID (required);
+}
+
+// ??? 
+// Defined in sgnb_mod_req_reject.json on sgnb_modification_request_reject.proto
+// schemaId = 1801, interface SGNBMODREQREJECT
+PROTOCOL sgnb_mod_req_reject (base){
+// timestamp in milliseconds
+       ullong timestamp_ms get_sgnb_mod_req_reject__timestamp_ms (required,increasing);
+// gNB ID
+       string gnb_id get_sgnb_mod_req_reject__gnb_id (required);
+//   default=-1
+       llong cause_protocol get_sgnb_mod_req_reject__cause_protocol (required);
+// UE_ID assigned by eNB for the UE over an X2. Is mandatory
+       llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_MeNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_transport get_sgnb_mod_req_reject__cause_transport (required);
+//   default=-1
+       llong cause_radio_network get_sgnb_mod_req_reject__cause_radio_network (required);
+// UE_ID assigned by gNB for the UE over the X2.  Is mandatory
+       llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_SgNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_misc get_sgnb_mod_req_reject__cause_misc (required);
+}
+
+// ??? 
+// Defined in sgnb_mod_rqd.json on sgnb_modification_required.proto
+// schemaId = 1901, interface SGNBMODREQUIRED
+PROTOCOL sgnb_mod_required (base){
+// timestamp in milliseconds
+       ullong timestamp_ms get_sgnb_mod_required__timestamp_ms (required,increasing);
+// gNB ID
+       string gnb_id get_sgnb_mod_required__gnb_id (required);
+//   default=-1
+       llong cause_protocol get_sgnb_mod_required__cause_protocol (required);
+// UE_ID assigned by eNB for the UE over an X2. Is mandatory
+       llong id_MeNB_UE_X2AP_ID get_sgnb_mod_required__id_MeNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_transport get_sgnb_mod_required__cause_transport (required);
+//   default=-1
+       llong cause_radio_network get_sgnb_mod_required__cause_radio_network (required);
+// UE_ID assigned by gNB for the UE over the X2.  Is mandatory
+       llong id_SgNB_UE_X2AP_ID get_sgnb_mod_required__id_SgNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_misc get_sgnb_mod_required__cause_misc (required);
+}
+
 // ??? 
 // Defined in sgnb_modification_refuse.json on sgnb_modification_refuse.proto
 // schemaId = 1401, interface SGNBMODREFUSE
index 21eb397..c89f40a 100644 (file)
@@ -240,7 +240,7 @@ PROTOCOL serv_nr_cell (base){
        uint sinr get_serv_nr_cell__sinr;
 }
 
-// Cell-wide CSI-RS measurement tuple and SSB measurement (from neighbor cells)
+// Cell-wide  SSB measurement (from neighbor cells)
 // Defined in rrc_metrics.json on rrctransfer.proto
 // schemaId = 4, interface RRCXFER
 PROTOCOL nr_neighbor (base){
@@ -851,6 +851,8 @@ PROTOCOL sgnb_mod_req (base){
        llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req__id_MeNB_UE_X2AP_ID (required);
 //   default=-1
        llong cause_transport get_sgnb_mod_req__cause_transport (required);
+//   default=-1
+       llong failureType get_sgnb_mod_req__failureType (required);
 //   default=-1
        llong cause_radio_network get_sgnb_mod_req__cause_radio_network (required);
 // UE_ID assigned by gNB for the UE over the X2.  Is mandatory
@@ -859,6 +861,64 @@ PROTOCOL sgnb_mod_req (base){
        llong cause_misc get_sgnb_mod_req__cause_misc (required);
 }
 
+// ??? 
+// Defined in sgnb_mod_req_ack.json on sgnb_modification_request_acknowledge.proto
+// schemaId = 1701, interface SGNBMODREQACK
+PROTOCOL sgnb_mod_req_ack (base){
+// timestamp in milliseconds
+       ullong timestamp_ms get_sgnb_mod_req_ack__timestamp_ms (required,increasing);
+// gNB ID
+       string gnb_id get_sgnb_mod_req_ack__gnb_id (required);
+// UE_ID assigned by eNB for the UE over an X2. Is mandatory
+       llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_MeNB_UE_X2AP_ID (required);
+// UE_ID assigned by gNB for the UE over the X2.  Is mandatory
+       llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_ack__id_SgNB_UE_X2AP_ID (required);
+}
+
+// ??? 
+// Defined in sgnb_mod_req_reject.json on sgnb_modification_request_reject.proto
+// schemaId = 1801, interface SGNBMODREQREJECT
+PROTOCOL sgnb_mod_req_reject (base){
+// timestamp in milliseconds
+       ullong timestamp_ms get_sgnb_mod_req_reject__timestamp_ms (required,increasing);
+// gNB ID
+       string gnb_id get_sgnb_mod_req_reject__gnb_id (required);
+//   default=-1
+       llong cause_protocol get_sgnb_mod_req_reject__cause_protocol (required);
+// UE_ID assigned by eNB for the UE over an X2. Is mandatory
+       llong id_MeNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_MeNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_transport get_sgnb_mod_req_reject__cause_transport (required);
+//   default=-1
+       llong cause_radio_network get_sgnb_mod_req_reject__cause_radio_network (required);
+// UE_ID assigned by gNB for the UE over the X2.  Is mandatory
+       llong id_SgNB_UE_X2AP_ID get_sgnb_mod_req_reject__id_SgNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_misc get_sgnb_mod_req_reject__cause_misc (required);
+}
+
+// ??? 
+// Defined in sgnb_mod_rqd.json on sgnb_modification_required.proto
+// schemaId = 1901, interface SGNBMODREQUIRED
+PROTOCOL sgnb_mod_required (base){
+// timestamp in milliseconds
+       ullong timestamp_ms get_sgnb_mod_required__timestamp_ms (required,increasing);
+// gNB ID
+       string gnb_id get_sgnb_mod_required__gnb_id (required);
+//   default=-1
+       llong cause_protocol get_sgnb_mod_required__cause_protocol (required);
+// UE_ID assigned by eNB for the UE over an X2. Is mandatory
+       llong id_MeNB_UE_X2AP_ID get_sgnb_mod_required__id_MeNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_transport get_sgnb_mod_required__cause_transport (required);
+//   default=-1
+       llong cause_radio_network get_sgnb_mod_required__cause_radio_network (required);
+// UE_ID assigned by gNB for the UE over the X2.  Is mandatory
+       llong id_SgNB_UE_X2AP_ID get_sgnb_mod_required__id_SgNB_UE_X2AP_ID (required);
+//   default=-1
+       llong cause_misc get_sgnb_mod_required__cause_misc (required);
+}
+
 // ??? 
 // Defined in sgnb_modification_refuse.json on sgnb_modification_refuse.proto
 // schemaId = 1401, interface SGNBMODREFUSE
index e39381a..7f763b7 100644 (file)
@@ -875,8 +875,8 @@ gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
                                                                                        if(node_0_10->measresult){
                                                                                                node_0_12 = node_0_11->cellresults;
                                                                                                if(node_0_11->cellresults){
-                                                                                                       node_0_13 = node_0_12->resultscsi_rs_cell;
-                                                                                                       if(node_0_12->resultscsi_rs_cell){
+                                                                                                       node_0_13 = node_0_12->resultsssb_cell;
+                                                                                                       if(node_0_12->resultsssb_cell){
                                                                                                                if(node_0_13->rsrq){
                                                                                                                        serv_nr_cell->rsrq = node_0_13->rsrq->value;
                                                                                                                        serv_nr_cell->rsrq_exists = 1;
@@ -951,8 +951,8 @@ gs_uint32_t process_buffer_RRCXFER(gs_uint8_t * buffer, gs_uint32_t buflen){
                                                                                if(node_1_9->measresult){
                                                                                        node_1_11 = node_1_10->cellresults;
                                                                                        if(node_1_10->cellresults){
-                                                                                               node_1_12 = node_1_11->resultscsi_rs_cell;
-                                                                                               if(node_1_11->resultscsi_rs_cell){
+                                                                                               node_1_12 = node_1_11->resultsssb_cell;
+                                                                                               if(node_1_11->resultsssb_cell){
                                                                                                        if(node_1_12->rsrq){
                                                                                                                nr_neighbor->rsrq = node_1_12->rsrq->value;
                                                                                                                nr_neighbor->rsrq_exists = 1;
index a36420d..764642d 100644 (file)
@@ -29,7 +29,9 @@ from add_req_start p1, add_req_success p2
 ;
 
 
-DEFINE{query_name 'addreq_success_time';}
+DEFINE{query_name 'addreq_success_time';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select eUE_ID, gnb_id, TB, 
        UINT(max(end_time)-max(start_time)) as success_time
@@ -38,7 +40,9 @@ group by eUE_ID, gnb_id, timestamp / $window as TB
 having max(end_time)>0 and max(start_time)>0 and max(end_time)>max(start_time)
 ;
 
-DEFINE{query_name 'addreq_success_stats';}
+DEFINE{query_name 'addreq_success_stats';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select gnb_id as GNB_ID,
        ($window*(TB+1))/1000 as TS, 
index b976656..a06d137 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{ query_name 'addreq_pdf_nr_cell'; }
+DEFINE{ query_name 'addreq_pdf_nr_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -16,7 +18,9 @@ where schemaId = 410
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'addreq_pdf_nr_gnb'; }
+DEFINE{ query_name 'addreq_pdf_nr_gnb'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
index 966cdb3..84bfd8e 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{ query_name 'addreq_stats_nr_cell'; }
+DEFINE{ query_name 'addreq_stats_nr_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     to convert rsrp to dbm, subtract 157
@@ -20,7 +22,9 @@ where schemaId = 410
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'addreq_stats_nr_gnb'; }
+DEFINE{ query_name 'addreq_stats_nr_gnb'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     to convert rsrp to dbm, subtract 157
index 4ce30f2..1e15232 100644 (file)
@@ -3,7 +3,9 @@
 // Compromise between ensuring that most add_req_ack-recon_complete pairs
 // are caught while avoiding duplicates due to short sessions
 //     NB: $window should be a multiple of 10.
-DEFINE{query_name 'erab_stats_join';}
+DEFINE{query_name 'erab_stats_join';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select e.timestamp_ms/10000 as TB10, e.id_SgNB_UE_X2AP_ID, e.e_RAB_ID, e.qCI
 INNER_JOIN from SGNB_ADDITION_REQ_ACK.eRABs_acked_for_admit_for_ue e,
@@ -13,7 +15,9 @@ 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';}
+DEFINE{query_name 'erab_stats';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select (TB*$window)/1000 as TS, 
        $window/1000.0 as measurementInterval,
index 3090fb5..1551869 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{query_name 'dc_connect';}
+DEFINE{query_name 'dc_connect';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select timestamp_ms as timestamp,
        UINT(id_MeNB_UE_X2AP_ID) as eUE_ID,
@@ -8,7 +10,9 @@ from RECONCOMPLETE.reconfig_success
 where schemaId=101
 ;
 
-DEFINE{query_name 'dc_terminate';}
+DEFINE{query_name 'dc_terminate';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select timestamp_ms as timestamp,
        UINT(id_Old_eNB_UE_X2AP_ID) as eUE_ID,
@@ -25,7 +29,9 @@ from dc_connect p1, dc_terminate p2
 ;
 
 
-DEFINE{ query_name 'mc_connected_ues'; }
+DEFINE{ query_name 'mc_connected_ues'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT TB, UE_ID,
        ((TB+1)*$window-LAST(timestamp))/1000.0 as connected_time
@@ -35,7 +41,9 @@ HAVING LAST(event_type) = 1
 CLOSING_WHEN LAST(event_type) = 0
 ;
 
-DEFINE{ query_name 'mc_connected_cnt'; }
+DEFINE{ query_name 'mc_connected_cnt'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS, 
                 $window/1000.0 as measurementInterval, // standard_name
@@ -44,7 +52,9 @@ FROM mc_connected_ues
 GROUP BY TB
 ;
 
-DEFINE{ query_name 'mc_disconnected_ues'; }
+DEFINE{ query_name 'mc_disconnected_ues'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT TB_1000, UE_ID, 
        UINT((LAST(timestamp) - FIRST(timestamp))) as connected_time
@@ -55,7 +65,9 @@ CLOSING_WHEN LAST(event_type) = 0
 ;
 
 
-DEFINE{ query_name 'mc_connection_stats'; }
+DEFINE{ query_name 'mc_connection_stats'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS, 
         $window/1000.0 as measurementInterval, // standard_name
@@ -72,7 +84,9 @@ GROUP BY (TB_1000 * 1000) / $window as TB
 ;
 
 
-DEFINE{ query_name 'mc_connects_cnt'; }
+DEFINE{ query_name 'mc_connects_cnt'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS,
         $window/1000.0 as measurementInterval, // standard_name
@@ -82,7 +96,9 @@ WHERE event_type = 1
 GROUP BY timestamp / $window as TB
 ;
 
-DEFINE{ query_name 'mc_disconnects_cnt'; }
+DEFINE{ query_name 'mc_disconnects_cnt'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT ($window*(TB+1))/1000 as TS, 
          $window/1000.0 as measurementInterval, // standard_name
@@ -92,14 +108,18 @@ WHERE event_type = 0
 GROUP BY timestamp / $window as TB
 ;
 
-DEFINE{ query_name 'mc_unique_ues'; }
+DEFINE{ query_name 'mc_unique_ues'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 SELECT TB, UE_ID
 FROM dc_events
 GROUP BY timestamp / $window as TB, gUE_ID as UE_ID
 ;
 
-DEFINE{ query_name 'mc_unique_ue_cnt'; }
+DEFINE{ query_name 'mc_unique_ue_cnt'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; } 
 SELECT ($window*(TB+1))/1000 as TS, 
          $window/1000.0 as measurementInterval, // standard_name
index 5d92fb1..69661b6 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{ query_name 'reconfig_all_debug'; }
+DEFINE{ query_name 'reconfig_all_debug'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select 'reconfig_all_debug' as name, 
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
@@ -8,7 +10,9 @@ where schemaId=103
 group by timestamp_ms / $window as TB
 ;
 
-DEFINE{ query_name 'reconfig_success_debug'; }
+DEFINE{ query_name 'reconfig_success_debug'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select 'reconfig_success_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
@@ -18,7 +22,9 @@ where schemaId=101
 group by timestamp_ms / $window as TB
 ;
 
-DEFINE{ query_name 'reconfig_reject_debug'; }
+DEFINE{ query_name 'reconfig_reject_debug'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select 'reconfig_reject_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
@@ -28,7 +34,9 @@ where schemaId=102
 group by timestamp_ms / $window as TB
 ;
 
-DEFINE{ query_name 'dc_release_debug'; }
+DEFINE{ query_name 'dc_release_debug'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select 'dc_release_debug' as name,
        count(*) as cnt, ($window*(TB+1))/1000 as TS, 
diff --git a/mc-core/mc/queries/mod_req_failure.gsql b/mc-core/mc/queries/mod_req_failure.gsql
new file mode 100644 (file)
index 0000000..96a274e
--- /dev/null
@@ -0,0 +1,19 @@
+DEFINE{ query_name 'mod_req_failure_distribution'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
+PARAM{ window uint;}
+
+select ($window*(tb+1))/1000 as TS,
+       $window/1000.0 as measurementInterval,
+       count(*) as cnt,
+       sum(EQ(UINT(failureType),0)) as count_protobuf_unspecified,
+       sum(EQ(UINT(failureType),1)) as count_t310_Expiry,
+       sum(EQ(UINT(failureType),2)) as count_randomAccessProblem,
+       sum(EQ(UINT(failureType),3)) as count_rlc_MaxNumRetx,
+       sum(EQ(UINT(failureType),4)) as count_synchReconfigFailure_SCG,
+       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
+group by timestamp_ms/$window as tb
+
index 6a2e303..b28ade5 100644 (file)
@@ -8,10 +8,14 @@ rrcx_pdf_neigh_cell_ssb,stream,,,,,
 rrcx_pdf_neigh_gnb_ssb,stream,,,,,
 rrcx_pdf_serv_cell,stream,,,,,
 rrcx_pdf_serv_gnb,stream,,,,,
+rrcx_pdf_neighbor_cell,stream,,,,,
+rrcx_pdf_neighbor_gnb,stream,,,,,
 rrcx_stats_neigh_cell,stream,,,,,
 rrcx_stats_neigh_gnb,stream,,,,,
 rrcx_stats_serv_cell,stream,,,,,
 rrcx_stats_serv_gnb,stream,,,,,
+rrcx_stats_neighbor_cell,stream,,,,,
+rrcx_stats_neighbor_gnb,stream,,,,,
 mc_connected_cnt,stream,,,,,
 mc_connection_stats,stream,,,,,
 mc_connects_cnt,stream,,,,,
@@ -31,3 +35,4 @@ dc_release_debug,stream,,,,,
 throughput_ue,stream,,,,,
 throughput_rollup,stream,,,,,
 throughput_gnb,stream,,,,,
+mod_req_failure_distribution,stream,,,,,
index 99cfd78..d7ff5c1 100644 (file)
@@ -29,7 +29,9 @@ from reconfig_status_start p1, reconfig_status_success p2
 ;
 
 
-DEFINE{query_name 'reconfig_status_merge';}
+DEFINE{query_name 'reconfig_status_merge';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select eUE_ID, gnb_id, TB,
        max(start_time) as max_start_time,
@@ -38,7 +40,9 @@ from reconfig_status_events
 group by eUE_ID, gnb_id, timestamp / $window as TB
 ;
 
-DEFINE{query_name 'reconfig_status_success_rate';}
+DEFINE{query_name 'reconfig_status_success_rate';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select gnb_id as GNB_ID,
        ($window*(TB+1))/1000 as TS, 
@@ -52,7 +56,9 @@ group by gnb_id, TB
 
 // ----------------------------------------------
 //     Merge in reconfig_reject causes and aggregate with this.
-DEFINE{query_name 'reconfig_status_reject_cause';}
+DEFINE{query_name 'reconfig_status_reject_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id, TB,
        count(*) as total_reconfig_reject,
@@ -65,7 +71,9 @@ where schemaId=701
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
-DEFINE{query_name 'reconfig_complete_reject_cause';}
+DEFINE{query_name 'reconfig_complete_reject_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id, TB,
        count(*) as total_reconfig_reject,
@@ -84,7 +92,9 @@ merge p1.TB : p2.TB
 from reconfig_status_reject_cause p1, reconfig_complete_reject_cause p2
 ;
 
-DEFINE{query_name 'reconfig_reject_cause';}
+DEFINE{query_name 'reconfig_reject_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, 
             $window/1000.0 as measurementInterval,
@@ -99,7 +109,9 @@ group by gnb_id, TB
 
 // ----------------------------------------------
 
-DEFINE{query_name 'mod_status_refuse_cause';}
+DEFINE{query_name 'mod_status_refuse_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, 
             $window/1000.0 as measurementInterval,
@@ -114,7 +126,9 @@ group by gnb_id, timestamp_ms / $window as TB
 ;
 
 // ----------------------------------------------
-DEFINE{query_name 'release_rqd_cause';}
+DEFINE{query_name 'release_rqd_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id, TB,
        count(*) as total_reconfig_refuse,
@@ -127,7 +141,9 @@ where schemaId=1001
 group by gnb_id, timestamp_ms / $window as TB
 ;
 
-DEFINE{query_name 'release_request_cause';}
+DEFINE{query_name 'release_request_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id, TB,
        count(*) as total_reconfig_refuse,
@@ -146,7 +162,9 @@ merge p1.TB : p2.TB
 from release_rqd_cause p1, release_request_cause p2
 ;
 
-DEFINE{query_name 'release_cause';}
+DEFINE{query_name 'release_cause';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 Select gnb_id as GNB_ID, ($window*(TB+1))/1000 as TS, 
             $window/1000.0 as measurementInterval,
index 91e4b53..9b4c64d 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{query_name 'release_req_start';}
+DEFINE{query_name 'release_req_start';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select timestamp_ms as timestamp,
        non_temporal(timestamp_ms) as start_time,
@@ -11,7 +13,9 @@ from RELREQ.release_req
 where schemaId=801
 ;
 
-DEFINE{query_name 'release_req_success';}
+DEFINE{query_name 'release_req_success';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select timestamp_ms as timestamp,
        0ULL as start_time,
@@ -24,14 +28,18 @@ from CONRELEASE.dc_release
 where schemaId=201
 ;
 
-DEFINE{query_name 'release_req_events';}
+DEFINE{query_name 'release_req_events';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 merge p1.timestamp : p2.timestamp
 from release_req_start p1, release_req_success p2
 ;
 
 
-DEFINE{query_name 'release_req_success_time';}
+DEFINE{query_name 'release_req_success_time';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select gUE_ID, gnb_id, TB,
        UINT(max(end_time)-max(start_time)) as success_time
@@ -40,7 +48,9 @@ group by gUE_ID, gnb_id, timestamp / $window as TB
 having max(end_time)>0 and max(start_time)>0 and max(end_time)>max(start_time)
 ;
 
-DEFINE{query_name 'release_req_success_stats';}
+DEFINE{query_name 'release_req_success_stats';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select gnb_id as GNB_ID,
        ($window*(TB+1))/1000 as TS, 
index 68171f7..4ecb20b 100644 (file)
@@ -1,5 +1,7 @@
 
-DEFINE{ query_name 'rrcx_pdf_neigh_cell_csi'; }
+DEFINE{ query_name 'rrcx_pdf_neigh_cell_csi'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -17,7 +19,9 @@ where schemaId = 5
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'rrcx_pdf_neigh_gnb_csi'; }
+DEFINE{ query_name 'rrcx_pdf_neigh_gnb_csi'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -36,7 +40,9 @@ group by timestamp_ms/$window as tb, gnb_id
 ;
 
 
-DEFINE{ query_name 'rrcx_pdf_neigh_cell_ssb'; }
+DEFINE{ query_name 'rrcx_pdf_neigh_cell_ssb'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -54,7 +60,9 @@ where schemaId = 5
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'rrcx_pdf_neigh_gnb_ssb'; }
+DEFINE{ query_name 'rrcx_pdf_neigh_gnb_ssb'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -74,7 +82,9 @@ group by timestamp_ms/$window as tb, gnb_id
 
 
 
-DEFINE{ query_name 'rrcx_pdf_serv_cell'; }
+DEFINE{ query_name 'rrcx_pdf_serv_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -92,7 +102,30 @@ where schemaId = 1
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'rrcx_pdf_serv_gnb'; }
+DEFINE{ query_name 'rrcx_pdf_neighbor_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
+PARAM{ window uint;}
+//     rsrp, rsrq, sinr ranges are 0 .. 127
+//     for now divide into 5 bins.
+
+select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
+       physCellId as CELL_ID,
+       count(*) as cnt,
+       sum(GEQ(rsrp, 0)*LEQ(rsrp,21)) as rsrp_vbad,
+       sum(GEQ(rsrp,22)*LEQ(rsrp,36)) as rsrp_bad,
+       sum(GEQ(rsrp,37)*LEQ(rsrp,51)) as rsrp_medium,
+       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
+group by timestamp_ms/$window as tb, physCellId
+;
+
+
+DEFINE{ query_name 'rrcx_pdf_serv_gnb'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     for now divide into 5 bins.
@@ -108,4 +141,25 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
 from RRCXFER.serv_nr_cell
 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';
+}
+PARAM{ window uint;}
+//     rsrp, rsrq, sinr ranges are 0 .. 127
+//     for now divide into 5 bins.
+
+select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
+       gnb_id as GNB_ID,
+       count(*) as cnt,
+       sum(GEQ(rsrp, 0)*LEQ(rsrp,21)) as rsrp_vbad,
+       sum(GEQ(rsrp,22)*LEQ(rsrp,36)) as rsrp_bad,
+       sum(GEQ(rsrp,37)*LEQ(rsrp,51)) as rsrp_medium,
+       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
+group by timestamp_ms/$window as tb, gnb_id
+
 
index 5629680..edb7215 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{ query_name 'rrcx_stats_neigh_cell'; }
+DEFINE{ query_name 'rrcx_stats_neigh_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     to convert rsrp to dbm, subtract 157
@@ -15,12 +17,14 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
                sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*)
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
-from RRCXFER.neighbor_beam_csi
-where schemaId = 5 and rsrp<128
+from RRCXFER.neighbor_beam_ssb
+where schemaId = 6 and rsrp<128
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'rrcx_stats_neigh_gnb'; }
+DEFINE{ query_name 'rrcx_stats_neigh_gnb'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     to convert rsrp to dbm, subtract 157
@@ -37,13 +41,15 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
                sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*)
        ) / count(*) as stddev_rsrp,
        INT(max(rsrp))-INT(157) as max_rsrp
-from RRCXFER.neighbor_beam_csi
-where schemaId = 5 and rsrp<128
+from RRCXFER.neighbor_beam_ssb
+where schemaId = 6 and rsrp<128
 group by timestamp_ms/$window as tb, gnb_id
 ;
 
 
-DEFINE{ query_name 'rrcx_stats_serv_cell'; }
+DEFINE{ query_name 'rrcx_stats_serv_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     to convert rsrp to dbm, subtract 157
@@ -65,7 +71,34 @@ where schemaId = 1 and rsrp<128
 group by timestamp_ms/$window as tb, physCellId
 ;
 
-DEFINE{ query_name 'rrcx_stats_serv_gnb'; }
+DEFINE{ query_name 'rrcx_stats_neighbor_cell'; 
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
+PARAM{ window uint;}
+//     rsrp, rsrq, sinr ranges are 0 .. 127
+//     to convert rsrp to dbm, subtract 157
+
+select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
+       physCellId as CELL_ID,
+       count(*) as cnt,
+       INT(min(rsrp))-INT(157) as min_rsrp,
+       INT(quantile_of(rsrp, .05)) - INT(157) as pctl_05_rsrp,
+       INT(median_of(rsrp)) - INT(157) as median_rsrp,
+       INT(quantile_of(rsrp, .95)) - INT(157) as pctl_95_rsrp,
+       sqrt(
+               sum( (FLOAT(rsrp)-157)*(FLOAT(rsrp)-157))  -
+               sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*)
+       ) / count(*) as stddev_rsrp,
+       INT(max(rsrp))-INT(157) as max_rsrp
+from RRCXFER.nr_neighbor
+where schemaId = 4 and 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';
+}
 PARAM{ window uint;}
 //     rsrp, rsrq, sinr ranges are 0 .. 127
 //     to convert rsrp to dbm, subtract 157
@@ -85,4 +118,28 @@ select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
 from RRCXFER.serv_nr_cell
 where schemaId = 1 and 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';
+}
+PARAM{ window uint;}
+//     rsrp, rsrq, sinr ranges are 0 .. 127
+//     to convert rsrp to dbm, subtract 157
+
+select ($window*(tb+1))/1000 as TS, $window/1000.0 as measurementInterval,
+       gnb_id as GNB_ID,
+       count(*) as cnt,
+       INT(min(rsrp))-INT(157) as min_rsrp,
+       INT(quantile_of(rsrp, .05)) - INT(157) as pctl_05_rsrp,
+       INT(median_of(rsrp)) - INT(157) as median_rsrp,
+       INT(quantile_of(rsrp, .95)) - INT(157) as pctl_95_rsrp,
+       sqrt(
+               sum( (FLOAT(rsrp)-157)*(FLOAT(rsrp)-157))  -
+               sum( (FLOAT(rsrp)-157) )*sum( (FLOAT(rsrp)-157) )/count(*)
+       ) / count(*) as stddev_rsrp,
+       INT(max(rsrp))-INT(157) as max_rsrp
+from RRCXFER.nr_neighbor
+where schemaId = 4 and rsrp<128
+group by timestamp_ms/$window as tb, gnb_id
 
index c7a5f95..fa2207e 100755 (executable)
@@ -77,10 +77,14 @@ else
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_neigh_gnb_ssb window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_serv_cell window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_serv_gnb window=$WINDOW &
+       /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_neighbor_cell window=$WINDOW &
+       /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_pdf_neighbor_gnb window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neigh_cell window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neigh_gnb window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_serv_cell window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_serv_gnb window=$WINDOW &
+       /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neighbor_cell window=$WINDOW &
+       /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default rrcx_stats_neighbor_gnb window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mc_connected_cnt window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mc_connection_stats window=$WINDOW &
        /mc/gs-lite/bin/gsprintconsole_ves -C $VES_IP:$VES_PORT -U /vescollector/eventListener/v7 -V 7 `cat gshub.log` default mc_connects_cnt window=$WINDOW &
@@ -96,6 +100,7 @@ else
        /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 &
 fi
 
 sleep 1
index 246d3ca..0e5c9eb 100644 (file)
@@ -1,4 +1,6 @@
-DEFINE{query_name 'throughput_ue';}
+DEFINE{query_name 'throughput_ue';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select ($window*(TB+1))/1000 as TS, e_RAB_ID, UE_ID, GNB_ID,
        $window/1000.0 as measurementInterval,
@@ -33,7 +35,9 @@ group by e_RAB_ID, id_SgNB_UE_X2AP_ID as UE_ID, gnb_id as GNB_ID, timestamp_ms/$
 // (((startTimeStamp & HEX'FF000000') >> 24) | ((startTimeStamp & HEX'00FF0000') >> 8) | ((startTimeStamp & HEX'0000FF00') << 8) | ((startTimeStamp & HEX'000000FF') << 24))
 
 
-DEFINE{query_name 'throughput_rollup';}
+DEFINE{query_name 'throughput_rollup';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select TS, e_RAB_ID, GNB_ID,
        $window/1000.0 as measurementInterval,
@@ -50,7 +54,9 @@ from throughput_ue
 group by TS, e_RAB_ID, GNB_ID
 ;
 
-DEFINE{query_name 'throughput_gnb';}
+DEFINE{query_name 'throughput_gnb';
+       max_lfta_disorder '1'; max_hfta_disorder '1';
+}
 PARAM{ window uint; }
 select ($window*(TB+1))/1000 as TS, e_RAB_ID, GNB_ID,
        $window/1000.0 as measurementInterval,
diff --git a/tox.ini b/tox.ini
new file mode 100644 (file)
index 0000000..1eb2928
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,48 @@
+#==================================================================================
+#    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.
+#==================================================================================
+
+[tox]
+minversion = 2.0
+envlist =
+    docs,
+    docs-linkcheck,
+
+skipsdist = true
+
+[testenv:docs]
+basepython = python3
+deps = 
+    sphinx
+    sphinx-rtd-theme
+    sphinxcontrib-httpdomain
+    recommonmark
+    lfdocs-conf
+    
+commands =
+    sphinx-build -W -b html -n -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/html
+
+    echo "Generated docs available in {toxinidir}/docs/_build/html"
+
+whitelist_externals = echo
+
+[testenv:docs-linkcheck]
+basepython = python3
+deps = sphinx
+       sphinx-rtd-theme
+       sphinxcontrib-httpdomain
+       recommonmark
+       lfdocs-conf
+commands = sphinx-build -W -b linkcheck -d {envtmpdir}/doctrees ./docs/ {toxinidir}/docs/_build/linkcheck