import static org.mockito.Mockito.when;
import java.util.concurrent.CountDownLatch;
-import java.util.concurrent.atomic.AtomicInteger;
import net.pterodactylus.sone.core.WebOfTrustUpdaterImpl.AddContextJob;
import net.pterodactylus.sone.core.WebOfTrustUpdaterImpl.RemoveContextJob;
}
@Test
- public void multipleCallsToAddContextAreCollapsed() throws InterruptedException, PluginException {
- final AtomicInteger errorCount = new AtomicInteger();
- final CountDownLatch addContextsFinished = new CountDownLatch(2);
- for (int i = 1; i <= 2; i++) {
- /* this is so fucking volatile. */
- if (i > 1) {
- sleep(200);
- }
- new Thread(new Runnable() {
- public void run() {
- if (!webOfTrustUpdater.addContextWait(ownIdentity, CONTEXT)) {
- errorCount.incrementAndGet();
- }
- addContextsFinished.countDown();
- }
- }).start();
- }
- webOfTrustUpdater.start();
- assertThat(addContextsFinished.await(1, SECONDS), is(true));
- verify(ownIdentity).addContext(eq(CONTEXT));
- assertThat(errorCount.get(), is(0));
- }
-
- @Test
public void removeContextRemovesAContext() throws InterruptedException, PluginException {
webOfTrustUpdater.start();
final CountDownLatch removeContextTrigger = new CountDownLatch(1);