ApierV1.StartService, ApierV1.StopService, ApierV1.ServiceStatus implementation with tests

This commit is contained in:
DanB
2016-12-03 14:21:12 +01:00
parent 2f9f601db2
commit 3b52f0df6d
3 changed files with 58 additions and 2 deletions

View File

@@ -45,10 +45,10 @@ type ApierV1 struct {
CdrDb engine.CdrStorage
Config *config.CGRConfig
Responder *engine.Responder
ServManager *servmanager.ServiceManager
CdrStatsSrv rpcclient.RpcClientConnection
Users rpcclient.RpcClientConnection
CDRs rpcclient.RpcClientConnection // FixMe: populate it from cgr-engine
ServManager *servmanager.ServiceManager // Need to have them capitalize so we can export in V2
}
func (self *ApierV1) GetDestination(dstId string, reply *engine.Destination) error {
@@ -1115,3 +1115,15 @@ func (self *ApierV1) RemoteUnlock(lockIDs []string, reply *string) error {
*reply = utils.OK
return nil
}
func (v1 *ApierV1) StartService(args servmanager.ArgStartService, reply *string) (err error) {
return v1.ServManager.V1StartService(args, reply)
}
func (v1 *ApierV1) StopService(args servmanager.ArgStartService, reply *string) (err error) {
return v1.ServManager.V1StopService(args, reply)
}
func (v1 *ApierV1) ServiceStatus(args servmanager.ArgStartService, reply *string) (err error) {
return v1.ServManager.V1ServiceStatus(args, reply)
}

View File

@@ -37,6 +37,7 @@ import (
"github.com/cgrates/cgrates/config"
"github.com/cgrates/cgrates/engine"
"github.com/cgrates/cgrates/servmanager"
"github.com/cgrates/cgrates/utils"
)
@@ -1606,6 +1607,49 @@ func TestApierLoadTariffPlanFromStorDb(t *testing.T) {
}
}
func TestApierStartStopServiceStatus(t *testing.T) {
var reply string
if err := rater.Call("ApierV1.ServiceStatus", servmanager.ArgStartService{ServiceID: utils.MetaScheduler},
&reply); err != nil {
t.Error(err)
} else if reply != utils.RunningCaps {
t.Errorf("Received: <%s>", reply)
}
if err := rater.Call("ApierV1.StopService", servmanager.ArgStartService{ServiceID: "INVALID"},
&reply); err == nil || err.Error() != utils.UnsupportedServiceIDCaps {
t.Error(err)
}
if err := rater.Call("ApierV1.StopService", servmanager.ArgStartService{ServiceID: utils.MetaScheduler},
&reply); err != nil {
t.Error(err)
} else if reply != utils.OK {
t.Errorf("Received: <%s>", reply)
}
if err := rater.Call("ApierV1.ServiceStatus", servmanager.ArgStartService{ServiceID: utils.MetaScheduler},
&reply); err != nil {
t.Error(err)
} else if reply != utils.StoppedCaps {
t.Errorf("Received: <%s>", reply)
}
if err := rater.Call("ApierV1.StartService", servmanager.ArgStartService{ServiceID: utils.MetaScheduler},
&reply); err != nil {
t.Error(err)
} else if reply != utils.OK {
t.Errorf("Received: <%s>", reply)
}
if err := rater.Call("ApierV1.ServiceStatus", servmanager.ArgStartService{ServiceID: utils.MetaScheduler},
&reply); err != nil {
t.Error(err)
} else if reply != utils.RunningCaps {
t.Errorf("Received: <%s>", reply)
}
if err := rater.Call("ApierV1.ReloadScheduler", reply, &reply); err != nil {
t.Error("Got error on ApierV1.ReloadScheduler: ", err.Error())
} else if reply != utils.OK {
t.Error("Calling ApierV1.ReloadScheduler got reply: ", reply)
}
}
/*
func TestApierGetCacheStats3(t *testing.T) {
var rcvStats *utils.CacheStats

View File

@@ -126,7 +126,7 @@ func (srvMngr *ServiceManager) Call(serviceMethod string, args interface{}, repl
return err
}
// ArgShutdownService are passed to ShutdownService RPC method
// ArgShutdownService are passed to Start/StopService/Status RPC methods
type ArgStartService struct {
ServiceID string
}