summaryrefslogtreecommitdiffstats
path: root/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests
diff options
context:
space:
mode:
authorTomasz Golabek <tomasz.golabek@nokia.com>2019-03-19 11:37:28 +0100
committerOfir Sonsino <ofir.sonsino@intl.att.com>2019-04-01 13:03:21 +0000
commit967a1208bb29bb7930272c338d1d1eca4b1dbd62 (patch)
tree25013d4bc3c8f275513ffc53df65565505cb320d /common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests
parent84a209835820238f50d84ad5be5b9badaa5283c5 (diff)
Introduced yaml parser as common lib
Introduced parser with capability of search for given json paths. Introduced cucumber tests for gab service Change-Id: I154d71085ee82c1ead7c4e002a488524f60c5d8d Issue-ID: SDC-2094 Signed-off-by: Tomasz Golabek <tomasz.golabek@nokia.com>
Diffstat (limited to 'common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests')
-rw-r--r--common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/pom.xml59
-rw-r--r--common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/RunCucumberTest.java30
-rw-r--r--common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/actions/gabcontroller/GABControllerStepDefinitions.java77
-rw-r--r--common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/org/onap/sdc/gab/cucumber/gab_controller.feature14
-rw-r--r--common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/yaml/faultRegistration.yml412
5 files changed, 592 insertions, 0 deletions
diff --git a/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/pom.xml b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/pom.xml
new file mode 100644
index 0000000000..a9b10c8e81
--- /dev/null
+++ b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/pom.xml
@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.onap.sdc.common</groupId>
+ <artifactId>onap-generic-artifact-browser</artifactId>
+ <version>1.4.0-SNAPSHOT</version>
+ </parent>
+
+ <artifactId>onap-generic-artifact-browser-component-tests</artifactId>
+
+ <properties>
+ <maven-compiler-plugin.version>3.7.0</maven-compiler-plugin.version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+ </properties>
+
+ <dependencies>
+ <!--tested packages-->
+ <dependency>
+ <groupId>org.onap.sdc.common</groupId>
+ <artifactId>onap-generic-artifact-browser-service</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <!--cucumber-->
+ <dependency>
+ <groupId>io.cucumber</groupId>
+ <artifactId>cucumber-java</artifactId>
+ <version>${cucumber.version}</version>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>io.cucumber</groupId>
+ <artifactId>cucumber-junit</artifactId>
+ <version>${cucumber.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <version>${maven-compiler-plugin.version}</version>
+ <configuration>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ <source>8</source>
+ <target>8</target>
+ <compilerArgument>-Werror</compilerArgument>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/RunCucumberTest.java b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/RunCucumberTest.java
new file mode 100644
index 0000000000..3d5bf174bf
--- /dev/null
+++ b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/RunCucumberTest.java
@@ -0,0 +1,30 @@
+/*
+ * ============LICENSE_START=======================================================
+ * GAB
+ * ================================================================================
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdc.gab.cucumber;
+
+import cucumber.api.CucumberOptions;
+import cucumber.api.junit.Cucumber;
+import org.junit.runner.RunWith;
+
+@RunWith(Cucumber.class)
+@CucumberOptions(plugin = {"pretty"})
+public class RunCucumberTest {
+} \ No newline at end of file
diff --git a/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/actions/gabcontroller/GABControllerStepDefinitions.java b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/actions/gabcontroller/GABControllerStepDefinitions.java
new file mode 100644
index 0000000000..9f73a943a7
--- /dev/null
+++ b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/java/org/onap/sdc/gab/cucumber/actions/gabcontroller/GABControllerStepDefinitions.java
@@ -0,0 +1,77 @@
+/*
+ * ============LICENSE_START=======================================================
+ * GAB
+ * ================================================================================
+ * Copyright (C) 2019 Nokia Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * 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.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.sdc.gab.cucumber.actions.gabcontroller;
+
+import static org.junit.Assert.assertEquals;
+
+import cucumber.api.java.Before;
+import cucumber.api.java.en.Given;
+import cucumber.api.java.en.When;
+import cucumber.api.java.en.Then;
+import java.io.IOException;
+import java.util.HashSet;
+import java.util.Set;
+import org.onap.sdc.gab.GABService;
+import org.onap.sdc.gab.GABServiceImpl;
+import org.onap.sdc.gab.model.GABQuery;
+import org.onap.sdc.gab.model.GABQuery.GABQueryType;
+import org.onap.sdc.gab.model.GABResults;
+
+public class GABControllerStepDefinitions {
+
+ private GABService gabService;
+ private String yaml;
+ private GABQueryType gabQueryType;
+ private Set<String> headers;
+ private GABResults actualAnswer;
+
+ public GABControllerStepDefinitions() {
+ headers = new HashSet<>();
+ }
+
+ @Before
+ public void createNewGABService() {
+ gabService = new GABServiceImpl();
+ }
+
+ @Given("^yaml document \"([^\"]*)\" of type \"([^\"]*)\"$")
+ public void prepareYamlFile(String yaml, String type) {
+ this.yaml = yaml;
+ this.gabQueryType = GABQueryType.valueOf(type);
+ }
+
+ @Given("^header to search \"([^\"]*)\"$")
+ public void prepareHeader(String header) {
+ this.headers.add(header);
+ }
+
+ @When("^I ask service for results$")
+ public void executeSearchQuery() throws IOException {
+ GABQuery gabQuery = new GABQuery(headers, yaml, gabQueryType);
+ actualAnswer = gabService.searchFor(gabQuery);
+ }
+
+ @Then("^Service should find (\\d+) results$")
+ public void checkSizeOfTheAnswerEquals(int size) {
+ assertEquals(actualAnswer.getRows().size(), size);
+ }
+
+} \ No newline at end of file
diff --git a/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/org/onap/sdc/gab/cucumber/gab_controller.feature b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/org/onap/sdc/gab/cucumber/gab_controller.feature
new file mode 100644
index 0000000000..d0d1d24514
--- /dev/null
+++ b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/org/onap/sdc/gab/cucumber/gab_controller.feature
@@ -0,0 +1,14 @@
+Feature: GABService usage
+ GABService can find a keywords inside the yaml file
+
+ Scenario: Ask for two-results keyword providing path to yaml
+ Given yaml document "yaml/faultRegistration.yml" of type "PATH"
+ And header to search "event.action[1]"
+ When I ask service for results
+ Then Service should find 2 results
+
+ Scenario: Ask for single-results keyword providing yaml content
+ Given yaml document "event: {presence: required, action: [ any, any, alarm003, Clear ], structure: {}}" of type "CONTENT"
+ And header to search "event.action[1]"
+ When I ask service for results
+ Then Service should find 1 results \ No newline at end of file
diff --git a/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/yaml/faultRegistration.yml b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/yaml/faultRegistration.yml
new file mode 100644
index 0000000000..447af5e469
--- /dev/null
+++ b/common/onap-generic-artifact-browser/onap-generic-artifact-browser-component-tests/src/test/resources/yaml/faultRegistration.yml
@@ -0,0 +1,412 @@
+---
+# registration for Fault\_vMrf\_alarm003
+# Constants: the values of domain, eventName, priority, vfstatus
+# , version, alarmCondition, eventSeverity, eventSourceType,
+# faultFieldsVersion, specificProblem,
+# Variables (to be supplied at runtime) include: eventId, lastEpochMicrosec,
+
+# reportingEntityId, reportingEntityName, sequence, sourceId, sourceName,
+# startEpochMicrosec
+
+event: {presence: required, action: [ any, any, alarm003,RECO-rebuildVnf ],
+ structure: {
+ commonEventHeader: {presence: required, structure: {
+ domain: {presence: required, value: fault},
+ eventName: {presence: required, value: Fault\_vMrf\_alarm003},
+ eventId: {presence: required},
+ nfNamingCode: {value: mrfx},
+ priority: {presence: required, value: Medium},
+ reportingEntityId: {presence: required},
+ reportingEntityName: {presence: required},
+ sequence: {presence: required},
+ sourceId: {presence: required},
+ sourceName: {presence: required},
+ startEpochMicrosec: {presence: required},
+ lastEpochMicrosec: {presence: required},
+ version: {presence: required, value: 3.0}
+ }},
+ faultFields: {presence: required, structure: {
+ alarmCondition: {presence: required, value: alarm003},
+ eventSeverity: {presence: required, value: MAJOR},
+ eventSourceType: {presence: required, value: virtualNetworkFunction},
+ faultFieldsVersion: {presence: required, value: 2.0},
+ specificProblem: {presence: required, value: "Configuration file was
+ corrupt or not present"},
+ vfStatus: {presence: required, value: "Requesting Termination"}
+ }}
+ }}
+---
+# registration for clearing Fault\_vMrf\_alarm003Cleared
+# Constants: the values of domain, eventName, priority,
+# , version, alarmCondition, eventSeverity, eventSourceType,
+# faultFieldsVersion, specificProblem,
+# Variables (to be supplied at runtime) include: eventId,lastEpochMicrosec,
+# reportingEntityId, reportingEntityName, sequence, sourceId,
+# sourceName, startEpochMicrosec, vfStatus
+event: {presence: required, action: [ any, any, alarm003, Clear ], structure: {
+ commonEventHeader: {presence: required, structure: {
+ domain: {presence: required, value: fault},
+ eventName: {presence: required, value: Fault\_vMrf\_alarm003Cleared},
+ eventId: {presence: required},
+ nfNamingCode: {value: mrfx},
+ priority: {presence: required, value: Medium},
+ reportingEntityId: {presence: required},
+ reportingEntityName: {presence: required},
+ sequence: {presence: required},
+ sourceId: {presence: required},
+ sourceName: {presence: required},
+ startEpochMicrosec: {presence: required},
+ lastEpochMicrosec: {presence: required},
+ version: {presence: required, value: 3.0}
+ }},
+ faultFields: {presence: required, structure: {
+ alarmCondition: {presence: required, value: alarm003},
+ eventSeverity: {presence: required, value: NORMAL},
+ eventSourceType: {presence: required, value: virtualNetworkFunction},
+ faultFieldsVersion: {presence: required, value: 2.0},
+ specificProblem: {presence: required, value: "Valid configuration file found"},
+ vfStatus: {presence: required, value: "Requesting Termination"}
+ }}
+}}
+---
+# registration for Heartbeat_vMRF
+# Constants: the values of domain, eventName, priority, version
+# Variables (to be supplied at runtime) include: eventId, lastEpochMicrosec,
+# reportingEntityId, reportingEntityName, sequence, sourceId, sourceName,
+# startEpochMicrosec
+event: {presence: required, heartbeatAction: [3, vnfDown,RECO-rebuildVnf],
+ structure: {
+ commonEventHeader: {presence: required, structure: {
+ domain: {presence: required, value: heartbeat},
+ eventName: {presence: required, value: Heartbeat\_vMrf},
+ eventId: {presence: required},
+ nfNamingCode: {value: mrfx},
+ priority: {presence: required, value: Normal},
+ reportingEntityId: {presence: required},
+ reportingEntityName: {presence: required},
+ sequence: {presence: required},
+ sourceId: {presence: required},
+ sourceName: {presence: required},
+ startEpochMicrosec: {presence: required},
+ lastEpochMicrosec: {presence: required},
+ version: {presence: required, value: 3.0}
+ }},
+ heartbeatFields: {presence: optional, structure:{
+ heartbeatFieldsVersion: {presence: required, value: 1.0},
+ heartbeatInterval: {presence: required, range: [ 15, 300 ], default: 60 }
+ }}
+ }}
+---
+# registration for Mfvs\_vMRF
+# Constants: the values of domain, eventName, priority, version,
+# measurementFieldsVersion, additionalMeasurements.namedArrayOfFields.name,
+# Variables (to be supplied at runtime) include: eventId, reportingEntityName, sequence,
+# sourceName, start/lastEpochMicrosec, measurementInterval,
+# concurrentSessions, requestRate, numberOfMediaPortsInUse,
+# cpuUsageArray.cpuUsage,cpuUsage.cpuIdentifier, cpuUsage.percentUsage,
+# additionalMeasurements.namedArrayOfFields.arrayOfFields,
+# vNicPerformance.receivedOctetsAccumulated,
+# vNicPerformance.transmittedOctetsAccumulated,
+# vNicPerformance.receivedTotalPacketsAccumulated,
+# vNicPerformance.transmittedTotalPacketsAccumulated,
+# vNicPerformance.vNicIdentifier, vNicPerformance.receivedOctetsDelta,
+# vNicPerformance.receivedTotalPacketsDelta,
+# vNicPerformance.transmittedOctetsDelta,
+# vNicPerformance.transmittedTotalPacketsDelta,
+# vNicPerformance.valuesAreSuspect, memoryUsageArray.memoryUsage,
+# memoryUsage.memoryConfigured, memoryUsage.vmIdentifier,
+# memoryUsage.memoryUsed, memoryUsage.memoryFree
+event: {presence: required, structure: {
+ commonEventHeader: {presence: required, structure: {
+ domain: {presence: required, value: measurementsForVfScaling},
+ eventName: {presence: required, value: Mfvs\_vMrf},
+ eventId: {presence: required},
+ nfNamingCode: {value: mrfx},
+ priority: {presence: required, value: Normal},
+ reportingEntityId: {presence: required},
+ reportingEntityName: {presence: required},
+ sequence: {presence: required},
+ sourceId: {presence: required},
+ sourceName: {presence: required},
+ startEpochMicrosec: {presence: required},
+ lastEpochMicrosec: {presence: required},
+ version: {presence: required, value: 3.0}
+ }},
+ measurementsForVfScalingFields: {presence: required, structure: {
+ measurementFieldsVersion: {presence: required, value: 2.0},
+ measurementInterval: {presence: required, range: [ 60, 3600 ], default:300},
+ concurrentSessions: {presence: required, range: [ 0, 100000 ]},
+ requestRate: {presence: required, range: [ 0, 100000 ]},
+ numberOfMediaPortsInUse: {presence: required, range: [ 0, 100000 ]},
+ cpuUsageArray: {presence: required, array: [
+ cpuUsage: {presence: required, structure: {
+ cpuIdentifier: {presence: required},
+ percentUsage: {presence: required, range: [ 0, 100 ],
+ action: [80, up, CpuUsageHigh, RECO-scaleOut],
+ action: [10, down, CpuUsageLow, RECO-scaleIn]}
+ }}
+ ]},
+ memoryUsageArray: {presence: required, array: [
+ memoryUsage: {presence: required, structure: {
+ memoryConfigured: {presence: required, value: 33554432},
+ memoryFree: {presence: required, range: [ 0, 33554432 ],
+ action: [100, down, FreeMemLow, RECO-scaleOut],
+ action: [30198989, up, FreeMemHigh, RECO-scaleIn]},
+ memoryUsed: {presence: required, range: [ 0, 33554432 ]},
+ vmIdentifier: {presence: required}
+ }}
+ ]},
+ additionalMeasurements: {presence: required, array: [
+ namedArrayOfFields: {presence: required, structure: {
+ name: {presence: required, value: licenseUsage},
+ arrayOfFields: {presence: required, array: [
+ field: {presence: required, structure: {
+ name: {presence: required, value: G711AudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: G729AudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: G722AudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: AMRAudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: AMRWBAudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: OpusAudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: H263VideoPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: H264NonHCVideoPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: H264HCVideoPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: MPEG4VideoPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: VP8NonHCVideoPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: VP8HCVideoPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: PLC},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: AEC},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: NR},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: NG},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: NLD},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: G711FaxPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: T38FaxPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: RFactor},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: T140TextPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: EVSAudioPort},
+ value: {presence: required, range: [ 0, 100000 ],
+ units: numberOfPorts }
+ }}
+ ]}
+ }},
+ namedArrayOfFields: {presence: required, structure: {
+ name: {presence: required, value: mediaCoreUtilization},
+ arrayOfFields: {presence: required, array: [
+ field: {presence: required, structure: {
+ name: {presence: required, value: actualAvgAudio},
+ value: {presence: required, range: [ 0, 255 ],
+ action: [80, up, AudioCoreUsageHigh, RECO-scaleOut],
+ action: [10, down, AudioCoreUsageLow, RECO-scaleIn]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: modelAvgAudio},
+ value: {presence: required, range: [ 0, 100 ],
+ action: [80, up, AudioCoreUsageHigh, RECO-scaleOut],
+ action: [10, down, AudioCoreUsageLow, RECO-scaleIn]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: actualMaxAudio},
+ value: {presence: required, range: [ 0, 255 ]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: modelMaxAudio},
+ value: {presence: required, range: [ 0, 100 ]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: actualAvgVideo},
+ value: {presence: required, range: [ 0, 255 ],
+ action: [80, up, VideoCoreUsageHigh, RECO-scaleOut],
+ action: [10, down, VideoCoreUsageLow, RECO-scaleIn]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: modelAvgVideo},
+ value: {presence: required, range: [ 0, 100 ],
+ action: [80, up, VideoCoreUsageHigh, RECO-scaleOut],
+ action: [10, down, VideoCoreUsageLow, RECO-scaleIn]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: actualMaxVideo},
+ value: {presence: required, range: [ 0, 255 ]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: modelMaxVideo},
+ value: {presence: required, range: [ 0, 100 ]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: actualAvgHcVideo},
+ value: {presence: required, range: [ 0, 255 ],
+ action: [80, up, HcVideoCoreUsageHigh, RECO-scaleOut],
+ action: [10, down, HcVideoCoreUsageLow, RECO-scaleIn]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: modelAvgHcVideo},
+ value: {presence: required, range: [ 0, 100 ],
+ action: [80, up, HcVideoCoreUsageHigh, RECO-scaleOut],
+ action: [10, down, HcVideoCoreUsageLow, RECO-scaleIn]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: actualMaxHcVideo},
+ value: {presence: required, range: [ 0, 255 ]}
+ }},
+ field: {presence: required, structure: {
+ name: {presence: required, value: modelMaxHcVideo},
+ value: {presence: required, range: [ 0, 100 ]}
+ }}
+ ]}
+ }}
+ ]},
+ vNicPerformanceArray: {presence: required, array: [
+ vNicPerformance: {presence: required, structure: {
+ receivedOctetsAccumulated: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ receivedTotalPacketsAccumulated: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ receivedOctetsDelta: {presence: required},
+ range: [ 0, 18446744073709551615 ],
+ receivedTotalPacketsDelta: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ transmittedOctetsDelta: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ transmittedOctetsAccumulated: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ transmittedTotalPacketsAccumulated: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ transmittedTotalPacketsDelta: {presence: required,
+ range: [ 0, 18446744073709551615 ]},
+ valuesAreSuspect: {presence: required, value: [ true, false ]},
+ vNicIdentifier: {presence: required}
+ }}
+ ]}
+ }}
+}}
+---
+# registration for Syslog\_vMRF
+# Constants: the values of domain, eventName, priority, lastEpochMicrosec, version,
+# syslogFields.syslogFieldsVersion, syslogFields.syslogTag
+# Variables include: eventId, lastEpochMicrosec, reportingEntityId, reportingEntityName,
+# sequence, sourceId, sourceName, startEpochMicrosec,
+# syslogFields.eventSourceHost, syslogFields.eventSourceType,
+# syslogFields.syslogFacility, syslogFields.syslogMsg
+event: {presence: required, structure: {
+ commonEventHeader: {presence: required, structure: {
+ domain: {presence: required, value: syslog},
+ eventName: {presence: required, value: Syslog\_vMrf},
+ eventId: {presence: required},
+ nfNamingCode: {value: mrfx},
+ priority: {presence: required, value: Normal},
+ reportingEntityId: {presence: required},
+ reportingEntityName: {presence: required},
+ sequence: {presence: required},
+ sourceId: {presence: required},
+ sourceName: {presence: required},
+ startEpochMicrosec: {presence: required},
+ lastEpochMicrosec: {presence: required},
+ version: {presence: required, value: 3.0},
+ }},
+ syslogFields: {presence: required, structure: {
+ eventSourceHost: {presence: required},
+ eventSourceType: {presence: required, value: virtualNetworkFunction},
+ syslogFacility: {presence: required, range: [16, 23]},
+ syslogSev: {presence: required, value: [ 0, 1, 2, 3, 4 ]},
+ syslogFieldsVersion: {presence: required, value: 3.0},
+ syslogMsg: {presence: required},
+ syslogTag: {presence: required, value: vMRF},
+ }}
+}}
+---
+#Rules
+Rules: [
+ rule: {
+ trigger: CpuUsageHigh \|\| FreeMemLow \|\| AudioCoreUsageHigh \|\|
+ VideoCoreUsageHigh \|\| HcVideoCoreUsageHigh,
+ microservices: [scaleOut]
+ },
+ rule: {
+ trigger: CpuUsageLow && FreeMemHigh && AudioCoreUsageLow &&
+ VideoCoreUsageLow && HcVideoCoreUsageLow,
+ microservices: [scaleIn]
+ }
+] \ No newline at end of file