Merge branch '3.2.x' into 3.3.x

Closes gh-42959
This commit is contained in:
Moritz Halbritter 2024-10-31 15:07:02 +01:00
commit 6470748d6d
2 changed files with 31 additions and 3 deletions

View File

@ -57,8 +57,11 @@ public class ResolvedDockerHost extends DockerHost {
@Override
public String getAddress() {
return super.getAddress().startsWith(UNIX_SOCKET_PREFIX)
? super.getAddress().substring(UNIX_SOCKET_PREFIX.length()) : super.getAddress();
String address = super.getAddress();
if (address == null) {
address = getDefaultAddress();
}
return address.startsWith(UNIX_SOCKET_PREFIX) ? address.substring(UNIX_SOCKET_PREFIX.length()) : address;
}
public boolean isRemote() {
@ -100,7 +103,11 @@ public class ResolvedDockerHost extends DockerHost {
DockerContext context = config.getContext();
return new ResolvedDockerHost(context.getDockerHost(), context.isTlsVerify(), context.getTlsPath());
}
return new ResolvedDockerHost(Platform.isWindows() ? WINDOWS_NAMED_PIPE_PATH : DOMAIN_SOCKET_PATH);
return new ResolvedDockerHost(getDefaultAddress());
}
private static String getDefaultAddress() {
return Platform.isWindows() ? WINDOWS_NAMED_PIPE_PATH : DOMAIN_SOCKET_PATH;
}
private static boolean isTrue(String value) {

View File

@ -39,6 +39,7 @@ import static org.assertj.core.api.Assertions.assertThat;
* Tests for {@link ResolvedDockerHost}.
*
* @author Scott Frederick
* @author Moritz Halbritter
*/
class ResolvedDockerHostTests {
@ -64,6 +65,16 @@ class ResolvedDockerHostTests {
assertThat(dockerHost.getCertificatePath()).isNull();
}
@Test
@EnabledOnOs(OS.WINDOWS)
void resolveWhenUsingDefaultContextReturnsWindowsDefault() {
this.environment.put("DOCKER_CONTEXT", "default");
ResolvedDockerHost dockerHost = ResolvedDockerHost.from(this.environment::get, null);
assertThat(dockerHost.getAddress()).isEqualTo("//./pipe/docker_engine");
assertThat(dockerHost.isSecure()).isFalse();
assertThat(dockerHost.getCertificatePath()).isNull();
}
@Test
@DisabledOnOs(OS.WINDOWS)
void resolveWhenDockerHostAddressIsNullReturnsLinuxDefault() throws Exception {
@ -75,6 +86,16 @@ class ResolvedDockerHostTests {
assertThat(dockerHost.getCertificatePath()).isNull();
}
@Test
@DisabledOnOs(OS.WINDOWS)
void resolveWhenUsingDefaultContextReturnsLinuxDefault() {
this.environment.put("DOCKER_CONTEXT", "default");
ResolvedDockerHost dockerHost = ResolvedDockerHost.from(this.environment::get, null);
assertThat(dockerHost.getAddress()).isEqualTo("/var/run/docker.sock");
assertThat(dockerHost.isSecure()).isFalse();
assertThat(dockerHost.getCertificatePath()).isNull();
}
@Test
void resolveWhenDockerHostAddressIsLocalReturnsAddress(@TempDir Path tempDir) throws IOException {
String socketFilePath = Files.createTempFile(tempDir, "remote-transport", null).toAbsolutePath().toString();