blob: 29132466a339e3f1db30b74b7e504e3032f943d2 [file] [log] [blame]
Mohamed Abukar5120ec12020-02-04 11:01:24 +02001/*
2==================================================================================
3 Copyright (c) 2019 Nokia
4==================================================================================
5*/
6
7package xapp
8
9import (
Mohamed Abukar8dcedb42020-03-10 13:20:56 +020010 apimodel "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/clientmodel"
11 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
12 "github.com/stretchr/testify/assert"
Mohamed Abukar5120ec12020-02-04 11:01:24 +020013 "testing"
14 "time"
Mohamed Abukar5120ec12020-02-04 11:01:24 +020015)
16
17var suite *testing.T
18
Mohamed Abukar429da192020-02-26 16:46:34 +020019var meid = "gnb123456"
20var funId = int64(1)
21var clientEndpoint = "localhost:4561"
Mohamed Abukar5120ec12020-02-04 11:01:24 +020022var direction = int64(0)
23var procedureCode = int64(27)
24var typeOfMessage = int64(1)
25
26var reportParams = apimodel.ReportParams{
Mohamed Abukar429da192020-02-26 16:46:34 +020027 Meid: meid,
28 RANFunctionID: &funId,
29 ClientEndpoint: &clientEndpoint,
Mohamed Abukar5120ec12020-02-04 11:01:24 +020030 EventTriggers: apimodel.EventTriggerList{
31 &apimodel.EventTrigger{
Mohamed Abukar429da192020-02-26 16:46:34 +020032 InterfaceDirection: direction,
33 ProcedureCode: procedureCode,
34 TypeOfMessage: typeOfMessage,
Mohamed Abukar5120ec12020-02-04 11:01:24 +020035 },
36 },
37}
38
Mohamed Abukar5120ec12020-02-04 11:01:24 +020039var policyParams = apimodel.PolicyParams{
Mohamed Abukar429da192020-02-26 16:46:34 +020040 Meid: &meid,
41 RANFunctionID: &funId,
42 ClientEndpoint: &clientEndpoint,
43 EventTriggers: apimodel.EventTriggerList{
44 &apimodel.EventTrigger{
45 InterfaceDirection: direction,
46 ProcedureCode: procedureCode,
47 TypeOfMessage: typeOfMessage,
48 },
49 },
50 PolicyActionDefinitions: &apimodel.PolicyActionDefinition{},
Mohamed Abukar5120ec12020-02-04 11:01:24 +020051}
52
Mohamed Abukar429da192020-02-26 16:46:34 +020053func subscriptionHandler(stype models.SubscriptionType, params interface{}) (models.SubscriptionResponse, error) {
Mohamed Abukar5120ec12020-02-04 11:01:24 +020054 switch stype {
55 case models.SubscriptionTypeReport:
56 p := params.(*models.ReportParams)
Mohamed Abukar429da192020-02-26 16:46:34 +020057 assert.Equal(suite, meid, p.Meid)
58 assert.Equal(suite, funId, *p.RANFunctionID)
59 assert.Equal(suite, clientEndpoint, *p.ClientEndpoint)
60 assert.Equal(suite, direction, p.EventTriggers[0].InterfaceDirection)
61 assert.Equal(suite, procedureCode, p.EventTriggers[0].ProcedureCode)
62 assert.Equal(suite, typeOfMessage, p.EventTriggers[0].TypeOfMessage)
Mohamed Abukar5120ec12020-02-04 11:01:24 +020063 case models.SubscriptionTypePolicy:
64 p := params.(*models.PolicyParams)
Mohamed Abukar429da192020-02-26 16:46:34 +020065 assert.Equal(suite, clientEndpoint, *p.ClientEndpoint)
Mohamed Abukar5120ec12020-02-04 11:01:24 +020066 }
67
Mohamed Abukar429da192020-02-26 16:46:34 +020068 subId := "xapp-11"
69 reqId := int64(11)
70 instanceId := int64(22)
71 return models.SubscriptionResponse{
72 &models.SubscriptionResponseItem{SubscriptionID: &subId, RequestorID: &reqId, InstanceID: &instanceId},
73 &models.SubscriptionResponseItem{SubscriptionID: &subId, RequestorID: &reqId, InstanceID: &instanceId},
74 }, nil
Mohamed Abukar5120ec12020-02-04 11:01:24 +020075}
76
Mohamed Abukar9568a2d2020-02-18 16:50:32 +020077func queryHandler() (models.SubscriptionList, error) {
78 resp := models.SubscriptionList{
79 &models.SubscriptionData{
80 SubscriptionID: 11,
Mohamed Abukar8dcedb42020-03-10 13:20:56 +020081 Meid: "Test-Gnb",
82 Endpoint: []string{"127.0.0.1:4056"},
Mohamed Abukar9568a2d2020-02-18 16:50:32 +020083 },
84 }
85
86 return resp, nil
87}
88
Mohamed Abukar429da192020-02-26 16:46:34 +020089func deleteHandler(ep string) error {
90 assert.Equal(suite, clientEndpoint, ep)
91
92 return nil
93}
94
Mohamed Abukar5120ec12020-02-04 11:01:24 +020095func TestSetup(t *testing.T) {
96 suite = t
97
98 // Start the server to simulate SubManager
Mohamed Abukar429da192020-02-26 16:46:34 +020099 go Subscription.Listen(subscriptionHandler, queryHandler, deleteHandler)
Mohamed Abukar5120ec12020-02-04 11:01:24 +0200100 time.Sleep(time.Duration(2) * time.Second)
101}
102
Mohamed Abukar9568a2d2020-02-18 16:50:32 +0200103func TestSubscriptionQueryHandling(t *testing.T) {
104 resp, err := Subscription.QuerySubscriptions()
105
106 assert.Equal(t, err, nil)
107 assert.Equal(t, resp[0].SubscriptionID, int64(11))
108 assert.Equal(t, resp[0].Meid, "Test-Gnb")
109 assert.Equal(t, resp[0].Endpoint, []string{"127.0.0.1:4056"})
110}
111
Mohamed Abukar5120ec12020-02-04 11:01:24 +0200112func TestSubscriptionReportHandling(t *testing.T) {
113 result, err := Subscription.SubscribeReport(&reportParams)
114
115 assert.Equal(t, err, nil)
Mohamed Abukar429da192020-02-26 16:46:34 +0200116 assert.Equal(t, len(result), 2)
117 assert.Equal(t, *result[0].RequestorID, int64(11))
118 assert.Equal(t, *result[0].InstanceID, int64(22))
119 assert.Equal(t, *result[1].RequestorID, int64(11))
120 assert.Equal(t, *result[1].InstanceID, int64(22))
Mohamed Abukar5120ec12020-02-04 11:01:24 +0200121}
122
123func TestSubscriptionPolicytHandling(t *testing.T) {
124 result, err := Subscription.SubscribePolicy(&policyParams)
125
126 assert.Equal(t, err, nil)
Mohamed Abukar429da192020-02-26 16:46:34 +0200127 assert.Equal(t, len(result), 2)
128 assert.Equal(t, *result[0].RequestorID, int64(11))
129 assert.Equal(t, *result[0].InstanceID, int64(22))
Mohamed Abukar8dcedb42020-03-10 13:20:56 +0200130}
Mohamed Abukar429da192020-02-26 16:46:34 +0200131
132func TestSubscriptionDeleteHandling(t *testing.T) {
133 err := Subscription.UnSubscribe(clientEndpoint)
134
135 assert.Equal(t, err, nil)
136}