Skip to content

Commit 3034d96

Browse files
committed
Promote shared test utilities to rqueue-test-util main sources
The Redis-only service-impl tests that just moved to rqueue-redis depend on @CoreUnitTest, TestUtils, RqueueMessageTestUtils, and a few static helpers on QueueStatisticsTest — all of which lived in rqueue-core/src/test and were therefore invisible to other modules' test classpaths. Move the cross-module pieces into rqueue-test-util/src/main so any module already depending on rqueue-test-util as testImplementation picks them up: - CoreUnitTest, TestUtils, RqueueMessageTestUtils → rqueue-test-util/main - QueueStatisticsFixtures (extracted from QueueStatisticsTest static helpers) → rqueue-test-util/main; QueueStatisticsTest now delegates to it rqueue-test-util gains a compileOnly dep on rqueue-core (the shared utils reference QueueDetail/QueueConfig/RqueueMessage etc.) and an api dep on mockito-junit-jupiter so @CoreUnitTest's @ExtendWith(MockitoExtension.class) resolves from main sources. No runtime cycle: rqueue-core's main has no dep on rqueue-test-util — only its tests do. Add explicit imports for RqueueSystemManagerService / RqueueMessageMetadataService / RqueueQDetailService / RqueueDashboardChartService / RqueueUtilityService in the moved Redis tests; before the move they were in the same package as the service interfaces, so no imports were needed. Assisted-By: Claude Code
1 parent 192831d commit 3034d96

13 files changed

Lines changed: 91 additions & 34 deletions

File tree

rqueue-core/src/test/java/com/github/sonus21/rqueue/models/db/QueueStatisticsTest.java

Lines changed: 3 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,12 @@
1616

1717
package com.github.sonus21.rqueue.models.db;
1818

19+
import static com.github.sonus21.rqueue.models.db.QueueStatisticsFixtures.addData;
20+
import static com.github.sonus21.rqueue.models.db.QueueStatisticsFixtures.checkNonNull;
21+
import static com.github.sonus21.rqueue.models.db.QueueStatisticsFixtures.validate;
1922
import static org.junit.jupiter.api.Assertions.assertEquals;
2023
import static org.junit.jupiter.api.Assertions.assertNotNull;
2124
import static org.junit.jupiter.api.Assertions.assertNull;
22-
import static org.junit.jupiter.api.Assertions.assertTrue;
2325

2426
import com.github.sonus21.TestBase;
2527
import com.github.sonus21.rqueue.CoreUnitTest;
@@ -31,34 +33,6 @@ public class QueueStatisticsTest extends TestBase {
3133

3234
private final String id = "__rq::q-stat::slow-queue";
3335

34-
public static void validate(QueueStatistics queueStatistics, int count) {
35-
assertEquals(count, queueStatistics.getJobRunTime().size());
36-
assertEquals(count, queueStatistics.getTasksSuccessful().size());
37-
assertEquals(count, queueStatistics.getTasksDiscarded().size());
38-
assertEquals(count, queueStatistics.getTasksMovedToDeadLetter().size());
39-
assertEquals(count, queueStatistics.getTasksRetried().size());
40-
}
41-
42-
public static void checkNonNull(QueueStatistics queueStatistics, String date) {
43-
assertNotNull(queueStatistics.jobRunTime(date));
44-
assertTrue(queueStatistics.tasksSuccessful(date) > 0);
45-
assertTrue(queueStatistics.tasksDiscarded(date) > 0);
46-
assertTrue(queueStatistics.tasksMovedToDeadLetter(date) > 0);
47-
assertTrue(queueStatistics.tasksRetried(date) > 0);
48-
}
49-
50-
public static void addData(QueueStatistics queueStatistics, LocalDate localDate, int day) {
51-
String date = localDate.minusDays(day).toString();
52-
int val = 1 + (int) (Math.random() * 100);
53-
queueStatistics.incrementSuccessful(date, val);
54-
queueStatistics.incrementDiscard(date, val);
55-
queueStatistics.incrementDeadLetter(date, val);
56-
queueStatistics.incrementRetry(date, val);
57-
int val2 = 1 + (int) (Math.random() * 100);
58-
JobRunTime jobRunTime = new JobRunTime(val, val2, val * val2, val2);
59-
queueStatistics.updateJobExecutionTime(date, jobRunTime);
60-
}
61-
6236
@Test
6337
void incrementDeadLetter() {
6438
QueueStatistics queueStatistics = new QueueStatistics(id);

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueDashboardChartServiceTest.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
import com.github.sonus21.rqueue.dao.RqueueQStatsDao;
3232
import com.github.sonus21.rqueue.models.db.JobRunTime;
3333
import com.github.sonus21.rqueue.models.db.QueueStatistics;
34-
import com.github.sonus21.rqueue.models.db.QueueStatisticsTest;
34+
import com.github.sonus21.rqueue.models.db.QueueStatisticsFixtures;
3535
import com.github.sonus21.rqueue.models.enums.AggregationType;
3636
import com.github.sonus21.rqueue.models.enums.ChartDataType;
3737
import com.github.sonus21.rqueue.models.enums.ChartType;
@@ -50,6 +50,8 @@
5050
import org.junit.jupiter.api.Test;
5151
import org.mockito.Mock;
5252
import org.mockito.MockitoAnnotations;
53+
import com.github.sonus21.rqueue.web.service.RqueueDashboardChartService;
54+
import com.github.sonus21.rqueue.web.service.RqueueSystemManagerService;
5355

5456
@Slf4j
5557
@CoreUnitTest
@@ -225,7 +227,7 @@ void getDashboardChartDataLatencyDaily() {
225227
QueueStatistics queueStatistics = new QueueStatistics(id);
226228
LocalDate localDate = DateTimeUtils.today();
227229
for (int i = 0; i < rqueueWebConfig.getHistoryDay(); i++) {
228-
QueueStatisticsTest.addData(queueStatistics, localDate, i);
230+
QueueStatisticsFixtures.addData(queueStatistics, localDate, i);
229231
}
230232
doReturn(Collections.singletonList(queueStatistics))
231233
.when(rqueueQStatsDao)
@@ -263,7 +265,7 @@ void getDashboardChartDataStatsDaily() {
263265
QueueStatistics queueStatistics = new QueueStatistics(id);
264266
LocalDate localDate = DateTimeUtils.today();
265267
for (int i = 0; i < rqueueWebConfig.getHistoryDay(); i++) {
266-
QueueStatisticsTest.addData(queueStatistics, localDate, i);
268+
QueueStatisticsFixtures.addData(queueStatistics, localDate, i);
267269
}
268270
doReturn(Collections.singletonList(queueStatistics))
269271
.when(rqueueQStatsDao)
@@ -301,7 +303,7 @@ void getDashboardChartDataStatsDailyMissingDays() {
301303
QueueStatistics queueStatistics = new QueueStatistics(id);
302304
LocalDate localDate = DateTimeUtils.today();
303305
for (int i = 10; i < rqueueWebConfig.getHistoryDay() - 10; i++) {
304-
QueueStatisticsTest.addData(queueStatistics, localDate, i);
306+
QueueStatisticsFixtures.addData(queueStatistics, localDate, i);
305307
}
306308
doReturn(Collections.singletonList(queueStatistics))
307309
.when(rqueueQStatsDao)

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueMessageMetadataServiceTest.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,7 @@
4949
import org.mockito.Mock;
5050
import org.mockito.MockitoAnnotations;
5151
import org.mockito.stubbing.Answer;
52+
import com.github.sonus21.rqueue.service.RqueueMessageMetadataService;
5253

5354
@CoreUnitTest
5455
class RqueueMessageMetadataServiceTest extends TestBase {

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueQDetailServiceBrokerRoutingTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,8 @@
5252
import org.junit.jupiter.api.Test;
5353
import org.mockito.Mock;
5454
import org.mockito.MockitoAnnotations;
55+
import com.github.sonus21.rqueue.web.service.RqueueSystemManagerService;
56+
import com.github.sonus21.rqueue.service.RqueueMessageMetadataService;
5557

5658
@CoreUnitTest
5759
class RqueueQDetailServiceBrokerRoutingTest extends TestBase {

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueQDetailServiceTest.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,9 @@
7070
import org.springframework.data.redis.core.RedisTemplate;
7171
import org.springframework.data.redis.core.ZSetOperations.TypedTuple;
7272
import org.springframework.messaging.converter.MessageConverter;
73+
import com.github.sonus21.rqueue.web.service.RqueueQDetailService;
74+
import com.github.sonus21.rqueue.web.service.RqueueSystemManagerService;
75+
import com.github.sonus21.rqueue.service.RqueueMessageMetadataService;
7376

7477
@CoreUnitTest
7578
class RqueueQDetailServiceTest extends TestBase {

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/impl/RqueueSystemManagerServiceImplTest.java renamed to rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueSystemManagerServiceImplTest.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
*
1515
*/
1616

17-
package com.github.sonus21.rqueue.redis.web.service.impl;
17+
package com.github.sonus21.rqueue.redis.web.service;
1818

1919
import static org.junit.jupiter.api.Assertions.assertEquals;
2020
import static org.junit.jupiter.api.Assertions.assertFalse;
@@ -39,6 +39,7 @@
3939
import com.github.sonus21.rqueue.listener.QueueDetail;
4040
import com.github.sonus21.rqueue.models.db.QueueConfig;
4141
import com.github.sonus21.rqueue.models.event.RqueueBootstrapEvent;
42+
import com.github.sonus21.rqueue.redis.web.service.impl.RqueueSystemManagerServiceImpl;
4243
import com.github.sonus21.rqueue.utils.TestUtils;
4344
import com.github.sonus21.rqueue.service.RqueueMessageMetadataService;
4445
import java.util.Arrays;

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueSystemManagerServiceTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,8 @@
4444
import org.junit.jupiter.api.Test;
4545
import org.mockito.Mock;
4646
import org.mockito.MockitoAnnotations;
47+
import com.github.sonus21.rqueue.web.service.RqueueSystemManagerService;
48+
import com.github.sonus21.rqueue.service.RqueueMessageMetadataService;
4749

4850
@CoreUnitTest
4951
class RqueueSystemManagerServiceTest extends TestBase {

rqueue-redis/src/test/java/com/github/sonus21/rqueue/redis/web/service/RqueueUtilityServiceTest.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,8 @@
5757
import org.junit.jupiter.api.Test;
5858
import org.mockito.Mock;
5959
import org.mockito.MockitoAnnotations;
60+
import com.github.sonus21.rqueue.service.RqueueMessageMetadataService;
61+
import com.github.sonus21.rqueue.service.RqueueUtilityService;
6062

6163
@CoreUnitTest
6264
class RqueueUtilityServiceTest extends TestBase {

rqueue-test-util/build.gradle

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,4 +30,13 @@ dependencies {
3030
api "org.hibernate.orm:hibernate-core:${hibernateCoreVersion}"
3131

3232
api "com.athaydes.javanna:javanna:1.1"
33+
34+
// Needed so shared test-utility classes (e.g. @CoreUnitTest) can reference Mockito's
35+
// JUnit Jupiter extension from main sources.
36+
api "org.mockito:mockito-junit-jupiter:${mockitoVersion}"
37+
38+
// Test fixtures that ship from main sources (TestUtils, QueueStatisticsFixtures) reference
39+
// model and service types from rqueue-core. Marked compileOnly to avoid a hard runtime
40+
// coupling — every consumer of rqueue-test-util already has rqueue-core on its classpath.
41+
compileOnly project(":rqueue-core")
3342
}

rqueue-core/src/test/java/com/github/sonus21/rqueue/CoreUnitTest.java renamed to rqueue-test-util/src/main/java/com/github/sonus21/rqueue/CoreUnitTest.java

File renamed without changes.

0 commit comments

Comments
 (0)