0b3390650a06e32d941f060f7c66dda51843c5ec
[ric-plt/submgr.git] / pkg / control / duplicate_test.go
1 /*
2 ==================================================================================
3   Copyright (c) 2021 Nokia
4
5    Licensed under the Apache License, Version 2.0 (the "License");
6    you may not use this file except in compliance with the License.
7    You may obtain a copy of the License at
8
9        http://www.apache.org/licenses/LICENSE-2.0
10
11    Unless required by applicable law or agreed to in writing, software
12    distributed under the License is distributed on an "AS IS" BASIS,
13    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14    See the License for the specific language governing permissions and
15    limitations under the License.
16 ==================================================================================
17 */
18
19 package control
20
21 import (
22         "fmt"
23         "testing"
24
25         "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
26         "github.com/stretchr/testify/assert"
27 )
28
29 type testData struct {
30         Name    *string
31         Data    []byte
32         SomeVal *int64
33 }
34
35 func TestDefaultUseCase(t *testing.T) {
36
37         fmt.Println("#####################  TestRetransmissionChecker  #####################")
38
39         var retransCtrl duplicateCtrl
40         restSubdId := "898dfkjashntgkjasgho4"
41         var name string = "yolo"
42         var someVal int64 = 98765
43         data := testData{Name: &name, Data: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, SomeVal: &someVal}
44
45         retransCtrl.Init()
46
47         _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
48
49         assert.Equal(t, 1, len(retransCtrl.retransMap))
50         assert.Equal(t, false, duplicate)
51
52         retransCtrl.TransactionComplete(md5sum)
53
54         assert.Equal(t, 0, len(retransCtrl.retransMap))
55 }
56
57 func TestDuplicate(t *testing.T) {
58
59         fmt.Println("#####################  TestDuplicate  #####################")
60
61         var retransCtrl duplicateCtrl
62         restSubdId := "898dfkjashntgkjasgho4"
63         var name string = "yolo"
64         var someVal int64 = 98765
65         data := testData{Name: &name, Data: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, SomeVal: &someVal}
66
67         var name2 string = "yolo"
68         var someVal2 int64 = 98765
69
70         data2 := new(testData)
71         data2.Name = &name2
72         data2.SomeVal = &someVal2
73         datax := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
74         data2.Data = datax
75
76         retransCtrl.Init()
77
78         _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
79         assert.Equal(t, 1, len(retransCtrl.retransMap))
80         assert.Equal(t, false, duplicate)
81
82         _, duplicate, md5sum = retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data2)
83         assert.Equal(t, 1, len(retransCtrl.retransMap))
84         assert.Equal(t, true, duplicate)
85
86         retransCtrl.TransactionComplete(md5sum)
87
88         assert.Equal(t, 0, len(retransCtrl.retransMap))
89 }
90
91 func TestNoneDuplicate(t *testing.T) {
92
93         fmt.Println("#####################  TestNoneDuplicate  #####################")
94
95         var retransCtrl duplicateCtrl
96         restSubdId := "898dfkjashntgkjasgho4"
97         var name string = "yolo"
98         var someVal int64 = 98765
99         data := testData{Name: &name, Data: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, SomeVal: &someVal}
100
101         var name2 string = "yolo"
102         var someVal2 int64 = 98765
103
104         data2 := new(testData)
105         data2.Name = &name2
106         data2.SomeVal = &someVal2
107         datax := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 1} // One byte changed
108         data2.Data = datax
109
110         retransCtrl.Init()
111
112         _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
113         assert.Equal(t, 1, len(retransCtrl.retransMap))
114         assert.Equal(t, false, duplicate)
115
116         _, duplicate2, md5sum2 := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data2)
117         assert.Equal(t, 2, len(retransCtrl.retransMap))
118         assert.Equal(t, false, duplicate2)
119
120         retransCtrl.TransactionComplete(md5sum)
121         retransCtrl.TransactionComplete(md5sum2)
122
123         assert.Equal(t, 0, len(retransCtrl.retransMap))
124 }
125
126 func TestEncodingError(t *testing.T) {
127
128         fmt.Println("#####################  TestEncodingError  #####################")
129
130         var retransCtrl duplicateCtrl
131         restSubdId := "898dfkjashntgkjasgho4"
132         var data interface{}
133
134         retransCtrl.Init()
135
136         err, duplicate, _ := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
137         assert.NotEqual(t, err, nil)
138         assert.Equal(t, 0, len(retransCtrl.retransMap))
139         assert.Equal(t, false, duplicate)
140 }
141
142 func TestRemovalError(t *testing.T) {
143
144         fmt.Println("#####################  TestRemovalError  #####################")
145
146         var retransCtrl duplicateCtrl
147         restSubdId := "898dfkjashntgkjasgho4"
148         var data testData
149
150         retransCtrl.Init()
151
152         err, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
153         assert.Equal(t, 1, len(retransCtrl.retransMap))
154         assert.Equal(t, false, duplicate)
155
156         err = retransCtrl.TransactionComplete(md5sum)
157         assert.Empty(t, err)
158
159         err = retransCtrl.TransactionComplete(md5sum)
160         assert.NotEmpty(t, err)
161 }
162
163 func TestXappRestReqDuplicate(t *testing.T) {
164
165         fmt.Println("#####################  TestXappRestReqDuplicate  #####################")
166
167         var retransCtrl duplicateCtrl
168
169         msg1 := new(models.SubscriptionParams)
170         msg2 := new(models.SubscriptionParams)
171
172         retransCtrl.Init()
173
174         _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction("foobar", msg1)
175         assert.Equal(t, 1, len(retransCtrl.retransMap))
176         assert.Equal(t, false, duplicate)
177
178         _, duplicate, md5sum = retransCtrl.IsDuplicateToOngoingTransaction("foobar", msg2)
179         assert.Equal(t, 1, len(retransCtrl.retransMap))
180         assert.Equal(t, true, duplicate)
181
182         retransCtrl.TransactionComplete(md5sum)
183
184         assert.Equal(t, 0, len(retransCtrl.retransMap))
185 }