Merge "First version of ODU slice assurance usecase"
[nonrtric.git] / test / usecases / odusliceassurance / goversion / stub / mrproducer / mrstub.go
diff --git a/test/usecases/odusliceassurance/goversion/stub/mrproducer/mrstub.go b/test/usecases/odusliceassurance/goversion/stub/mrproducer/mrstub.go
new file mode 100644 (file)
index 0000000..e759125
--- /dev/null
@@ -0,0 +1,130 @@
+// -
+//   ========================LICENSE_START=================================
+//   O-RAN-SC
+//   %%
+//   Copyright (C) 2021: Nordix Foundation
+//   %%
+//   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.
+//   ========================LICENSE_END===================================
+//
+
+package main
+
+import (
+       "encoding/json"
+       "flag"
+       "fmt"
+       "math/rand"
+       "net/http"
+       "time"
+
+       "github.com/gorilla/mux"
+       "oransc.org/usecase/oduclosedloop/messages"
+)
+
+func main() {
+       rand.Seed(time.Now().UnixNano())
+       port := flag.Int("port", 3905, "The port this message router will listen on")
+       flag.Parse()
+
+       r := mux.NewRouter()
+       r.HandleFunc("/events/unauthenticated.PERFORMANCE_MEASUREMENTS", sendStdMessage).Methods(http.MethodGet)
+
+       fmt.Println("Starting mr on port: ", *port)
+
+       http.ListenAndServe(fmt.Sprintf(":%v", *port), r)
+
+}
+
+// Variables ::
+// DU-ID: ERICSSON-O-DU-11220
+// Cell-ID: cell1
+// Slice-Diff: 2
+// Value: 300
+func sendStdMessage(w http.ResponseWriter, r *http.Request) {
+       message := fetchMessage()
+       fmt.Println("-----------------------------------------------------------------------------")
+       fmt.Println("Sending message: ", message)
+       fmt.Println("-----------------------------------------------------------------------------")
+       response, _ := json.Marshal(message)
+       time.Sleep(time.Duration(rand.Intn(3)) * time.Second)
+       w.Header().Set("Content-Type", "application/json")
+       w.WriteHeader(http.StatusOK)
+       w.Write(response)
+}
+
+func fetchMessage() messages.StdDefinedMessage {
+
+       index := rand.Intn(5)
+       fmt.Println(index)
+
+       measurements := [5][]messages.Measurement{meas1, meas2, meas3, meas4, meas5}
+
+       message := messages.StdDefinedMessage{
+               Event: messages.Event{
+                       CommonEventHeader: messages.CommonEventHeader{
+                               Domain:               "stndDefined",
+                               StndDefinedNamespace: "o-ran-sc-du-hello-world-pm-streaming-oas3",
+                       },
+                       StndDefinedFields: messages.StndDefinedFields{
+                               StndDefinedFieldsVersion: "1.0",
+                               SchemaReference:          "https://gerrit.o-ran-sc.org/r/gitweb?p=scp/oam/modeling.git;a=blob_plain;f=data-model/oas3/experimental/o-ran-sc-du-hello-world-oas3.json;hb=refs/heads/master",
+                               Data: messages.Data{
+                                       DataId:       "id",
+                                       Measurements: measurements[index],
+                               },
+                       },
+               },
+       }
+       return message
+}
+
+var meas1 = []messages.Measurement{
+       {
+               MeasurementTypeInstanceReference: "/network-function/distributed-unit-functions[id='ERICSSON-O-DU-11220']/cell[id='cell1']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-downlink']/supported-snssai-subcounter-instances/slice-differentiator[.=2][slice-service-type=1]",
+               Value:                            300,
+               Unit:                             "kbit/s",
+       },
+}
+
+var meas2 = []messages.Measurement{
+       {
+               MeasurementTypeInstanceReference: "/network-function/distributed-unit-functions[id='ERICSSON-O-DU-11220']/cell[id='cell1']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-downlink']/supported-snssai-subcounter-instances/slice-differentiator[.=1]",
+               Value:                            400,
+               Unit:                             "kbit/s",
+       },
+}
+
+var meas3 = []messages.Measurement{
+       {
+               MeasurementTypeInstanceReference: "/network-function/distributed-unit-functions[id='ERICSSON-O-DU-11220']/cell[id='cell1']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-uplink']/supported-snssai-subcounter-instances/slice-differentiator[.=2][slice-service-type=2]",
+               Value:                            800,
+               Unit:                             "kbit/s",
+       },
+}
+
+var meas4 = []messages.Measurement{
+       {
+               MeasurementTypeInstanceReference: "/network-function/distributed-unit-functions[id='ERICSSON-O-DU-11220']/cell[id='cell1']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-downlink']/supported-snssai-subcounter-instances/slice-differentiator[.=1]",
+               Value:                            750,
+               Unit:                             "kbit/s",
+       },
+}
+
+var meas5 = []messages.Measurement{
+       {
+               MeasurementTypeInstanceReference: "/network-function/distributed-unit-functions[id='ERICSSON-O-DU-11220']/cell[id='cell1']/supported-measurements/performance-measurement-type[.='user-equipment-average-throughput-downlink']/supported-snssai-subcounter-instances/[slice-differentiator[.=2]][slice-service-type=1]",
+               Value:                            900,
+               Unit:                             "kbit/s",
+       },
+}