Skip to content

Commit 0b09262

Browse files
committed
Attempting to fix failures due to LCM/GCM flags
1 parent 69dc232 commit 0b09262

14 files changed

+121
-168
lines changed

testng-core/src/test/java/test/listeners/ListenersTest.java

+56-117
Large diffs are not rendered by default.

testng-core/src/test/java/test/listeners/issue2916/AlterSuiteListenerHolder.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IAlterSuiteListener;
65
import org.testng.ITestNGListener;
@@ -10,7 +9,6 @@ public class AlterSuiteListenerHolder {
109

1110
public static final String[] EXPECTED_LOGS =
1211
new String[] {"MasterOogway.alter", "MasterShifu.alter", "DragonWarrior.alter"};
13-
public static List<String> LOGS = new ArrayList<>();
1412
private static final String PREFIX = AlterSuiteListenerHolder.class.getName() + "$";
1513

1614
public static final List<ITestNGListener> ALL =
@@ -25,7 +23,7 @@ public class AlterSuiteListenerHolder {
2523
public abstract static class KungFuWarrior implements IAlterSuiteListener {
2624
@Override
2725
public void alter(List<XmlSuite> suites) {
28-
LOGS.add(getClass().getSimpleName() + ".alter");
26+
LogContainer.instance.log(getClass().getSimpleName() + ".alter");
2927
}
3028
}
3129

testng-core/src/test/java/test/listeners/issue2916/ClassListenerHolder.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,12 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IClassListener;
65
import org.testng.ITestClass;
76
import org.testng.ITestNGListener;
87

98
public class ClassListenerHolder {
109

11-
public static List<String> LOGS = new ArrayList<>();
1210
private static final String PREFIX = ClassListenerHolder.class.getName() + "$";
1311

1412
public static final String[] EXPECTED_LOGS =
@@ -37,12 +35,12 @@ public abstract static class KungFuWarrior implements IClassListener {
3735

3836
@Override
3937
public void onBeforeClass(ITestClass testClass) {
40-
LOGS.add(getClass().getSimpleName() + ".onBeforeClass");
38+
LogContainer.instance.log(getClass().getSimpleName() + ".onBeforeClass");
4139
}
4240

4341
@Override
4442
public void onAfterClass(ITestClass testClass) {
45-
LOGS.add(getClass().getSimpleName() + ".onAfterClass");
43+
LogContainer.instance.log(getClass().getSimpleName() + ".onAfterClass");
4644
}
4745
}
4846

testng-core/src/test/java/test/listeners/issue2916/ConfigurationListenerHolder.java

+4-6
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IConfigurationListener;
65
import org.testng.ITestNGListener;
@@ -9,7 +8,6 @@
98

109
public class ConfigurationListenerHolder {
1110

12-
public static List<String> LOGS = new ArrayList<>();
1311
private static final String PREFIX = ConfigurationListenerHolder.class.getName() + "$";
1412

1513
public static final String[] EXPECTED_LOGS =
@@ -58,25 +56,25 @@ public abstract static class KungFuWarrior implements IConfigurationListener {
5856

5957
@Override
6058
public void beforeConfiguration(ITestResult tr, ITestNGMethod tm) {
61-
LOGS.add(
59+
LogContainer.instance.log(
6260
getClass().getSimpleName() + ".beforeConfiguration_" + tr.getMethod().getMethodName());
6361
}
6462

6563
@Override
6664
public void onConfigurationSuccess(ITestResult tr, ITestNGMethod tm) {
67-
LOGS.add(
65+
LogContainer.instance.log(
6866
getClass().getSimpleName() + ".onConfigurationSuccess_" + tr.getMethod().getMethodName());
6967
}
7068

7169
@Override
7270
public void onConfigurationFailure(ITestResult tr, ITestNGMethod tm) {
73-
LOGS.add(
71+
LogContainer.instance.log(
7472
getClass().getSimpleName() + ".onConfigurationFailure_" + tr.getMethod().getMethodName());
7573
}
7674

7775
@Override
7876
public void onConfigurationSkip(ITestResult tr, ITestNGMethod tm) {
79-
LOGS.add(
77+
LogContainer.instance.log(
8078
getClass().getSimpleName() + ".onConfigurationSkip_" + tr.getMethod().getMethodName());
8179
}
8280
}

testng-core/src/test/java/test/listeners/issue2916/DataProviderInterceptorHolder.java

+2-3
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,11 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.Iterator;
54
import java.util.List;
65
import org.testng.*;
76

87
public class DataProviderInterceptorHolder {
98

10-
public static List<String> LOGS = new ArrayList<>();
119
private static final String PREFIX = DataProviderInterceptorHolder.class.getName() + "$";
1210

1311
public static final String[] EXPECTED_LOGS =
@@ -39,7 +37,8 @@ public Iterator<Object[]> intercept(
3937
IDataProviderMethod dp,
4038
ITestNGMethod method,
4139
ITestContext iTestContext) {
42-
LOGS.add(getClass().getSimpleName() + ".intercept_" + dp.getMethod().getName());
40+
LogContainer.instance.log(
41+
getClass().getSimpleName() + ".intercept_" + dp.getMethod().getName());
4342
return original;
4443
}
4544
}

testng-core/src/test/java/test/listeners/issue2916/DataProviderListenerHolder.java

+3-5
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IDataProviderListener;
65
import org.testng.IDataProviderMethod;
@@ -10,7 +9,6 @@
109

1110
public class DataProviderListenerHolder {
1211

13-
public static List<String> LOGS = new ArrayList<>();
1412
private static final String PREFIX = DataProviderListenerHolder.class.getName() + "$";
1513

1614
public static final String[] EXPECTED_LOGS =
@@ -48,7 +46,7 @@ public abstract static class KungFuWarrior implements IDataProviderListener {
4846
@Override
4947
public void beforeDataProviderExecution(
5048
IDataProviderMethod dataProviderMethod, ITestNGMethod method, ITestContext iTestContext) {
51-
LOGS.add(
49+
LogContainer.instance.log(
5250
getClass().getSimpleName()
5351
+ ".beforeDataProviderExecution_"
5452
+ dataProviderMethod.getMethod().getName());
@@ -57,15 +55,15 @@ public void beforeDataProviderExecution(
5755
@Override
5856
public void afterDataProviderExecution(
5957
IDataProviderMethod dataProviderMethod, ITestNGMethod method, ITestContext iTestContext) {
60-
LOGS.add(
58+
LogContainer.instance.log(
6159
getClass().getSimpleName()
6260
+ ".afterDataProviderExecution_"
6361
+ dataProviderMethod.getMethod().getName());
6462
}
6563

6664
@Override
6765
public void onDataProviderFailure(ITestNGMethod method, ITestContext ctx, RuntimeException t) {
68-
LOGS.add(
66+
LogContainer.instance.log(
6967
getClass().getSimpleName()
7068
+ ".onDataProviderFailure_"
7169
+ method.getDataProviderMethod().getMethod().getName());

testng-core/src/test/java/test/listeners/issue2916/ElaborateSampleTestCase.java

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@ public void flakyTest() {
2323
}
2424
}
2525

26-
@Test(timeOut = 2, priority = 4)
26+
@Test(timeOut = 25, priority = 4)
2727
public void timingOutTest() throws InterruptedException {
28-
TimeUnit.MILLISECONDS.sleep(10);
28+
TimeUnit.MILLISECONDS.sleep(100);
2929
}
3030
}

testng-core/src/test/java/test/listeners/issue2916/ExecutionListenerHolder.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IExecutionListener;
65
import org.testng.ITestNGListener;
@@ -16,7 +15,6 @@ public class ExecutionListenerHolder {
1615
"MasterShifu.onExecutionFinish",
1716
"MasterOogway.onExecutionFinish"
1817
};
19-
public static List<String> LOGS = new ArrayList<>();
2018
private static final String PREFIX = ExecutionListenerHolder.class.getName() + "$";
2119

2220
public static final List<ITestNGListener> ALL =
@@ -35,12 +33,12 @@ public class ExecutionListenerHolder {
3533
public abstract static class KungFuWarrior implements IExecutionListener {
3634
@Override
3735
public void onExecutionStart() {
38-
LOGS.add(getClass().getSimpleName() + ".onExecutionStart");
36+
LogContainer.instance.log(getClass().getSimpleName() + ".onExecutionStart");
3937
}
4038

4139
@Override
4240
public void onExecutionFinish() {
43-
LOGS.add(getClass().getSimpleName() + ".onExecutionFinish");
41+
LogContainer.instance.log(getClass().getSimpleName() + ".onExecutionFinish");
4442
}
4543
}
4644

testng-core/src/test/java/test/listeners/issue2916/ExecutionVisualiserHolder.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.*;
65

76
public class ExecutionVisualiserHolder {
87

9-
public static List<String> LOGS = new ArrayList<>();
108
private static final String PREFIX = ExecutionVisualiserHolder.class.getName() + "$";
119

1210
public static final String[] EXPECTED_LOGS =
@@ -34,7 +32,7 @@ public abstract static class KungFuWarrior implements IExecutionVisualiser {
3432

3533
@Override
3634
public void consumeDotDefinition(String dotDefinition) {
37-
LOGS.add(getClass().getSimpleName() + ".consumeDotDefinition");
35+
LogContainer.instance.log(getClass().getSimpleName() + ".consumeDotDefinition");
3836
}
3937
}
4038

testng-core/src/test/java/test/listeners/issue2916/InvokedMethodListenerHolder.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IInvokedMethod;
65
import org.testng.IInvokedMethodListener;
@@ -9,7 +8,6 @@
98

109
public class InvokedMethodListenerHolder {
1110

12-
public static List<String> LOGS = new ArrayList<>();
1311
private static final String PREFIX = InvokedMethodListenerHolder.class.getName() + "$";
1412

1513
public static final String[] EXPECTED_LOGS =
@@ -107,15 +105,15 @@ public abstract static class KungFuWarrior implements IInvokedMethodListener {
107105
@Override
108106
public void beforeInvocation(IInvokedMethod method, ITestResult testResult) {
109107
IInvokedMethodListener.super.beforeInvocation(method, testResult);
110-
LOGS.add(
108+
LogContainer.instance.log(
111109
getClass().getSimpleName()
112110
+ ".beforeInvocation_"
113111
+ method.getTestMethod().getMethodName());
114112
}
115113

116114
@Override
117115
public void afterInvocation(IInvokedMethod method, ITestResult testResult) {
118-
LOGS.add(
116+
LogContainer.instance.log(
119117
getClass().getSimpleName()
120118
+ ".afterInvocation_"
121119
+ method.getTestMethod().getMethodName());
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
package test.listeners.issue2916;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
import java.util.Objects;
7+
import org.testng.internal.AutoCloseableLock;
8+
9+
public enum LogContainer {
10+
instance;
11+
12+
private List<String> logs;
13+
14+
private final AutoCloseableLock lock = new AutoCloseableLock();
15+
16+
public void initialiseLogs() {
17+
try (AutoCloseableLock ignore = lock.lock()) {
18+
logs = new ArrayList<>();
19+
}
20+
}
21+
22+
public void log(String line) {
23+
try (AutoCloseableLock ignore = lock.lock()) {
24+
Objects.requireNonNull(logs).add(line);
25+
}
26+
}
27+
28+
public List<String> allLogs() {
29+
if (logs == null || logs.isEmpty()) {
30+
throw new IllegalStateException("Logs should have been initialised");
31+
}
32+
return Collections.synchronizedList(logs);
33+
}
34+
}

testng-core/src/test/java/test/listeners/issue2916/MethodInterceptorHolder.java

+1-3
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.IMethodInstance;
65
import org.testng.IMethodInterceptor;
@@ -9,7 +8,6 @@
98

109
public class MethodInterceptorHolder {
1110

12-
public static List<String> LOGS = new ArrayList<>();
1311
private static final String PREFIX = MethodInterceptorHolder.class.getName() + "$";
1412

1513
public static final String[] EXPECTED_LOGS =
@@ -32,7 +30,7 @@ public abstract static class KungFuWarrior implements IMethodInterceptor {
3230

3331
@Override
3432
public List<IMethodInstance> intercept(List<IMethodInstance> methods, ITestContext context) {
35-
LOGS.add(getClass().getSimpleName() + ".intercept");
33+
LogContainer.instance.log(getClass().getSimpleName() + ".intercept");
3634
return methods;
3735
}
3836
}

testng-core/src/test/java/test/listeners/issue2916/SuiteListenerHolder.java

+2-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package test.listeners.issue2916;
22

3-
import java.util.ArrayList;
43
import java.util.List;
54
import org.testng.ISuite;
65
import org.testng.ISuiteListener;
@@ -17,7 +16,6 @@ public class SuiteListenerHolder {
1716
"MasterShifu.onFinish",
1817
"MasterOogway.onFinish"
1918
};
20-
public static List<String> LOGS = new ArrayList<>();
2119
private static final String PREFIX = SuiteListenerHolder.class.getName() + "$";
2220

2321
public static final List<ITestNGListener> ALL =
@@ -36,12 +34,12 @@ public abstract static class KungFuWarrior implements ISuiteListener {
3634

3735
@Override
3836
public void onStart(ISuite suite) {
39-
LOGS.add(getClass().getSimpleName() + ".onStart");
37+
LogContainer.instance.log(getClass().getSimpleName() + ".onStart");
4038
}
4139

4240
@Override
4341
public void onFinish(ISuite suite) {
44-
LOGS.add(getClass().getSimpleName() + ".onFinish");
42+
LogContainer.instance.log(getClass().getSimpleName() + ".onFinish");
4543
}
4644
}
4745

0 commit comments

Comments
 (0)