package org.limewire.http; import java.io.File; import java.io.IOException; import java.io.RandomAccessFile; import java.util.Random; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import org.limewire.nio.NIODispatcher; public class HttpTestUtils { /** * Waits for the NIO dispatcher to complete a processing pending events. */ public static void waitForNIO() throws InterruptedException { Future<?> future = NIODispatcher.instance().getScheduledExecutorService().submit(new Runnable() { public void run() { } }); try { future.get(); } catch(ExecutionException ee) { throw new IllegalStateException(ee); } // the runnable is run at the beginning of the processing cycle so // we need a second runnable to make sure the cycle has been completed future = NIODispatcher.instance().getScheduledExecutorService().submit(new Runnable() { public void run() { } }); try { future.get(); } catch(ExecutionException ee) { throw new IllegalStateException(ee); } } public static byte[] writeRandomData(File file, int size) throws IOException { byte[] data = new byte[size]; Random r = new Random(); r.nextBytes(data); RandomAccessFile raf = new RandomAccessFile(file, "rw"); try { raf.write(data); } finally { raf.close(); } return data; } public static void writeData(File file, String data) throws IOException { writeData(file, data.getBytes("US-ASCII")); } public static void writeData(File file, byte[] data) throws IOException { RandomAccessFile raf = new RandomAccessFile(file, "rw"); try { raf.write(data); } finally { raf.close(); } } }