Replacing a1-python with a1-go implementation
[ric-plt/a1.git] / pkg / policy / policyManager_test.go
diff --git a/pkg/policy/policyManager_test.go b/pkg/policy/policyManager_test.go
new file mode 100644 (file)
index 0000000..42a9807
--- /dev/null
@@ -0,0 +1,91 @@
+/*
+==================================================================================
+  Copyright (c) 2022 Samsung
+
+   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.
+
+   This source code is part of the near-RT RIC (RAN Intelligent Controller)
+   platform project (RICP).
+==================================================================================
+*/
+
+package policy
+
+import (
+       "os"
+       "strconv"
+       "testing"
+
+       "gerrit.o-ran-sc.org/r/ric-plt/a1/pkg/a1"
+       "github.com/stretchr/testify/assert"
+       "github.com/stretchr/testify/mock"
+)
+
+type SdlMock struct {
+       mock.Mock
+}
+
+var sdlInst *SdlMock
+var pm *PolicyManager
+
+func TestMain(m *testing.M) {
+       sdlInst = new(SdlMock)
+       a1.Init()
+       pm = createPolicyManager(sdlInst)
+       code := m.Run()
+       os.Exit(code)
+}
+func TestSetPolicyInstance(t *testing.T) {
+       var policyTypeId int
+       policyTypeId = 20001
+       var policyInstanceID int
+       policyInstanceID = 123456
+       var status string
+       status = "OK"
+       instancehandlerKey := a1HandlerPrefix + strconv.FormatInt(20001, 10) + "." + strconv.FormatInt(int64(policyInstanceID), 10)
+       instancearr := []interface{}{instancehandlerKey, status}
+       sdlInst.On("Set", "A1m_ns", instancehandlerKey, instancearr).Return(nil)
+       errresp := pm.SetPolicyInstanceStatus(policyTypeId, policyInstanceID, status)
+       assert.NoError(t, errresp)
+       sdlInst.AssertExpectations(t)
+}
+
+func TestGetAllPolicyIntances(t *testing.T) {
+       var policyTypeId int
+       policyTypeId = 20005
+       sdlInst.On("GetAll", "A1m_ns").Return([]string{"a1.policy_instance.1006001.qos",
+               "a1.policy_instance.20005.123456",
+               "a1.policy_instance.20005.234567",
+               "a1.policy_type.1006001",
+               "a1.policy_type.20000",
+               "a1.policy_inst_metadata.1006001.qos",
+       }, nil)
+       resp, err := pm.GetAllPolicyInstance(policyTypeId)
+       assert.NoError(t, err)
+       assert.Equal(t, 2, len(resp))
+}
+
+func (s *SdlMock) Set(ns string, pairs ...interface{}) error {
+       args := s.MethodCalled("Set", ns, pairs)
+       return args.Error(0)
+}
+
+func (s *SdlMock) Get(ns string, keys []string) (map[string]interface{}, error) {
+       a1.Logger.Error("Get Called ")
+       return map[string]interface{}{}, nil
+}
+
+func (s *SdlMock) GetAll(ns string) ([]string, error) {
+       args := s.MethodCalled("GetAll", ns)
+       return args.Get(0).([]string), nil
+}