X-Git-Url: https://gerrit.o-ran-sc.org/r/gitweb?a=blobdiff_plain;f=servicemanager%2Finternal%2Fenvreader%2Fenvreader.go;h=0bdbee70e7a01a8065227b3822f9d957dd987473;hb=refs%2Fchanges%2F11%2F12711%2F6;hp=5d1b6de20cf93ca06beeda3e49eaf4e1beeee325;hpb=f2adad008c37b48e3386dfb7cf3949d7175f96b0;p=nonrtric%2Fplt%2Fsme.git diff --git a/servicemanager/internal/envreader/envreader.go b/servicemanager/internal/envreader/envreader.go index 5d1b6de..0bdbee7 100644 --- a/servicemanager/internal/envreader/envreader.go +++ b/servicemanager/internal/envreader/envreader.go @@ -30,10 +30,19 @@ import ( log "github.com/sirupsen/logrus" ) -func ReadDotEnv() (map[string]string, map[string]int, error) { +type ConfigReader interface { + ReadDotEnv() (map[string]string, map[string]int, error) +} + +// RealConfigReader implements ConfigReader +type RealConfigReader struct { +} + +func (r *RealConfigReader) ReadDotEnv() (map[string]string, map[string]int, error) { log.SetFormatter(&log.TextFormatter{ FullTimestamp: true, }) + setLogLevel("Info") env := os.Getenv("SERVICE_MANAGER_ENV") log.Infof("read SERVICE_MANAGER_ENV: %s", env) @@ -61,14 +70,30 @@ func ReadDotEnv() (map[string]string, map[string]int, error) { return nil, nil, err } } - log.Infof("imported .env: %s", envFile) - loglevel, err := log.ParseLevel(myEnv["LOG_LEVEL"]) + setLogLevel(myEnv["LOG_LEVEL"]) + logConfig(myEnv, envFile) + + myPorts, err := createMapPorts(myEnv) + return myEnv, myPorts, err +} + +func setLogLevel(logLevel string) error { + log.SetFormatter(&log.TextFormatter{ + FullTimestamp: true, + }) + + loglevel, err := log.ParseLevel(logLevel) if err != nil { - log.Fatalf("error loading LOG_LEVEL from .env file: %s", err) - return nil, nil, err + log.Fatalf("error loading LOG_LEVEL from .env file: %v", err) + return err } log.SetLevel(loglevel) + return nil +} + +func logConfig(myEnv map[string]string, envFile string) { + log.Infof("imported .env: %s", envFile) log.Infof("KONG_DOMAIN %s", myEnv["KONG_DOMAIN"]) log.Infof("KONG_PROTOCOL %s", myEnv["KONG_PROTOCOL"]) @@ -82,31 +107,34 @@ func ReadDotEnv() (map[string]string, map[string]int, error) { log.Infof("SERVICE_MANAGER_PORT %s", myEnv["SERVICE_MANAGER_PORT"]) log.Infof("TEST_SERVICE_IPV4 %s", myEnv["TEST_SERVICE_IPV4"]) log.Infof("TEST_SERVICE_PORT %s", myEnv["TEST_SERVICE_PORT"]) +} - var myPorts = make(map[string]int) +func createMapPorts(myEnv map[string]string) (map[string]int, error) { + myPorts := make(map[string]int) + var err error myPorts["KONG_DATA_PLANE_PORT"], err = strconv.Atoi(myEnv["KONG_DATA_PLANE_PORT"]) if err != nil { log.Fatalf("error loading KONG_DATA_PLANE_PORT from .env file: %s", err) - return nil, nil, err + return nil, err } myPorts["KONG_CONTROL_PLANE_PORT"], err = strconv.Atoi(myEnv["KONG_CONTROL_PLANE_PORT"]) if err != nil { log.Fatalf("error loading KONG_CONTROL_PLANE_PORT from .env file: %s", err) - return nil, nil, err + return nil, err } myPorts["CAPIF_PORT"], err = strconv.Atoi(myEnv["CAPIF_PORT"]) if err != nil { log.Fatalf("error loading CAPIF_PORT from .env file: %s", err) - return nil, nil, err + return nil, err } myPorts["SERVICE_MANAGER_PORT"], err = strconv.Atoi(myEnv["SERVICE_MANAGER_PORT"]) if err != nil { log.Fatalf("error loading SERVICE_MANAGER_PORT from .env file: %s", err) - return nil, nil, err + return nil, err } // TEST_SERVICE_PORT is required for unit testing, but not required for production @@ -114,9 +142,25 @@ func ReadDotEnv() (map[string]string, map[string]int, error) { myPorts["TEST_SERVICE_PORT"], err = strconv.Atoi(myEnv["TEST_SERVICE_PORT"]) if err != nil { log.Fatalf("error loading TEST_SERVICE_PORT from .env file: %s", err) - return nil, nil, err + return nil, err } } - return myEnv, myPorts, err + return myPorts, err +} + +// MockConfigReader is a mock implementation for testing +type MockConfigReader struct { + MockedConfig map[string]string } + +func (m *MockConfigReader) ReadDotEnv() (map[string]string, map[string]int, error) { + const envFile = "mock" + + setLogLevel(m.MockedConfig["LOG_LEVEL"]) + logConfig(m.MockedConfig, envFile) + + // Return the mocked configuration for testing + myPorts, err := createMapPorts(m.MockedConfig) + return m.MockedConfig, myPorts, err +} \ No newline at end of file