blob: 31dd598ab1a828ee523cd972233174b16c0f7597 [file] [log] [blame]
/*
* Copyright (C) 2015 The Android Open Source Project
*
* 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
*/
package com.android.compatibility.common.util;
import com.android.tradefed.util.FileUtil;
import com.android.tradefed.util.StreamUtil;
import junit.framework.TestCase;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.List;
import java.util.Map;
/**
* Unit tests for {@link DynamicConfigHandler}
*/
public class DynamicConfigHandlerTest extends TestCase {
private static final String localConfig =
"<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
"<dynamicConfig>\n" +
" <entry key=\"test-config-1\">\n" +
" <value>test config 1</value>\n" +
" </entry>\n" +
" <entry key=\"test-config-2\">\n" +
" <value>test config 2</value>\n" +
" </entry>\n" +
" <entry key=\"override-config-2\">\n" +
" <value>test config 3</value>\n" +
" </entry>\n" +
" <entry key=\"config-list\">\n" +
" <value>config0</value>\n" +
" <value>config1</value>\n" +
" <value>config2</value>\n" +
" <value>config3</value>\n" +
" <value>config4</value>\n" +
" </entry>\n" +
" <entry key=\"override-config-list-2\">\n" +
" <value>A</value>\n" +
" <value>B</value>\n" +
" <value>C</value>\n" +
" <value>D</value>\n" +
" <value>E</value>\n" +
" </entry>\n" +
"</dynamicConfig>\n";
private static final String overrideJson =
"{\n" +
" \"dynamicConfigEntries\": {\n" +
" \"override-config-1\": {\n" +
" \"configValues\": [\n" +
" \"override-config-val-1\"\n" +
" ]\n" +
" },\n" +
" \"override-config-2\": {\n" +
" \"configValues\": [\n" +
" \"override-config-val-2\"\n" +
" ]\n" +
" },\n" +
" \"override-config-list-1\": {\n" +
" \"configValues\": [\n" +
" \"override-config-list-val-1-1\",\n" +
" \"override-config-list-val-1-2\"\n" +
" ]\n" +
" },\n" +
" \"override-config-list-2\": {\n" +
" \"configValues\": [\n" +
" \"override-config-list-val-2-1\"\n" +
" ]\n" +
" },\n" +
" \"override-config-list-3\": {\n" +
" \"configValues\": [\n" +
" ]\n" +
" }\n" +
" }\n" +
"}";
public void testDynamicConfigHandler() throws Exception {
String module = "test1";
File localConfigFile = createFileFromStr(localConfig, module);
File mergedFile = null;
try {
mergedFile = DynamicConfigHandler
.getMergedDynamicConfigFile(localConfigFile, overrideJson, module);
Map<String, List<String>> configMap = DynamicConfig.createConfigMap(mergedFile);
assertEquals("override-config-val-1", configMap.get("override-config-1").get(0));
assertTrue(configMap.get("override-config-list-1")
.contains("override-config-list-val-1-1"));
assertTrue(configMap.get("override-config-list-1")
.contains("override-config-list-val-1-2"));
assertTrue(configMap.get("override-config-list-3").size() == 0);
assertEquals("test config 1", configMap.get("test-config-1").get(0));
assertTrue(configMap.get("config-list").contains("config2"));
assertEquals("override-config-val-2", configMap.get("override-config-2").get(0));
assertEquals(1, configMap.get("override-config-list-2").size());
assertTrue(configMap.get("override-config-list-2")
.contains("override-config-list-val-2-1"));
} finally {
FileUtil.deleteFile(localConfigFile);
FileUtil.recursiveDelete(mergedFile.getParentFile());
}
}
private File createFileFromStr(String configStr, String module) throws IOException {
File file = File.createTempFile(module, "dynamic");
FileOutputStream stream = null;
try {
stream = new FileOutputStream(file);
stream.write(configStr.getBytes());
stream.flush();
} finally {
StreamUtil.close(stream);
}
return file;
}
}