Skip to content

Commit bcee109

Browse files
committed
load client with correct classpath in bundleactivator
Signed-off-by: Stefan Bischof <[email protected]>
1 parent 35345e2 commit bcee109

File tree

2 files changed

+56
-11
lines changed

2 files changed

+56
-11
lines changed
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package org.eclipse.daanse.tooling.testcontainers.core;
2+
3+
import org.osgi.annotation.bundle.Header;
4+
import org.osgi.framework.BundleActivator;
5+
import org.osgi.framework.BundleContext;
6+
import org.osgi.framework.Constants;
7+
import org.testcontainers.DockerClientFactory;
8+
import org.testcontainers.dockerclient.DockerClientProviderStrategy;
9+
10+
@Header(name = Constants.BUNDLE_ACTIVATOR, value = "${@class}")
11+
public class Activator implements BundleActivator {
12+
13+
@Override
14+
public void start(BundleContext context) throws Exception {
15+
16+
ClassLoader originalCl = Thread.currentThread().getContextClassLoader();
17+
ClassLoader bundleCl = DockerClientProviderStrategy.class.getClassLoader();
18+
19+
Thread.currentThread().setContextClassLoader(bundleCl);
20+
21+
DockerClientFactory.lazyClient().pingCmd();
22+
23+
Thread.currentThread().setContextClassLoader(originalCl);
24+
25+
}
26+
27+
@Override
28+
public void stop(BundleContext context) throws Exception {
29+
// TODO Auto-generated method stub
30+
31+
}
32+
33+
}

testcontainers/core/src/test/java/org/eclipse/daanse/tooling/testcontainers/core/NginxRundAndConnectTest.java

Lines changed: 23 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -20,29 +20,41 @@
2020
import java.net.http.HttpRequest;
2121
import java.net.http.HttpResponse;
2222
import java.util.List;
23+
import java.util.ServiceLoader;
2324

2425
import org.junit.jupiter.api.Test;
2526
import org.testcontainers.containers.GenericContainer;
2627
import org.testcontainers.dockerclient.DockerClientProviderStrategy;
2728

2829
public class NginxRundAndConnectTest {
2930

30-
@Test
31+
// @Test
3132
void testName() throws Exception {
3233

33-
DockerClientProviderStrategy s1= new org.testcontainers.dockerclient.TestcontainersHostPropertyClientProviderStrategy();
34-
DockerClientProviderStrategy s2= new org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy();
35-
DockerClientProviderStrategy s3= new org.testcontainers.dockerclient.UnixSocketClientProviderStrategy();
36-
DockerClientProviderStrategy s4= new org.testcontainers.dockerclient.DockerMachineClientProviderStrategy();
37-
DockerClientProviderStrategy s5= new org.testcontainers.dockerclient.NpipeSocketClientProviderStrategy();
38-
DockerClientProviderStrategy s6= new org.testcontainers.dockerclient.RootlessDockerClientProviderStrategy();
39-
DockerClientProviderStrategy s7= new org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy();
34+
ClassLoader clOriginal = Thread.currentThread().getContextClassLoader();
35+
ClassLoader testconCL = DockerClientProviderStrategy.class.getClassLoader();
36+
Thread.currentThread().setContextClassLoader(testconCL);
37+
38+
System.out.println("------------");
39+
ServiceLoader.load(DockerClientProviderStrategy.class).forEach(s -> System.out.println(s));
40+
Thread.currentThread().setContextClassLoader(clOriginal);
41+
42+
System.out.println("------------");
43+
44+
DockerClientProviderStrategy s1 = new org.testcontainers.dockerclient.TestcontainersHostPropertyClientProviderStrategy();
45+
DockerClientProviderStrategy s2 = new org.testcontainers.dockerclient.EnvironmentAndSystemPropertyClientProviderStrategy();
46+
DockerClientProviderStrategy s3 = new org.testcontainers.dockerclient.UnixSocketClientProviderStrategy();
47+
DockerClientProviderStrategy s4 = new org.testcontainers.dockerclient.DockerMachineClientProviderStrategy();
48+
DockerClientProviderStrategy s5 = new org.testcontainers.dockerclient.NpipeSocketClientProviderStrategy();
49+
DockerClientProviderStrategy s6 = new org.testcontainers.dockerclient.RootlessDockerClientProviderStrategy();
50+
DockerClientProviderStrategy s7 = new org.testcontainers.dockerclient.DockerDesktopClientProviderStrategy();
51+
52+
List<DockerClientProviderStrategy> strategies = List.of(s1, s2, s3, s4, s5, s6, s7);
53+
DockerClientProviderStrategy s = DockerClientProviderStrategy.getFirstValidStrategy(strategies);
4054

41-
List<DockerClientProviderStrategy> strategies= List.of(s1, s2, s3, s4, s5, s6, s7);
42-
DockerClientProviderStrategy.getFirstValidStrategy(strategies);
4355
}
4456

45-
// @org.junit.jupiter.api.Test
57+
@org.junit.jupiter.api.Test
4658
void startandConnectPortNginX() throws Exception {
4759

4860
try (GenericContainer<?> nginx = new GenericContainer("nginx:alpine-slim").withExposedPorts(80)

0 commit comments

Comments
 (0)