[RICPLT-1528] xApp Mock improvements...
[ric-plt/e2mgr.git] / tools / xappmock / main / xappmock.go
index 196d1e2..4901de0 100644 (file)
@@ -19,14 +19,16 @@ package main
 import (
        "context"
        "flag"
-       "log"
+       "fmt"
        "os"
        "os/signal"
        "strconv"
        "time"
        "xappmock/dispatcher"
        "xappmock/frontend"
+       "xappmock/logger"
        "xappmock/rmr"
+       "xappmock/sender"
 )
 
 const (
@@ -37,29 +39,39 @@ const (
 var rmrService *rmr.Service
 
 func main() {
+
+       logLevel, _ := logger.LogLevelTokenToLevel("info")
+       logger, err := logger.InitLogger(logLevel)
+       if err != nil {
+               fmt.Printf("#app.main - failed to initialize logger, error: %s", err)
+               os.Exit(1)
+       }
+
        var rmrContext *rmr.Context
        var rmrConfig = rmr.Config{Port: RMR_PORT_DEFAULT, MaxMsgSize: rmr.RMR_MAX_MSG_SIZE, MaxRetries: 10, Flags: 0}
 
        if port, err := strconv.ParseUint(os.Getenv(ENV_RMR_PORT), 10, 16); err == nil {
                rmrConfig.Port = int(port)
        } else {
-               log.Printf("#main - %s: %s, using default (%d).", ENV_RMR_PORT, err, RMR_PORT_DEFAULT)
+               logger.Infof("#main - %s: %s, using default (%d).", ENV_RMR_PORT, err, RMR_PORT_DEFAULT)
        }
 
        rmrService = rmr.NewService(rmrConfig, rmrContext)
-       dispatcherDesc := dispatcher.New(rmrService)
+       jsonSender := sender.NewJsonSender(logger)
+       dispatcherDesc := dispatcher.New(logger, rmrService, jsonSender)
 
        /* Load configuration file*/
-       err := frontend.ProcessConfigurationFile("resources", "conf", ".json",
+       err = frontend.ProcessConfigurationFile("resources", "conf", ".json",
                func(data []byte) error {
                        return frontend.JsonCommandsDecoder(data, dispatcherDesc.JsonCommandsDecoderCB)
                })
 
        if err != nil {
-               log.Fatalf("#main - processing error: %s", err)
+               logger.Errorf("#main - processing error: %s", err)
+               os.Exit(1)
        }
 
-       log.Print("#main - xApp Mock is up and running...")
+       logger.Infof("#main - xApp Mock is up and running...")
 
        flag.Parse()
        cmd := flag.Arg(0) /*first remaining argument after flags have been processed*/
@@ -67,9 +79,9 @@ func main() {
        command, err := frontend.DecodeJsonCommand([]byte(cmd))
 
        if err != nil {
-               log.Printf("#main - command decoding error: %s", err)
+               logger.Errorf("#main - command decoding error: %s", err)
                rmrService.CloseContext()
-               log.Print("#main - xApp Mock is down")
+               logger.Infof("#main - xApp Mock is down")
                return
        }
 
@@ -79,24 +91,25 @@ func main() {
 
        go func() {
                oscall := <-c
-               log.Printf("system call:%+v", oscall)
+               logger.Infof("system call:%+v", oscall)
                cancel()
                rmrService.CloseContext()
        }()
 
-       processStartTime := time.Now()
        dispatcherDesc.ProcessJsonCommand(ctx, command)
        pr := dispatcherDesc.GetProcessResult()
 
        if pr.Err != nil {
-               log.Printf("#main - command processing Error: %s", err)
+               logger.Errorf("#main - command processing Error: %s", err)
        }
 
-       processElapsedTimeInMs := float64(time.Since(processStartTime)) / float64(time.Millisecond)
+       if pr.StartTime != nil {
+               processElapsedTimeInMs := float64(time.Since(*pr.StartTime)) / float64(time.Millisecond)
+               logger.Infof("#main - processing (sending/receiving) messages took %.2f ms", processElapsedTimeInMs)
 
-       log.Printf("#main - processing (sending/receiving) messages took %.2f ms", processElapsedTimeInMs)
-       log.Printf("#main - process result: %s", pr)
+       }
+       logger.Infof("#main - process stats: %s", pr.Stats)
 
        rmrService.CloseContext() // TODO: called twice
-       log.Print("#main - xApp Mock is down")
+       logger.Infof("#main - xApp Mock is down")
 }