package org.dcache.oncrpc4j.rpcgen;
import org.dcache.xdr.RpcAuthTypeNone;
import org.junit.Assert;
import org.junit.Test;
import java.util.concurrent.TimeUnit;
/**
* @author Radai Rosenblatt
*/
public class AsyncBlobStoreTest extends AbstractBlobStoreTest {
@Test
public void testTonsOfQueuedRequests() throws Exception {
Key k = new Key();
byte[] blob = {1, 2, 3, 4};
k.setData(blob);
Value v = new Value();
v.notNull = true;
v.data = blob;
serverImpl.setSleepFor(0);
int size = 150000;
RpcAuthTypeNone auth = new RpcAuthTypeNone();
int issued = 0;
int collected = 0;
try {
for (int i = 0; i < size; i++) {
client.put_1_oneway(k, v, auth);
issued++;
}
System.err.println(size + " requests enqueued");
} finally {
System.err.println("issued " + issued + " collected " + collected);
}
long timeout = System.currentTimeMillis() + TimeUnit.MINUTES.toMillis(1L);
while (System.currentTimeMillis() < timeout) {
Thread.sleep(100);
if (serverImpl.getNumRequestsProcessed() >= size) {
break;
}
}
Assert.assertTrue("not all requests sent were processed within the timeout", serverImpl.getNumRequestsProcessed() >= size);
}
}