2 ==================================================================================
3 Copyright (c) 2019 AT&T Intellectual Property.
4 Copyright (c) 2019 Nokia
6 Licensed under the Apache License, Version 2.0 (the "License");
7 you may not use this file except in compliance with the License.
8 You may obtain a copy of the License at
10 http://www.apache.org/licenses/LICENSE-2.0
12 Unless required by applicable law or agreed to in writing, software
13 distributed under the License is distributed on an "AS IS" BASIS,
14 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 See the License for the specific language governing permissions and
16 limitations under the License.
17 ==================================================================================
25 "gerrit.o-ran-sc.org/r/ric-plt/e2ap/pkg/e2ap"
26 "github.com/google/go-cmp/cmp"
32 //-----------------------------------------------------------------------------
34 //-----------------------------------------------------------------------------
36 var testLogger *log.Logger
39 testLogger = log.New(os.Stdout, "TEST: ", log.LstdFlags)
47 func (testctxt *ApTests) Name() string { return testctxt.name }
49 func (testctxt *ApTests) Desc() string { return testctxt.desc }
51 func (testctxt *ApTests) SetDesc(desc string) { testctxt.desc = desc }
53 func (testctxt *ApTests) String() string { return testctxt.name + string("-") + testctxt.desc }
55 func (testctxt *ApTests) testPrint(pattern string, args ...interface{}) {
56 testLogger.Printf("(%s): %s", testctxt.String(), fmt.Sprintf(pattern, args...))
59 func (testctxt *ApTests) testError(t *testing.T, pattern string, args ...interface{}) {
60 testLogger.Printf("(%s): %s", testctxt.String(), fmt.Sprintf(pattern, args...))
61 t.Errorf("(%s): %s", testctxt.String(), fmt.Sprintf(pattern, args...))
64 func (testctxt *ApTests) testValueEquality(t *testing.T, msg string, a interface{}, b interface{}) {
66 testLogger.Printf("(%s) %s Difference: %s", testctxt.String(), msg, cmp.Diff(a, b))
67 t.Errorf("(%s) %s Difference: %s", testctxt.String(), msg, cmp.Diff(a, b))
71 //-----------------------------------------------------------------------------
73 //-----------------------------------------------------------------------------
75 type E2ApTests struct {
77 packerif e2ap.E2APPackerIf
80 func (testCtxt *E2ApTests) toPackedData(t *testing.T, buffer string) *e2ap.PackedData {
81 msg, err := hex.DecodeString(buffer)
83 testCtxt.testError(t, "Hex DecodeString Failed: %s [%s]", err.Error(), buffer)
86 packedData := &e2ap.PackedData{}
91 func NewE2ApTests(name string, packerif e2ap.E2APPackerIf) *E2ApTests {
92 testCtxt := &E2ApTests{}
93 testCtxt.packerif = packerif
98 //-----------------------------------------------------------------------------
100 //-----------------------------------------------------------------------------
102 func RunTests(t *testing.T, e2aptestctxt *E2ApTests) {
104 subMsgContent := &SubscriptionTestMsgContent{}
105 subMsgContent.NBNRTEventTriggerDefinitionPresent = true
106 subMsgContent.ActionDefinitionNRTFormat1Present = true
107 subMsgContent.RANParameterValueEnumPresent = true
108 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionRequest(t, subMsgContent) })
110 subMsgContent2 := &SubscriptionTestMsgContent{}
111 subMsgContent2.NBX2EventTriggerDefinitionPresent = true
112 subMsgContent2.ActionDefinitionX2Format1Present = true
113 subMsgContent2.ActionParameterValueBoolPresent = true
114 subMsgContent2.RANParameterValueBoolPresent = true
115 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionRequest(t, subMsgContent2) })
117 subMsgContent3 := &SubscriptionTestMsgContent{}
118 subMsgContent3.NBX2EventTriggerDefinitionPresent = true
119 subMsgContent3.ActionDefinitionX2Format2Present = true
120 subMsgContent3.ActionParameterValueBitSPresent = true
121 subMsgContent3.RANParameterValueBitSPresent = true
122 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionRequest(t, subMsgContent3) })
124 subMsgContent4 := &SubscriptionTestMsgContent{}
125 subMsgContent4.NBX2EventTriggerDefinitionPresent = true
126 subMsgContent4.ActionDefinitionX2Format2Present = true
127 subMsgContent4.ActionParameterValueOctSPresent = true
128 subMsgContent4.RANParameterValueOctSPresent = true
129 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionRequest(t, subMsgContent4) })
131 subMsgContent5 := &SubscriptionTestMsgContent{}
132 subMsgContent5.NBX2EventTriggerDefinitionPresent = true
133 subMsgContent5.ActionDefinitionX2Format2Present = true
134 subMsgContent5.ActionParameterValuePrtSPresent = true
135 subMsgContent5.RANParameterValuePrtSPresent = true
136 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionRequest(t, subMsgContent5) })
138 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionResponse(t) })
139 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionFailure(t) })
140 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionDeleteRequest(t) })
141 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionDeleteResponse(t) })
142 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionDeleteFailure(t) })
145 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionRequestBuffers(t) })
146 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionResponseBuffers(t) })
147 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionFailureBuffers(t) })
148 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionDeleteRequestBuffers(t) })
149 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionDeleteResponseBuffers(t) })
150 t.Run(e2aptestctxt.Name(), func(t *testing.T) { e2aptestctxt.E2ApTestMsgSubscriptionDeleteFailureBuffers(t) })