VOL-2086 unit tests for arouter.go;
Set exit status on errors
Change-Id: Ic395f454ed7e1d7ebc9b429b3c44cb0a2e785311
diff --git a/cmd/arouter/arouter.go b/cmd/arouter/arouter.go
index cfd0282..9415362 100644
--- a/cmd/arouter/arouter.go
+++ b/cmd/arouter/arouter.go
@@ -27,17 +27,19 @@
"os"
)
-func main() {
+// startup arouter, return exit status as an integer
+func startup() int {
conf, err := afrouter.ParseCmd()
if err != nil {
fmt.Printf("Error: %v\n", err)
- return
+ return 1
}
// Setup logging
if _, err := log.SetDefaultLogger(log.JSON, *conf.LogLevel, log.Fields{"instanceId": conf.InstanceID}); err != nil {
log.With(log.Fields{"error": err}).Fatal("Cannot setup logging")
+ return 1
}
defer func() {
@@ -52,14 +54,14 @@
if *conf.DisplayVersionOnly {
fmt.Println("VOLTHA API Server (afrouter)")
fmt.Println(version.VersionInfo.String(" "))
- return
+ return 0
}
// Parse the config file
err = conf.LoadConfig()
if err != nil {
log.Error(err)
- return
+ return 1
}
log.With(log.Fields{"config": *conf}).Debug("Configuration loaded")
@@ -72,18 +74,29 @@
err = afrouter.InitExitHandler()
if err != nil {
log.Errorf("Failed to initialize exit handler, exiting: %v", err)
- return
+ return 1
}
// Create the affinity router proxy...
if ap, err := afrouter.NewArouterProxy(conf); err != nil {
log.Errorf("Failed to create the arouter proxy, exiting:%v", err)
- return
+ return 1
// and start it.
// This function never returns unless an error
// occurs or a signal is caught.
+ } else if *conf.DryRun {
+ // Do nothing
} else if err := ap.ListenAndServe(); err != nil {
log.Errorf("Exiting on error %v", err)
+ return 1
}
+ return 0
+}
+
+func main() {
+ status := startup()
+ if status != 0 {
+ os.Exit(status)
+ }
}