Allow benchmarks to use the testing suite

This commit is contained in:
ionutboangiu
2024-11-04 19:28:05 +02:00
committed by Dan Christian Bogos
parent 66c119dba7
commit c498af5211
2 changed files with 15 additions and 13 deletions

View File

@@ -319,7 +319,7 @@ func GetDefaultEmptyCacheStats() map[string]*ltcache.CacheStats {
}
// NewRPCClient creates and returns a new RPC client for cgr-engine.
func NewRPCClient(t *testing.T, cfg *config.ListenCfg, encoding string) *birpc.Client {
func NewRPCClient(t testing.TB, cfg *config.ListenCfg, encoding string) *birpc.Client {
t.Helper()
var err error
var client *birpc.Client
@@ -352,11 +352,13 @@ type TestEngine struct {
// PreStartHook executes custom logic relying on CGRConfig
// before starting cgr-engine.
PreStartHook func(*testing.T, *config.CGRConfig)
PreStartHook func(testing.TB, *config.CGRConfig)
// TODO: add possibility to pass environment vars
}
// Run initializes a cgr-engine instance for testing. It calls t.Fatal on any setup failure.
func (ng TestEngine) Run(t *testing.T, extraFlags ...string) (*birpc.Client, *config.CGRConfig) {
func (ng TestEngine) Run(t testing.TB, extraFlags ...string) (*birpc.Client, *config.CGRConfig) {
t.Helper()
cfg := parseCfg(t, ng.ConfigPath, ng.ConfigJSON, ng.DBCfg)
FlushDBs(t, cfg, !ng.PreserveDataDB, !ng.PreserveStorDB)
@@ -388,7 +390,7 @@ type DBCfg struct {
// parseCfg initializes and returns a CGRConfig. It handles both static and
// dynamic configs, including custom DB settings. For dynamic configs, it
// creates temporary configuration files in a new directory.
func parseCfg(t *testing.T, cfgPath, cfgJSON string, dbCfg DBCfg) (cfg *config.CGRConfig) {
func parseCfg(t testing.TB, cfgPath, cfgJSON string, dbCfg DBCfg) (cfg *config.CGRConfig) {
t.Helper()
if cfgPath == "" && cfgJSON == "" {
t.Fatal("missing config source")
@@ -455,7 +457,7 @@ func parseCfg(t *testing.T, cfgPath, cfgJSON string, dbCfg DBCfg) (cfg *config.C
// loadCSVs loads tariff plan data from CSV files. The CSV files are created based on the csvFiles map, where
// the key represents the file name and the value the contains its contents. Assumes the data is loaded
// automatically (RunDelay != 0)
func loadCSVs(t *testing.T, tpPath string, csvFiles map[string]string) {
func loadCSVs(t testing.TB, tpPath string, csvFiles map[string]string) {
t.Helper()
if tpPath != "" {
for fileName, content := range csvFiles {
@@ -467,8 +469,8 @@ func loadCSVs(t *testing.T, tpPath string, csvFiles map[string]string) {
}
}
// flushDBs resets the databases specified in the configuration if the corresponding flags are true.
func FlushDBs(t *testing.T, cfg *config.CGRConfig, flushDataDB, flushStorDB bool) {
// FlushDBs resets the databases specified in the configuration if the corresponding flags are true.
func FlushDBs(t testing.TB, cfg *config.CGRConfig, flushDataDB, flushStorDB bool) {
t.Helper()
if flushDataDB {
if err := InitDataDB(cfg); err != nil {
@@ -484,7 +486,7 @@ func FlushDBs(t *testing.T, cfg *config.CGRConfig, flushDataDB, flushStorDB bool
// startEngine starts the CGR engine process with the provided configuration
// and flags. It writes engine logs to the provided logBuffer (if any).
func startEngine(t *testing.T, cfg *config.CGRConfig, logBuffer io.Writer, extraFlags ...string) {
func startEngine(t testing.TB, cfg *config.CGRConfig, logBuffer io.Writer, extraFlags ...string) {
t.Helper()
binPath, err := exec.LookPath("cgr-engine")
if err != nil {
@@ -522,7 +524,7 @@ func startEngine(t *testing.T, cfg *config.CGRConfig, logBuffer io.Writer, extra
}
}
func WaitForService(t *testing.T, ctx *context.Context, client *birpc.Client, service string) {
func WaitForService(t testing.TB, ctx *context.Context, client *birpc.Client, service string) {
t.Helper()
method := service + ".Ping"
backoff := utils.FibDuration(time.Millisecond, 0)

View File

@@ -59,7 +59,7 @@ func TestNatsConcurrentReaders(t *testing.T) {
testEnv := engine.TestEngine{
ConfigPath: filepath.Join(*utils.DataDir, "conf/samples/ers_nats"),
Encoding: *utils.Encoding,
PreStartHook: func(t *testing.T, c *config.CGRConfig) {
PreStartHook: func(t testing.TB, c *config.CGRConfig) {
nc := connectToNATSServer(t, "nats://127.0.0.1:4222")
// Initialize a stream manager and create a stream.
@@ -278,7 +278,7 @@ resolver_preload: {
testEnv := engine.TestEngine{
ConfigJSON: fmt.Sprintf(natsCfg, tc.sourcePath, tc.readerOpts),
Encoding: utils.MetaJSON,
PreStartHook: func(t *testing.T, c *config.CGRConfig) {
PreStartHook: func(t testing.TB, c *config.CGRConfig) {
rdrOpts := c.ERsCfg().ReaderCfg("nats_reader").Opts
nop, err := GetNatsOpts(rdrOpts, c.GeneralCfg().NodeID, time.Second)
if err != nil {
@@ -424,7 +424,7 @@ resolver_preload: {
testEnv := engine.TestEngine{
ConfigJSON: fmt.Sprintf(natsCfg, tc.sourcePath, tc.readerOpts),
Encoding: utils.MetaJSON,
PreStartHook: func(t *testing.T, c *config.CGRConfig) {
PreStartHook: func(t testing.TB, c *config.CGRConfig) {
rdrOpts := c.ERsCfg().ReaderCfg("nats_reader").Opts
nop, err := GetNatsOpts(rdrOpts, c.GeneralCfg().NodeID, time.Second)
if err != nil {
@@ -464,7 +464,7 @@ resolver_preload: {
}
}
func connectToNATSServer(t *testing.T, url string, opts ...nats.Option) *nats.Conn {
func connectToNATSServer(t testing.TB, url string, opts ...nats.Option) *nats.Conn {
t.Helper()
deadline := time.Now().Add(500 * time.Millisecond)
time.Sleep(5 * time.Millisecond) // takes around 5ms for the server to be available