blob: fc64e575a3032016208ab6345503cc31f0b523d1 [file] [log] [blame]
elinuxhenrikcce95ff2021-09-05 17:27:02 +02001// -
2// ========================LICENSE_START=================================
3// O-RAN-SC
4// %%
5// Copyright (C) 2021: Nordix Foundation
6// %%
7// Licensed under the Apache License, Version 2.0 (the "License");
8// you may not use this file except in compliance with the License.
9// You may obtain a copy of the License at
10//
11// http://www.apache.org/licenses/LICENSE-2.0
12//
13// Unless required by applicable law or agreed to in writing, software
14// distributed under the License is distributed on an "AS IS" BASIS,
15// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16// See the License for the specific language governing permissions and
17// limitations under the License.
18// ========================LICENSE_END===================================
19//
20
21package config
22
23import (
elinuxhenrik63a42ca2021-09-06 22:16:24 +020024 "bytes"
elinuxhenrikcce95ff2021-09-05 17:27:02 +020025 "os"
26 "reflect"
27 "testing"
elinuxhenrik63a42ca2021-09-06 22:16:24 +020028
29 log "github.com/sirupsen/logrus"
30 "github.com/stretchr/testify/require"
elinuxhenrikcce95ff2021-09-05 17:27:02 +020031)
32
33func TestNew_envVarsSetConfigContainSetValues(t *testing.T) {
elinuxhenrik65a53d22021-09-29 15:41:26 +020034 assertions := require.New(t)
elinuxhenrikcce95ff2021-09-05 17:27:02 +020035 os.Setenv("LOG_LEVEL", "Debug")
elinuxhenrik382870d2021-09-23 11:09:09 +020036 os.Setenv("INFO_PRODUCER_HOST", "producerHost")
37 os.Setenv("INFO_PRODUCER_PORT", "8095")
elinuxhenrika77cd652021-09-06 10:56:21 +020038 os.Setenv("INFO_COORD_ADDR", "infoCoordAddr")
elinuxhenrik28038562021-09-21 15:43:11 +020039 os.Setenv("MR_HOST", "mrHost")
40 os.Setenv("MR_PORT", "3908")
elinuxhenrikb1fb1d82021-09-07 02:58:52 +020041 t.Cleanup(func() {
42 os.Clearenv()
43 })
elinuxhenrikcce95ff2021-09-05 17:27:02 +020044 wantConfig := Config{
elinuxhenrik65a53d22021-09-29 15:41:26 +020045 LogLevel: log.DebugLevel,
elinuxhenrik382870d2021-09-23 11:09:09 +020046 InfoProducerHost: "producerHost",
47 InfoProducerPort: 8095,
48 InfoCoordinatorAddress: "infoCoordAddr",
49 MRHost: "mrHost",
50 MRPort: 3908,
elinuxhenrikcce95ff2021-09-05 17:27:02 +020051 }
elinuxhenrik65a53d22021-09-29 15:41:26 +020052 got := New()
53
54 assertions.Equal(&wantConfig, got)
elinuxhenrikcce95ff2021-09-05 17:27:02 +020055}
56
elinuxhenrik63a42ca2021-09-06 22:16:24 +020057func TestNew_faultyIntValueSetConfigContainDefaultValueAndWarnInLog(t *testing.T) {
elinuxhenrik63a42ca2021-09-06 22:16:24 +020058 assertions := require.New(t)
59 var buf bytes.Buffer
60 log.SetOutput(&buf)
elinuxhenrik63a42ca2021-09-06 22:16:24 +020061
elinuxhenrik382870d2021-09-23 11:09:09 +020062 os.Setenv("INFO_PRODUCER_PORT", "wrong")
elinuxhenrikb1fb1d82021-09-07 02:58:52 +020063 t.Cleanup(func() {
64 log.SetOutput(os.Stderr)
65 os.Clearenv()
66 })
elinuxhenrikcce95ff2021-09-05 17:27:02 +020067 wantConfig := Config{
elinuxhenrik65a53d22021-09-29 15:41:26 +020068 LogLevel: log.InfoLevel,
elinuxhenrik382870d2021-09-23 11:09:09 +020069 InfoProducerHost: "",
70 InfoProducerPort: 8085,
71 InfoCoordinatorAddress: "http://enrichmentservice:8083",
72 MRHost: "http://message-router.onap",
73 MRPort: 3904,
elinuxhenrik63a42ca2021-09-06 22:16:24 +020074 }
75 if got := New(); !reflect.DeepEqual(got, &wantConfig) {
76 t.Errorf("New() = %v, want %v", got, &wantConfig)
77 }
78 logString := buf.String()
elinuxhenrik382870d2021-09-23 11:09:09 +020079 assertions.Contains(logString, "Invalid int value: wrong for variable: INFO_PRODUCER_PORT. Default value: 8085 will be used")
elinuxhenrik63a42ca2021-09-06 22:16:24 +020080}
81
elinuxhenrik65a53d22021-09-29 15:41:26 +020082func TestNew_envFaultyLogLevelConfigContainDefaultValues(t *testing.T) {
83 assertions := require.New(t)
84 var buf bytes.Buffer
85 log.SetOutput(&buf)
86
87 os.Setenv("LOG_LEVEL", "wrong")
88 t.Cleanup(func() {
89 log.SetOutput(os.Stderr)
90 os.Clearenv()
91 })
92
elinuxhenrik63a42ca2021-09-06 22:16:24 +020093 wantConfig := Config{
elinuxhenrik65a53d22021-09-29 15:41:26 +020094 LogLevel: log.InfoLevel,
elinuxhenrik382870d2021-09-23 11:09:09 +020095 InfoProducerHost: "",
96 InfoProducerPort: 8085,
97 InfoCoordinatorAddress: "http://enrichmentservice:8083",
98 MRHost: "http://message-router.onap",
99 MRPort: 3904,
elinuxhenrikcce95ff2021-09-05 17:27:02 +0200100 }
elinuxhenrik65a53d22021-09-29 15:41:26 +0200101
102 got := New()
103
104 assertions.Equal(&wantConfig, got)
105 logString := buf.String()
106 assertions.Contains(logString, "Invalid log level: wrong. Log level will be Info!")
elinuxhenrikcce95ff2021-09-05 17:27:02 +0200107}