List of usage examples for java.util.concurrent.atomic AtomicReference AtomicReference
public AtomicReference()
From source file:com.networknt.openapi.ValidatorHandlerTest.java
@Test public void testDeleteWithHeader() throws Exception { final Http2Client client = Http2Client.getInstance(); final CountDownLatch latch = new CountDownLatch(1); final ClientConnection connection; try {// ww w . j a v a 2s . c o m connection = client.connect(new URI("http://localhost:8080"), Http2Client.WORKER, Http2Client.SSL, Http2Client.POOL, OptionMap.EMPTY).get(); } catch (Exception e) { throw new ClientException(e); } final AtomicReference<ClientResponse> reference = new AtomicReference<>(); try { ClientRequest request = new ClientRequest().setPath("/v1/pets/111").setMethod(Methods.DELETE); request.getRequestHeaders().put(new HttpString("key"), "key"); connection.sendRequest(request, client.createClientCallback(reference, latch)); latch.await(); } catch (Exception e) { logger.error("Exception: ", e); throw new ClientException(e); } finally { IoUtils.safeClose(connection); } int statusCode = reference.get().getResponseCode(); String body = reference.get().getAttachment(Http2Client.RESPONSE_BODY); Assert.assertEquals(200, statusCode); if (statusCode == 200) { Assert.assertNotNull(body); Assert.assertEquals("deletePetById", body); } }
From source file:com.microsoft.tfs.client.common.ui.teambuild.egit.dialogs.GitBuildDefinitionDialog.java
private GitRepository getBuildProjectRepository() { final GitRepositoriesMap repositoriesMap = getRepositoriesMap(); final List<GitRepository> repositories = repositoriesMap.getServerRepositories(); final AtomicReference<String> repositoryName = new AtomicReference<String>(); final String buildFileLocation = buildDefinition.getConfigurationFolderPath(); if (GitProperties.parseGitItemUrl(buildFileLocation, null, repositoryName, null, null)) { for (final GitRepository repository : repositories) { if (repository.getName().equalsIgnoreCase(repositoryName.get())) { return repository; }//from w w w .ja v a 2 s . co m } } return null; }
From source file:com.netflix.iep.http.RxHttpTest.java
@Test public void notModified() throws Exception { int code = 304; statusCode.set(code);// w w w .j ava 2s. c om redirects.set(2); AtomicIntegerArray expected = copy(statusCounts); expected.addAndGet(code, 1); final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Throwable> throwable = new AtomicReference<>(); rxHttp.get(uri("/notModified")).subscribe(Actions.empty(), new Action1<Throwable>() { @Override public void call(Throwable t) { latch.countDown(); throwable.set(t); } }, new Action0() { @Override public void call() { latch.countDown(); } }); latch.await(); assertEquals(expected, statusCounts); Assert.assertNull(throwable.get()); }
From source file:com.vmware.admiral.host.BaseManagementHostClusterIT.java
private <T extends ServiceDocument> T doGet(ServiceHost host, String selfLink, Class<T> type, String token) { AtomicReference<T> result = new AtomicReference<>(); TestContext ctx = testContext();//from w ww. j av a 2 s . co m QueryTask q = QueryUtil.buildPropertyQuery(type, ServiceDocument.FIELD_NAME_SELF_LINK, selfLink); QueryUtil.addExpandOption(q); host.sendRequest(Operation .createGet(UriUtils.buildUri(host, ServiceUriPaths.CORE_DOCUMENT_INDEX, "documentSelfLink=" + selfLink)) .addRequestHeader(Operation.REQUEST_AUTH_TOKEN_HEADER, token).setBody(q).setReferer(host.getUri()) .setCompletion((o, e) -> { if (e != null) { ctx.failIteration(e); } else { result.set(o.getBody(type)); ctx.completeIteration(); } })); ctx.await(); return result.get(); }
From source file:org.springframework.cloud.sleuth.instrument.web.client.TraceWebClientAutoConfiguration.java
Mono<HttpClientResponse> wrapHttpClientRequestSending(ProceedingJoinPoint pjp, BiFunction<? super HttpClientRequest, ? super NettyOutbound, ? extends Publisher<Void>> function) throws Throwable { // add headers and set CS final Span currentSpan = this.tracer.currentSpan(); final AtomicReference<Span> span = new AtomicReference<>(); BiFunction<HttpClientRequest, NettyOutbound, Publisher<Void>> combinedFunction = (req, nettyOutbound) -> { try (Tracer.SpanInScope spanInScope = this.tracer.withSpanInScope(currentSpan)) { io.netty.handler.codec.http.HttpHeaders originalHeaders = req.requestHeaders().copy(); io.netty.handler.codec.http.HttpHeaders tracedHeaders = req.requestHeaders(); span.set(this.handler.handleSend(this.injector, tracedHeaders, req)); if (log.isDebugEnabled()) { log.debug("Handled send of " + span.get()); }//from w ww .j a v a2 s.co m io.netty.handler.codec.http.HttpHeaders addedHeaders = tracedHeaders.copy(); originalHeaders.forEach(header -> addedHeaders.remove(header.getKey())); try (Tracer.SpanInScope clientInScope = this.tracer.withSpanInScope(span.get())) { if (log.isDebugEnabled()) { log.debug("Created a new client span for Netty client"); } return handle(function, new TracedHttpClientRequest(req, addedHeaders), nettyOutbound); } } }; // run Mono<HttpClientResponse> responseMono = (Mono<HttpClientResponse>) pjp .proceed(new Object[] { combinedFunction }); // get response return responseMono.doOnSuccessOrError((httpClientResponse, throwable) -> { try (Tracer.SpanInScope ws = this.tracer.withSpanInScope(span.get())) { // status codes and CR if (span.get() != null) { this.handler.handleReceive(httpClientResponse, throwable, span.get()); if (log.isDebugEnabled()) { log.debug("Setting client sent spans"); } } } }); }
From source file:com.networknt.client.oauth.OauthHelper.java
public static Result<TokenResponse> getTokenFromSamlResult(SAMLBearerRequest tokenRequest) { final AtomicReference<Result<TokenResponse>> reference = new AtomicReference<>(); final Http2Client client = Http2Client.getInstance(); final CountDownLatch latch = new CountDownLatch(1); final ClientConnection connection; try {/*from w w w . j a v a2 s .com*/ connection = client.connect(new URI(tokenRequest.getServerUrl()), Http2Client.WORKER, Http2Client.SSL, Http2Client.BUFFER_POOL, tokenRequest.enableHttp2 ? OptionMap.create(UndertowOptions.ENABLE_HTTP2, true) : OptionMap.EMPTY) .get(); } catch (Exception e) { logger.error("cannot establish connection:", e); return Failure.of(new Status(ESTABLISH_CONNECTION_ERROR)); } try { IClientRequestComposable requestComposer = ClientRequestComposerProvider.getInstance() .getComposer(ClientRequestComposerProvider.ClientRequestComposers.SAML_BEARER_REQUEST_COMPOSER); connection.getIoThread() .execute(new TokenRequestAction(tokenRequest, requestComposer, connection, reference, latch)); latch.await(4, TimeUnit.SECONDS); } catch (Exception e) { logger.error("IOException: ", e); return Failure.of(new Status(FAIL_TO_SEND_REQUEST)); } finally { IoUtils.safeClose(connection); } //if reference.get() is null at this point, mostly likely couldn't get token within latch.await() timeout. return reference.get() == null ? Failure.of(new Status(GET_TOKEN_TIMEOUT)) : reference.get(); }
From source file:com.microsoft.tfs.client.common.ui.teambuild.egit.dialogs.GitBuildDefinitionDialog.java
private String getBuildProjectRelativePath() { final String buildFileLocation = buildDefinition.getConfigurationFolderPath(); final AtomicReference<String> path = new AtomicReference<String>(); if (GitProperties.parseGitItemUrl(buildFileLocation, null, null, null, path)) { return path.get() + GitProperties.PathSeparator + BuildConstants.PROJECT_FILE_NAME; }/*from w w w. j a v a 2 s . c om*/ return null; }
From source file:org.elasticsearch.client.sniff.SnifferTests.java
/** * Test behaviour when a bunch of onFailure sniffing rounds are triggered in parallel. Each run will always * schedule a subsequent afterFailure round. Also, for each onFailure round that starts, the net scheduled round * (either afterFailure or ordinary) gets cancelled. *//* w w w . j a v a 2s.c o m*/ public void testSniffOnFailure() throws Exception { RestClient restClient = mock(RestClient.class); CountingHostsSniffer hostsSniffer = new CountingHostsSniffer(); final AtomicBoolean initializing = new AtomicBoolean(true); final long sniffInterval = randomLongBetween(1, Long.MAX_VALUE); final long sniffAfterFailureDelay = randomLongBetween(1, Long.MAX_VALUE); int minNumOnFailureRounds = randomIntBetween(5, 10); final CountDownLatch initializingLatch = new CountDownLatch(1); final Set<Sniffer.ScheduledTask> ordinaryRoundsTasks = new CopyOnWriteArraySet<>(); final AtomicReference<Future<?>> initializingFuture = new AtomicReference<>(); final Set<Sniffer.ScheduledTask> onFailureTasks = new CopyOnWriteArraySet<>(); final Set<Sniffer.ScheduledTask> afterFailureTasks = new CopyOnWriteArraySet<>(); final AtomicBoolean onFailureCompleted = new AtomicBoolean(false); final CountDownLatch completionLatch = new CountDownLatch(1); final ScheduledExecutorService executor = Executors.newSingleThreadScheduledExecutor(); try { Scheduler scheduler = new Scheduler() { @Override public Future<?> schedule(final Sniffer.Task task, long delayMillis) { if (initializing.compareAndSet(true, false)) { assertEquals(0L, delayMillis); Future<?> future = executor.submit(new Runnable() { @Override public void run() { try { task.run(); } finally { //we need to make sure that the sniffer is initialized, so the sniffOnFailure //call does what it needs to do. Otherwise nothing happens until initialized. initializingLatch.countDown(); } } }); assertTrue(initializingFuture.compareAndSet(null, future)); return future; } if (delayMillis == 0L) { Future<?> future = executor.submit(task); onFailureTasks.add(new Sniffer.ScheduledTask(task, future)); return future; } if (delayMillis == sniffAfterFailureDelay) { Future<?> future = scheduleOrSubmit(task); afterFailureTasks.add(new Sniffer.ScheduledTask(task, future)); return future; } assertEquals(sniffInterval, delayMillis); assertEquals(sniffInterval, task.nextTaskDelay); if (onFailureCompleted.get() && onFailureTasks.size() == afterFailureTasks.size()) { completionLatch.countDown(); return mock(Future.class); } Future<?> future = scheduleOrSubmit(task); ordinaryRoundsTasks.add(new Sniffer.ScheduledTask(task, future)); return future; } private Future<?> scheduleOrSubmit(Sniffer.Task task) { if (randomBoolean()) { return executor.schedule(task, randomLongBetween(0L, 200L), TimeUnit.MILLISECONDS); } else { return executor.submit(task); } } @Override public void shutdown() { } }; final Sniffer sniffer = new Sniffer(restClient, hostsSniffer, scheduler, sniffInterval, sniffAfterFailureDelay); assertTrue("timeout waiting for sniffer to get initialized", initializingLatch.await(1000, TimeUnit.MILLISECONDS)); ExecutorService onFailureExecutor = Executors.newFixedThreadPool(randomIntBetween(5, 20)); Set<Future<?>> onFailureFutures = new CopyOnWriteArraySet<>(); try { //with tasks executing quickly one after each other, it is very likely that the onFailure round gets skipped //as another round is already running. We retry till enough runs get through as that's what we want to test. while (onFailureTasks.size() < minNumOnFailureRounds) { onFailureFutures.add(onFailureExecutor.submit(new Runnable() { @Override public void run() { sniffer.sniffOnFailure(); } })); } assertThat(onFailureFutures.size(), greaterThanOrEqualTo(minNumOnFailureRounds)); for (Future<?> onFailureFuture : onFailureFutures) { assertNull(onFailureFuture.get()); } onFailureCompleted.set(true); } finally { onFailureExecutor.shutdown(); onFailureExecutor.awaitTermination(1000, TimeUnit.MILLISECONDS); } assertFalse(initializingFuture.get().isCancelled()); assertTrue(initializingFuture.get().isDone()); assertNull(initializingFuture.get().get()); assertTrue("timeout waiting for sniffing rounds to be completed", completionLatch.await(1000, TimeUnit.MILLISECONDS)); assertThat(onFailureTasks.size(), greaterThanOrEqualTo(minNumOnFailureRounds)); assertEquals(onFailureTasks.size(), afterFailureTasks.size()); for (Sniffer.ScheduledTask onFailureTask : onFailureTasks) { assertFalse(onFailureTask.future.isCancelled()); assertTrue(onFailureTask.future.isDone()); assertNull(onFailureTask.future.get()); assertTrue(onFailureTask.task.hasStarted()); assertFalse(onFailureTask.task.isSkipped()); } int cancelledTasks = 0; int completedTasks = onFailureTasks.size() + 1; for (Sniffer.ScheduledTask afterFailureTask : afterFailureTasks) { if (assertTaskCancelledOrCompleted(afterFailureTask)) { completedTasks++; } else { cancelledTasks++; } } assertThat(ordinaryRoundsTasks.size(), greaterThan(0)); for (Sniffer.ScheduledTask task : ordinaryRoundsTasks) { if (assertTaskCancelledOrCompleted(task)) { completedTasks++; } else { cancelledTasks++; } } assertEquals(onFailureTasks.size(), cancelledTasks); assertEquals(completedTasks, hostsSniffer.runs.get()); int setHostsRuns = hostsSniffer.runs.get() - hostsSniffer.failures.get() - hostsSniffer.emptyList.get(); verify(restClient, times(setHostsRuns)).setHosts(Matchers.<HttpHost>anyVararg()); verifyNoMoreInteractions(restClient); } finally { executor.shutdown(); executor.awaitTermination(1000L, TimeUnit.MILLISECONDS); } }
From source file:com.quartercode.eventbridge.test.def.extra.extension.DefaultReturnEventExtensionReturnerTest.java
@SuppressWarnings("unchecked") @Test//from w ww . ja va2 s. co m public void testCallRequestHandlerWrongTypeInPredicate() { final EventPredicate<Event> predicate = context.mock(EventPredicate.class); final EventPredicate<?> wrapperPredicate = new ReturnEventExtensionWrapperPredicate(predicate); final RequestEventHandler<CallableEvent> handler = new RequestEventHandler<CallableEvent>() { @Override public void handle(CallableEvent request, ReturnEventSender sender) { // Provoke a ClassCastException request.call(); } }; final AtomicReference<LowLevelHandler> lowLevelHandler = new AtomicReference<>(); // @formatter:off context.checking(new Expectations() { { oneOf(lowLevelHandlerModule).addHandler(with(aLowLevelHandlerWithThePredicate(wrapperPredicate))); will(storeArgument(0).in(lowLevelHandler)); } }); // @formatter:on extension.addRequestHandler(handler, predicate); lowLevelHandler.get().handle(new ReturnEventExtensionWrapper(new EmptyEvent1(), 0, true), null); }
From source file:com.netflix.iep.http.RxHttpTest.java
@Test public void redirectResponseMissingLocation() throws Exception { int code = 302; statusCode.set(code);// w ww. j av a 2s . com redirects.set(2); AtomicIntegerArray expected = copy(statusCounts); expected.addAndGet(code, 1); final CountDownLatch latch = new CountDownLatch(1); final AtomicReference<Throwable> throwable = new AtomicReference<>(); rxHttp.get(uri("/redirectNoLocation")).subscribe(Actions.empty(), new Action1<Throwable>() { @Override public void call(Throwable t) { latch.countDown(); throwable.set(t); } }, new Action0() { @Override public void call() { latch.countDown(); } }); latch.await(); assertEquals(expected, statusCounts); Assert.assertNotNull(throwable.get()); }