Skip to content

Commit 91c63f9

Browse files
xiaozcyzhanghan18yuqi1129
authored
[#3024] improvement(IT): close containers and upload container log after all tests are finished (#3197)
### What changes were proposed in this pull request? close containers and upload container log after all tests are finished ### Why are the changes needed? Fix: #3024 ### Does this PR introduce _any_ user-facing change? N/A ### How was this patch tested? existing ITs --------- Co-authored-by: zhanghan18 <zhanghan18@xiaomi.com> Co-authored-by: Qi Yu <yuqi@datastrato.com>
1 parent 4c76924 commit 91c63f9

File tree

5 files changed

+69
-20
lines changed

5 files changed

+69
-20
lines changed

integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/DorisContainer.java

+9-7
Original file line numberDiff line numberDiff line change
@@ -58,13 +58,15 @@ protected void setupContainer() {
5858

5959
@Override
6060
public void start() {
61-
try {
62-
super.start();
63-
Preconditions.check("Doris container startup failed!", checkContainerStatus(5));
64-
Preconditions.check("Doris container password change failed!", changePassword());
65-
} finally {
66-
copyDorisLog();
67-
}
61+
super.start();
62+
Preconditions.check("Doris container startup failed!", checkContainerStatus(5));
63+
Preconditions.check("Doris container password change failed!", changePassword());
64+
}
65+
66+
@Override
67+
public void close() {
68+
copyDorisLog();
69+
super.close();
6870
}
6971

7072
private void copyDorisLog() {

integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/HiveContainer.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -54,12 +54,14 @@ protected void setupContainer() {
5454

5555
@Override
5656
public void start() {
57-
try {
58-
super.start();
59-
Preconditions.check("Hive container startup failed!", checkContainerStatus(10));
60-
} finally {
61-
copyHiveLog();
62-
}
57+
super.start();
58+
Preconditions.check("Hive container startup failed!", checkContainerStatus(10));
59+
}
60+
61+
@Override
62+
public void close() {
63+
copyHiveLog();
64+
super.close();
6365
}
6466

6567
private void copyHiveLog() {

integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/container/KafkaContainer.java

+8-6
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,14 @@ public static Builder builder() {
4747

4848
@Override
4949
public void start() {
50-
try {
51-
super.start();
52-
Preconditions.checkArgument(checkContainerStatus(5), "Kafka container startup failed!");
53-
} finally {
54-
copyKafkaLogs();
55-
}
50+
super.start();
51+
Preconditions.checkArgument(checkContainerStatus(5), "Kafka container startup failed!");
52+
}
53+
54+
@Override
55+
public void close() {
56+
copyKafkaLogs();
57+
super.close();
5658
}
5759

5860
private void copyKafkaLogs() {

integration-test-common/src/test/java/com/datastrato/gravitino/integration/test/util/AbstractIT.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040
import org.slf4j.Logger;
4141
import org.slf4j.LoggerFactory;
4242

43-
@ExtendWith(PrintFuncNameExtension.class)
43+
@ExtendWith({PrintFuncNameExtension.class, CloseContainerExtension.class})
4444
public class AbstractIT {
4545
protected static final ContainerSuite containerSuite = ContainerSuite.getInstance();
4646

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright 2024 Datastrato Pvt Ltd.
3+
* This software is licensed under the Apache License version 2.
4+
*/
5+
package com.datastrato.gravitino.integration.test.util;
6+
7+
import com.datastrato.gravitino.integration.test.container.ContainerSuite;
8+
import org.junit.jupiter.api.extension.BeforeAllCallback;
9+
import org.junit.jupiter.api.extension.ExtensionContext;
10+
import org.slf4j.Logger;
11+
import org.slf4j.LoggerFactory;
12+
13+
/**
14+
* This is an extension for juint 5, which aims to perform certain operations (such as resource
15+
* recycling, etc.) after all test executions are completed (regardless of success or failure). You
16+
* can Refer to {@link AbstractIT} for more information.
17+
*/
18+
public class CloseContainerExtension implements BeforeAllCallback {
19+
@Override
20+
public void beforeAll(ExtensionContext extensionContext) {
21+
synchronized (CloseContainerExtension.class) {
22+
extensionContext
23+
.getRoot()
24+
.getStore(ExtensionContext.Namespace.GLOBAL)
25+
.getOrComputeIfAbsent(CloseableContainer.class);
26+
}
27+
}
28+
29+
private static class CloseableContainer implements ExtensionContext.Store.CloseableResource {
30+
private static final Logger LOGGER = LoggerFactory.getLogger(CloseableContainer.class);
31+
private static final ContainerSuite CONTAINER_SUITE = ContainerSuite.getInstance();
32+
33+
@Override
34+
public void close() {
35+
try {
36+
CONTAINER_SUITE.close();
37+
LOGGER.info("Containers were closed successfully");
38+
} catch (Exception e) {
39+
LOGGER.warn("Containers were not closed as expected", e);
40+
}
41+
}
42+
}
43+
}

0 commit comments

Comments
 (0)