2 * ============LICENSE_START=======================================================
3 * ONAP : ccsdk features
4 * ================================================================================
5 * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property.
7 * ================================================================================
8 * Licensed under the Apache License, Version 2.0 (the "License");
9 * you may not use this file except in compliance with the License.
10 * You may obtain a copy of the License at
12 * http://www.apache.org/licenses/LICENSE-2.0
14 * Unless required by applicable law or agreed to in writing, software
15 * distributed under the License is distributed on an "AS IS" BASIS,
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17 * See the License for the specific language governing permissions and
18 * limitations under the License.
19 * ============LICENSE_END=========================================================
22 package org.onap.ccsdk.features.sdnr.wt.common.test;
24 import static org.junit.Assert.*;
27 import java.io.IOException;
28 import java.lang.reflect.Field;
29 import java.net.MalformedURLException;
31 import java.nio.file.Files;
32 import java.util.Collections;
35 import org.junit.After;
36 import org.junit.Before;
37 import org.junit.Test;
38 import org.onap.ccsdk.features.sdnr.wt.common.configuration.ConfigurationFileRepresentation;
39 import org.onap.ccsdk.features.sdnr.wt.common.configuration.exception.ConversionException;
40 import org.onap.ccsdk.features.sdnr.wt.common.configuration.filechange.IConfigChangedListener;
41 import org.onap.ccsdk.features.sdnr.wt.common.configuration.subtypes.Section;
42 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo;
43 import org.onap.ccsdk.features.sdnr.wt.common.database.config.HostInfo.Protocol;
45 public class TestConfig {
47 private static final String TESTFILENAME = "test.properties";
48 private static final String TESTKEY1 = "abc";
49 private static final String TESTKEY2 = "def";
50 private static final String TESTKEY3 = "hhh";
51 private static final String TESTKEY4 = "hhv";
53 private static final int TESTVALUE1 = 123;
54 private static final int TESTVALUE1_2 = 1234;
55 private static final boolean TESTVALUE2 = true;
56 private static final String TESTVALUE3 = "http://localhost:2223";
57 private static final String TESTVALUE4 = "httasdasdas";
58 private static final String TESTCONTENT1 = " [test]\n" + TESTKEY1 + "=" + TESTVALUE1 + "\n" + "#her a comment\n"
59 + TESTKEY2 + "=" + TESTVALUE2 + "\n" + TESTKEY3 + "=" + TESTVALUE3;
66 File f = new File(TESTFILENAME);
72 public void write(String filename, String lines) {
75 Files.write(new File(filename).toPath(), lines.getBytes());
76 } catch (IOException e) {
77 fail("problem writing file " + filename);
82 public void testRead() {
83 this.write(TESTFILENAME, TESTCONTENT1);
84 ConfigurationFileRepresentation confiuration = new ConfigurationFileRepresentation(TESTFILENAME);
85 Section section = confiuration.getSection("test").get();
86 assertNotNull(section);
88 assertEquals(TESTVALUE1, section.getInt(TESTKEY1, 0));
89 assertEquals(TESTVALUE2, section.getBoolean(TESTKEY2, !TESTVALUE2));
90 assertEquals(TESTVALUE3, section.getString(TESTKEY3, ""));
91 } catch (ConversionException e) {
98 public void testWrite() {
99 final String SECTIONNAME = "test";
101 ConfigurationFileRepresentation confiuration = new ConfigurationFileRepresentation(TESTFILENAME);
102 Section section = confiuration.addSection(SECTIONNAME);
104 section.setProperty(TESTKEY1, String.valueOf(TESTVALUE1));
105 section.setProperty(TESTKEY2, String.valueOf(TESTVALUE2));
106 section.setProperty(TESTKEY3, String.valueOf(TESTVALUE3));
110 ConfigurationFileRepresentation confiuration2 = new ConfigurationFileRepresentation(TESTFILENAME);
112 section = confiuration2.getSection(SECTIONNAME).get();
113 assertNotNull(section);
115 assertEquals(TESTVALUE1, section.getInt(TESTKEY1, 0));
116 assertEquals(TESTVALUE2, section.getBoolean(TESTKEY2, !TESTVALUE2));
117 assertEquals(TESTVALUE3, section.getString(TESTKEY3, ""));
118 } catch (ConversionException e) {
119 fail(e.getMessage());
123 //write directly into base
124 confiuration = new ConfigurationFileRepresentation(TESTFILENAME);
125 section = confiuration.addSection(SECTIONNAME);
126 confiuration.setProperty(SECTIONNAME, TESTKEY1, TESTVALUE1);
127 confiuration.setProperty(SECTIONNAME, TESTKEY2, TESTVALUE2);
128 confiuration.setProperty(SECTIONNAME, TESTKEY3, TESTVALUE3);
132 confiuration2 = new ConfigurationFileRepresentation(TESTFILENAME);
133 section = confiuration2.getSection(SECTIONNAME).get();
134 assertNotNull(section);
135 assertEquals(TESTVALUE1, confiuration.getPropertyLong(SECTIONNAME, TESTKEY1).get().intValue());
136 assertEquals(TESTVALUE2, confiuration.getPropertyBoolean(SECTIONNAME, TESTKEY2));
137 assertEquals(TESTVALUE3, confiuration.getProperty(SECTIONNAME, TESTKEY3));
144 public void testOverwrite() {
145 final String SECTIONNAME = "test";
147 ConfigurationFileRepresentation confiuration = new ConfigurationFileRepresentation(TESTFILENAME);
148 Section section = confiuration.addSection(SECTIONNAME);
150 section.setProperty(TESTKEY1, String.valueOf(TESTVALUE1));
151 section.setProperty(TESTKEY2, String.valueOf(TESTVALUE2));
152 section.setProperty(TESTKEY3, String.valueOf(TESTVALUE3));
156 ConfigurationFileRepresentation confiuration2 = new ConfigurationFileRepresentation(TESTFILENAME);
158 section = confiuration2.getSection(SECTIONNAME).get();
160 assertNotNull(section);
162 assertEquals(TESTVALUE1, section.getInt(TESTKEY1, 0));
163 assertEquals(TESTVALUE2, section.getBoolean(TESTKEY2, !TESTVALUE2));
164 assertEquals(TESTVALUE3, section.getString(TESTKEY3, ""));
165 } catch (ConversionException e) {
166 fail(e.getMessage());
169 //write directly into base
170 confiuration = new ConfigurationFileRepresentation(TESTFILENAME);
171 section = confiuration.addSection(SECTIONNAME);
172 confiuration.setPropertyIfNotAvailable(SECTIONNAME, TESTKEY1, TESTVALUE1_2);
173 confiuration.setPropertyIfNotAvailable(SECTIONNAME, TESTKEY4, TESTVALUE4);
178 confiuration2 = new ConfigurationFileRepresentation(TESTFILENAME);
179 section = confiuration2.getSection(SECTIONNAME).get();
180 assertNotNull(section);
181 assertEquals(TESTVALUE1, confiuration.getPropertyLong(SECTIONNAME, TESTKEY1).get().intValue());
182 assertEquals(TESTVALUE2, confiuration.getPropertyBoolean(SECTIONNAME, TESTKEY2));
183 assertEquals(TESTVALUE3, confiuration.getProperty(SECTIONNAME, TESTKEY3));
184 assertEquals(TESTVALUE4, confiuration.getProperty(SECTIONNAME, TESTKEY4));
190 static boolean changeFlag = false;
193 public void testChangeListener() {
197 ConfigurationFileRepresentation confiuration = new ConfigurationFileRepresentation(TESTFILENAME);
198 IConfigChangedListener listener = new IConfigChangedListener() {
201 public void onConfigChanged() {
205 confiuration.registerConfigChangedListener(listener);
208 } catch (InterruptedException e) {
209 Thread.currentThread().interrupt();
211 this.write(TESTFILENAME, TESTCONTENT1);
216 } catch (InterruptedException e) {
217 Thread.currentThread().interrupt();
223 confiuration.unregisterConfigChangedListener(listener);
224 assertTrue("changelistener not called", changeFlag);
228 public void testHostInfo() {
229 HostInfo hi = HostInfo.getDefault();
232 } catch (MalformedURLException e) {
233 fail("url conversion failed: " + e.getMessage());
235 hi = new HostInfo("localhost", 44444, Protocol.getValueOf("https"));
238 } catch (MalformedURLException e) {
239 fail("url conversion failed: " + e.getMessage());
245 public void testEnvPropert() {
246 final String KEY = "basada";
247 Section section = new Section("test");
248 section.addLine(KEY + "=${USER} in ${HOME}");
249 section.parseLines();
250 assertTrue(section.getProperty(KEY).length() > " in ".length());
253 public static void setEnv(String key, String value) {
255 Map<String, String> env = System.getenv();
256 Class<?> cl = env.getClass();
257 Field field = cl.getDeclaredField("m");
258 field.setAccessible(true);
259 Map<String, String> writableEnv = (Map<String, String>) field.get(env);
260 writableEnv.put(key, value);
261 } catch (Exception e) {
262 throw new IllegalStateException("Failed to set environment variable", e);