< prev index next >
test/jdk/java/net/httpclient/websocket/jdk.incubator.httpclient/jdk/incubator/http/internal/websocket/TestSupport.java
Print this page
*** 1,7 ****
/*
! * Copyright (c) 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
--- 1,7 ----
/*
! * Copyright (c) 2016, 2017, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*** 21,37 ****
* questions.
*/
package jdk.incubator.http.internal.websocket;
import java.nio.ByteBuffer;
! import java.util.*;
! import java.util.concurrent.*;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.regex.Pattern;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
import static java.util.List.of;
import static java.util.Objects.requireNonNull;
/*
--- 21,42 ----
* questions.
*/
package jdk.incubator.http.internal.websocket;
import java.nio.ByteBuffer;
! import java.util.Arrays;
! import java.util.Collections;
! import java.util.Iterator;
! import java.util.LinkedList;
! import java.util.List;
! import java.util.NoSuchElementException;
! import java.util.Stack;
! import java.util.concurrent.CompletableFuture;
! import java.util.concurrent.CompletionStage;
import java.util.function.Consumer;
import java.util.function.Predicate;
import java.util.regex.Pattern;
import static java.util.List.of;
import static java.util.Objects.requireNonNull;
/*
*** 186,232 ****
return elements.next();
}
};
}
- // static <T> Iterator<T> filter(Iterator<? extends T> source,
- // Predicate<? super T> predicate) {
- // return new Iterator<>() {
- //
- // { findNext(); }
- //
- // T next;
- // boolean hasNext;
- //
- // @Override
- // public boolean hasNext() {
- // return hasNext;
- // }
- //
- // @Override
- // public T next() {
- // if (!hasNext) {
- // throw new NoSuchElementException();
- // }
- // T n = this.next;
- // findNext();
- // return n;
- // }
- //
- // void findNext() {
- // while (source.hasNext()) {
- // T n = source.next();
- // if (predicate.test(n)) {
- // hasNext = true;
- // next = n;
- // break;
- // }
- // }
- // }
- // };
- // }
-
static ByteBuffer fullCopy(ByteBuffer src) {
ByteBuffer copy = ByteBuffer.allocate(src.capacity());
int p = src.position();
int l = src.limit();
src.clear();
--- 191,200 ----
*** 295,439 ****
int x = a[i];
a[i] = a[j];
a[j] = x;
}
- static <T> Iterator<T> concat(Iterator<? extends Iterator<? extends T>> iterators) {
- requireNonNull(iterators);
- return new Iterator<>() {
-
- private Iterator<? extends T> current = Collections.emptyIterator();
-
- @Override
- public boolean hasNext() {
- while (!current.hasNext()) {
- if (!iterators.hasNext()) {
- return false;
- } else {
- current = iterators.next();
- }
- }
- return true;
- }
-
- @Override
- public T next() {
- if (!hasNext()) {
- throw new NoSuchElementException();
- }
- return current.next();
- }
- };
- }
-
- interface Mock {
-
- /*
- * Completes exceptionally if there are any expectations that haven't
- * been met within the given time period, otherwise completes normally
- */
- CompletableFuture<Void> expectations(long timeout, TimeUnit unit);
- }
-
- static final class InvocationChecker {
-
- private final Object lock = new Object();
- private final Iterator<InvocationExpectation> expectations;
- private final CompletableFuture<Void> expectationsViolation
- = new CompletableFuture<>();
-
- InvocationChecker(Iterable<InvocationExpectation> expectations) {
- this.expectations = requireNonNull(expectations).iterator();
- }
-
- /*
- * Completes exceptionally if there are any expectations that haven't
- * been met within the given time period, otherwise completes normally
- */
- CompletableFuture<Void> expectations(long timeout, TimeUnit unit) {
- return expectationsViolation
- .orTimeout(timeout, unit)
- .handle((v, t) -> {
- if (t == null) {
- throw new InternalError(
- "Unexpected normal completion: " + v);
- } else if (t instanceof TimeoutException) {
- synchronized (lock) {
- if (!expectations.hasNext()) {
- return null;
- } else {
- throw new AssertionFailedException(
- "More invocations were expected");
- }
- }
- } else if (t instanceof AssertionFailedException) {
- throw (AssertionFailedException) t;
- } else {
- throw new RuntimeException(t);
- }
- });
- }
-
- void checkInvocation(String name, Object... args) {
- synchronized (lock) {
- if (!expectations.hasNext()) {
- expectationsViolation.completeExceptionally(
- new AssertionFailedException(
- "Less invocations were expected: " + name));
- return;
- }
- InvocationExpectation next = expectations.next();
- if (!next.name.equals(name)) {
- expectationsViolation.completeExceptionally(
- new AssertionFailedException(
- "A different invocation was expected: " + name)
- );
- return;
- }
- if (!next.predicate.apply(args)) {
- expectationsViolation.completeExceptionally(
- new AssertionFailedException(
- "Invocation doesn't match the predicate: "
- + name + ", " + Arrays.toString(args))
- );
- }
- }
- }
- }
-
- static final class InvocationExpectation {
-
- final String name;
- final F<Boolean> predicate;
-
- InvocationExpectation(String name, F<Boolean> predicate) {
- this.name = requireNonNull(name);
- this.predicate = requireNonNull(predicate);
- }
- }
-
- static void checkExpectations(Mock... mocks) {
- checkExpectations(0, TimeUnit.SECONDS, mocks);
- }
-
- static void checkExpectations(long timeout, TimeUnit unit, Mock... mocks) {
- CompletableFuture<?>[] completableFutures = Stream.of(mocks)
- .map(m -> m.expectations(timeout, unit))
- .collect(Collectors.toList()).toArray(new CompletableFuture<?>[0]);
- CompletableFuture<Void> cf = CompletableFuture.allOf(completableFutures);
- try {
- cf.join();
- } catch (CompletionException e) {
- Throwable cause = e.getCause();
- if (cause instanceof AssertionFailedException) {
- throw (AssertionFailedException) cause;
- } else {
- throw e;
- }
- }
- }
-
public static <T extends Throwable> T assertThrows(Class<? extends T> clazz,
ThrowingProcedure code) {
@SuppressWarnings("unchecked")
T t = (T) assertThrows(clazz::isInstance, code);
return t;
--- 263,272 ----
*** 463,472 ****
--- 296,306 ----
code.run();
} catch (Throwable t) {
caught = t;
}
if (predicate.test(caught)) {
+ System.out.println("Got expected exception: " + caught);
return caught;
}
if (caught == null) {
throw new AssertionFailedException("No exception was thrown");
}
*** 478,527 ****
*/
static Throwable assertCompletesExceptionally(Class<? extends Throwable> clazz,
CompletionStage<?> stage) {
CompletableFuture<?> cf =
CompletableFuture.completedFuture(null).thenCompose(x -> stage);
! return assertThrows(t -> clazz.isInstance(t.getCause()), cf::get);
}
interface ThrowingProcedure {
void run() throws Throwable;
}
- static final class Expectation {
-
- private final List<Predicate<? super Throwable>> list = new LinkedList<>();
-
- static Expectation ifExpect(boolean condition,
- Predicate<? super Throwable> predicate) {
- return addPredicate(new Expectation(), condition, predicate);
- }
-
- Expectation orExpect(boolean condition,
- Predicate<? super Throwable> predicate) {
- return addPredicate(this, condition, predicate);
- }
-
- static Expectation addPredicate(Expectation e, boolean condition,
- Predicate<? super Throwable> predicate) {
- if (condition) {
- e.list.add(requireNonNull(predicate));
- }
- return e;
- }
-
- public Throwable assertThrows(ThrowingProcedure code) {
- Predicate<Throwable> p;
- if (list.isEmpty()) {
- p = Objects::isNull;
- } else {
- p = e -> list.stream().anyMatch(x -> x.test(e));
- }
- return TestSupport.assertThrows(p, code);
- }
- }
-
static final class AssertionFailedException extends RuntimeException {
private static final long serialVersionUID = 1L;
AssertionFailedException(String message) {
--- 312,328 ----
*/
static Throwable assertCompletesExceptionally(Class<? extends Throwable> clazz,
CompletionStage<?> stage) {
CompletableFuture<?> cf =
CompletableFuture.completedFuture(null).thenCompose(x -> stage);
! return assertThrows(t -> clazz == t.getCause().getClass(), cf::get);
}
interface ThrowingProcedure {
void run() throws Throwable;
}
static final class AssertionFailedException extends RuntimeException {
private static final long serialVersionUID = 1L;
AssertionFailedException(String message) {
< prev index next >