public final class Assertions extends Object
The assertions in this class are to be used together with the apply()
operator on the pipeline. For assertions that can be used directly
as sinks, see AssertionSinks
.
Modifier and Type | Method and Description |
---|---|
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertAnyOrder(Collection<? extends T> expected)
Asserts that the previous stage emitted the expected items in any order,
but nothing else.
|
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertAnyOrder(String message,
Collection<? extends T> expected)
Asserts that the previous stage emitted the expected items in any order,
but nothing else.
|
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertCollected(ConsumerEx<? super List<T>> assertFn)
Collects all the received items in a list and once the upstream stage is
completed, it executes the assertion supplied by
assertFn . |
static <T> FunctionEx<StreamStage<T>,StreamStage<T>> |
assertCollectedEventually(int timeout,
ConsumerEx<? super List<T>> assertFn)
Collects all the received items into a list and runs the
assertFn
every time a new item is received. |
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertContains(Collection<? extends T> expected)
Asserts that the previous stage emitted all of the given items in any order.
|
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertContains(String message,
Collection<? extends T> expected)
Asserts that the previous stage emitted all of the given items in any order.
|
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertOrdered(Collection<? extends T> expected)
Asserts that the previous stage emitted the exact sequence of expected
items and nothing else.
|
static <T> FunctionEx<BatchStage<T>,BatchStage<T>> |
assertOrdered(String message,
Collection<? extends T> expected)
Asserts that the previous stage emitted the exact sequence of expected
items and nothing else.
|
@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertOrdered(@Nullable String message, @Nonnull Collection<? extends T> expected)
AssertionError
with the given message.
Example:
p.readFrom(TestSources.items(1, 2, 3, 4))
.apply(Assertions.assertOrdered("unexpected values", Arrays.asList(1, 2, 3, 4)))
.writeTo(Sinks.logger());
Note: Since Jet jobs are distributed, input from multiple upstream
processors is merged in a non-deterministic way. Therefore this assertion
is recommended only for testing of non-distributed sources.@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertOrdered(@Nonnull Collection<? extends T> expected)
AssertionError
.
Example:
p.readFrom(TestSources.items(1, 2, 3, 4))
.apply(Assertions.assertOrderedArrays.asList(1, 2, 3, 4)))
.writeTo(Sinks.logger());
Note: Since Jet jobs are distributed, input from multiple upstream
processors is merged in a non-deterministic way. Therefore this assertion
is recommended only for testing of non-distributed sources.@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertAnyOrder(@Nullable String message, @Nonnull Collection<? extends T> expected)
AssertionError
with the given message.
Example:
p.readFrom(TestSources.items(4, 3, 2, 1))
.apply(Assertions.assertAnyOrder("unexpected values", Arrays.asList(1, 2, 3, 4)))
.writeTo(Sinks.logger())
@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertAnyOrder(@Nonnull Collection<? extends T> expected)
AssertionError
.
Example:
p.readFrom(TestSources.items(4, 3, 2, 1))
.apply(Assertions.assertAnyOrder(Arrays.asList(1, 2, 3, 4)))
.writeTo(Sinks.logger())
@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertContains(@Nullable String message, @Nonnull Collection<? extends T> expected)
AssertionError
with
the given message.
Example:
p.readFrom(TestSources.items(4, 3, 2, 1))
.apply(Assertions.assertAnyOrder(Arrays.asList(1, 3)))
.writeTo(Sinks.logger())
@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertContains(@Nonnull Collection<? extends T> expected)
AssertionError
with
the given message.
Example:
p.readFrom(TestSources.items(4, 3, 2, 1))
.apply(Assertions.assertContains(Arrays.asList(1, 3)))
.writeTo(Sinks.logger())
@Nonnull public static <T> FunctionEx<BatchStage<T>,BatchStage<T>> assertCollected(@Nonnull ConsumerEx<? super List<T>> assertFn)
assertFn
. If no
items were collected, it will be called with empty list.
Example:
p.readFrom(TestSources.items(1, 2, 3, 4))
.apply(Assertions.assertCollected(items ->
assertTrue("expected minimum of 4 items", items.size() >= 4)))
.writeTo(Sinks.logger())
Note: This assertion is not usable in streaming jobs. For the streaming
equivalent see assertCollectedEventually(int, com.hazelcast.function.ConsumerEx<? super java.util.List<T>>)
.@Nonnull public static <T> FunctionEx<StreamStage<T>,StreamStage<T>> assertCollectedEventually(int timeout, @Nonnull ConsumerEx<? super List<T>> assertFn)
assertFn
every time a new item is received. An AssertionError
thrown from
the assertFn
will be ignored until timeoutSeconds
have
passed, after which the last AssertionError
will be rethrown.
If assertFn
throws any other exception, it will be rethrown
immediately.
When assertFn
completes without any error, the sink will throw
an AssertionCompletedException
to indicate success. Exception is
used to terminate the job so that you can join()
it.
Example:
p.readFrom(TestSources.itemStream(10))
.withoutTimestamps()
.apply(assertCollectedEventually(5, c -> assertTrue("did not receive at least 20 items", c.size() > 20)));
To use this assertion in a test, you need to catch the thrown exception and validate
that it's of the expected type as follows:
try {
jetInstance.newJob(p).join();
Assert.fail("Job should have completed with an AssertionCompletedException, " +
"but completed normally");
} catch (CompletionException e) {
String errorMsg = e.getCause().getMessage();
Assert.assertTrue(
"Job was expected to complete with AssertionCompletedException, but completed with: " + e.getCause(),
errorMsg.contains(AssertionCompletedException.class.getName())
);
}
Note: This assertions requires that there are no other assertions in the
job as this one can complete the job before the other ones succeeded.Copyright © 2023 Hazelcast, Inc.. All rights reserved.