You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2012/10/08 22:37:12 UTC
svn commit: r1395761 - in /commons/proper/configuration/trunk/src:
main/java/org/apache/commons/configuration/reloading/FileHandlerReloadingDetector.java
test/java/org/apache/commons/configuration/reloading/TestFileHandlerReloadingDetector.java
Author: oheger
Date: Mon Oct 8 20:37:12 2012
New Revision: 1395761
URL: http://svn.apache.org/viewvc?rev=1395761&view=rev
Log:
Reworked failing test case. Use now mock objects.
Modified:
commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/reloading/FileHandlerReloadingDetector.java
commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/reloading/TestFileHandlerReloadingDetector.java
Modified: commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/reloading/FileHandlerReloadingDetector.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/reloading/FileHandlerReloadingDetector.java?rev=1395761&r1=1395760&r2=1395761&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/reloading/FileHandlerReloadingDetector.java (original)
+++ commons/proper/configuration/trunk/src/main/java/org/apache/commons/configuration/reloading/FileHandlerReloadingDetector.java Mon Oct 8 20:37:12 2012
@@ -150,7 +150,7 @@ public class FileHandlerReloadingDetecto
public boolean isReloadingRequired()
{
long now = System.currentTimeMillis();
- if (now > lastChecked + getRefreshDelay())
+ if (now >= lastChecked + getRefreshDelay())
{
lastChecked = now;
Modified: commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/reloading/TestFileHandlerReloadingDetector.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/reloading/TestFileHandlerReloadingDetector.java?rev=1395761&r1=1395760&r2=1395761&view=diff
==============================================================================
--- commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/reloading/TestFileHandlerReloadingDetector.java (original)
+++ commons/proper/configuration/trunk/src/test/java/org/apache/commons/configuration/reloading/TestFileHandlerReloadingDetector.java Mon Oct 8 20:37:12 2012
@@ -21,19 +21,13 @@ import static org.junit.Assert.assertFal
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.io.Writer;
import java.net.URL;
import org.apache.commons.configuration.io.FileHandler;
-import org.junit.Before;
-import org.junit.Rule;
+import org.easymock.EasyMock;
import org.junit.Test;
-import org.junit.rules.TemporaryFolder;
/**
* Test class for {@code FileHandlerReloadingDetector}.
@@ -42,71 +36,20 @@ import org.junit.rules.TemporaryFolder;
*/
public class TestFileHandlerReloadingDetector
{
- /** The content of a test file. */
- private static final String CONTENT = "Test file content ";
-
- /** Constant for a sleep interval. */
- private static final long SLEEP_TIME = 200;
-
- /** Helper object for managing temporary files. */
- @Rule
- public TemporaryFolder folder = new TemporaryFolder();
-
- /** A counter for generating test file content. */
- private int count;
+ /** Constant for a file's modification time. */
+ private static final long LAST_MODIFIED = 20121008215654L;
/** The detector to be tested. */
- private FileHandlerReloadingDetector detector;
-
- @Before
- public void setUp() throws Exception
- {
- detector = new FileHandlerReloadingDetector(null, 0);
- }
-
- /**
- * Writes a test file at the specified location.
- *
- * @param f points to the file to be written
- */
- private void writeTestFile(File f)
- {
- Writer out = null;
- try
- {
- out = new FileWriter(f);
- out.write(CONTENT);
- out.write(String.valueOf(count++));
- }
- catch (IOException ioex)
- {
- fail("Could not create test file: " + ioex);
- }
- finally
- {
- if (out != null)
- {
- try
- {
- out.close();
- }
- catch (IOException ioex)
- {
- // ignore
- }
- }
- }
- }
-
/**
* Tests whether an instance can be created with a file handler.
*/
@Test
public void testInitWithFileHandler()
{
- FileHandler handler = new FileHandler();
- detector = new FileHandlerReloadingDetector(handler);
- assertSame("Different file handler", handler, detector.getFileHandler());
+ FileHandler handler = new FileHandler();
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetector(
+ handler);
+ assertSame("Different file handler", handler, detector.getFileHandler());
}
/**
@@ -115,7 +58,7 @@ public class TestFileHandlerReloadingDet
@Test
public void testDefaultRefreshDelay()
{
- detector = new FileHandlerReloadingDetector();
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetector();
assertEquals("Wrong delay", 5000, detector.getRefreshDelay());
}
@@ -125,6 +68,7 @@ public class TestFileHandlerReloadingDet
@Test
public void testLocationAfterInit()
{
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetector();
assertFalse("Got a location", detector.getFileHandler()
.isLocationDefined());
}
@@ -135,35 +79,24 @@ public class TestFileHandlerReloadingDet
@Test
public void testIsReloadingRequiredNoLocation()
{
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetector();
assertFalse("Reloading", detector.isReloadingRequired());
}
/**
- * Helper method for testing whether the need for a reload operation is
- * detected.
- *
- * @return the test file used by this method
- */
- private File checkReloadingDetect() throws IOException,
- InterruptedException
- {
- File f = folder.newFile();
- detector.getFileHandler().setFile(f);
- writeTestFile(f);
- assertFalse("Reloading required", detector.isReloadingRequired());
- Thread.sleep(SLEEP_TIME);
- writeTestFile(f);
- assertTrue("Reloading not detected", detector.isReloadingRequired());
- return f;
- }
-
- /**
* Tests whether a changed file is detected.
*/
@Test
public void testIsReloadingRequiredTrue() throws Exception
{
- checkReloadingDetect();
+ File f = EasyMock.createMock(File.class);
+ EasyMock.expect(f.exists()).andReturn(Boolean.TRUE).anyTimes();
+ EasyMock.expect(f.lastModified()).andReturn(LAST_MODIFIED);
+ EasyMock.expect(f.lastModified()).andReturn(LAST_MODIFIED + 1);
+ EasyMock.replay(f);
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetectorTestImpl(f);
+ assertFalse("Reloading required", detector.isReloadingRequired());
+ assertTrue("Reloading not detected", detector.isReloadingRequired());
}
/**
@@ -173,11 +106,17 @@ public class TestFileHandlerReloadingDet
@Test
public void testReloadingAndReset() throws Exception
{
- File f = checkReloadingDetect();
+ File f = EasyMock.createMock(File.class);
+ EasyMock.expect(f.exists()).andReturn(Boolean.TRUE).anyTimes();
+ EasyMock.expect(f.lastModified()).andReturn(LAST_MODIFIED);
+ EasyMock.expect(f.lastModified()).andReturn(LAST_MODIFIED + 1).times(3);
+ EasyMock.expect(f.lastModified()).andReturn(LAST_MODIFIED + 2);
+ EasyMock.replay(f);
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetectorTestImpl(f);
+ assertFalse("Reloading required", detector.isReloadingRequired());
+ assertTrue("Reloading not detected", detector.isReloadingRequired());
detector.reloadingPerformed();
assertFalse("Still reloading required", detector.isReloadingRequired());
- Thread.sleep(SLEEP_TIME);
- writeTestFile(f);
assertTrue("Next reloading not detected",
detector.isReloadingRequired());
}
@@ -188,16 +127,15 @@ public class TestFileHandlerReloadingDet
@Test
public void testRefreshDelay() throws Exception
{
- FileHandler handler = new FileHandler();
- detector = new FileHandlerReloadingDetector(handler, 60 * 60 * 1000L);
- File f = folder.newFile();
- handler.setFile(f);
- writeTestFile(f);
+ File f = EasyMock.createMock(File.class);
+ EasyMock.expect(f.exists()).andReturn(Boolean.TRUE).anyTimes();
+ EasyMock.expect(f.lastModified()).andReturn(LAST_MODIFIED).times(2);
+ EasyMock.replay(f);
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetectorTestImpl(
+ f, 60 * 60 * 1000L);
detector.reloadingPerformed();
assertFalse("Reloading initially required",
detector.isReloadingRequired());
- Thread.sleep(SLEEP_TIME);
- writeTestFile(f);
assertFalse("Reloading required", detector.isReloadingRequired());
}
@@ -207,6 +145,7 @@ public class TestFileHandlerReloadingDet
@Test
public void testIsReloadingRequiredFileDoesNotExist()
{
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetector();
detector.getFileHandler().setFile(new File("NonExistingFile.txt"));
detector.reloadingPerformed();
assertFalse("Reloading required", detector.isReloadingRequired());
@@ -218,6 +157,7 @@ public class TestFileHandlerReloadingDet
@Test
public void testGetFileJarURL() throws Exception
{
+ FileHandlerReloadingDetector detector = new FileHandlerReloadingDetector();
URL url =
new URL("jar:"
+ new File("conf/resources.jar").getAbsoluteFile()
@@ -228,4 +168,46 @@ public class TestFileHandlerReloadingDet
assertEquals("Detector does not monitor the jar file", "resources.jar",
file.getName());
}
+
+ /**
+ * A test implementation which allows mocking the monitored file.
+ */
+ private static class FileHandlerReloadingDetectorTestImpl extends
+ FileHandlerReloadingDetector {
+ /** The mock file. */
+ private final File mockFile;
+
+ /**
+ * Creates a new instance of
+ * {@code FileHandlerReloadingDetectorTestImpl} and initializes it with
+ * the mock file.
+ *
+ * @param file the mock file
+ */
+ public FileHandlerReloadingDetectorTestImpl(File file) {
+ this(file, 0);
+ }
+
+ /**
+ * Creates a new instance of
+ * {@code FileHandlerReloadingDetectorTestImpl} and initializes it with
+ * the mock file and a refresh delay.
+ *
+ * @param file the mock file
+ * @param delay the delay
+ */
+ public FileHandlerReloadingDetectorTestImpl(File file, long delay)
+ {
+ super(null, delay);
+ mockFile = file;
+ }
+
+ /**
+ * Always returns the mock file.
+ */
+ @Override
+ protected File getFile() {
+ return mockFile;
+ }
+ }
}