error = true;
latch.countDown();
}
}
AsynchronousFileImpl controller = new AsynchronousFileImpl(executor, pollerExecutor);
ByteBuffer buffer = null;
try
{
final int SIZE = 512;
controller.open(FILE_NAME, 10);
controller.close();
controller = new AsynchronousFileImpl(executor, pollerExecutor);
controller.open(FILE_NAME, 10);
controller.fill(0, 1, 512, (byte)'j');
buffer = AsynchronousFileImpl.newBuffer(SIZE);
buffer.clear();
for (int i = 0; i < SIZE; i++)
{
buffer.put((byte)(i % 100));
}
LocalCallback callbackLocal = new LocalCallback();
controller.write(0, 512, buffer, callbackLocal);
callbackLocal.latch.await();
ByteBuffer newBuffer = ByteBuffer.allocateDirect(50);
callbackLocal = new LocalCallback();
controller.read(0, 50, newBuffer, callbackLocal);
callbackLocal.latch.await();
Assert.assertTrue(callbackLocal.error);
callbackLocal = new LocalCallback();
byte bytes[] = new byte[512];
try
{
newBuffer = ByteBuffer.wrap(bytes);
controller.read(0, 512, newBuffer, callbackLocal);
Assert.fail("An exception was supposed to be thrown");
}
catch (HornetQException ignored)
{
}
newBuffer = AsynchronousFileImpl.newBuffer(512);
callbackLocal = new LocalCallback();
controller.read(0, 512, newBuffer, callbackLocal);
callbackLocal.latch.await();
Assert.assertFalse(callbackLocal.error);
newBuffer.rewind();
byte[] bytesRead = new byte[SIZE];
newBuffer.get(bytesRead);
for (int i = 0; i < SIZE; i++)
{
Assert.assertEquals((byte)(i % 100), bytesRead[i]);
}
}
finally
{
AsynchronousFileImpl.destroyBuffer(buffer);
try
{
controller.close();
}
catch (HornetQException ignored)
{
}