Skip to content

Commit

Permalink
suplement forkJoinPool testcases
Browse files Browse the repository at this point in the history
  • Loading branch information
supervate committed Apr 16, 2024
1 parent f41c89d commit c7c9bb6
Showing 1 changed file with 38 additions and 38 deletions.
76 changes: 38 additions & 38 deletions src/test/java/com/github/artlibs/autotrace4j/TestCases.java
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@
import java.net.URL;
import java.util.*;
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicReference;

import static com.github.artlibs.testcase.XxlJobCase.*;

Expand Down Expand Up @@ -63,47 +62,60 @@ public void afterEach() {
AutoTraceCtx.removeAll();
}

private static @NotNull TupleResult generateResult() {
return new TupleResult(
AutoTraceCtx.getTraceId(),
AutoTraceCtx.getSpanId(),
AutoTraceCtx.getParentSpanId(),
String.valueOf(Thread.currentThread().getId())
);
}

@Test
void testForkJoinPool() throws InterruptedException, ExecutionException {
// 01.Prepare
List<TupleResult> results = new ArrayList<>();
List<TupleResult> results = new ArrayList<>(6);
final String mainThreadId = String.valueOf(Thread.currentThread().getId());
// 02.When
ForkJoinPool pool = ForkJoinPool.commonPool();

// execute case
CountDownLatch latch = new CountDownLatch(1);
AtomicReference<TupleResult> resultOfExecute = new AtomicReference<>();
CountDownLatch latch;
latch = new CountDownLatch(3);
pool.execute(
() -> {
results.add(0, generateResult());
latch.countDown();
}
);
pool.execute(
() -> {
resultOfExecute.set(new TupleResult(
AutoTraceCtx.getTraceId(),
AutoTraceCtx.getSpanId(),
AutoTraceCtx.getParentSpanId(),
String.valueOf(Thread.currentThread().getId())
));
results.add(1, generateResult());
latch.countDown();
}
);
pool.execute(ForkJoinTask.adapt(
() -> {
results.add(2, generateResult());
latch.countDown();
}
));

latch.await();
Assertions.assertNotNull(resultOfExecute.get());
results.add(resultOfExecute.get());

// submit case
ForkJoinTask<TupleResult> taskOfSubmit = pool.submit(
() -> new TupleResult(
AutoTraceCtx.getTraceId(),
AutoTraceCtx.getSpanId(),
AutoTraceCtx.getParentSpanId(),
String.valueOf(Thread.currentThread().getId())
)
);
TupleResult resultOfSubmit = taskOfSubmit.get();
Assertions.assertNotNull(resultOfSubmit);
results.add(resultOfSubmit);
pool.submit(() -> {
results.add(3, generateResult());
return results.get(3);
}).get();

pool.submit(() -> results.add(4, generateResult())).get();

pool.submit(ForkJoinTask.adapt(() -> results.add(5, generateResult()))).get();

// 03.Verify
results.forEach(result -> {
Assertions.assertNotNull(result);
// expected that the traceId is the same
Assertions.assertEquals(initTraceId, result.getValue1());
// expected that the spanId is not null and to be a new one
Expand Down Expand Up @@ -181,11 +193,7 @@ void testThreadPoolExecutor() throws Exception {
this.beforeEach();

// 02.When
TupleResult result = service.submit(() -> new TupleResult(
AutoTraceCtx.getTraceId(),
AutoTraceCtx.getSpanId(),
AutoTraceCtx.getParentSpanId(),
String.valueOf(Thread.currentThread().getId()))
TupleResult result = service.submit(() -> generateResult()
).get();

// 03.Verify
Expand Down Expand Up @@ -244,21 +252,13 @@ void testOkHttpClientAsync() throws Exception {
@Override
public void onFailure(@NotNull Call call, @NotNull IOException e) {
System.err.println(e.getMessage());
asyncTupleHolder[0] = new TupleResult(
AutoTraceCtx.getTraceId(), AutoTraceCtx.getSpanId(),
AutoTraceCtx.getParentSpanId(),
String.valueOf(Thread.currentThread().getId())
);
asyncTupleHolder[0] = generateResult();
latch.countDown();
}

@Override
public void onResponse(@NotNull Call call, @NotNull Response resp) {
asyncTupleHolder[0] = new TupleResult(
AutoTraceCtx.getTraceId(), AutoTraceCtx.getSpanId(),
AutoTraceCtx.getParentSpanId(),
String.valueOf(Thread.currentThread().getId())
);
asyncTupleHolder[0] = generateResult();
responseHolder[0] = resp;
latch.countDown();
}
Expand Down

0 comments on commit c7c9bb6

Please sign in to comment.