Testing XxlJobRegistry DAO Operations in xxl-job
This test suite evaluates the XxlJobRegistry data access functionality in the xxl-job scheduler system. It focuses on registry operations including save, update, and cleanup of job registry entries, with specific attention to concurrent access scenarios.
Test Coverage Overview
Implementation Analysis
Technical Details
Best Practices Demonstrated
xuxueli/xxl-job
xxl-job-admin/src/test/java/com/xxl/job/admin/dao/XxlJobRegistryDaoTest.java
package com.xxl.job.admin.dao;
import com.xxl.job.admin.core.model.XxlJobRegistry;
import jakarta.annotation.Resource;
import org.junit.jupiter.api.Test;
import org.springframework.boot.test.context.SpringBootTest;
import java.util.Arrays;
import java.util.Date;
import java.util.List;
import java.util.concurrent.TimeUnit;
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class XxlJobRegistryDaoTest {
@Resource
private XxlJobRegistryDao xxlJobRegistryDao;
@Test
public void test(){
int ret = xxlJobRegistryDao.registrySaveOrUpdate("g1", "k1", "v1", new Date());
/*int ret = xxlJobRegistryDao.registryUpdate("g1", "k1", "v1", new Date());
if (ret < 1) {
ret = xxlJobRegistryDao.registrySave("g1", "k1", "v1", new Date());
}*/
List<XxlJobRegistry> list = xxlJobRegistryDao.findAll(1, new Date());
int ret2 = xxlJobRegistryDao.removeDead(Arrays.asList(1));
}
@Test
public void test2() throws InterruptedException {
for (int i = 0; i < 100; i++) {
new Thread(()->{
int ret = xxlJobRegistryDao.registrySaveOrUpdate("g1", "k1", "v1", new Date());
System.out.println(ret);
/*int ret = xxlJobRegistryDao.registryUpdate("g1", "k1", "v1", new Date());
if (ret < 1) {
ret = xxlJobRegistryDao.registrySave("g1", "k1", "v1", new Date());
}*/
}).start();
}
TimeUnit.SECONDS.sleep(10);
}
}