package net.i2p.client.streaming.impl; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.util.Properties; import net.i2p.I2PAppContext; import net.i2p.client.I2PClient; import net.i2p.client.I2PClientFactory; import net.i2p.client.I2PSession; import net.i2p.util.Log; import junit.framework.TestCase; abstract class StreamingITBase extends TestCase { // TODO: this may need to start a full router protected abstract Properties getProperties(); protected I2PSession createSession() throws Exception { I2PClient client = I2PClientFactory.createClient(); ByteArrayOutputStream baos = new ByteArrayOutputStream(512); client.createDestination(baos); Properties p = getProperties(); I2PSession sess = client.createSession(new ByteArrayInputStream(baos.toByteArray()), p); sess.connect(); return sess; } protected abstract Runnable getClient(I2PAppContext ctx, I2PSession session); protected final Thread runClient(I2PAppContext ctx, I2PSession session) { Thread t = new Thread(getClient(ctx,session)); t.setName("client"); t.setDaemon(true); t.start(); return t; } protected abstract class RunnerBase implements Runnable { protected final I2PAppContext _context; protected final I2PSession _session; protected final Log _log; protected RunnerBase(I2PAppContext ctx, I2PSession session) { _context = ctx; _session = session; _log = ctx.logManager().getLog(this.getClass()); } } protected abstract Runnable getServer(I2PAppContext ctx, I2PSession session); protected final Thread runServer(I2PAppContext ctx, I2PSession session) { Thread t = new Thread(getServer(ctx,session)); t.setName("servert"); t.setDaemon(true); t.start(); return t; } }