Additions to measurements
[ric-plt/vespamgr.git] / cmd / vesmgr / config_test.go
old mode 100644 (file)
new mode 100755 (executable)
index 08bde19..da135b4
  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  *  See the License for the specific language governing permissions and
  *  limitations under the License.
+ *
+ *  This source code is part of the near-RT RIC (RAN Intelligent Controller)
+ *  platform project (RICP).
  */
 package main
 
 import (
        "bytes"
        "encoding/json"
-       "github.com/stretchr/testify/assert"
-       "gopkg.in/yaml.v2"
        "io/ioutil"
        "os"
        "testing"
        "time"
+
+       "github.com/stretchr/testify/assert"
+       "gopkg.in/yaml.v2"
 )
 
 func testBaseConf(t *testing.T, vesconf VESAgentConfiguration) {
@@ -33,6 +37,14 @@ func testBaseConf(t *testing.T, vesconf VESAgentConfiguration) {
        assert.Equal(t, vesconf.Event.MaxMissed, 2)
        assert.Equal(t, vesconf.Event.RetryInterval, time.Second*5)
        assert.Equal(t, vesconf.Measurement.Prometheus.KeepAlive, time.Second*30)
+       assert.Equal(t, vesconf.Event.VNFName, defaultVNFName)
+       assert.Equal(t, vesconf.Event.NfNamingCode, defaultNFNamingCode)
+       assert.Equal(t, vesconf.Event.ReportingEntityName, "Vespa")
+       // depending on the credentials with which this test is run,
+       // root or non-root, the code either reads the UUID from the file or
+       // ends up using the default id. Just check the length here,
+       // not the actual value.
+       assert.Len(t, vesconf.Event.ReportingEntityID, len(defaultReportingEntityID))
 }
 
 func TestBasicConfigContainsCorrectValues(t *testing.T) {
@@ -40,7 +52,19 @@ func TestBasicConfigContainsCorrectValues(t *testing.T) {
        testBaseConf(t, vesconf)
 }
 
+func TestBasicConfigContainsCorrectVNFName(t *testing.T) {
+       os.Setenv("VESMGR_VNFNAME", "VNF-111")
+       os.Setenv("VESMGR_NFNAMINGCODE", "code55")
+       vesconf := basicVespaConf()
+       assert.Equal(t, vesconf.Event.VNFName, "VNF-111")
+       assert.Equal(t, vesconf.Event.NfNamingCode, "code55")
+       os.Unsetenv("VESMGR_VNFNAME")
+       os.Unsetenv("VESMGR_NFNAMINGCODE")
+}
+
 func TestCollectorConfiguration(t *testing.T) {
+       os.Unsetenv("VESMGR_VNFNAME")
+       os.Unsetenv("VESMGR_NFNAMINGCODE")
        os.Setenv("VESMGR_PRICOLLECTOR_USER", "user123")
        os.Setenv("VESMGR_PRICOLLECTOR_PASSWORD", "pass123")
        os.Setenv("VESMGR_PRICOLLECTOR_PASSPHRASE", "phrase123")
@@ -64,6 +88,8 @@ func TestCollectorConfiguration(t *testing.T) {
 }
 
 func TestCollectorConfigurationWhenEnvironmentVariablesAreNotDefined(t *testing.T) {
+       os.Unsetenv("VESMGR_VNFNAME")
+       os.Unsetenv("VESMGR_NFNAMINGCODE")
        os.Unsetenv("VESMGR_PRICOLLECTOR_USER")
        os.Unsetenv("VESMGR_PRICOLLECTOR_PASSWORD")
        os.Unsetenv("VESMGR_PRICOLLECTOR_PASSPHRASE")
@@ -130,16 +156,16 @@ func metricsStringToInterfaceArray(metrics string) []interface{} {
 }
 
 func TestParseMetricsRules(t *testing.T) {
-       metricsJson := `{"metrics": [
-                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived" },
-                       { "name": "ricxapp_RMR_ReceiveError", "objectName": "ricxappRMRReceiveErrorCounter", "objectInstance": "ricxappRMRReceiveError" },
-                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted" },
-                       { "name": "ricxapp_RMR_TransmitError", "objectName": "ricxappRMRTransmitErrorCounter", "objectInstance": "ricxappRMRTransmitError" },
-                       { "name": "ricxapp_SDL_Stored", "objectName": "ricxappSDLStoredCounter", "objectInstance": "ricxappSDLStored" },
-                       { "name": "ricxapp_SDL_StoreError", "objectName": "ricxappSDLStoreErrorCounter", "objectInstance": "ricxappSDLStoreError" } ]}`
+       metricsJSON := `{"metrics": [
+                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived", "counterId": "0011" },
+                       { "name": "ricxapp_RMR_ReceiveError", "objectName": "ricxappRMRReceiveErrorCounter", "objectInstance": "ricxappRMRReceiveError", "counterId": "0011" },
+                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted", "counterId": "0011" },
+                       { "name": "ricxapp_RMR_TransmitError", "objectName": "ricxappRMRTransmitErrorCounter", "objectInstance": "ricxappRMRTransmitError", "counterId": "0011" },
+                       { "name": "ricxapp_SDL_Stored", "objectName": "ricxappSDLStoredCounter", "objectInstance": "ricxappSDLStored", "counterId": "0011" },
+                       { "name": "ricxapp_SDL_StoreError", "objectName": "ricxappSDLStoreErrorCounter", "objectInstance": "ricxappSDLStoreError", "counterId": "0011" } ]}`
        appMetrics := make(AppMetrics)
-       var m []interface{} = metricsStringToInterfaceArray(metricsJson)
-       appMetrics = parseMetricsRules(m, appMetrics)
+       m := metricsStringToInterfaceArray(metricsJSON)
+       appMetrics = parseMetricsRules(m, appMetrics, "SEP/XAPP", "X2", "1234", "60")
        assert.Len(t, appMetrics, 6)
        assert.Equal(t, "ricxappRMRreceivedCounter", appMetrics["ricxapp_RMR_Received"].ObjectName)
        assert.Equal(t, "ricxappRMRTransmitErrorCounter", appMetrics["ricxapp_RMR_TransmitError"].ObjectName)
@@ -148,18 +174,18 @@ func TestParseMetricsRules(t *testing.T) {
 
 func TestParseMetricsRulesNoMetrics(t *testing.T) {
        appMetrics := make(AppMetrics)
-       metricsJson := `{"metrics": []`
-       var m []interface{} = metricsStringToInterfaceArray(metricsJson)
-       appMetrics = parseMetricsRules(m, appMetrics)
+       metricsJSON := `{"metrics": []`
+       m := metricsStringToInterfaceArray(metricsJSON)
+       appMetrics = parseMetricsRules(m, appMetrics, "SEP/XAPP", "X2", "1234", "60")
        assert.Empty(t, appMetrics)
 }
 
 func TestParseMetricsRulesAdditionalFields(t *testing.T) {
        appMetrics := make(AppMetrics)
-       metricsJson := `{"metrics": [
-                       { "additionalField": "valueIgnored", "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived" }]}`
-       var m []interface{} = metricsStringToInterfaceArray(metricsJson)
-       appMetrics = parseMetricsRules(m, appMetrics)
+       metricsJSON := `{"metrics": [
+                       { "additionalField": "valueIgnored", "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived", "counterId": "0011" }]}`
+       m := metricsStringToInterfaceArray(metricsJSON)
+       appMetrics = parseMetricsRules(m, appMetrics, "SEP/XAPP", "X2", "1234", "60")
        assert.Len(t, appMetrics, 1)
        assert.Equal(t, "ricxappRMRreceivedCounter", appMetrics["ricxapp_RMR_Received"].ObjectName)
        assert.Equal(t, "ricxappRMRReceived", appMetrics["ricxapp_RMR_Received"].ObjectInstance)
@@ -167,12 +193,12 @@ func TestParseMetricsRulesAdditionalFields(t *testing.T) {
 
 func TestParseMetricsRulesMissingFields(t *testing.T) {
        appMetrics := make(AppMetrics)
-       metricsJson := `{"metrics": [
-                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived" },
+       metricsJSON := `{"metrics": [
+                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived", "counterId": "0011" },
                        { "name": "ricxapp_RMR_ReceiveError", "objectInstance": "ricxappRMRReceiveError" },
-                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted" }]}`
-       var m []interface{} = metricsStringToInterfaceArray(metricsJson)
-       appMetrics = parseMetricsRules(m, appMetrics)
+                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted", "counterId": "0011" }]}`
+       m := metricsStringToInterfaceArray(metricsJSON)
+       appMetrics = parseMetricsRules(m, appMetrics, "SEP/XAPP", "X2", "1234", "60")
        assert.Len(t, appMetrics, 2)
        assert.Equal(t, "ricxappRMRreceivedCounter", appMetrics["ricxapp_RMR_Received"].ObjectName)
        assert.Equal(t, "ricxappRMRTransmittedCounter", appMetrics["ricxapp_RMR_Transmitted"].ObjectName)
@@ -182,12 +208,12 @@ func TestParseMetricsRulesMissingFields(t *testing.T) {
 
 func TestParseMetricsRulesDuplicateDefinitionIsIgnored(t *testing.T) {
        appMetrics := make(AppMetrics)
-       metricsJson := `{"metrics": [
-                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived" },
-                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounterXXX", "objectInstance": "ricxappRMRReceivedXXX" },
-                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted" }]}`
-       var m []interface{} = metricsStringToInterfaceArray(metricsJson)
-       appMetrics = parseMetricsRules(m, appMetrics)
+       metricsJSON := `{"metrics": [
+                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived", "counterId": "0011" },
+                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounterXXX", "objectInstance": "ricxappRMRReceivedXXX", "counterId": "0011" },
+                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted", "counterId": "0011" }]}`
+       m := metricsStringToInterfaceArray(metricsJSON)
+       appMetrics = parseMetricsRules(m, appMetrics, "SEP/XAPP", "X2", "1234", "60")
        assert.Len(t, appMetrics, 2)
        assert.Equal(t, "ricxappRMRreceivedCounter", appMetrics["ricxapp_RMR_Received"].ObjectName)
        assert.Equal(t, "ricxappRMRReceived", appMetrics["ricxapp_RMR_Received"].ObjectInstance)
@@ -195,14 +221,14 @@ func TestParseMetricsRulesDuplicateDefinitionIsIgnored(t *testing.T) {
 
 func TestParseMetricsRulesIncrementalFillOfAppMetrics(t *testing.T) {
        appMetrics := make(AppMetrics)
-       metricsJson1 := `{"metrics": [
-                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived" }]}`
-       metricsJson2 := `{"metrics": [
-                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted" }]}`
-       var m1 []interface{} = metricsStringToInterfaceArray(metricsJson1)
-       var m2 []interface{} = metricsStringToInterfaceArray(metricsJson2)
-       appMetrics = parseMetricsRules(m1, appMetrics)
-       appMetrics = parseMetricsRules(m2, appMetrics)
+       metricsJSON1 := `{"metrics": [
+                       { "name": "ricxapp_RMR_Received", "objectName": "ricxappRMRreceivedCounter", "objectInstance": "ricxappRMRReceived", "counterId": "0011" }]}`
+       metricsJSON2 := `{"metrics": [
+                       { "name": "ricxapp_RMR_Transmitted", "objectName": "ricxappRMRTransmittedCounter", "objectInstance": "ricxappRMRTransmitted", "counterId": "0011" }]}`
+       m1 := metricsStringToInterfaceArray(metricsJSON1)
+       m2 := metricsStringToInterfaceArray(metricsJSON2)
+       appMetrics = parseMetricsRules(m1, appMetrics, "SEP/XAPP", "X2", "1234", "60")
+       appMetrics = parseMetricsRules(m2, appMetrics, "SEP/XAPP", "X2", "1234", "60")
        assert.Len(t, appMetrics, 2)
        assert.Equal(t, "ricxappRMRreceivedCounter", appMetrics["ricxapp_RMR_Received"].ObjectName)
        assert.Equal(t, "ricxappRMRReceived", appMetrics["ricxapp_RMR_Received"].ObjectInstance)
@@ -226,18 +252,18 @@ func TestParseXAppDescriptor(t *testing.T) {
 }
 
 func TestParseXAppDescriptorWithNoConfig(t *testing.T) {
-       metricsJson := `[{{"metadata": "something", "descriptor": "somethingelse"}},
+       metricsJSON := `[{{"metadata": "something", "descriptor": "somethingelse"}},
                         {{"metadata": "something", "descriptor": "somethingelse"}}]`
-       metricsBytes := []byte(metricsJson)
+       metricsBytes := []byte(metricsJSON)
        appMetrics := make(AppMetrics)
        appMetrics = parseMetricsFromXAppDescriptor(metricsBytes, appMetrics)
        assert.Empty(t, appMetrics)
 }
 
 func TestParseXAppDescriptorWithNoMetrics(t *testing.T) {
-       metricsJson := `[{{"metadata": "something", "descriptor": "somethingelse", "config":{}},
+       metricsJSON := `[{{"metadata": "something", "descriptor": "somethingelse", "config":{}},
                         {{"metadata": "something", "descriptor": "somethingelse", "config":{}}}]`
-       metricsBytes := []byte(metricsJson)
+       metricsBytes := []byte(metricsJSON)
        appMetrics := make(AppMetrics)
        appMetrics = parseMetricsFromXAppDescriptor(metricsBytes, appMetrics)
        assert.Empty(t, appMetrics)