From 8fef2a5fb2fdbae4dcc90f5d649d2cea5a7dd13f Mon Sep 17 00:00:00 2001 From: andronache Date: Thu, 22 Apr 2021 13:36:40 +0300 Subject: [PATCH] Finished coverage for dispatch function in Dispatchers --- dispatchers/libdispatcher_test.go | 59 +++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 2 deletions(-) diff --git a/dispatchers/libdispatcher_test.go b/dispatchers/libdispatcher_test.go index d07d38002..dcd6d52c1 100644 --- a/dispatchers/libdispatcher_test.go +++ b/dispatchers/libdispatcher_test.go @@ -19,6 +19,7 @@ along with this program. If not, see package dispatchers import ( + "net/rpc" "reflect" "sync" "testing" @@ -1135,8 +1136,62 @@ func TestLibDispatcherLoadStrategyDispatcherCacheError4(t *testing.T) { defaultRatio: 0, } err := wgDsp.dispatch(dm, "testID", utils.MetaAttributes, "testTENANT", []string{"testID", "testID2"}, utils.AttributeSv1Ping, &utils.CGREvent{}, &wgDsp) - if err != nil { - t.Errorf("\nExpected <%+v>, \nReceived <%+v>", nil, err) + expected := "DISCONNECTED" + if err == nil || err.Error() != expected { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", expected, err) } engine.Cache = cacheInit } + +type mockTypeConDispatch struct{} + +func (*mockTypeConDispatch) Call(serviceMethod string, args, reply interface{}) error { + return rpc.ErrShutdown +} + +func TestLibDispatcherLoadStrategyDispatcherCacheError5(t *testing.T) { + cacheInit := engine.Cache + cfg := config.NewDefaultCGRConfig() + + dm := engine.NewDataManager(nil, nil, nil) + newCache := engine.NewCacheS(cfg, dm, nil) + engine.Cache = newCache + value := &engine.DispatcherHost{ + Tenant: "testTenant", + RemoteHost: &config.RemoteHost{ + ID: "testID", + Address: rpcclient.InternalRPC, + Transport: utils.MetaInternal, + Synchronous: false, + TLS: false, + }, + } + + tmp := engine.IntRPC + engine.IntRPC = map[string]*rpcclient.RPCClient{} + chanRPC := make(chan rpcclient.ClientConnector, 1) + chanRPC <- new(mockTypeConDispatch) + engine.IntRPC.AddInternalRPCClient(utils.AttributeSv1, chanRPC) + engine.Cache.SetWithoutReplicate(utils.CacheDispatcherHosts, "testTenant:testID", + value, nil, true, utils.NonTransactional) + wgDsp := &loadStrategyDispatcher{ + tntID: "testTenant", + hosts: engine.DispatcherHostProfiles{ + { + ID: "testID", + Weight: 3, + Params: map[string]interface{}{ + utils.MetaRatio: 1, + }, + Blocker: true, + }, + }, + defaultRatio: 0, + } + err := wgDsp.dispatch(nil, "testID", utils.MetaAttributes, "testTenant", []string{"testID"}, utils.AttributeSv1Ping, &utils.CGREvent{}, &wgDsp) + if err == nil { + t.Errorf("\nExpected <%+v>, \nReceived <%+v>", "connection is shut down", err) + } + engine.Cache = cacheInit + engine.IntRPC = tmp +}