blob: 7b734c49f1697322f056f158c401a8f9ba9191e8 [file] [log] [blame]
// ***************************************************************************************************************************
// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file *
// * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file *
// * to you 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 org.apache.juneau.config.store;
import static org.junit.Assert.*;
import static org.apache.juneau.testutils.TestUtils.*;
import java.util.concurrent.*;
import org.junit.*;
public class ConfigClasspathStoreTest {
@Test
public void testNoFile() throws Exception {
ConfigClasspathStore fs = ConfigClasspathStore.create().build();
assertEquals("", fs.read("X.cfg"));
}
@Test
public void testRealFiles() throws Exception {
ConfigClasspathStore fs = ConfigClasspathStore.create().build();
assertContains(fs.read("foo1.cfg"), "bar1");
assertContains(fs.read("sub/foo2.cfg"), "bar2");
assertEquals("", fs.read("sub/bad.cfg"));
assertEquals("", fs.read("bad/bad.cfg"));
}
@Test
public void testOverwriteRealFiles() throws Exception {
ConfigClasspathStore fs = ConfigClasspathStore.create().build();
assertContains(fs.read("foo1.cfg"), "bar1");
fs.write("foo1.cfg", fs.read("foo1.cfg"), "xxx");
assertEquals("xxx", fs.read("foo1.cfg"));
}
@Test
public void testSimpleCreate() throws Exception {
ConfigClasspathStore fs = ConfigClasspathStore.create().build();
assertNull(fs.write("X.cfg", null, "foo"));
assertEquals("foo", fs.read("X.cfg"));
}
@Test
public void testFailOnMismatch() throws Exception {
ConfigClasspathStore fs = ConfigClasspathStore.create().build();
assertNotNull(fs.write("X.cfg", "xxx", "foo"));
assertEquals("", fs.read("X.cfg"));
assertNull(fs.write("X.cfg", null, "foo"));
assertEquals("foo", fs.read("X.cfg"));
assertNotNull(fs.write("X.cfg", "xxx", "foo"));
assertEquals("foo", fs.read("X.cfg"));
assertNull(fs.write("X.cfg", "foo", "bar"));
assertEquals("bar", fs.read("X.cfg"));
}
@Test
public void testUpdate() throws Exception {
ConfigClasspathStore fs = ConfigClasspathStore.create().build();
final CountDownLatch latch = new CountDownLatch(2);
fs.register("X.cfg", new ConfigStoreListener() {
@Override
public void onChange(String contents) {
if ("xxx".equals(contents))
latch.countDown();
}
});
fs.register("Y.cfg", new ConfigStoreListener() {
@Override
public void onChange(String contents) {
if ("yyy".equals(contents))
latch.countDown();
}
});
fs.update("X.cfg", "xxx");
fs.update("Y.cfg", "yyy");
if (! latch.await(10, TimeUnit.SECONDS))
throw new Exception("CountDownLatch never reached zero.");
}
@Test
public void testExists() throws Exception {
ConfigClasspathStore.DEFAULT.write("foo.cfg", null, "foo");
assertTrue(ConfigClasspathStore.DEFAULT.exists("foo.cfg"));
assertFalse(ConfigClasspathStore.DEFAULT.exists("foo2.cfg"));
ConfigClasspathStore.DEFAULT.write("foo.cfg", "foo", null);
assertFalse(ConfigClasspathStore.DEFAULT.exists("foo.cfg"));
assertFalse(ConfigClasspathStore.DEFAULT.exists("foo2.cfg"));
}
}