Skip to content

Commit d36a792

Browse files
committed
Tests converted over to InjectedTest
1 parent 9a75b57 commit d36a792

File tree

10 files changed

+227
-266
lines changed

10 files changed

+227
-266
lines changed
Lines changed: 15 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,28 @@
11
package works.bosk.jackson;
22

3-
import java.util.stream.Stream;
3+
import java.lang.reflect.Parameter;
4+
import java.util.List;
5+
import works.bosk.junit.InjectFrom;
6+
import works.bosk.junit.ParameterInjector;
47
import works.bosk.testing.drivers.DriverConformanceTest;
5-
import works.bosk.testing.junit.ParametersByName;
68

79
import static works.bosk.AbstractRoundTripTest.jacksonRoundTripFactory;
810

11+
@InjectFrom(JacksonRoundTripConformanceTest.Injector.class)
912
public class JacksonRoundTripConformanceTest extends DriverConformanceTest {
10-
@ParametersByName
1113
JacksonRoundTripConformanceTest(JacksonSerializerConfiguration config) {
1214
driverFactory = jacksonRoundTripFactory(config);
1315
}
1416

15-
@SuppressWarnings("unused")
16-
static Stream<JacksonSerializerConfiguration> config() {
17-
return Stream.of(JacksonSerializerConfiguration.defaultConfiguration());
17+
record Injector() implements ParameterInjector {
18+
@Override
19+
public boolean supportsParameter(Parameter parameter) {
20+
return parameter.getType() == JacksonSerializerConfiguration.class;
21+
}
22+
23+
@Override
24+
public List<Object> values() {
25+
return List.of(JacksonSerializerConfiguration.defaultConfiguration());
26+
}
1827
}
1928
}

bosk-mongo/src/test/java/works/bosk/drivers/mongo/internal/MongoDriverConformanceTest.java

Lines changed: 26 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import java.util.ArrayDeque;
44
import java.util.Deque;
5+
import java.util.List;
56
import java.util.concurrent.atomic.AtomicInteger;
67
import java.util.stream.Stream;
78
import org.junit.jupiter.api.AfterEach;
@@ -18,38 +19,47 @@
1819
import works.bosk.drivers.mongo.PandoFormat;
1920
import works.bosk.drivers.mongo.internal.TestParameters.EventTiming;
2021
import works.bosk.drivers.mongo.internal.TestParameters.ParameterSet;
22+
import works.bosk.junit.InjectFrom;
23+
import works.bosk.junit.ParameterInjector;
2124
import works.bosk.testing.drivers.SharedDriverConformanceTest;
22-
import works.bosk.testing.junit.ParametersByName;
2325
import works.bosk.testing.junit.Slow;
2426

2527
import static works.bosk.drivers.mongo.MongoDriverSettings.DatabaseFormat.SEQUOIA;
2628

2729
@Slow
30+
@InjectFrom(MongoDriverConformanceTest.Injector.class)
2831
class MongoDriverConformanceTest extends SharedDriverConformanceTest {
2932
private final Deque<Runnable> tearDownActions = new ArrayDeque<>();
3033
private static MongoService mongoService;
3134
private final MongoDriverSettings driverSettings;
3235
private final AtomicInteger numOpenDrivers = new AtomicInteger(0);
3336

34-
@ParametersByName
3537
public MongoDriverConformanceTest(ParameterSet parameters) {
3638
this.driverSettings = parameters.driverSettingsBuilder().build();
3739
}
3840

39-
@SuppressWarnings("unused")
40-
static Stream<ParameterSet> parameters() {
41-
return TestParameters.driverSettings(
42-
Stream.of(
43-
PandoFormat.oneBigDocument(),
44-
// PandoFormat.withGraftPoints("/catalog", "/sideTable"), // Basic
45-
// PandoFormat.withGraftPoints("/nestedSideTable"), // Documents are themselves side tables
46-
PandoFormat.withGraftPoints("/nestedSideTable/-x-"), // Graft points are side table entries
47-
// PandoFormat.withGraftPoints("/catalog/-x-/sideTable", "/sideTable/-x-/catalog", "/sideTable/-x-/sideTable/-y-/catalog"), // Nesting, parameters
48-
// PandoFormat.withGraftPoints("/sideTable/-x-/sideTable/-y-/catalog"), // Multiple parameters in the not-separated part
49-
SEQUOIA
50-
),
51-
Stream.of(EventTiming.NORMAL) // EARLY is slow; LATE is really slow
52-
);
41+
record Injector() implements ParameterInjector {
42+
@Override
43+
public boolean supportsParameter(java.lang.reflect.Parameter parameter) {
44+
return parameter.getType() == ParameterSet.class;
45+
}
46+
47+
@Override
48+
public List<Object> values() {
49+
return TestParameters.driverSettings(
50+
Stream.of(
51+
PandoFormat.oneBigDocument(),
52+
// PandoFormat.withGraftPoints("/catalog", "/sideTable"), // Basic
53+
// PandoFormat.withGraftPoints("/nestedSideTable"), // Documents are themselves side tables
54+
PandoFormat.withGraftPoints("/nestedSideTable/-x-"), // Graft points are side table entries
55+
// PandoFormat.withGraftPoints("/catalog/-x-/sideTable", "/sideTable/-x-/catalog", "/sideTable/-x-/sideTable/-y-/catalog"), // Nesting, parameters
56+
// PandoFormat.withGraftPoints("/sideTable/-x-/sideTable/-y-/catalog"), // Multiple parameters in the not-separated part
57+
SEQUOIA
58+
),
59+
Stream.of(EventTiming.NORMAL)) // EARLY is slow; LATE is really slow
60+
.map(x -> (Object)x)
61+
.toList();
62+
}
5363
}
5464

5565
@BeforeAll

bosk-mongo/src/test/java/works/bosk/drivers/mongo/internal/MongoDriverHanoiTest.java

Lines changed: 24 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package works.bosk.drivers.mongo.internal;
22

3+
import java.util.List;
34
import java.util.Queue;
45
import java.util.concurrent.ConcurrentLinkedDeque;
56
import java.util.stream.Stream;
@@ -12,18 +13,19 @@
1213
import works.bosk.drivers.mongo.MongoDriver;
1314
import works.bosk.drivers.mongo.MongoDriverSettings;
1415
import works.bosk.drivers.mongo.PandoFormat;
16+
import works.bosk.junit.InjectFrom;
17+
import works.bosk.junit.ParameterInjector;
1518
import works.bosk.testing.drivers.HanoiTest;
16-
import works.bosk.testing.junit.ParametersByName;
1719
import works.bosk.testing.junit.Slow;
1820

1921
import static works.bosk.drivers.mongo.internal.MainDriver.COLLECTION_NAME;
2022

2123
@Slow
24+
@InjectFrom(MongoDriverHanoiTest.Injector.class)
2225
public class MongoDriverHanoiTest extends HanoiTest {
2326
private static MongoService mongoService;
2427
private final Queue<Runnable> shutdownOperations = new ConcurrentLinkedDeque<>();
2528

26-
@ParametersByName
2729
public MongoDriverHanoiTest(TestParameters.ParameterSet parameters, TestInfo testInfo) {
2830
MongoDriverSettings settings = parameters.driverSettingsBuilder().build();
2931
this.driverFactory = DriverStack.of(
@@ -57,18 +59,26 @@ void logDone(TestInfo testInfo) {
5759
AbstractMongoDriverTest.logTest("\\=== Done", testInfo);
5860
}
5961

60-
@SuppressWarnings("unused")
61-
static Stream<TestParameters.ParameterSet> parameters() {
62-
return TestParameters.driverSettings(
63-
Stream.of(
64-
PandoFormat.oneBigDocument(),
65-
PandoFormat.withGraftPoints("/puzzles"),
66-
PandoFormat.withGraftPoints("/puzzles/-puzzle-/towers"),
67-
PandoFormat.withGraftPoints("/puzzles", "/puzzles/-puzzle-/towers/-tower-/discs"),
68-
MongoDriverSettings.DatabaseFormat.SEQUOIA
69-
),
70-
Stream.of(TestParameters.EventTiming.NORMAL)
71-
);
62+
record Injector() implements ParameterInjector {
63+
@Override
64+
public boolean supportsParameter(java.lang.reflect.Parameter parameter) {
65+
return parameter.getType() == TestParameters.ParameterSet.class;
66+
}
67+
68+
@Override
69+
public List<Object> values() {
70+
return TestParameters.driverSettings(
71+
Stream.of(
72+
PandoFormat.oneBigDocument(),
73+
PandoFormat.withGraftPoints("/puzzles"),
74+
PandoFormat.withGraftPoints("/puzzles/-puzzle-/towers"),
75+
PandoFormat.withGraftPoints("/puzzles", "/puzzles/-puzzle-/towers/-tower-/discs"),
76+
MongoDriverSettings.DatabaseFormat.SEQUOIA
77+
),
78+
Stream.of(TestParameters.EventTiming.NORMAL))
79+
.map(x -> (Object)x)
80+
.toList();
81+
}
7282
}
7383

7484
}

bosk-mongo/src/test/java/works/bosk/drivers/mongo/internal/MongoDriverRecoveryTest.java

Lines changed: 46 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
import com.mongodb.client.MongoCollection;
44
import java.io.IOException;
5+
import java.lang.reflect.Parameter;
6+
import java.util.List;
57
import java.util.concurrent.atomic.AtomicInteger;
68
import java.util.concurrent.atomic.AtomicReference;
79
import java.util.function.Function;
@@ -22,8 +24,10 @@
2224
import works.bosk.drivers.mongo.PandoFormat;
2325
import works.bosk.exceptions.FlushFailureException;
2426
import works.bosk.exceptions.InvalidTypeException;
27+
import works.bosk.junit.InjectFrom;
28+
import works.bosk.junit.InjectedTest;
29+
import works.bosk.junit.ParameterInjector;
2530
import works.bosk.testing.drivers.state.TestEntity;
26-
import works.bosk.testing.junit.ParametersByName;
2731
import works.bosk.testing.junit.Slow;
2832

2933
import static ch.qos.logback.classic.Level.ERROR;
@@ -38,6 +42,10 @@
3842
* Tests the kinds of recovery actions a human operator might take to try to get a busted service running again.
3943
*/
4044
@Slow
45+
@InjectFrom({
46+
MongoDriverRecoveryTest.FlushOrWaitInjector.class,
47+
MongoDriverRecoveryTest.TestParameterInjector.class
48+
})
4149
public class MongoDriverRecoveryTest extends AbstractMongoDriverTest {
4250
FlushOrWait flushOrWait;
4351

@@ -47,24 +55,31 @@ void overrideLogging() {
4755
setLogging(ERROR, MainDriver.class, ChangeReceiver.class);
4856
}
4957

50-
@ParametersByName
5158
MongoDriverRecoveryTest(FlushOrWait flushOrWait, TestParameters.ParameterSet parameters) {
5259
super(parameters.driverSettingsBuilder());
5360
this.flushOrWait = flushOrWait;
5461
}
5562

56-
@SuppressWarnings("unused")
57-
static Stream<TestParameters.ParameterSet> parameters() {
58-
return TestParameters.driverSettings(
59-
Stream.of(
60-
MongoDriverSettings.DatabaseFormat.SEQUOIA,
61-
PandoFormat.oneBigDocument(),
62-
PandoFormat.withGraftPoints("/catalog", "/sideTable")
63-
),
64-
Stream.of(TestParameters.EventTiming.NORMAL)
65-
).map(b -> b.applyDriverSettings(s -> s
66-
.timescaleMS(SHORT_TIMESCALE) // Note that some tests can take as long as 25x this
67-
));
63+
record TestParameterInjector() implements ParameterInjector {
64+
@Override
65+
public boolean supportsParameter(Parameter parameter) {
66+
return parameter.getType() == TestParameters.ParameterSet.class;
67+
}
68+
69+
@Override
70+
public List<Object> values() {
71+
return TestParameters.driverSettings(
72+
Stream.of(
73+
MongoDriverSettings.DatabaseFormat.SEQUOIA,
74+
PandoFormat.oneBigDocument(),
75+
PandoFormat.withGraftPoints("/catalog", "/sideTable")
76+
),
77+
Stream.of(TestParameters.EventTiming.NORMAL)
78+
).map(b -> b.applyDriverSettings(s -> s
79+
.timescaleMS(SHORT_TIMESCALE) // Note that some tests can take as long as 25x this
80+
)).map(x -> (Object)x)
81+
.toList();
82+
}
6883
}
6984

7085
enum FlushOrWait {
@@ -81,12 +96,20 @@ enum FlushOrWait {
8196
WAIT,
8297
}
8398

84-
@SuppressWarnings("unused")
85-
static Stream<FlushOrWait> flushOrWait() {
86-
return Stream.of(FlushOrWait.values());
99+
record FlushOrWaitInjector() implements ParameterInjector {
100+
@Override
101+
public boolean supportsParameter(Parameter parameter) {
102+
return parameter.getType() == FlushOrWait.class;
103+
}
104+
105+
@Override
106+
public List<Object> values() {
107+
return List.of(FlushOrWait.values());
108+
}
87109
}
88110

89-
@ParametersByName
111+
112+
@InjectedTest
90113
@DisruptsMongoProxy
91114
void initialOutage_recovers() throws InvalidTypeException, InterruptedException, IOException {
92115
LOGGER.debug("Set up the database contents to be different from initialRoot");
@@ -155,7 +178,7 @@ private void waitFor(BoskDriver driver) throws IOException, InterruptedException
155178
}
156179
}
157180

158-
@ParametersByName
181+
@InjectedTest
159182
void databaseDropped_recovers() throws InterruptedException, IOException {
160183
testRecovery(() -> {
161184
LOGGER.debug("Drop database");
@@ -166,7 +189,7 @@ void databaseDropped_recovers() throws InterruptedException, IOException {
166189
}, (_) -> initializeDatabase("after drop"));
167190
}
168191

169-
@ParametersByName
192+
@InjectedTest
170193
void collectionDropped_recovers() throws InterruptedException, IOException {
171194
testRecovery(() -> {
172195
LOGGER.debug("Drop collection");
@@ -177,7 +200,7 @@ void collectionDropped_recovers() throws InterruptedException, IOException {
177200
}, (_) -> initializeDatabase("after drop"));
178201
}
179202

180-
@ParametersByName
203+
@InjectedTest
181204
void documentDeleted_recovers() throws InterruptedException, IOException {
182205
testRecovery(() -> {
183206
LOGGER.debug("Delete document");
@@ -188,7 +211,7 @@ void documentDeleted_recovers() throws InterruptedException, IOException {
188211
}, (_) -> initializeDatabase("after deletion"));
189212
}
190213

191-
@ParametersByName
214+
@InjectedTest
192215
void documentReappears_recovers() throws InterruptedException, IOException {
193216
MongoCollection<Document> collection = mongoService.client()
194217
.getDatabase(driverSettings.database())
@@ -215,7 +238,7 @@ void documentReappears_recovers() throws InterruptedException, IOException {
215238
});
216239
}
217240

218-
@ParametersByName
241+
@InjectedTest
219242
void revisionDeleted_recovers() throws InterruptedException, IOException {
220243
// It's not clear that this is a valid test. If this test is a burden to support,
221244
// we can consider removing it.

0 commit comments

Comments
 (0)