Unit tests for UnixRemovableDriveMonitor.

This commit is contained in:
akwizgran
2011-10-05 13:47:38 +02:00
parent 2095c2bbaa
commit a773bbc320
2 changed files with 81 additions and 0 deletions

View File

@@ -28,6 +28,7 @@
<test name='net.sf.briar.plugins.file.LinuxRemovableDriveFinderTest'/>
<test name='net.sf.briar.plugins.file.MacRemovableDriveFinderTest'/>
<test name='net.sf.briar.plugins.file.RemovableDrivePluginTest'/>
<test name='net.sf.briar.plugins.file.UnixRemovableDriveMonitorTest'/>
<test name='net.sf.briar.protocol.AckReaderTest'/>
<test name='net.sf.briar.protocol.BatchReaderTest'/>
<test name='net.sf.briar.protocol.ConsumersTest'/>

View File

@@ -0,0 +1,80 @@
package net.sf.briar.plugins.file;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.TimeUnit;
import junit.framework.TestCase;
import net.sf.briar.TestUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
public class UnixRemovableDriveMonitorTest extends TestCase {
private final File testDir = TestUtils.getTestDirectory();
@Before
public void setUp() {
testDir.mkdirs();
}
@Test
public void testNonexistentDir() throws Exception {
File doesNotExist = new File(testDir, "doesNotExist");
RemovableDriveMonitor monitor = createMonitor(doesNotExist);
monitor.start();
monitor.stop();
}
@Test
public void testOneCallbackPerFile() throws Exception {
final CountDownLatch latch = new CountDownLatch(1);
final List<File> detected = new ArrayList<File>();
// Create a monitor that will wait for two files before stopping
new Thread() {
@Override
public void run() {
try {
RemovableDriveMonitor monitor = createMonitor(testDir);
monitor.start();
detected.add(monitor.waitForInsertion());
detected.add(monitor.waitForInsertion());
monitor.stop();
latch.countDown();
} catch(IOException e) {
fail();
}
}
}.start();
// Create two files in the test directory
File file1 = new File(testDir, "1");
File file2 = new File(testDir, "2");
assertTrue(file1.createNewFile());
assertTrue(file2.createNewFile());
// Wait for the monitor to detect the files
latch.await(1, TimeUnit.SECONDS);
// Check that both files were detected
assertEquals(2, detected.size());
assertTrue(detected.contains(file1));
assertTrue(detected.contains(file2));
}
@After
public void tearDown() {
TestUtils.deleteTestDirectory(testDir);
}
private RemovableDriveMonitor createMonitor(final File dir) {
return new UnixRemovableDriveMonitor() {
@Override
protected String[] getPathsToWatch() {
return new String[] { dir.getPath() };
}
};
}
}