[RICPLT-1703] - Reset Request + unit tests
[ric-plt/e2mgr.git] / E2Manager / e2pdus / x2_reset_known_causes_test.go
diff --git a/E2Manager/e2pdus/x2_reset_known_causes_test.go b/E2Manager/e2pdus/x2_reset_known_causes_test.go
new file mode 100644 (file)
index 0000000..5a3d474
--- /dev/null
@@ -0,0 +1,88 @@
+package e2pdus
+
+import (
+       "e2mgr/logger"
+       "fmt"
+       "strings"
+       "testing"
+)
+
+func TestKnownCausesToX2ResetPDU(t *testing.T) {
+       _,err := logger.InitLogger(logger.InfoLevel)
+       if err!=nil{
+               t.Errorf("failed to initialize logger, error: %s", err)
+       }
+       var testCases = []struct {
+               cause string
+               packedPdu        string
+       }{
+               {
+                       cause:     OmInterventionCause,
+                       packedPdu: "000700080000010005400164",
+               },
+               {
+                       cause:     "PROTOCOL:transfer-syntax-error",
+                       packedPdu: "000700080000010005400140",
+               },
+               {
+                       cause:     "transport:transport-RESOURCE-unavailable",
+                       packedPdu: "000700080000010005400120",
+               },
+
+               {
+                       cause:     "radioNetwork:invalid-MME-groupid",
+                       packedPdu: "00070009000001000540020680",
+               },
+
+       }
+
+       for _, tc := range testCases {
+               t.Run(tc.packedPdu, func(t *testing.T) {
+
+                       payload, ok := KnownCausesToX2ResetPDU(tc.cause)
+                       if !ok {
+                               t.Errorf("want: success, got: not found.\n")
+                       } else {
+                               tmp := fmt.Sprintf("%x", payload)
+                               if len(tmp) != len(tc.packedPdu) {
+                                       t.Errorf("want packed len:%d, got: %d\n", len(tc.packedPdu)/2, len(payload)/2)
+                               }
+
+                               if strings.Compare(tmp, tc.packedPdu) != 0 {
+                                       t.Errorf("\nwant :\t[%s]\n got: \t\t[%s]\n", tc.packedPdu, tmp)
+                               }
+                       }
+               })
+       }
+}
+
+
+func TestKnownCausesToX2ResetPDUFailure(t *testing.T) {
+       _, err := logger.InitLogger(logger.InfoLevel)
+       if err != nil {
+               t.Errorf("failed to initialize logger, error: %s", err)
+       }
+
+       _, ok  := KnownCausesToX2ResetPDU("xxxx")
+       if ok {
+               t.Errorf("want: not found, got: success.\n")
+       }
+}
+
+
+func TestPrepareX2ResetPDUsFailure(t *testing.T) {
+       _, err := logger.InitLogger(logger.InfoLevel)
+       if err != nil {
+               t.Errorf("failed to initialize logger, error: %s", err)
+       }
+
+       err  = prepareX2ResetPDUs(1, 4096)
+       if err == nil {
+               t.Errorf("want: error, got: success.\n")
+       }
+
+       expected:= "#reset_request_handler.Handle - failed to build and pack the reset message #src/asn1codec_utils.c.pack_pdu_aux - Encoded output of E2AP-PDU, is too big:"
+       if !strings.Contains(err.Error(), expected) {
+               t.Errorf("want :[%s], got: [%s]\n", expected, err)
+       }
+}
\ No newline at end of file