sync from Azure to LF
[ric-plt/e2mgr.git] / E2Manager / services / rmrsender / rmr_sender_test.go
1 //
2 // Copyright 2019 AT&T Intellectual Property
3 // Copyright 2019 Nokia
4 //
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
8 //
9 //      http://www.apache.org/licenses/LICENSE-2.0
10 //
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 //
17
18 package rmrsender
19
20 import (
21         "e2mgr/logger"
22         "e2mgr/mocks"
23         "e2mgr/models"
24         "e2mgr/rmrCgo"
25         "fmt"
26         "github.com/stretchr/testify/assert"
27         "testing"
28 )
29
30 func initRmrSenderTest(t *testing.T) (*logger.Logger, *mocks.RmrMessengerMock) {
31         log := initLog(t)
32         rmrMessengerMock := &mocks.RmrMessengerMock{}
33         rmrMessengerMock.On("IsReady").Return(true)
34         rmrMessengerMock.On("Close").Return()
35         return log, rmrMessengerMock
36 }
37
38 //func TestRmrSender_CloseContext(t *testing.T) {
39 //      logger, rmrMessengerMock := initRmrSenderTest(t)
40 //
41 //      rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
42 //      rmrSender := NewRmrSender(logger, &rmrMessenger)
43 //
44 //      rmrSender.CloseContext()
45 //      time.Sleep(time.Microsecond * 10)
46 //}
47
48 func TestRmrSenderSendSuccess(t *testing.T) {
49         logger, rmrMessengerMock := initRmrSenderTest(t)
50
51         ranName := "test"
52         payload := []byte("some payload")
53         xaction := []byte(ranName)
54         mbuf := rmrCgo.NewMBuf(123, len(payload), ranName, &payload, &xaction)
55         rmrMessengerMock.On("SendMsg", mbuf).Return(&rmrCgo.MBuf{}, nil)
56         rmrMsg := models.NewRmrMessage(123, ranName, payload)
57         rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
58         rmrSender := NewRmrSender(logger, &rmrMessenger)
59         err := rmrSender.Send(rmrMsg)
60         assert.Nil(t, err)
61         rmrMessengerMock.AssertCalled(t, "SendMsg",mbuf)
62
63 }
64
65 func TestRmrSenderSendFailure(t *testing.T) {
66         logger, rmrMessengerMock := initRmrSenderTest(t)
67
68         ranName := "test"
69         payload := []byte("some payload")
70         xaction := []byte(ranName)
71         mbuf := rmrCgo.NewMBuf(123, len(payload), ranName, &payload, &xaction)
72         rmrMessengerMock.On("SendMsg", mbuf).Return(mbuf, fmt.Errorf("rmr send failure"))
73         rmrMsg := models.NewRmrMessage(123, ranName, payload)
74         rmrMessenger := rmrCgo.RmrMessenger(rmrMessengerMock)
75         rmrSender := NewRmrSender(logger, &rmrMessenger)
76         err := rmrSender.Send(rmrMsg)
77         rmrMessengerMock.AssertCalled(t, "SendMsg",mbuf)
78         assert.NotNil(t, err)
79 }
80
81 // TODO: extract to test_utils
82 func initLog(t *testing.T) *logger.Logger {
83         log, err := logger.InitLogger(logger.InfoLevel)
84         if err != nil {
85                 t.Fatalf("#initLog - failed to initialize logger, error: %s", err)
86         }
87         return log
88 }