2 ==================================================================================
3 Copyright (c) 2021 Nokia
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
9 http://www.apache.org/licenses/LICENSE-2.0
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 ==================================================================================
25 "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models"
26 "github.com/stretchr/testify/assert"
29 type testData struct {
35 func TestDefaultUseCase(t *testing.T) {
37 fmt.Println("##################### TestRetransmissionChecker #####################")
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}
47 _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
49 assert.Equal(t, 1, len(retransCtrl.retransMap))
50 assert.Equal(t, false, duplicate)
52 retransCtrl.TransactionComplete(md5sum)
54 assert.Equal(t, 0, len(retransCtrl.retransMap))
57 func TestDuplicate(t *testing.T) {
59 fmt.Println("##################### TestDuplicate #####################")
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}
67 var name2 string = "yolo"
68 var someVal2 int64 = 98765
70 data2 := new(testData)
72 data2.SomeVal = &someVal2
73 datax := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}
78 _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
79 assert.Equal(t, 1, len(retransCtrl.retransMap))
80 assert.Equal(t, false, duplicate)
82 _, duplicate, md5sum = retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data2)
83 assert.Equal(t, 1, len(retransCtrl.retransMap))
84 assert.Equal(t, true, duplicate)
86 retransCtrl.TransactionComplete(md5sum)
88 assert.Equal(t, 0, len(retransCtrl.retransMap))
91 func TestNoneDuplicate(t *testing.T) {
93 fmt.Println("##################### TestNoneDuplicate #####################")
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}
101 var name2 string = "yolo"
102 var someVal2 int64 = 98765
104 data2 := new(testData)
106 data2.SomeVal = &someVal2
107 datax := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 1} // One byte changed
112 _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
113 assert.Equal(t, 1, len(retransCtrl.retransMap))
114 assert.Equal(t, false, duplicate)
116 _, duplicate2, md5sum2 := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data2)
117 assert.Equal(t, 2, len(retransCtrl.retransMap))
118 assert.Equal(t, false, duplicate2)
120 retransCtrl.TransactionComplete(md5sum)
121 retransCtrl.TransactionComplete(md5sum2)
123 assert.Equal(t, 0, len(retransCtrl.retransMap))
126 func TestEncodingError(t *testing.T) {
128 fmt.Println("##################### TestEncodingError #####################")
130 var retransCtrl duplicateCtrl
131 restSubdId := "898dfkjashntgkjasgho4"
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)
142 func TestRemovalError(t *testing.T) {
144 fmt.Println("##################### TestRemovalError #####################")
146 var retransCtrl duplicateCtrl
147 restSubdId := "898dfkjashntgkjasgho4"
152 err, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data)
153 assert.Equal(t, 1, len(retransCtrl.retransMap))
154 assert.Equal(t, false, duplicate)
156 err = retransCtrl.TransactionComplete(md5sum)
159 err = retransCtrl.TransactionComplete(md5sum)
160 assert.NotEmpty(t, err)
163 func TestXappRestReqDuplicate(t *testing.T) {
165 fmt.Println("##################### TestXappRestReqDuplicate #####################")
167 var retransCtrl duplicateCtrl
169 msg1 := new(models.SubscriptionParams)
170 msg2 := new(models.SubscriptionParams)
174 _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction("foobar", msg1)
175 assert.Equal(t, 1, len(retransCtrl.retransMap))
176 assert.Equal(t, false, duplicate)
178 _, duplicate, md5sum = retransCtrl.IsDuplicateToOngoingTransaction("foobar", msg2)
179 assert.Equal(t, 1, len(retransCtrl.retransMap))
180 assert.Equal(t, true, duplicate)
182 retransCtrl.TransactionComplete(md5sum)
184 assert.Equal(t, 0, len(retransCtrl.retransMap))