package org.testcontainers.dockerclient; import org.rnorth.tcpunixsocketproxy.TcpToUnixSocketProxy; import java.io.File; public class ProxiedUnixSocketClientProviderStrategy extends UnixSocketClientProviderStrategy { @Override public void test() throws InvalidConfigurationException { String osName = System.getProperty("os.name").toLowerCase(); if (!osName.contains("mac") && !osName.contains("linux")) { throw new InvalidConfigurationException("this strategy is only applicable to OS X and Linux"); } TcpToUnixSocketProxy proxy = new TcpToUnixSocketProxy(new File(DOCKER_SOCK_PATH)); try { int proxyPort = proxy.start().getPort(); config = tryConfiguration("tcp://localhost:" + proxyPort); LOGGER.info("Accessing unix domain socket via TCP proxy (" + DOCKER_SOCK_PATH + " via localhost:" + proxyPort + ")"); } catch (Exception e) { proxy.stop(); throw new InvalidConfigurationException("ping failed", e); } } @Override public String getDescription() { return "local Unix socket (via TCP proxy)"; } }