use of org.junit.jupiter.api.Timeout in project zaproxy by zaproxy.
the class DownloadManagerUnitTest method shouldDownloadAllFiles.
@Test
@Timeout(30)
void shouldDownloadAllFiles() throws Exception {
// Given
nano.addHandler(new NanoServerHandler("/") {
@Override
protected Response serve(IHTTPSession session) {
return newFixedLengthResponse("");
}
});
downloadManager.start();
int numberOfDownloads = 1000;
// When
for (int i = 0; i < numberOfDownloads; i++) {
downloadManager.downloadFile(createDownloadUrl(i), createTargetFile(i), 0L, HASH);
}
// Then
waitDownloadManagerFinished();
List<Downloader> progress = downloadManager.getProgress();
assertThat(progress, hasSize(numberOfDownloads));
progress.forEach(download -> {
assertThat(download.getFinished(), is(not(nullValue())));
});
}
use of org.junit.jupiter.api.Timeout in project disruptor by LMAX-Exchange.
the class DisruptorTest method shouldThrowTimeoutExceptionIfShutdownDoesNotCompleteNormally.
@Test
@Timeout(value = 2000, unit = TimeUnit.MILLISECONDS)
public void shouldThrowTimeoutExceptionIfShutdownDoesNotCompleteNormally() throws Exception {
assertThrows(TimeoutException.class, () -> {
// Given
final DelayedEventHandler delayedEventHandler = createDelayedEventHandler();
disruptor.handleEventsWith(delayedEventHandler);
publishEvent();
// Then
disruptor.shutdown(1, SECONDS);
});
}
use of org.junit.jupiter.api.Timeout in project zookeeper by apache.
the class ReadOnlyModeTest method testConnectionEvents.
/**
* Ensures that upon connection to a read-only server client receives
* ConnectedReadOnly state notification.
*/
@Test
@Timeout(value = 90)
public void testConnectionEvents() throws Exception {
qu.enableLocalSession(true);
qu.startQuorum();
CountdownWatcher watcher = new CountdownWatcher();
ZooKeeper zk = new ZooKeeper(qu.getConnString(), CONNECTION_TIMEOUT, watcher, true);
boolean success = false;
for (int i = 0; i < 30; i++) {
try {
zk.create("/test", "test".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
success = true;
break;
} catch (KeeperException.ConnectionLossException e) {
Thread.sleep(1000);
}
}
assertTrue(success, "Did not succeed in connecting in 30s");
assertFalse(watcher.readOnlyConnected, "The connection should not be read-only yet");
// kill peer and wait no more than 5 seconds for read-only server
// to be started (which should take one tickTime (2 seconds))
qu.shutdown(2);
// Re-connect the client (in case we were connected to the shut down
// server and the local session was not persisted).
zk = new ZooKeeper(qu.getConnString(), CONNECTION_TIMEOUT, watcher, true);
long start = Time.currentElapsedTime();
while (!(zk.getState() == States.CONNECTEDREADONLY)) {
Thread.sleep(200);
// TODO this was originally 5 seconds, but realistically, on random/slow/virt hosts, there is no way to guarantee this
assertTrue(Time.currentElapsedTime() - start < 30000, "Can't connect to the server");
}
watcher.waitForReadOnlyConnected(5000);
zk.close();
}
use of org.junit.jupiter.api.Timeout in project zookeeper by apache.
the class ReadOnlyModeTest method testSessionEstablishment.
/**
* Tests a situation when client firstly connects to a read-only server and
* then connects to a majority server. Transition should be transparent for
* the user.
*/
@Test
@Timeout(value = 90)
public void testSessionEstablishment() throws Exception {
qu.enableLocalSession(true);
qu.startQuorum();
qu.shutdown(2);
CountdownWatcher watcher = new CountdownWatcher();
ZooKeeper zk = new ZooKeeper(qu.getConnString(), CONNECTION_TIMEOUT, watcher, true);
watcher.waitForConnected(CONNECTION_TIMEOUT);
assertSame(States.CONNECTEDREADONLY, zk.getState(), "should be in r/o mode");
long fakeId = zk.getSessionId();
LOG.info("Connected as r/o mode with state {} and session id {}", zk.getState(), fakeId);
watcher.reset();
qu.start(2);
assertTrue(ClientBase.waitForServerUp("127.0.0.1:" + qu.getPeer(2).clientPort, CONNECTION_TIMEOUT), "waiting for server up");
LOG.info("Server 127.0.0.1:{} is up", qu.getPeer(2).clientPort);
// ZOOKEEPER-2722: wait until we can connect to a read-write server after the quorum
// is formed. Otherwise, it is possible that client first connects to a read-only server,
// then drops the connection because of shutting down of the read-only server caused
// by leader election / quorum forming between the read-only server and the newly started
// server. If we happen to execute the zk.create after the read-only server is shutdown and
// before the quorum is formed, we will get a ConnectLossException.
watcher.waitForSyncConnected(CONNECTION_TIMEOUT);
assertEquals(States.CONNECTED, zk.getState(), "Should be in read-write mode");
LOG.info("Connected as rw mode with state {} and session id {}", zk.getState(), zk.getSessionId());
zk.create("/test", "test".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
assertFalse(zk.getSessionId() == fakeId, "fake session and real session have same id");
zk.close();
}
use of org.junit.jupiter.api.Timeout in project zookeeper by apache.
the class ReadOnlyModeTest method testGlobalSessionInRO.
@Test
@Timeout(value = 90)
public void testGlobalSessionInRO() throws Exception {
qu.startQuorum();
CountdownWatcher watcher = new CountdownWatcher();
ZooKeeper zk = new ZooKeeper(qu.getConnString(), CONNECTION_TIMEOUT, watcher, true);
watcher.waitForConnected(CONNECTION_TIMEOUT);
LOG.info("global session created 0x{}", Long.toHexString(zk.getSessionId()));
watcher.reset();
qu.shutdown(2);
try {
watcher.waitForConnected(CONNECTION_TIMEOUT);
fail("Should not be able to renew a global session");
} catch (TimeoutException e) {
}
zk.close();
watcher.reset();
zk = new ZooKeeper(qu.getConnString(), CONNECTION_TIMEOUT, watcher, true);
try {
watcher.waitForConnected(CONNECTION_TIMEOUT);
fail("Should not be able to create a global session");
} catch (TimeoutException e) {
}
zk.close();
qu.getPeer(1).peer.enableLocalSessions(true);
zk = new ZooKeeper(qu.getConnString(), CONNECTION_TIMEOUT, watcher, true);
try {
watcher.waitForConnected(CONNECTION_TIMEOUT);
} catch (TimeoutException e) {
fail("Should be able to create a local session");
}
zk.close();
}
Aggregations