AsyncParallelCollector.java

1
package com.pivovarit.collectors;
2
3
import static com.pivovarit.collectors.BatchingSpliterator.batching;
4
import static com.pivovarit.collectors.BatchingSpliterator.partitioned;
5
import static com.pivovarit.collectors.Preconditions.requireValidExecutor;
6
import static com.pivovarit.collectors.Preconditions.requireValidParallelism;
7
import static java.util.Objects.requireNonNull;
8
import static java.util.concurrent.CompletableFuture.allOf;
9
import static java.util.concurrent.CompletableFuture.supplyAsync;
10
import static java.util.stream.Collectors.collectingAndThen;
11
import static java.util.stream.Collectors.toList;
12
13
import java.util.ArrayList;
14
import java.util.Collection;
15
import java.util.Collections;
16
import java.util.List;
17
import java.util.Set;
18
import java.util.concurrent.CompletableFuture;
19
import java.util.concurrent.CompletionException;
20
import java.util.concurrent.Executor;
21
import java.util.concurrent.Executors;
22
import java.util.function.BiConsumer;
23
import java.util.function.BinaryOperator;
24
import java.util.function.Function;
25
import java.util.function.Supplier;
26
import java.util.stream.Collector;
27
import java.util.stream.Stream;
28
29
/**
30
 * @author Grzegorz Piwowarek
31
 */
32
final class AsyncParallelCollector<T, R, C>
33
  implements Collector<T, List<CompletableFuture<R>>, CompletableFuture<C>> {
34
35
    private final Dispatcher<R> dispatcher;
36
    private final Function<T, R> task;
37
    private final Function<Stream<R>, C> finalizer;
38
39
    private AsyncParallelCollector(
40
      Function<T, R> task,
41
      Dispatcher<R> dispatcher,
42
      Function<Stream<R>, C> finalizer) {
43
        this.dispatcher = dispatcher;
44
        this.finalizer = finalizer;
45
        this.task = task;
46
    }
47
48
    @Override
49
    public Supplier<List<CompletableFuture<R>>> supplier() {
50 1 1. supplier : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::supplier → KILLED
        return ArrayList::new;
51
    }
52
53
    @Override
54
    public BinaryOperator<List<CompletableFuture<R>>> combiner() {
55 1 1. combiner : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::combiner → SURVIVED
        return (left, right) -> {
56
            throw new UnsupportedOperationException("Using parallel stream with parallel collectors is a bad idea");
57
        };
58
    }
59
60
    @Override
61
    public BiConsumer<List<CompletableFuture<R>>, T> accumulator() {
62 1 1. accumulator : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::accumulator → KILLED
        return (acc, e) -> {
63 1 1. lambda$accumulator$2 : negated conditional → TIMED_OUT
            if (!dispatcher.isRunning()) {
64 1 1. lambda$accumulator$2 : removed call to com/pivovarit/collectors/Dispatcher::start → TIMED_OUT
                dispatcher.start();
65
            }
66 1 1. lambda$accumulator$1 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$accumulator$1 → KILLED
            acc.add(dispatcher.enqueue(() -> task.apply(e)));
67
        };
68
    }
69
70
    @Override
71
    public Function<List<CompletableFuture<R>>, CompletableFuture<C>> finisher() {
72 1 1. finisher : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::finisher → KILLED
        return futures -> {
73 1 1. lambda$finisher$3 : removed call to com/pivovarit/collectors/Dispatcher::stop → SURVIVED
            dispatcher.stop();
74
75 1 1. lambda$finisher$3 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$finisher$3 → KILLED
            return combine(futures).thenApply(finalizer);
76
        };
77
    }
78
79
    @Override
80
    public Set<Characteristics> characteristics() {
81
        return Collections.emptySet();
82
    }
83
84
    private static <T> CompletableFuture<Stream<T>> combine(List<CompletableFuture<T>> futures) {
85 1 1. lambda$combine$4 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$combine$4 → KILLED
        var combined = allOf(futures.toArray(CompletableFuture[]::new))
86 1 1. lambda$combine$5 : replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector::lambda$combine$5 → KILLED
          .thenApply(__ -> futures.stream().map(CompletableFuture::join));
87
88
        for (var future : futures) {
89
            future.whenComplete((o, ex) -> {
90 1 1. lambda$combine$6 : negated conditional → SURVIVED
                if (ex != null) {
91
                    combined.completeExceptionally(ex);
92
                }
93
            });
94
        }
95
96 1 1. combine : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::combine → KILLED
        return combined;
97
    }
98
99
    static <T, R> Collector<T, ?, CompletableFuture<Stream<R>>> collectingToStream(Function<T, R> mapper) {
100
        requireNonNull(mapper, "mapper can't be null");
101
102 1 1. collectingToStream : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED
        return new AsyncParallelCollector<>(mapper, Dispatcher.virtual(), Function.identity());
103
    }
104
105
    static <T, R> Collector<T, ?, CompletableFuture<Stream<R>>> collectingToStream(Function<T, R> mapper, int parallelism) {
106
        requireNonNull(mapper, "mapper can't be null");
107 1 1. collectingToStream : removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT
        requireValidParallelism(parallelism);
108
109 1 1. collectingToStream : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED
        return new AsyncParallelCollector<>(mapper, Dispatcher.virtual(parallelism), Function.identity());
110
    }
111
112
    static <T, R> Collector<T, ?, CompletableFuture<Stream<R>>> collectingToStream(Function<T, R> mapper, Executor executor) {
113
        requireNonNull(executor, "executor can't be null");
114
        requireNonNull(mapper, "mapper can't be null");
115 1 1. collectingToStream : removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → SURVIVED
        requireValidExecutor(executor);
116
117 1 1. collectingToStream : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED
        return new AsyncParallelCollector<>(mapper, Dispatcher.from(executor), Function.identity());
118
    }
119
120
    static <T, R> Collector<T, ?, CompletableFuture<Stream<R>>> collectingToStream(Function<T, R> mapper, Executor executor, int parallelism) {
121
        requireNonNull(executor, "executor can't be null");
122
        requireNonNull(mapper, "mapper can't be null");
123 1 1. collectingToStream : removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT
        requireValidParallelism(parallelism);
124 1 1. collectingToStream : removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED
        requireValidExecutor(executor);
125
126 2 1. collectingToStream : negated conditional → TIMED_OUT
2. collectingToStream : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED
        return parallelism == 1
127 1 1. lambda$collectingToStream$7 : replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingToStream$7 → KILLED
          ? asyncCollector(mapper, executor, i -> i)
128
          : new AsyncParallelCollector<>(mapper, Dispatcher.from(executor, parallelism), Function.identity());
129
    }
130
131
    static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> collectingWithCollector(Collector<R, ?, RR> collector, Function<T, R> mapper) {
132
        requireNonNull(collector, "collector can't be null");
133
        requireNonNull(mapper, "mapper can't be null");
134
135 2 1. collectingWithCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED
2. lambda$collectingWithCollector$8 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$8 → KILLED
        return new AsyncParallelCollector<>(mapper, Dispatcher.virtual(), s -> s.collect(collector));
136
    }
137
138
    static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> collectingWithCollector(Collector<R, ?, RR> collector, Function<T, R> mapper, int parallelism) {
139
        requireNonNull(collector, "collector can't be null");
140
        requireNonNull(mapper, "mapper can't be null");
141 1 1. collectingWithCollector : removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT
        requireValidParallelism(parallelism);
142
143 2 1. collectingWithCollector : negated conditional → TIMED_OUT
2. collectingWithCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED
        return parallelism == 1
144 1 1. lambda$collectingWithCollector$9 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$9 → KILLED
          ? asyncCollector(mapper, Executors.newVirtualThreadPerTaskExecutor(), s -> s.collect(collector))
145 1 1. lambda$collectingWithCollector$10 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$10 → KILLED
          : new AsyncParallelCollector<>(mapper, Dispatcher.virtual(parallelism), s -> s.collect(collector));
146
    }
147
148
    static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> collectingWithCollector(Collector<R, ?, RR> collector, Function<T, R> mapper, Executor executor) {
149
        requireNonNull(collector, "collector can't be null");
150
        requireNonNull(executor, "executor can't be null");
151
        requireNonNull(mapper, "mapper can't be null");
152 1 1. collectingWithCollector : removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → SURVIVED
        requireValidExecutor(executor);
153
154 2 1. collectingWithCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED
2. lambda$collectingWithCollector$11 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$11 → KILLED
        return new AsyncParallelCollector<>(mapper, Dispatcher.from(executor), s -> s.collect(collector));
155
    }
156
157
    static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> collectingWithCollector(Collector<R, ?, RR> collector, Function<T, R> mapper, Executor executor, int parallelism) {
158
        requireNonNull(collector, "collector can't be null");
159
        requireNonNull(executor, "executor can't be null");
160
        requireNonNull(mapper, "mapper can't be null");
161 1 1. collectingWithCollector : removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT
        requireValidParallelism(parallelism);
162 1 1. collectingWithCollector : removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED
        requireValidExecutor(executor);
163
164 2 1. collectingWithCollector : negated conditional → TIMED_OUT
2. collectingWithCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED
        return parallelism == 1
165 1 1. lambda$collectingWithCollector$12 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$12 → KILLED
          ? asyncCollector(mapper, executor, s -> s.collect(collector))
166 1 1. lambda$collectingWithCollector$13 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$13 → KILLED
          : new AsyncParallelCollector<>(mapper, Dispatcher.from(executor, parallelism), s -> s.collect(collector));
167
    }
168
169
    static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> asyncCollector(Function<T, R> mapper, Executor executor, Function<Stream<R>, RR> finisher) {
170 1 1. asyncCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::asyncCollector → KILLED
        return collectingAndThen(toList(), list -> {
171
            try {
172 1 1. lambda$asyncCollector$15 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$asyncCollector$15 → KILLED
                return supplyAsync(() -> {
173
                    Stream.Builder<R> acc = Stream.builder();
174
                    for (T t : list) {
175
                        acc.add(mapper.apply(t));
176
                    }
177 1 1. lambda$asyncCollector$14 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$asyncCollector$14 → KILLED
                    return finisher.apply(acc.build());
178
                }, executor);
179
            } catch (Exception e) {
180
                throw new CompletionException(e);
181
            }
182
        });
183
    }
184
185
    static final class BatchingCollectors {
186
187
        private BatchingCollectors() {
188
        }
189
190
        static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> collectingWithCollector(Collector<R, ?, RR> collector, Function<T, R> mapper, Executor executor, int parallelism) {
191
            requireNonNull(collector, "collector can't be null");
192
            requireNonNull(executor, "executor can't be null");
193
            requireNonNull(mapper, "mapper can't be null");
194 1 1. collectingWithCollector : removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → KILLED
            requireValidParallelism(parallelism);
195 1 1. collectingWithCollector : removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED
            requireValidExecutor(executor);
196
197 2 1. collectingWithCollector : negated conditional → TIMED_OUT
2. collectingWithCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::collectingWithCollector → KILLED
            return parallelism == 1
198 1 1. lambda$collectingWithCollector$0 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingWithCollector$0 → KILLED
              ? asyncCollector(mapper, executor, s -> s.collect(collector))
199 1 1. lambda$collectingWithCollector$1 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingWithCollector$1 → KILLED
              : batchingCollector(mapper, executor, parallelism, s -> s.collect(collector));
200
        }
201
202
        static <T, R> Collector<T, ?, CompletableFuture<Stream<R>>> collectingToStream(
203
          Function<T, R> mapper,
204
          Executor executor, int parallelism) {
205
            requireNonNull(executor, "executor can't be null");
206
            requireNonNull(mapper, "mapper can't be null");
207 1 1. collectingToStream : removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → SURVIVED
            requireValidParallelism(parallelism);
208 1 1. collectingToStream : removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED
            requireValidExecutor(executor);
209
210 2 1. collectingToStream : negated conditional → TIMED_OUT
2. collectingToStream : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::collectingToStream → KILLED
            return parallelism == 1
211 1 1. lambda$collectingToStream$2 : replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingToStream$2 → SURVIVED
              ? asyncCollector(mapper, executor, i -> i)
212 1 1. lambda$collectingToStream$3 : replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingToStream$3 → SURVIVED
              : batchingCollector(mapper, executor, parallelism, s -> s);
213
        }
214
215
        private static <T, R, RR> Collector<T, ?, CompletableFuture<RR>> batchingCollector(Function<T, R> mapper, Executor executor, int parallelism, Function<Stream<R>, RR> finisher) {
216 1 1. batchingCollector : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::batchingCollector → KILLED
            return collectingAndThen(
217
              toList(),
218
              list -> {
219
                  // no sense to repack into batches of size 1
220 1 1. lambda$batchingCollector$5 : negated conditional → KILLED
                  if (list.size() == parallelism) {
221 1 1. lambda$batchingCollector$5 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$batchingCollector$5 → KILLED
                      return list.stream()
222
                        .collect(new AsyncParallelCollector<>(
223
                          mapper,
224
                          Dispatcher.from(executor, parallelism),
225
                          finisher));
226
                  } else {
227 1 1. lambda$batchingCollector$5 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$batchingCollector$5 → KILLED
                      return partitioned(list, parallelism)
228
                        .collect(new AsyncParallelCollector<>(
229
                          batching(mapper),
230
                          Dispatcher.from(executor, parallelism),
231 1 1. lambda$batchingCollector$4 : replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$batchingCollector$4 → KILLED
                          listStream -> finisher.apply(listStream.flatMap(Collection::stream))));
232
                  }
233
              });
234
        }
235
    }
236
}

Mutations

50

1.1
Location : supplier
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#36]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::supplier → KILLED

55

1.1
Location : combiner
Killed by : none
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::combiner → SURVIVED
Covering tests

62

1.1
Location : accumulator
Killed by : com.pivovarit.collectors.test.NonBlockingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.NonBlockingTest]/[test-factory:shouldNotBlockTheCallingThread()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::accumulator → KILLED

63

1.1
Location : lambda$accumulator$2
Killed by : none
negated conditional → TIMED_OUT

64

1.1
Location : lambda$accumulator$2
Killed by : none
removed call to com/pivovarit/collectors/Dispatcher::start → TIMED_OUT

66

1.1
Location : lambda$accumulator$1
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessAllElementsInOrder()]/[dynamic-test:#5]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$accumulator$1 → KILLED

72

1.1
Location : finisher
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#36]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::finisher → KILLED

73

1.1
Location : lambda$finisher$3
Killed by : none
removed call to com/pivovarit/collectors/Dispatcher::stop → SURVIVED
Covering tests

75

1.1
Location : lambda$finisher$3
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#36]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$finisher$3 → KILLED

85

1.1
Location : lambda$combine$4
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#36]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$combine$4 → KILLED

86

1.1
Location : lambda$combine$5
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessAllElementsInOrder()]/[dynamic-test:#5]
replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector::lambda$combine$5 → KILLED

90

1.1
Location : lambda$combine$6
Killed by : none
negated conditional → SURVIVED
Covering tests

96

1.1
Location : combine
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#36]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::combine → KILLED

102

1.1
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#1]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED

107

1.1
Location : collectingToStream
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT

109

1.1
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#2]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED

115

1.1
Location : collectingToStream
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → SURVIVED
Covering tests

117

1.1
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED

123

1.1
Location : collectingToStream
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT

124

1.1
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.ExecutorValidationTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.ExecutorValidationTest]/[test-factory:shouldRejectInvalidRejectedExecutionHandlerFactory()]/[dynamic-test:#4]
removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED

126

1.1
Location : collectingToStream
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#2]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingToStream → KILLED

127

1.1
Location : lambda$collectingToStream$7
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#2]
replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingToStream$7 → KILLED

135

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#5]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED

2.2
Location : lambda$collectingWithCollector$8
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#5]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$8 → KILLED

141

1.1
Location : collectingWithCollector
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT

143

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED

2.2
Location : collectingWithCollector
Killed by : none
negated conditional → TIMED_OUT

144

1.1
Location : lambda$collectingWithCollector$9
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$9 → KILLED

145

1.1
Location : lambda$collectingWithCollector$10
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#80]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$10 → KILLED

152

1.1
Location : collectingWithCollector
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → SURVIVED
Covering tests

154

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#7]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED

2.2
Location : lambda$collectingWithCollector$11
Killed by : com.pivovarit.collectors.test.BasicProcessingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicProcessingTest]/[test-factory:shouldProcessEmpty()]/[dynamic-test:#7]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$11 → KILLED

161

1.1
Location : collectingWithCollector
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → TIMED_OUT

162

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.ExecutorValidationTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.ExecutorValidationTest]/[test-factory:shouldRejectInvalidRejectedExecutionHandlerFactory()]/[dynamic-test:#14]
removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED

164

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#4]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::collectingWithCollector → KILLED

2.2
Location : collectingWithCollector
Killed by : none
negated conditional → TIMED_OUT

165

1.1
Location : lambda$collectingWithCollector$12
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#4]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$12 → KILLED

166

1.1
Location : lambda$collectingWithCollector$13
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#70]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$collectingWithCollector$13 → KILLED

170

1.1
Location : asyncCollector
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::asyncCollector → KILLED

172

1.1
Location : lambda$asyncCollector$15
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$asyncCollector$15 → KILLED

177

1.1
Location : lambda$asyncCollector$14
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#3]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector::lambda$asyncCollector$14 → KILLED

194

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.ParallelismValidationTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.ParallelismValidationTest]/[test-factory:shouldRejectInvalidRejectedExecutionHandlerFactory()]/[dynamic-test:#5]
removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → KILLED

195

1.1
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.ExecutorValidationTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.ExecutorValidationTest]/[test-factory:shouldRejectInvalidRejectedExecutionHandlerFactory()]/[dynamic-test:#18]
removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED

197

1.1
Location : collectingWithCollector
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : collectingWithCollector
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#5]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::collectingWithCollector → KILLED

198

1.1
Location : lambda$collectingWithCollector$0
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#5]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingWithCollector$0 → KILLED

199

1.1
Location : lambda$collectingWithCollector$1
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#16]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingWithCollector$1 → KILLED

207

1.1
Location : collectingToStream
Killed by : none
removed call to com/pivovarit/collectors/Preconditions::requireValidParallelism → SURVIVED
Covering tests

208

1.1
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.ExecutorValidationTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.ExecutorValidationTest]/[test-factory:shouldRejectInvalidRejectedExecutionHandlerFactory()]/[dynamic-test:#8]
removed call to com/pivovarit/collectors/Preconditions::requireValidExecutor → KILLED

210

1.1
Location : collectingToStream
Killed by : com.pivovarit.collectors.test.RejectedExecutionHandlingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.RejectedExecutionHandlingTest]/[test-factory:shouldRejectInvalidRejectedExecutionHandlerWhenParallelismOneFactory()]/[dynamic-test:#2]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::collectingToStream → KILLED

2.2
Location : collectingToStream
Killed by : none
negated conditional → TIMED_OUT

211

1.1
Location : lambda$collectingToStream$2
Killed by : none
replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingToStream$2 → SURVIVED
Covering tests

212

1.1
Location : lambda$collectingToStream$3
Killed by : none
replaced return value with Stream.empty for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$collectingToStream$3 → SURVIVED
Covering tests

216

1.1
Location : batchingCollector
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#27]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::batchingCollector → KILLED

220

1.1
Location : lambda$batchingCollector$5
Killed by : com.pivovarit.collectors.test.BatchingTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BatchingTest]/[test-factory:shouldProcessOnExactlyNThreads()]/[dynamic-test:#2]
negated conditional → KILLED

221

1.1
Location : lambda$batchingCollector$5
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessAllElementsWithMaxParallelism()]/[dynamic-test:#82]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$batchingCollector$5 → KILLED

227

1.1
Location : lambda$batchingCollector$5
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#27]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$batchingCollector$5 → KILLED

231

1.1
Location : lambda$batchingCollector$4
Killed by : com.pivovarit.collectors.test.BasicParallelismTest.[engine:junit-jupiter]/[class:com.pivovarit.collectors.test.BasicParallelismTest]/[test-factory:shouldProcessEmptyWithMaxParallelism()]/[dynamic-test:#16]
replaced return value with null for com/pivovarit/collectors/AsyncParallelCollector$BatchingCollectors::lambda$batchingCollector$4 → KILLED

Active mutators

Tests examined


Report generated by PIT 1.17.4