Skip to content

Commit d8c449f

Browse files
committed
Use gradle-oci for container images in tests
1 parent 20c3dfa commit d8c449f

File tree

5 files changed

+40
-47
lines changed

5 files changed

+40
-47
lines changed

.github/workflows/check.yml

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,8 @@ jobs:
1717
java-version: 11
1818
- name: Setup Gradle
1919
uses: gradle/actions/setup-gradle@d9c87d481d55275bb5441eef3fe0e46805f9ef70 # v3
20-
- name: Login to Docker Hub
21-
uses: docker/login-action@9780b0c442fbb1117ed29e0efdff1e18412f7567 # v3
22-
with:
23-
username: ${{ secrets.DOCKER_USERNAME }}
24-
password: ${{ secrets.DOCKER_TOKEN }}
2520
- name: Check
2621
run: ./gradlew check
22+
env:
23+
ORG_GRADLE_PROJECT_dockerHubUsername: ${{ secrets.DOCKER_USERNAME }}
24+
ORG_GRADLE_PROJECT_dockerHubPassword: ${{ secrets.DOCKER_TOKEN }}

build.gradle.kts

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
plugins {
22
alias(libs.plugins.hivemq.extension)
33
alias(libs.plugins.defaults)
4+
alias(libs.plugins.oci)
45
alias(libs.plugins.license)
56
}
67

@@ -21,12 +22,25 @@ hivemqExtension {
2122

2223
dependencies {
2324
compileOnly(libs.jetbrains.annotations)
24-
2525
hivemqProvided(libs.logback.classic)
2626
implementation(libs.azure.storage.blob)
2727
implementation(libs.owner.java8)
2828
}
2929

30+
oci {
31+
registries {
32+
dockerHub {
33+
optionalCredentials()
34+
}
35+
registry("mcr") {
36+
url = uri("https://mcr.microsoft.com")
37+
exclusiveContent {
38+
includeGroup("azure-storage")
39+
}
40+
}
41+
}
42+
}
43+
3044
@Suppress("UnstableApiUsage")
3145
testing {
3246
suites {
@@ -46,9 +60,15 @@ testing {
4660
implementation(libs.testcontainers)
4761
implementation(libs.testcontainers.hivemq)
4862
implementation(libs.testcontainers.toxiproxy)
63+
implementation(libs.gradleOci.junitJupiter)
4964
implementation(libs.azure.storage.blob)
5065
runtimeOnly(libs.logback.classic)
5166
}
67+
ociImageDependencies {
68+
runtime("hivemq:hivemq4:latest") { isChanging = true }
69+
runtime("azure-storage:azurite:3.29.0").tag("latest")
70+
runtime("shopify:toxiproxy:2.1.0").tag("latest")
71+
}
5272
}
5373
}
5474
}

gradle/libs.versions.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
[versions]
22
awaitility = "4.2.1"
33
azure-storage-blob = "12.25.4"
4+
gradleOci-junitJupiter = "0.6.0"
45
hivemq-extensionSdk = "4.7.5"
56
jetbrains-annotations = "24.1.0"
67
junit-jupiter = "5.10.0"
@@ -12,6 +13,7 @@ testcontainers = "1.19.8"
1213
[libraries]
1314
awaitility = { module = "org.awaitility:awaitility", version.ref = "awaitility" }
1415
azure-storage-blob = { module = "com.azure:azure-storage-blob", version.ref = "azure-storage-blob" }
16+
gradleOci-junitJupiter = { module = "io.github.sgtsilvio:gradle-oci-junit-jupiter", version.ref = "gradleOci-junitJupiter" }
1517
jetbrains-annotations = { module = "org.jetbrains:annotations", version.ref = "jetbrains-annotations" }
1618
logback-classic = { module = "ch.qos.logback:logback-classic", version.ref = "logback" }
1719
mockito = { module = "org.mockito:mockito-core", version.ref = "mockito" }
@@ -23,4 +25,5 @@ testcontainers-toxiproxy = { module = "org.testcontainers:toxiproxy", version.re
2325
[plugins]
2426
hivemq-extension = { id = "com.hivemq.extension", version = "3.1.0" }
2527
defaults = { id = "io.github.sgtsilvio.gradle.defaults", version = "0.2.0" }
28+
oci = { id = "io.github.sgtsilvio.gradle.oci", version = "0.15.1" }
2629
license = { id = "com.github.hierynomus.license", version = "0.16.1" }

src/integrationTest/java/com/hivemq/extensions/cluster/discovery/azure/AzureDiscoveryExtensionIT.java

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import com.azure.storage.blob.BlobContainerClient;
2121
import com.azure.storage.blob.BlobContainerClientBuilder;
2222
import com.azure.storage.blob.models.BlobItem;
23+
import io.github.sgtsilvio.gradle.oci.junit.jupiter.OciImages;
2324
import org.jetbrains.annotations.NotNull;
2425
import org.junit.jupiter.api.AfterEach;
2526
import org.junit.jupiter.api.BeforeEach;
@@ -40,10 +41,11 @@
4041
import java.util.concurrent.TimeoutException;
4142
import java.util.stream.Collectors;
4243

43-
import static com.hivemq.extensions.cluster.discovery.azure.DockerImageNames.*;
4444
import static java.util.concurrent.TimeUnit.SECONDS;
4545
import static org.awaitility.Awaitility.await;
46-
import static org.junit.jupiter.api.Assertions.*;
46+
import static org.junit.jupiter.api.Assertions.assertEquals;
47+
import static org.junit.jupiter.api.Assertions.assertFalse;
48+
import static org.junit.jupiter.api.Assertions.assertTrue;
4749

4850
@SuppressWarnings("resource")
4951
class AzureDiscoveryExtensionIT {
@@ -54,10 +56,11 @@ class AzureDiscoveryExtensionIT {
5456
private static final @NotNull String BLOB_CONTAINER_NAME = "hivemq-discovery";
5557

5658
private final @NotNull Network network = Network.newNetwork();
57-
private final @NotNull GenericContainer<?> azureriteContainer = new GenericContainer<>(AZURITE_IMAGE) //
58-
.withExposedPorts(AZURITE_PORT) //
59-
.withNetwork(network) //
60-
.withNetworkAliases(AZURITE_NETWORK_ALIAS);
59+
private final @NotNull GenericContainer<?> azureriteContainer =
60+
new GenericContainer<>(OciImages.getImageName("azure-storage/azurite")) //
61+
.withExposedPorts(AZURITE_PORT) //
62+
.withNetwork(network) //
63+
.withNetworkAliases(AZURITE_NETWORK_ALIAS);
6164

6265
@BeforeEach
6366
void setUp() {
@@ -116,7 +119,8 @@ void twoNodesInCluster_oneNodeStarted_threeNodesInCluster() throws IOException,
116119

117120
@Test
118121
void twoNodesInCluster_oneNodeCannotReachAzure_nodeFileDeleted() throws IOException, TimeoutException {
119-
final ToxiproxyContainer toxiproxy = new ToxiproxyContainer(TOXIPROXY_IMAGE).withNetwork(network).withNetworkAliases(TOXIPROXY_NETWORK_ALIAS);
122+
final ToxiproxyContainer toxiproxy = new ToxiproxyContainer(OciImages.getImageName("shopify/toxiproxy")) //
123+
.withNetwork(network).withNetworkAliases(TOXIPROXY_NETWORK_ALIAS);
120124
try (toxiproxy) {
121125
toxiproxy.start();
122126

@@ -272,7 +276,7 @@ void containerExisting_nodeStarted_containerUsed() throws IOException {
272276
final Path configFile = Files.createTempDirectory("az-extension-test").resolve("azDiscovery.properties");
273277
Files.writeString(configFile, createConfig(connectionString));
274278

275-
return new HiveMQContainer(HIVEMQ_IMAGE) //
279+
return new HiveMQContainer(OciImages.getImageName("hivemq/hivemq4")) //
276280
.withHiveMQConfig(MountableFile.forClasspathResource("config.xml"))
277281
.withExtension(MountableFile.forClasspathResource("hivemq-azure-cluster-discovery-extension"))
278282
.withFileInExtensionHomeFolder(MountableFile.forHostPath(configFile),
@@ -283,4 +287,4 @@ void containerExisting_nodeStarted_containerUsed() throws IOException {
283287
private @NotNull HiveMQContainer createHiveMQNode() throws IOException {
284288
return createHiveMQNode(createDockerAzuriteConnectionString());
285289
}
286-
}
290+
}

src/integrationTest/java/com/hivemq/extensions/cluster/discovery/azure/DockerImageNames.java

Lines changed: 0 additions & 32 deletions
This file was deleted.

0 commit comments

Comments
 (0)