2 * ============LICENSE_START=======================================================
\r
4 * ================================================================================
\r
5 * Copyright © 2017 AT&T Intellectual Property. All rights reserved.
\r
6 * Copyright © 2017 Amdocs
\r
7 * ================================================================================
\r
8 * Licensed under the Apache License, Version 2.0 (the "License");
\r
9 * you may not use this file except in compliance with the License.
\r
10 * You may obtain a copy of the License at
\r
12 * http://www.apache.org/licenses/LICENSE-2.0
\r
14 * Unless required by applicable law or agreed to in writing, software
\r
15 * distributed under the License is distributed on an "AS IS" BASIS,
\r
16 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
\r
17 * See the License for the specific language governing permissions and
\r
18 * limitations under the License.
\r
19 * ============LICENSE_END=========================================================
\r
21 * ECOMP is a trademark and service mark of AT&T Intellectual Property.
\r
24 package org.onap.aai.sparky.dal.elasticsearch;
\r
26 import static org.junit.Assert.assertEquals;
\r
27 import static org.junit.Assert.assertNotEquals;
\r
28 import static org.junit.Assert.assertNotNull;
\r
30 import java.io.File;
\r
31 import java.io.IOException;
\r
33 import javax.servlet.ServletException;
\r
35 import org.junit.Assert;
\r
36 import org.junit.Before;
\r
37 import org.junit.Ignore;
\r
38 import org.junit.Test;
\r
39 import org.mockito.Mockito;
\r
40 import org.onap.aai.sparky.dal.elasticsearch.config.ElasticSearchConfig;
\r
41 import org.onap.aai.sparky.dal.exception.ElasticSearchOperationException;
\r
43 import ch.qos.logback.classic.Level;
\r
46 * The Class ElasticSearchConfigTest.
\r
48 public class ElasticSearchConfigTest {
\r
50 private static final String GOOD_MAPPINGS_FILE =
\r
51 "{" + "\"properties\": {" + "\"entityType\": {" + "\"type\": \"string\"" + "},"
\r
52 + "\"edgeTagQueryEntityFieldName\": {" + "\"type\": \"string\"," + "\"index\": \"no\""
\r
53 + "}," + "\"edgeTagQueryEntityFieldValue\": {" + "\"type\": \"string\","
\r
54 + "\"index\": \"no\"" + "}," + "\"searchTagIDs\" : {" + "\"type\" : \"string\"" + "},"
\r
55 + "\"searchTags\": {" + "\"type\": \"string\"," + "\"analyzer\": \"nGram_analyzer\","
\r
56 + "\"search_analyzer\": \"whitespace_analyzer\"}" + "}" + "}";
\r
58 private static final String GOOD_SETTINGS_FILE = "{\"analysis\": {" + "\"filter\": {"
\r
59 + "\"nGram_filter\": {" + "\"type\": \"nGram\"," + "\"min_gram\": 1," + "\"max_gram\": 50,"
\r
60 + "\"token_chars\": [" + "\"letter\"," + "\"digit\"," + "\"punctuation\"," + "\"symbol\""
\r
61 + "]}}," + "\"analyzer\": {" + "\"nGram_analyzer\": {" + "\"type\": \"custom\","
\r
62 + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\"," + "\"asciifolding\","
\r
63 + "\"nGram_filter\"]}," + "\"whitespace_analyzer\": {" + "\"type\": \"custom\","
\r
64 + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\","
\r
65 + "\"asciifolding\"]}}}}";
\r
67 private static final String BAD_SETTINGS_FILE = "{\"analysis\": {" + "\"filter\": {"
\r
68 + "\"nGram_filter\": {" + "\"type\": \"nGram\"," + "\"min_gram\": 1," + "\"max_gram\": 50,"
\r
69 + "\"token_chars\": [" + "\"letter\"," + "\"digit\"," + "\"punctuation\"," + "\"symbol\""
\r
70 + "]}}," + "\"analyzer\": {" + "\"nGram_analyzer\": {" + "\"type\": \"custom\","
\r
71 + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\"," + "\"asciifolding\","
\r
72 + "\"nGram_filter\"]}," + "\"whitespace_analyzer\": {" + "\"type\": \"custom\","
\r
73 + "\"tokenizer\": \"whitespace\"," + "\"filter\": [" + "\"lowercase\","
\r
74 + "\"asciifolding\"]}}";
\r
76 ElasticSearchConfig elasticSearchConfig;
\r
81 * @throws Exception the exception
\r
84 public void init() throws Exception {
\r
85 elasticSearchConfig = Mockito.spy(new ElasticSearchConfig());
\r
89 * Validate accessors.
\r
91 * @throws IOException Signals that an I/O exception has occurred.
\r
92 * @throws ServletException the servlet exception
\r
93 * @throws Exception the exception
\r
96 public void validateAccessors() throws IOException, ServletException, Exception {
\r
98 ElasticSearchConfig esConfig = new ElasticSearchConfig();
\r
100 esConfig.setIpAddress("47.248.10.127");
\r
101 esConfig.setHttpPort("8123");
\r
102 esConfig.setJavaApiPort("9123");
\r
103 esConfig.setIndexName("myIndexName");
\r
104 esConfig.setType("myIndexTableType");
\r
105 esConfig.setClusterName("ES_AAI_DEV");
\r
106 esConfig.setMappingsFileName("d:\\1\\mappings.json");
\r
107 esConfig.setSettingsFileName("d:\\1\\settings.json");
\r
108 esConfig.setAuditIndexName("auditIndexName");
\r
110 ElasticSearchConfig.setConfig(esConfig);
\r
112 assertEquals(esConfig.getIpAddress(), "47.248.10.127");
\r
113 assertEquals(esConfig.getHttpPort(), "8123");
\r
114 assertEquals(esConfig.getJavaApiPort(), "9123");
\r
115 assertEquals(esConfig.getIndexName(), "myIndexName");
\r
116 assertEquals(esConfig.getType(), "myIndexTableType");
\r
117 assertEquals(esConfig.getClusterName(), "ES_AAI_DEV");
\r
118 assertEquals(esConfig.getMappingsFileName(), "d:\\1\\mappings.json");
\r
119 assertEquals(esConfig.getSettingsFileName(), "d:\\1\\settings.json");
\r
120 assertEquals(esConfig.getAuditIndexName(), "auditIndexName");
\r
122 String output = esConfig.toString();
\r
124 assertNotEquals(output, null);
\r
129 * Gets the elastic search settings expect valid config.
\r
131 * @return the elastic search settings expect valid config
\r
132 * @throws IOException Signals that an I/O exception has occurred.
\r
133 * @throws ElasticSearchOperationException the elastic search operation exception Need to revisit
\r
134 * this test case and change the way this class works
\r
137 public void getElasticSearchSettings_expectValidConfig()
\r
138 throws IOException, ElasticSearchOperationException {
\r
139 System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
\r
141 ElasticSearchConfig esConfig = new ElasticSearchConfig();
\r
143 esConfig.setSettingsFileName("src/main/config/es_settings.json");
\r
145 assertNotNull(esConfig.getElasticSearchSettings());
\r
149 * Gets the elastic search settings expect file not found exception.
\r
151 * @return the elastic search settings expect file not found exception
\r
152 * @throws IOException Signals that an I/O exception has occurred.
\r
153 * @throws ElasticSearchOperationException the elastic search operation exception
\r
155 * Need to revisit this test case and change the way this class works
\r
158 public void getElasticSearchSettings_expectFileNotFoundException()
\r
159 throws IOException, ElasticSearchOperationException {
\r
160 System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
\r
162 ElasticSearchConfig esConfig = new ElasticSearchConfig();
\r
164 esConfig.setSettingsFileName("src/main/config/es_setting.json");
\r
166 esConfig.getElasticSearchSettings();
\r
171 * Gets the elastic search mappings expect valid config.
\r
173 * @return the elastic search mappings expect valid config
\r
174 * @throws IOException Signals that an I/O exception has occurred.
\r
175 * @throws ElasticSearchOperationException the elastic search operation exception
\r
177 * Need to revisit this test case and change the way this class works
\r
180 public void getElasticSearchMappings_expectValidConfig()
\r
181 throws IOException, ElasticSearchOperationException {
\r
182 System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
\r
184 ElasticSearchConfig esConfig = new ElasticSearchConfig();
\r
186 esConfig.setMappingsFileName("src/main/config/es_mappings.json");
\r
188 assertNotNull(esConfig.getElasticSearchMappings());
\r
192 * Gets the elastic search mappings expect file not found exception.
\r
194 * @return the elastic search mappings expect file not found exception
\r
195 * @throws IOException Signals that an I/O exception has occurred.
\r
196 * @throws ElasticSearchOperationException the elastic search operation exception
\r
198 @Test(expected = ElasticSearchOperationException.class)
\r
199 public void getElasticSearchMappings_expectFileNotFoundException()
\r
200 throws IOException, ElasticSearchOperationException {
\r
201 System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
\r
203 ElasticSearchConfig esConfig = new ElasticSearchConfig();
\r
205 esConfig.setSettingsFileName("src/main/config/es_setting.json");
\r
207 esConfig.getElasticSearchMappings();
\r
212 * Builds the elastic search table config expect valid result.
\r
214 * @throws ElasticSearchOperationException the elastic search operation exception
\r
215 * @throws IOException Signals that an I/O exception has occurred.
\r
218 public void buildElasticSearchTableConfig_expectValidResult()
\r
219 throws ElasticSearchOperationException, IOException {
\r
220 ElasticSearchConfig spyEsConfig = Mockito.spy(new ElasticSearchConfig());
\r
221 Mockito.doReturn(GOOD_MAPPINGS_FILE).when(spyEsConfig).getElasticSearchMappings();
\r
222 Mockito.doReturn(GOOD_SETTINGS_FILE).when(spyEsConfig).getElasticSearchSettings();
\r
223 Mockito.doReturn("myIndexTableType").when(spyEsConfig).getType();
\r
225 assertNotNull(spyEsConfig.buildElasticSearchTableConfig());
\r
229 * Builds the elastic search table config expect exception.
\r
231 * @throws ElasticSearchOperationException the elastic search operation exception
\r
232 * @throws IOException Signals that an I/O exception has occurred.
\r
234 @Test(expected = ElasticSearchOperationException.class)
\r
235 public void buildElasticSearchTableConfig_expectException()
\r
236 throws ElasticSearchOperationException, IOException {
\r
237 ElasticSearchConfig spyEsConfig = Mockito.spy(new ElasticSearchConfig());
\r
238 Mockito.doReturn(GOOD_MAPPINGS_FILE).when(spyEsConfig).getElasticSearchMappings();
\r
239 Mockito.doReturn(BAD_SETTINGS_FILE).when(spyEsConfig).getElasticSearchSettings();
\r
240 Mockito.doReturn("myIndexTableType").when(spyEsConfig).getType();
\r
242 spyEsConfig.buildElasticSearchTableConfig();
\r
246 public void testGetFullUrl_ThreeParams() throws Exception {
\r
247 Mockito.when(elasticSearchConfig.getIpAddress()).thenReturn("http://localhost");
\r
248 Mockito.when(elasticSearchConfig.getHttpPort()).thenReturn("5443");
\r
249 String fullUrl = elasticSearchConfig.getElasticFullUrl("http://localhost:5443/aai/model/index",
\r
250 "entity-index", "entity");
\r
251 Assert.assertNotNull(fullUrl);
\r
255 public void testGetFullUrl_OneParam() throws Exception {
\r
256 Mockito.when(elasticSearchConfig.getIpAddress()).thenReturn("http://localhost");
\r
257 Mockito.when(elasticSearchConfig.getHttpPort()).thenReturn("5443");
\r
258 Mockito.when(elasticSearchConfig.getIndexName()).thenReturn("entity");
\r
259 String fullUrl = elasticSearchConfig.getElasticFullUrl("http://localhost:5443/aai/model/index");
\r
260 Assert.assertNotNull(fullUrl);
\r
264 public void testGetBulkUrl() throws Exception {
\r
265 Mockito.when(elasticSearchConfig.getIpAddress()).thenReturn("http://localhost");
\r
266 Mockito.when(elasticSearchConfig.getHttpPort()).thenReturn("5443");
\r
267 String fullUrl = elasticSearchConfig.getBulkUrl();
\r
268 Assert.assertNotNull(fullUrl);
\r
272 public void testGetConfigAsString() throws IOException, ElasticSearchOperationException {
\r
273 System.setProperty("AJSC_HOME", new File(".").getCanonicalPath().replace('\\', '/'));
\r
274 String retStr = elasticSearchConfig.getConfigAsString("item-1",
\r
275 System.getProperty("AJSC_HOME") + "/src/test/resources/appconfig/roles.config");
\r
276 Assert.assertNotNull(retStr);
\r