b9713afdb3f36f22f22676f96a4ac1689a9b2804
[ric-plt/xapp-frame.git] / pkg / xapp / subscription_test.go
1 /*
2 ==================================================================================
3   Copyright (c) 2019 Nokia
4 ==================================================================================
5 */
6
7 package xapp
8
9 import (
10         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"
13         "testing"
14         "time"
15 )
16
17 var suite *testing.T
18
19 var meid = "gnb123456"
20 var funId = int64(1)
21 var clientEndpoint = "localhost:4561"
22 var direction = int64(0)
23 var procedureCode = int64(27)
24 var typeOfMessage = int64(1)
25
26 var reportParams = apimodel.ReportParams{
27         Meid: meid,
28         RANFunctionID: &funId,
29         ClientEndpoint: &clientEndpoint,
30         EventTriggers: apimodel.EventTriggerList{
31                 &apimodel.EventTrigger{
32                         InterfaceDirection: direction,
33                         ProcedureCode:      procedureCode,
34                         TypeOfMessage:      typeOfMessage,
35                 },
36         },
37 }
38
39 var policyParams = apimodel.PolicyParams{
40         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{},
51 }
52
53 func subscriptionHandler(stype models.SubscriptionType, params interface{}) (*models.SubscriptionResponse, error) {
54         switch stype {
55         case models.SubscriptionTypeReport:
56                 p := params.(*models.ReportParams)
57                 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)
63         case models.SubscriptionTypePolicy:
64                 p := params.(*models.PolicyParams)
65                 assert.Equal(suite, clientEndpoint, *p.ClientEndpoint)
66         }
67
68         subId := "xapp-11"
69         reqId := int64(11)
70         instanceId := int64(22)
71         return &models.SubscriptionResponse{
72                 SubscriptionID: &subId,
73                 SubscriptionInstances: []*models.SubscriptionInstance{
74                         &models.SubscriptionInstance{RequestorID: &reqId, InstanceID: &instanceId}, 
75                         &models.SubscriptionInstance{RequestorID: &reqId, InstanceID: &instanceId},
76                 },
77         }, nil
78 }
79
80 func queryHandler() (models.SubscriptionList, error) {
81         resp := models.SubscriptionList{
82                 &models.SubscriptionData{
83                         SubscriptionID: 11,
84                         Meid:           "Test-Gnb",
85                         Endpoint:       []string{"127.0.0.1:4056"},
86                 },
87         }
88
89         return resp, nil
90 }
91
92 func deleteHandler(ep string) error {
93         assert.Equal(suite, clientEndpoint, ep)
94
95         return nil
96 }
97
98 func TestSetup(t *testing.T) {
99         suite = t
100
101         // Start the server to simulate SubManager
102         go Subscription.Listen(subscriptionHandler, queryHandler, deleteHandler)
103         time.Sleep(time.Duration(2) * time.Second)
104 }
105
106 func TestSubscriptionQueryHandling(t *testing.T) {
107         resp, err := Subscription.QuerySubscriptions()
108
109         assert.Equal(t, err, nil)
110         assert.Equal(t, resp[0].SubscriptionID, int64(11))
111         assert.Equal(t, resp[0].Meid, "Test-Gnb")
112         assert.Equal(t, resp[0].Endpoint, []string{"127.0.0.1:4056"})
113 }
114
115 func TestSubscriptionReportHandling(t *testing.T) {
116         resp, err := Subscription.SubscribeReport(&reportParams)
117
118         assert.Equal(t, err, nil)
119         assert.Equal(t, len(resp.SubscriptionInstances), 2)
120         assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
121         assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
122         assert.Equal(t, *resp.SubscriptionInstances[1].RequestorID, int64(11))
123         assert.Equal(t, *resp.SubscriptionInstances[1].InstanceID, int64(22))
124 }
125
126 func TestSubscriptionPolicytHandling(t *testing.T) {
127         resp, err := Subscription.SubscribePolicy(&policyParams)
128
129         assert.Equal(t, err, nil)
130         assert.Equal(t, len(resp.SubscriptionInstances), 2)
131         assert.Equal(t, *resp.SubscriptionInstances[0].RequestorID, int64(11))
132         assert.Equal(t, *resp.SubscriptionInstances[0].InstanceID, int64(22))
133 }
134
135 func TestSubscriptionDeleteHandling(t *testing.T) {
136         err := Subscription.UnSubscribe(clientEndpoint)
137
138         assert.Equal(t, err, nil)
139 }