From dfa1e36bc282f0eb95169329e70cd9b8d44a2ae5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Alexander=20Preu=C3=9F?= Date: Mon, 29 Aug 2022 21:02:25 +0200 Subject: [PATCH] Detect M1 mac in test and substitute container image (#75) Fixes #57 --- .../AbstractContainerBaseTests.java | 21 ++++++++++++++++--- .../core/AbstractContainerBaseTests.java | 21 ++++++++++++++++--- 2 files changed, 36 insertions(+), 6 deletions(-) diff --git a/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/AbstractContainerBaseTests.java b/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/AbstractContainerBaseTests.java index e22c9c28..c8f2dacb 100644 --- a/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/AbstractContainerBaseTests.java +++ b/spring-pulsar-spring-boot-autoconfigure/src/test/java/org/springframework/pulsar/autoconfigure/AbstractContainerBaseTests.java @@ -16,16 +16,17 @@ package org.springframework.pulsar.autoconfigure; +import java.util.Locale; + import org.testcontainers.containers.PulsarContainer; import org.testcontainers.utility.DockerImageName; abstract class AbstractContainerBaseTests { - static final DockerImageName PULSAR_IMAGE = DockerImageName.parse("apachepulsar/pulsar:2.10.1"); - - static PulsarContainer PULSAR_CONTAINER; + static final PulsarContainer PULSAR_CONTAINER; static { + final DockerImageName PULSAR_IMAGE = isRunningOnMacM1() ? getMacM1PulsarImage() : getStandardPulsarImage(); PULSAR_CONTAINER = new PulsarContainer(PULSAR_IMAGE); PULSAR_CONTAINER.start(); } @@ -38,4 +39,18 @@ abstract class AbstractContainerBaseTests { return PULSAR_CONTAINER.getHttpServiceUrl(); } + private static boolean isRunningOnMacM1() { + String osName = System.getProperty("os.name").toLowerCase(Locale.ENGLISH); + String osArchitecture = System.getProperty("os.arch").toLowerCase(Locale.ENGLISH); + return osName.contains("mac") && osArchitecture.equals("aarch64"); + } + + private static DockerImageName getStandardPulsarImage() { + return DockerImageName.parse("apachepulsar/pulsar:2.10.1"); + } + + private static DockerImageName getMacM1PulsarImage() { + return DockerImageName.parse("kezhenxu94/pulsar").asCompatibleSubstituteFor("apachepulsar/pulsar"); + } + } diff --git a/spring-pulsar/src/test/java/org/springframework/pulsar/core/AbstractContainerBaseTests.java b/spring-pulsar/src/test/java/org/springframework/pulsar/core/AbstractContainerBaseTests.java index 34122cb5..a86e3d27 100644 --- a/spring-pulsar/src/test/java/org/springframework/pulsar/core/AbstractContainerBaseTests.java +++ b/spring-pulsar/src/test/java/org/springframework/pulsar/core/AbstractContainerBaseTests.java @@ -16,16 +16,17 @@ package org.springframework.pulsar.core; +import java.util.Locale; + import org.testcontainers.containers.PulsarContainer; import org.testcontainers.utility.DockerImageName; public abstract class AbstractContainerBaseTests { - static final DockerImageName PULSAR_IMAGE = DockerImageName.parse("apachepulsar/pulsar:2.10.1"); - - static PulsarContainer PULSAR_CONTAINER; + static final PulsarContainer PULSAR_CONTAINER; static { + final DockerImageName PULSAR_IMAGE = isRunningOnMacM1() ? getMacM1PulsarImage() : getStandardPulsarImage(); PULSAR_CONTAINER = new PulsarContainer(PULSAR_IMAGE); PULSAR_CONTAINER.start(); } @@ -38,4 +39,18 @@ public abstract class AbstractContainerBaseTests { return PULSAR_CONTAINER.getHttpServiceUrl(); } + private static boolean isRunningOnMacM1() { + String osName = System.getProperty("os.name").toLowerCase(Locale.ENGLISH); + String osArchitecture = System.getProperty("os.arch").toLowerCase(Locale.ENGLISH); + return osName.contains("mac") && osArchitecture.equals("aarch64"); + } + + private static DockerImageName getStandardPulsarImage() { + return DockerImageName.parse("apachepulsar/pulsar:2.10.1"); + } + + private static DockerImageName getMacM1PulsarImage() { + return DockerImageName.parse("kezhenxu94/pulsar").asCompatibleSubstituteFor("apachepulsar/pulsar"); + } + }