Skip to content

Commit cf8ff05

Browse files
authored
[AMORO-4203][optimizer-common] Migrate tests from JUnit 4 to JUnit 5 (#4204)
Migrate the 5 test files in amoro-optimizer-common to JUnit Jupiter: OptimizerTestBase, TestOptimizer, TestOptimizerToucher, TestOptimizerExecutor, TestOptimizerConfig. OptimizerTestBase no longer uses @ClassRule on TestAms (which still extends ExternalResource until the closing PR of #4203). Its public before()/after() are invoked from @BeforeAll/@afterall instead, which preserves the original lifecycle without forcing TestAms itself to migrate yet. The duplicated @BeforeClass reduceCallAmsInterval() in TestOptimizer is dropped because the parent already runs it. Mechanical changes elsewhere: org.junit.* -> org.junit.jupiter.api.*; @Before/@after -> @BeforeEach/@AfterEach; Assert.assertX -> Assertions.assertX; @test(expected=CmdLineException.class) in TestOptimizerConfig -> three Assertions.assertThrows(...) calls. mvn -pl amoro-optimizer/amoro-optimizer-common -am test passes (10/10).
1 parent 4d86151 commit cf8ff05

5 files changed

Lines changed: 78 additions & 76 deletions

File tree

amoro-optimizer/amoro-optimizer-common/src/test/java/org/apache/amoro/optimizer/common/OptimizerTestBase.java

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,25 @@
1919
package org.apache.amoro.optimizer.common;
2020

2121
import org.apache.amoro.TestAms;
22-
import org.junit.Before;
23-
import org.junit.BeforeClass;
24-
import org.junit.ClassRule;
22+
import org.junit.jupiter.api.AfterAll;
23+
import org.junit.jupiter.api.BeforeAll;
24+
import org.junit.jupiter.api.BeforeEach;
2525

2626
public abstract class OptimizerTestBase {
27-
@ClassRule public static TestAms TEST_AMS = new TestAms();
27+
protected static final TestAms TEST_AMS = new TestAms();
2828

29-
@BeforeClass
30-
public static void reduceCallAmsInterval() {
29+
@BeforeAll
30+
public static void startTestAms() throws Exception {
31+
TEST_AMS.before();
3132
OptimizerTestHelpers.setCallAmsIntervalForTest();
3233
}
3334

34-
@Before
35+
@AfterAll
36+
public static void stopTestAms() {
37+
TEST_AMS.after();
38+
}
39+
40+
@BeforeEach
3541
public void clearTasks() {
3642
TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().clear();
3743
TEST_AMS.getOptimizerHandler().getPendingTasks().clear();

amoro-optimizer/amoro-optimizer-common/src/test/java/org/apache/amoro/optimizer/common/TestOptimizer.java

Lines changed: 4 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -19,28 +19,22 @@
1919
package org.apache.amoro.optimizer.common;
2020

2121
import org.apache.amoro.api.OptimizingTaskResult;
22-
import org.junit.Assert;
23-
import org.junit.BeforeClass;
24-
import org.junit.Test;
22+
import org.junit.jupiter.api.Assertions;
23+
import org.junit.jupiter.api.Test;
2524

2625
import java.util.List;
2726
import java.util.concurrent.TimeUnit;
2827

2928
public class TestOptimizer extends OptimizerTestBase {
3029

31-
@BeforeClass
32-
public static void reduceCallAmsInterval() {
33-
OptimizerTestHelpers.setCallAmsIntervalForTest();
34-
}
35-
3630
@Test
3731
public void testStartOptimizer() throws InterruptedException {
3832
OptimizerConfig optimizerConfig =
3933
OptimizerTestHelpers.buildOptimizerConfig(TEST_AMS.getServerUrl());
4034
Optimizer optimizer = new Optimizer(optimizerConfig);
4135
new Thread(optimizer::startOptimizing).start();
4236
TimeUnit.SECONDS.sleep(1);
43-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().size());
37+
Assertions.assertEquals(1, TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().size());
4438
TEST_AMS
4539
.getOptimizerHandler()
4640
.offerTask(TestOptimizerExecutor.TestOptimizingInput.successInput(1).toTask(0, 0));
@@ -51,7 +45,7 @@ public void testStartOptimizer() throws InterruptedException {
5145
String token = optimizer.getToucher().getToken();
5246
List<OptimizingTaskResult> taskResults =
5347
TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token);
54-
Assert.assertEquals(2, taskResults.size());
48+
Assertions.assertEquals(2, taskResults.size());
5549
optimizer.stopOptimizing();
5650
}
5751
}

amoro-optimizer/amoro-optimizer-common/src/test/java/org/apache/amoro/optimizer/common/TestOptimizerConfig.java

Lines changed: 26 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
package org.apache.amoro.optimizer.common;
2020

21-
import org.junit.Assert;
22-
import org.junit.Test;
21+
import org.junit.jupiter.api.Assertions;
22+
import org.junit.jupiter.api.Test;
2323
import org.kohsuke.args4j.CmdLineException;
2424

2525
import java.util.UUID;
@@ -31,13 +31,13 @@ public void testParseArguments() throws CmdLineException {
3131
String cmd = "-a thrift://127.0.0.1:1260 -p 11 -g g1 -hb 2000 -eds -dsp /tmp/amoro -msz 512";
3232
String[] args = cmd.split(" ");
3333
OptimizerConfig optimizerConfig = new OptimizerConfig(args);
34-
Assert.assertEquals("thrift://127.0.0.1:1260", optimizerConfig.getAmsUrl());
35-
Assert.assertEquals(11, optimizerConfig.getExecutionParallel());
36-
Assert.assertEquals("g1", optimizerConfig.getGroupName());
37-
Assert.assertEquals(2000, optimizerConfig.getHeartBeat());
38-
Assert.assertTrue(optimizerConfig.isExtendDiskStorage());
39-
Assert.assertEquals("/tmp/amoro", optimizerConfig.getDiskStoragePath());
40-
Assert.assertEquals(512, optimizerConfig.getMemoryStorageSize());
34+
Assertions.assertEquals("thrift://127.0.0.1:1260", optimizerConfig.getAmsUrl());
35+
Assertions.assertEquals(11, optimizerConfig.getExecutionParallel());
36+
Assertions.assertEquals("g1", optimizerConfig.getGroupName());
37+
Assertions.assertEquals(2000, optimizerConfig.getHeartBeat());
38+
Assertions.assertTrue(optimizerConfig.isExtendDiskStorage());
39+
Assertions.assertEquals("/tmp/amoro", optimizerConfig.getDiskStoragePath());
40+
Assertions.assertEquals(512, optimizerConfig.getMemoryStorageSize());
4141
}
4242

4343
@Test
@@ -60,31 +60,31 @@ public void testSetAndGet() {
6060
config.setMemoryStorageSize(memoryStorageSize);
6161
config.setResourceId(resourceId);
6262

63-
Assert.assertEquals(amsUrl, config.getAmsUrl());
64-
Assert.assertEquals(executionParallel, config.getExecutionParallel());
65-
Assert.assertEquals(groupName, config.getGroupName());
66-
Assert.assertEquals(heartBeat, config.getHeartBeat());
67-
Assert.assertTrue(config.isExtendDiskStorage());
68-
Assert.assertEquals(diskStoragePath, config.getDiskStoragePath());
69-
Assert.assertEquals(memoryStorageSize, config.getMemoryStorageSize());
70-
Assert.assertEquals(resourceId, config.getResourceId());
63+
Assertions.assertEquals(amsUrl, config.getAmsUrl());
64+
Assertions.assertEquals(executionParallel, config.getExecutionParallel());
65+
Assertions.assertEquals(groupName, config.getGroupName());
66+
Assertions.assertEquals(heartBeat, config.getHeartBeat());
67+
Assertions.assertTrue(config.isExtendDiskStorage());
68+
Assertions.assertEquals(diskStoragePath, config.getDiskStoragePath());
69+
Assertions.assertEquals(memoryStorageSize, config.getMemoryStorageSize());
70+
Assertions.assertEquals(resourceId, config.getResourceId());
7171
}
7272

73-
@Test(expected = CmdLineException.class)
74-
public void testMissingRequiredArgs() throws CmdLineException {
73+
@Test
74+
public void testMissingRequiredArgs() {
7575
String[] args = {"-a", "thrift://127.0.0.1:1260", "-p", "4"};
76-
new OptimizerConfig(args);
76+
Assertions.assertThrows(CmdLineException.class, () -> new OptimizerConfig(args));
7777
}
7878

79-
@Test(expected = CmdLineException.class)
80-
public void testInvalidArgs() throws CmdLineException {
79+
@Test
80+
public void testInvalidArgs() {
8181
String[] args = {"-a", "thrift://127.0.0.1:1260", "-p", "invalid", "-g", "testGroup"};
82-
new OptimizerConfig(args);
82+
Assertions.assertThrows(CmdLineException.class, () -> new OptimizerConfig(args));
8383
}
8484

85-
@Test(expected = CmdLineException.class)
86-
public void testMissingValueArgs() throws CmdLineException {
85+
@Test
86+
public void testMissingValueArgs() {
8787
String[] args = {"-a", "thrift://127.0.0.1:1260", "-p", "-g", "testGroup"};
88-
new OptimizerConfig(args);
88+
Assertions.assertThrows(CmdLineException.class, () -> new OptimizerConfig(args));
8989
}
9090
}

amoro-optimizer/amoro-optimizer-common/src/test/java/org/apache/amoro/optimizer/common/TestOptimizerExecutor.java

Lines changed: 23 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -30,10 +30,10 @@
3030
import org.apache.amoro.shade.guava32.com.google.common.collect.Maps;
3131
import org.apache.amoro.shade.thrift.org.apache.thrift.TException;
3232
import org.apache.amoro.utils.SerializationUtil;
33-
import org.junit.After;
34-
import org.junit.Assert;
35-
import org.junit.Before;
36-
import org.junit.Test;
33+
import org.junit.jupiter.api.AfterEach;
34+
import org.junit.jupiter.api.Assertions;
35+
import org.junit.jupiter.api.BeforeEach;
36+
import org.junit.jupiter.api.Test;
3737

3838
import java.util.Map;
3939
import java.util.concurrent.TimeUnit;
@@ -44,15 +44,15 @@ public class TestOptimizerExecutor extends OptimizerTestBase {
4444

4545
private OptimizerExecutor optimizerExecutor;
4646

47-
@Before
47+
@BeforeEach
4848
public void startOptimizer() {
4949
OptimizerConfig optimizerConfig =
5050
OptimizerTestHelpers.buildOptimizerConfig(TEST_AMS.getServerUrl());
5151
optimizerExecutor = new OptimizerExecutor(optimizerConfig, 0);
5252
new Thread(optimizerExecutor::start).start();
5353
}
5454

55-
@After
55+
@AfterEach
5656
public void stopOptimizer() {
5757
optimizerExecutor.stop();
5858
}
@@ -61,7 +61,7 @@ public void stopOptimizer() {
6161
public void testWaitForToken() throws InterruptedException {
6262
TEST_AMS.getOptimizerHandler().offerTask(TestOptimizingInput.successInput(1).toTask(0, 0));
6363
TimeUnit.MILLISECONDS.sleep(OptimizerTestHelpers.CALL_AMS_INTERVAL * 2);
64-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
64+
Assertions.assertEquals(1, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
6565
}
6666

6767
@Test
@@ -70,18 +70,19 @@ public void testExecuteTaskSuccess() throws InterruptedException, TException {
7070
String token =
7171
TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().keySet().iterator().next();
7272
TEST_AMS.getOptimizerHandler().offerTask(TestOptimizingInput.successInput(1).toTask(0, 0));
73-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
73+
Assertions.assertEquals(1, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
7474
optimizerExecutor.setToken(token);
7575
TimeUnit.MILLISECONDS.sleep(OptimizerTestHelpers.CALL_AMS_INTERVAL * 2);
76-
Assert.assertEquals(0, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
77-
Assert.assertTrue(TEST_AMS.getOptimizerHandler().getCompletedTasks().containsKey(token));
78-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token).size());
76+
Assertions.assertEquals(0, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
77+
Assertions.assertTrue(TEST_AMS.getOptimizerHandler().getCompletedTasks().containsKey(token));
78+
Assertions.assertEquals(
79+
1, TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token).size());
7980
OptimizingTaskResult taskResult =
8081
TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token).get(0);
81-
Assert.assertEquals(new OptimizingTaskId(0, 0), taskResult.getTaskId());
82-
Assert.assertNull(taskResult.getErrorMessage());
82+
Assertions.assertEquals(new OptimizingTaskId(0, 0), taskResult.getTaskId());
83+
Assertions.assertNull(taskResult.getErrorMessage());
8384
TestOptimizingOutput output = SerializationUtil.simpleDeserialize(taskResult.getTaskOutput());
84-
Assert.assertEquals(1, output.inputId());
85+
Assertions.assertEquals(1, output.inputId());
8586
}
8687

8788
@Test
@@ -90,17 +91,18 @@ public void testExecuteTaskFailed() throws InterruptedException, TException {
9091
String token =
9192
TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().keySet().iterator().next();
9293
TEST_AMS.getOptimizerHandler().offerTask(TestOptimizingInput.failedInput(1).toTask(0, 0));
93-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
94+
Assertions.assertEquals(1, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
9495
optimizerExecutor.setToken(token);
9596
TimeUnit.MILLISECONDS.sleep(OptimizerTestHelpers.CALL_AMS_INTERVAL * 2);
96-
Assert.assertEquals(0, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
97-
Assert.assertTrue(TEST_AMS.getOptimizerHandler().getCompletedTasks().containsKey(token));
98-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token).size());
97+
Assertions.assertEquals(0, TEST_AMS.getOptimizerHandler().getPendingTasks().size());
98+
Assertions.assertTrue(TEST_AMS.getOptimizerHandler().getCompletedTasks().containsKey(token));
99+
Assertions.assertEquals(
100+
1, TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token).size());
99101
OptimizingTaskResult taskResult =
100102
TEST_AMS.getOptimizerHandler().getCompletedTasks().get(token).get(0);
101-
Assert.assertEquals(new OptimizingTaskId(0, 0), taskResult.getTaskId());
102-
Assert.assertNull(taskResult.getTaskOutput());
103-
Assert.assertTrue(taskResult.getErrorMessage().contains(FAILED_TASK_MESSAGE));
103+
Assertions.assertEquals(new OptimizingTaskId(0, 0), taskResult.getTaskId());
104+
Assertions.assertNull(taskResult.getTaskOutput());
105+
Assertions.assertTrue(taskResult.getErrorMessage().contains(FAILED_TASK_MESSAGE));
104106
}
105107

106108
public static class TestOptimizingInput extends BaseOptimizingInput {

amoro-optimizer/amoro-optimizer-common/src/test/java/org/apache/amoro/optimizer/common/TestOptimizerToucher.java

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,8 +22,8 @@
2222
import org.apache.amoro.api.OptimizerRegisterInfo;
2323
import org.apache.amoro.shade.guava32.com.google.common.collect.Lists;
2424
import org.apache.amoro.shade.guava32.com.google.common.collect.Maps;
25-
import org.junit.Assert;
26-
import org.junit.Test;
25+
import org.junit.jupiter.api.Assertions;
26+
import org.junit.jupiter.api.Test;
2727

2828
import java.util.List;
2929
import java.util.Map;
@@ -43,8 +43,8 @@ public void testRegisterOptimizer() throws InterruptedException {
4343
optimizerToucher.withRegisterProperty("test_k", "test_v");
4444
new Thread(optimizerToucher::start).start();
4545
tokenChangeListener.waitForTokenChange();
46-
Assert.assertEquals(1, tokenChangeListener.tokenList().size());
47-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().size());
46+
Assertions.assertEquals(1, tokenChangeListener.tokenList().size());
47+
Assertions.assertEquals(1, TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().size());
4848
Map<String, String> optimizerProperties = Maps.newHashMap();
4949
optimizerProperties.put("test_k", "test_v");
5050
optimizerProperties.put(OptimizerProperties.OPTIMIZER_HEART_BEAT_INTERVAL, "1000");
@@ -54,8 +54,8 @@ public void testRegisterOptimizer() throws InterruptedException {
5454
// clear all optimizer, toucher will register again
5555
TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().clear();
5656
tokenChangeListener.waitForTokenChange();
57-
Assert.assertEquals(2, tokenChangeListener.tokenList().size());
58-
Assert.assertEquals(1, TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().size());
57+
Assertions.assertEquals(2, tokenChangeListener.tokenList().size());
58+
Assertions.assertEquals(1, TEST_AMS.getOptimizerHandler().getRegisteredOptimizers().size());
5959
validateRegisteredOptimizer(
6060
tokenChangeListener.tokenList().get(1), optimizerConfig, optimizerProperties);
6161

@@ -66,14 +66,14 @@ private void validateRegisteredOptimizer(
6666
String token, OptimizerConfig registerConfig, Map<String, String> optimizerProperties) {
6767
Map<String, OptimizerRegisterInfo> registeredOptimizerMap =
6868
TEST_AMS.getOptimizerHandler().getRegisteredOptimizers();
69-
Assert.assertTrue(registeredOptimizerMap.containsKey(token));
69+
Assertions.assertTrue(registeredOptimizerMap.containsKey(token));
7070

7171
OptimizerRegisterInfo registerInfo = registeredOptimizerMap.get(token);
72-
Assert.assertEquals(registerConfig.getResourceId(), registerInfo.getResourceId());
73-
Assert.assertEquals(registerConfig.getGroupName(), registerInfo.getGroupName());
74-
Assert.assertEquals(registerConfig.getMemorySize(), registerInfo.getMemoryMb());
75-
Assert.assertEquals(registerConfig.getExecutionParallel(), registerInfo.getThreadCount());
76-
Assert.assertEquals(optimizerProperties, registerInfo.getProperties());
72+
Assertions.assertEquals(registerConfig.getResourceId(), registerInfo.getResourceId());
73+
Assertions.assertEquals(registerConfig.getGroupName(), registerInfo.getGroupName());
74+
Assertions.assertEquals(registerConfig.getMemorySize(), registerInfo.getMemoryMb());
75+
Assertions.assertEquals(registerConfig.getExecutionParallel(), registerInfo.getThreadCount());
76+
Assertions.assertEquals(optimizerProperties, registerInfo.getProperties());
7777
}
7878

7979
static class TestTokenChangeListener implements OptimizerToucher.TokenChangeListener {

0 commit comments

Comments
 (0)