/**
* Copyright (C) 2010-14 diirt developers. See COPYRIGHT.TXT
* All rights reserved. Use is subject to license terms. See LICENSE.TXT
*/
package org.diirt.datasource.file;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.time.Duration;
import java.util.concurrent.CountDownLatch;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import org.diirt.datasource.PVReaderEvent;
import static org.junit.Assert.*;
import org.junit.*;
import static org.hamcrest.Matchers.*;
/**
*
* @author carcassi
*/
public class FileWatcherFileSystemServiceTest {
@Before
public void setUp() {
exec = Executors.newSingleThreadScheduledExecutor();
}
@After
public void tearDown() {
exec.shutdownNow();
}
private ScheduledExecutorService exec = Executors.newSingleThreadScheduledExecutor();
private CountDownLatch latch;
private Runnable task = new Runnable() {
@Override
public void run() {
latch.countDown();
}
};
@Test
public void udpateFile() throws Exception {
File filename = File.createTempFile("file.", ".csv");
PrintWriter writer = new PrintWriter(filename);
writer.println("Name,Value");
writer.println("Andrew,34");
writer.println("Bob,12");
writer.close();
latch = new CountDownLatch(1);
FileWatcherFileSystemService service = new FileWatcherFileSystemService(exec, Duration.ofMillis(100));
service.addWatcher(filename, task);
latch.await(1000, TimeUnit.MILLISECONDS);
assertThat(latch.getCount(), equalTo(1L));
writer = new PrintWriter(new BufferedWriter(new FileWriter(filename)));
writer.println("Charlie,71");
writer.close();
latch.await(1000, TimeUnit.MILLISECONDS);
assertThat(latch.getCount(), equalTo(0L));
}
}