package org.async.rmi.resultset;
import org.async.rmi.Modules;
import org.async.rmi.ResultSet;
import org.async.rmi.modules.Exporter;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.rmi.RemoteException;
import static org.async.rmi.Util.writeAndRead;
import static org.hamcrest.CoreMatchers.equalTo;
import static org.junit.Assert.assertThat;
/**
* Created by Barak Bar Orion
* 7/19/15.
*/
public class ResultSetTest {
@SuppressWarnings("UnusedDeclaration")
private static final Logger logger = LoggerFactory.getLogger(ResultSetTest.class);
private static Exporter exporter;
private static FileContentRetriever proxy;
private static FileContentRetriever client;
@BeforeClass
public static void beforeClass() throws Exception {
FileContentRetriever server = new FileContentRetrieverServer();
Modules.getInstance().getConfiguration().setConfigurePort(0);
exporter = Modules.getInstance().getExporter();
proxy = exporter.export(server);
client = writeAndRead(proxy);
}
@AfterClass
public static void afterClass() {
exporter.unexport(proxy);
}
@Before
public void setUp() throws RemoteException {
}
@Test(timeout = 5000)
public void testReadAll() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (ResultSet<Byte> rs = client.retrieve(new File("pom.xml"), 1024)) {
while (rs.next()) {
baos.write(rs.get());
}
}
String collected = new String(baos.toByteArray());
String content = new String(Files.readAllBytes(Paths.get("pom.xml")));
assertThat(content, equalTo(collected));
logger.debug("collected: {}", collected);
}
@Test(timeout = 5000)
public void testOneByte() throws Exception {
byte read = 0;
try (ResultSet<Byte> rs = client.retrieve(new File("pom.xml"), 1024)) {
if (rs.next()) {
read = rs.get();
}
byte firstByte = Files.readAllBytes(Paths.get("pom.xml"))[0];
logger.info("firstByte is " + firstByte);
logger.info("read is " + read);
assertThat(read, equalTo(firstByte));
}
}
@Test(timeout = 5000)
public void testReadAll1() throws Exception {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
try (ResultSet<Byte> rs = client.retrieve(new File("pom.xml"), 1024)) {
while (rs.next()) {
baos.write(rs.get());
}
}
String collected = new String(baos.toByteArray());
String content = new String(Files.readAllBytes(Paths.get("pom.xml")));
assertThat(content, equalTo(collected));
logger.debug("collected: {}", collected);
}
@Test(timeout = 5000)
public void testOneByte1() throws Exception {
byte read = 0;
try (ResultSet<Byte> rs = client.retrieve(new File("pom.xml"), 1024)) {
if (rs.next()) {
read = rs.get();
}
}
byte firstByte = Files.readAllBytes(Paths.get("pom.xml"))[0];
logger.info("firstByte is " + firstByte);
logger.info("read is " + read);
assertThat(read, equalTo(firstByte));
}
}