X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=pkg%2Fcontrol%2Fduplicate_test.go;fp=pkg%2Fcontrol%2Fduplicate_test.go;h=0b3390650a06e32d941f060f7c66dda51843c5ec;hb=b642a19e7527f03458f1b6ca47bca132019aa2cf;hp=0000000000000000000000000000000000000000;hpb=55d2a285e4914afce7492c6b4b6feebe5485210b;p=ric-plt%2Fsubmgr.git diff --git a/pkg/control/duplicate_test.go b/pkg/control/duplicate_test.go new file mode 100644 index 0000000..0b33906 --- /dev/null +++ b/pkg/control/duplicate_test.go @@ -0,0 +1,185 @@ +/* +================================================================================== + Copyright (c) 2021 Nokia + + 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. +================================================================================== +*/ + +package control + +import ( + "fmt" + "testing" + + "gerrit.o-ran-sc.org/r/ric-plt/xapp-frame/pkg/models" + "github.com/stretchr/testify/assert" +) + +type testData struct { + Name *string + Data []byte + SomeVal *int64 +} + +func TestDefaultUseCase(t *testing.T) { + + fmt.Println("##################### TestRetransmissionChecker #####################") + + var retransCtrl duplicateCtrl + restSubdId := "898dfkjashntgkjasgho4" + var name string = "yolo" + var someVal int64 = 98765 + data := testData{Name: &name, Data: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, SomeVal: &someVal} + + retransCtrl.Init() + + _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data) + + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate) + + retransCtrl.TransactionComplete(md5sum) + + assert.Equal(t, 0, len(retransCtrl.retransMap)) +} + +func TestDuplicate(t *testing.T) { + + fmt.Println("##################### TestDuplicate #####################") + + var retransCtrl duplicateCtrl + restSubdId := "898dfkjashntgkjasgho4" + var name string = "yolo" + var someVal int64 = 98765 + data := testData{Name: &name, Data: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, SomeVal: &someVal} + + var name2 string = "yolo" + var someVal2 int64 = 98765 + + data2 := new(testData) + data2.Name = &name2 + data2.SomeVal = &someVal2 + datax := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0} + data2.Data = datax + + retransCtrl.Init() + + _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data) + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate) + + _, duplicate, md5sum = retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data2) + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, true, duplicate) + + retransCtrl.TransactionComplete(md5sum) + + assert.Equal(t, 0, len(retransCtrl.retransMap)) +} + +func TestNoneDuplicate(t *testing.T) { + + fmt.Println("##################### TestNoneDuplicate #####################") + + var retransCtrl duplicateCtrl + restSubdId := "898dfkjashntgkjasgho4" + var name string = "yolo" + var someVal int64 = 98765 + data := testData{Name: &name, Data: []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, SomeVal: &someVal} + + var name2 string = "yolo" + var someVal2 int64 = 98765 + + data2 := new(testData) + data2.Name = &name2 + data2.SomeVal = &someVal2 + datax := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 1} // One byte changed + data2.Data = datax + + retransCtrl.Init() + + _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data) + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate) + + _, duplicate2, md5sum2 := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data2) + assert.Equal(t, 2, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate2) + + retransCtrl.TransactionComplete(md5sum) + retransCtrl.TransactionComplete(md5sum2) + + assert.Equal(t, 0, len(retransCtrl.retransMap)) +} + +func TestEncodingError(t *testing.T) { + + fmt.Println("##################### TestEncodingError #####################") + + var retransCtrl duplicateCtrl + restSubdId := "898dfkjashntgkjasgho4" + var data interface{} + + retransCtrl.Init() + + err, duplicate, _ := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data) + assert.NotEqual(t, err, nil) + assert.Equal(t, 0, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate) +} + +func TestRemovalError(t *testing.T) { + + fmt.Println("##################### TestRemovalError #####################") + + var retransCtrl duplicateCtrl + restSubdId := "898dfkjashntgkjasgho4" + var data testData + + retransCtrl.Init() + + err, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction(restSubdId, data) + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate) + + err = retransCtrl.TransactionComplete(md5sum) + assert.Empty(t, err) + + err = retransCtrl.TransactionComplete(md5sum) + assert.NotEmpty(t, err) +} + +func TestXappRestReqDuplicate(t *testing.T) { + + fmt.Println("##################### TestXappRestReqDuplicate #####################") + + var retransCtrl duplicateCtrl + + msg1 := new(models.SubscriptionParams) + msg2 := new(models.SubscriptionParams) + + retransCtrl.Init() + + _, duplicate, md5sum := retransCtrl.IsDuplicateToOngoingTransaction("foobar", msg1) + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, false, duplicate) + + _, duplicate, md5sum = retransCtrl.IsDuplicateToOngoingTransaction("foobar", msg2) + assert.Equal(t, 1, len(retransCtrl.retransMap)) + assert.Equal(t, true, duplicate) + + retransCtrl.TransactionComplete(md5sum) + + assert.Equal(t, 0, len(retransCtrl.retransMap)) +}