package aQute.lib.remote;
import java.io.File;
import java.io.IOException;
import java.util.Formatter;
import aQute.lib.io.IO;
import aQute.libg.remote.sink.RemoteSink;
import aQute.libg.remote.source.RemoteSource;
import junit.framework.TestCase;
public class RemoteTest extends TestCase {
File sinkDir;
File sourceDir;
private RemoteSource source;
private RemoteSink sink;
public void setUp() throws Exception {
sinkDir = create("generated/sink/" + getName(), null);
sourceDir = create("generated/source/" + getName(), "testresources/remote");
super.setUp();
source = new RemoteSource();
sink = new RemoteSink(sinkDir, source);
source.open(sink, sourceDir, "test");
}
@Override
protected void tearDown() throws Exception {
IO.delete(sinkDir);
IO.delete(sourceDir);
super.tearDown();
}
private File create(String dir, String source) throws IOException {
File tmp = IO.getFile(dir);
IO.delete(tmp);
tmp.mkdirs();
if (source == null)
return tmp;
File src = IO.getFile(source);
IO.copy(src, tmp);
return tmp;
}
public void testCmdTransform() throws Exception {
// List<String> args = Arrays.asList("java", "-cp",
// IO.getFile("bin_test").getAbsolutePath(),
// "aQute.lib.remote.Foo");
// StringBuilder sb = new StringBuilder();
// source.launch(new HashMap<String,String>(), args, System.in, sb,
// System.err);
// source.join();
// assertTrue(IO.getFile(sinkDir, "areas/test/cwd/test").isFile());
// assertEquals("Hooray!\n", sb.toString());
}
public void testTransform() throws Exception {
File file = new File(sourceDir, "list");
Formatter f = new Formatter();
f.format("%s\n", IO.getFile(sourceDir, "a.txt").getAbsolutePath());
f.format("%s\n", IO.getFile(sourceDir, "b.txt").getAbsolutePath());
f.format("%s\n", IO.getFile("bnd.bnd").getAbsolutePath());
IO.store(f.toString(), file);
f.close();
source.update(file);
source.sync();
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/a.txt").isFile());
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/b.txt").isFile());
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/list").isFile());
assertTrue(IO.getFile(sinkDir, "shacache/9124D0084FC1DECD361E82332F535E6371496CEB").isFile());
assertTrue(IO.getFile(sinkDir, "shacache/A6A4DB850D85C513F549A51A3315A67B50EA86F2").isFile());
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/_ABS").isDirectory());
}
public void testSimple() throws Exception {
source.add(sourceDir);
source.sync();
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/a.txt").isFile());
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/b.txt").isFile());
assertTrue(IO.getFile(sinkDir, "shacache/9124D0084FC1DECD361E82332F535E6371496CEB").isFile());
assertTrue(IO.getFile(sinkDir, "shacache/A6A4DB850D85C513F549A51A3315A67B50EA86F2").isFile());
assertEquals(2, sinkDir.list().length);
assertFalse(IO.getFile(sinkDir, "areas/test/cwd/_ABS").isDirectory());
source.add(new File("testresources/remote"));
source.sync();
assertTrue(IO.getFile(sinkDir, "areas/test/cwd/_ABS").isDirectory());
assertEquals(2, IO.getFile(sinkDir, "shacache").list().length);
}
}