summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJoanna Jeremicz <joanna.jeremicz@nokia.com>2021-01-29 15:43:31 +0100
committerJoanna Jeremicz <joanna.jeremicz@nokia.com>2021-02-09 07:44:39 +0100
commite36a970232174fcb4dc4aecf3d6522f7364d6425 (patch)
tree7f48a40e2d3829dca71540c285e64576b44dbba1
parent5e694ba1575828a51704d2804471918ab5280aa1 (diff)
Add files processing config provider
- Add system variables provider - Add junit tests Issue-ID: DCAEGEN2-2600 Signed-off-by: Joanna Jeremicz <joanna.jeremicz@nokia.com> Change-Id: Ib045270033f8f5ccbd99fc5ae30d0efa9a911a95
-rw-r--r--src/main/java/org/onap/dcaegen2/services/pmmapper/config/EnvironmentReader.java35
-rw-r--r--src/main/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfig.java74
-rw-r--r--src/main/java/org/onap/dcaegen2/services/pmmapper/exceptions/EnvironmentConfigException.java6
-rw-r--r--src/main/resources/Dockerfile1
-rw-r--r--src/test/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfigTest.java66
5 files changed, 180 insertions, 2 deletions
diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/config/EnvironmentReader.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/config/EnvironmentReader.java
new file mode 100644
index 0000000..2d4cf66
--- /dev/null
+++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/config/EnvironmentReader.java
@@ -0,0 +1,35 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Nokia.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.pmmapper.config;
+
+/**
+ * Reads system environment variables
+ */
+public class EnvironmentReader {
+ /**
+ * Reads and returns value of given environment variable
+ * @param key name of the variable
+ * @returns value of environment variable
+ */
+ public String getVariable(String key) {
+ return System.getenv(key);
+ }
+}
diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfig.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfig.java
new file mode 100644
index 0000000..ab549e4
--- /dev/null
+++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfig.java
@@ -0,0 +1,74 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Nokia.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.pmmapper.config;
+
+import java.util.Optional;
+import org.onap.dcaegen2.services.pmmapper.exceptions.EnvironmentConfigException;
+import org.onap.logging.ref.slf4j.ONAPLogAdapter;
+import org.slf4j.LoggerFactory;
+
+/**
+ * Provides external configuration for files processing
+ *
+ */
+public class FilesProcessingConfig {
+
+ private static final String ENV_LIMIT_RATE = "PROCESSING_LIMIT_RATE";
+ private static final int DEFAULT_LIMIT_RATE = 1;
+ private static final ONAPLogAdapter logger = new ONAPLogAdapter(LoggerFactory.getLogger(FilesProcessingConfig.class));
+ private EnvironmentReader environmentReader;
+
+ /**
+ * Creates a FilesProcessingConfig
+ */
+ public FilesProcessingConfig(EnvironmentReader environmentReader) {
+ this.environmentReader = environmentReader;
+ }
+
+ /**
+ * Provides reactor limit rate value from environment variable.
+ * @returns value of limit rate
+ * @throws EnvironmentConfigException
+ */
+ public int getLimitRate() throws EnvironmentConfigException {
+ logger.unwrap().info("Trying to read " + ENV_LIMIT_RATE + " env.");
+ try {
+ return Optional.ofNullable(environmentReader.getVariable(ENV_LIMIT_RATE))
+ .map(this::parseIntegerValue)
+ .orElseGet(this::getDefaultLimitRate);
+ } catch (NumberFormatException exception) {
+ throw new EnvironmentConfigException(
+ ENV_LIMIT_RATE + " environment variable has incorrect value.\n"
+ , exception);
+ }
+ }
+
+ private Integer parseIntegerValue(String val) throws NumberFormatException {
+ Integer value = Integer.valueOf(val);
+ logger.unwrap().info(ENV_LIMIT_RATE + " value is: " + value);
+ return value;
+ }
+
+ private int getDefaultLimitRate() {
+ logger.unwrap().info(ENV_LIMIT_RATE + " env not present. Setting limit rate to default value: " + DEFAULT_LIMIT_RATE);
+ return DEFAULT_LIMIT_RATE;
+ }
+}
diff --git a/src/main/java/org/onap/dcaegen2/services/pmmapper/exceptions/EnvironmentConfigException.java b/src/main/java/org/onap/dcaegen2/services/pmmapper/exceptions/EnvironmentConfigException.java
index 1a0d321..2fff757 100644
--- a/src/main/java/org/onap/dcaegen2/services/pmmapper/exceptions/EnvironmentConfigException.java
+++ b/src/main/java/org/onap/dcaegen2/services/pmmapper/exceptions/EnvironmentConfigException.java
@@ -1,6 +1,7 @@
/*-
* ============LICENSE_START=======================================================
- * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2019 Nordix Foundation.
+ * Copyright (C) 2021 Nokia.
* ================================================================================
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -23,4 +24,7 @@ public class EnvironmentConfigException extends Exception {
public EnvironmentConfigException(String message) {
super(message);
}
+ public EnvironmentConfigException(String message, Throwable throwable) {
+ super(message, throwable);
+ }
}
diff --git a/src/main/resources/Dockerfile b/src/main/resources/Dockerfile
index 981c6e6..cfd8372 100644
--- a/src/main/resources/Dockerfile
+++ b/src/main/resources/Dockerfile
@@ -36,7 +36,6 @@ USER pm-mapper
COPY ${project.build.directory}/${ext.dep.dir.path}/ ${ext.dep.dir.path}/
COPY ${project.build.directory}/${JAR} .
-
COPY ${project.build.directory}/classes/schemas ./etc/schemas/
COPY ${project.build.directory}/classes/templates ./etc/templates/
COPY --chown=pm-mapper ${project.build.directory}/classes/logback.xml ./etc/logback.xml
diff --git a/src/test/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfigTest.java b/src/test/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfigTest.java
new file mode 100644
index 0000000..fd21a39
--- /dev/null
+++ b/src/test/java/org/onap/dcaegen2/services/pmmapper/config/FilesProcessingConfigTest.java
@@ -0,0 +1,66 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * Copyright (C) 2021 Nokia.
+ * ================================================================================
+ * 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.
+ *
+ * SPDX-License-Identifier: Apache-2.0
+ * ============LICENSE_END=========================================================
+ */
+
+package org.onap.dcaegen2.services.pmmapper.config;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertThrows;
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
+
+import org.junit.Test;
+import org.onap.dcaegen2.services.pmmapper.exceptions.EnvironmentConfigException;
+
+public class FilesProcessingConfigTest {
+
+ private static final String ENV_LIMIT_RATE = "PROCESSING_LIMIT_RATE";
+
+ private EnvironmentReader mockEnvironmentReader = mock(EnvironmentReader.class);
+ private FilesProcessingConfig filesProcessingConfig;
+
+ @Test
+ public void shouldReturnCorrectValue_whenVariableIsSet() throws EnvironmentConfigException {
+ when(mockEnvironmentReader.getVariable(ENV_LIMIT_RATE)).thenReturn("128");
+ filesProcessingConfig = new FilesProcessingConfig(mockEnvironmentReader);
+ int limitRate = filesProcessingConfig.getLimitRate();
+
+ assertEquals(128, limitRate);
+ }
+
+ @Test
+ public void shouldThrowEnvironmentConfigException_whenVariableHasWrongValue() {
+ when(mockEnvironmentReader.getVariable(ENV_LIMIT_RATE)).thenReturn("not-an-int");
+ filesProcessingConfig = new FilesProcessingConfig(mockEnvironmentReader);
+ String expectedMessage = "PROCESSING_LIMIT_RATE environment variable has incorrect value.\n";
+ String causeMessage = "For input string: \"not-an-int\"";
+
+ Throwable exception = assertThrows(EnvironmentConfigException.class, () -> filesProcessingConfig.getLimitRate());
+ assertEquals(expectedMessage, exception.getMessage());
+ assertEquals(causeMessage, exception.getCause().getMessage());
+ }
+
+ @Test
+ public void shouldReturnDefaultValue_whenVariableIsNotSet() throws EnvironmentConfigException {
+ filesProcessingConfig = new FilesProcessingConfig(mockEnvironmentReader);
+ int limitRate = filesProcessingConfig.getLimitRate();
+
+ assertEquals(1, limitRate);
+ }
+}