Skip to content

Commit

Permalink
Test that NettyBlockHoundIntegration can be loaded with `ServiceLoa…
Browse files Browse the repository at this point in the history
…der`

Motivation:

If something is mis-configured, the "main" test will fail but it is unclear
whether it fails because the integration does not work or it wasn't applied
at all.
Also see:
netty#9738 (comment)

Modifications:

This change adds a test that uses the same mechanism as BlockHound does
(`ServiceLoader`) and checks that `NettyBlockHoundIntegration` is present.

Result:

It is now clear whether the integration is not working or it wasn't loaded at all.
  • Loading branch information
bsideup committed Oct 31, 2019
1 parent 656371e commit 7f55b86
Showing 1 changed file with 14 additions and 0 deletions.
Expand Up @@ -16,10 +16,13 @@
package io.netty.util.internal;

import io.netty.util.concurrent.GlobalEventExecutor;
import io.netty.util.internal.Hidden.NettyBlockHoundIntegration;
import org.junit.BeforeClass;
import org.junit.Test;
import reactor.blockhound.BlockHound;
import reactor.blockhound.integration.BlockHoundIntegration;

import java.util.ServiceLoader;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.FutureTask;
import java.util.concurrent.TimeUnit;
Expand All @@ -35,6 +38,17 @@ public static void setUpClass() {
BlockHound.install();
}

@Test
public void testServiceLoader() {
for (BlockHoundIntegration integration : ServiceLoader.load(BlockHoundIntegration.class)) {
if (integration instanceof NettyBlockHoundIntegration) {
return;
}
}

fail("NettyBlockHoundIntegration cannot be loaded with ServiceLoader");
}

@Test
public void testBlockingCallsInNettyThreads() throws Exception {
final FutureTask<Void> future = new FutureTask<>(() -> {
Expand Down

0 comments on commit 7f55b86

Please sign in to comment.