mirror of
https://github.com/PowerJob/PowerJob.git
synced 2025-07-17 00:00:04 +08:00
test: add test code for h2
This commit is contained in:
parent
75e5c7049f
commit
987aa966a0
@ -19,7 +19,7 @@
|
||||
|
||||
<!-- 不会被打包的部分,scope 只能是 test 或 provide -->
|
||||
<junit.version>5.9.1</junit.version>
|
||||
<logback.version>1.4.4</logback.version>
|
||||
<logback.version>1.2.9</logback.version>
|
||||
<powerjob.worker.version>4.2.0</powerjob.worker.version>
|
||||
<spring.jdbc.version>5.2.9.RELEASE</spring.jdbc.version>
|
||||
<h2.db.version>2.1.214</h2.db.version>
|
||||
|
@ -20,7 +20,7 @@
|
||||
<hikaricp.version>4.0.3</hikaricp.version>
|
||||
<junit.version>5.9.1</junit.version>
|
||||
|
||||
<logback.version>1.4.4</logback.version>
|
||||
<logback.version>1.2.9</logback.version>
|
||||
</properties>
|
||||
|
||||
<dependencies>
|
||||
|
@ -28,7 +28,7 @@ public class TaskDAOImpl implements TaskDAO {
|
||||
String delTableSQL = "drop table if exists task_info";
|
||||
// 感谢 Gitee 用户 @Linfly 反馈的 BUG
|
||||
// bigint(20) 与 Java Long 取值范围完全一致
|
||||
String createTableSQL = "create table task_info (task_id varchar(255), instance_id bigint, sub_instance_id bigint, task_name varchar(255), task_content blob, address varchar, status int, result text, failed_cnt int, created_time bigint, last_modified_time bigint, last_report_time bigint, constraint pkey unique (instance_id, task_id))";
|
||||
String createTableSQL = "create table task_info (task_id varchar(255), instance_id bigint, sub_instance_id bigint, task_name varchar(255), task_content blob, address varchar(255), status int, result text, failed_cnt int, created_time bigint, last_modified_time bigint, last_report_time bigint, constraint pkey unique (instance_id, task_id))";
|
||||
|
||||
try (Connection conn = connectionFactory.getConnection(); Statement stat = conn.createStatement()) {
|
||||
stat.execute(delTableSQL);
|
||||
|
@ -0,0 +1,115 @@
|
||||
package tech.powerjob.worker.persistence;
|
||||
|
||||
import com.google.common.collect.Lists;
|
||||
import lombok.SneakyThrows;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.h2.jdbc.JdbcSQLIntegrityConstraintViolationException;
|
||||
import org.junit.jupiter.api.BeforeAll;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import tech.powerjob.worker.common.constants.StoreStrategy;
|
||||
import tech.powerjob.worker.common.constants.TaskStatus;
|
||||
import tech.powerjob.worker.core.processor.TaskResult;
|
||||
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.sql.SQLIntegrityConstraintViolationException;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
|
||||
/**
|
||||
* 任务持久化接口测试
|
||||
*
|
||||
* @author tjq
|
||||
* @since 2022/10/23
|
||||
*/
|
||||
@Slf4j
|
||||
class TaskDAOTest {
|
||||
|
||||
private static TaskDAO taskDAO;
|
||||
|
||||
@BeforeAll
|
||||
static void initDAO() throws Exception {
|
||||
|
||||
// 1. 创建对象
|
||||
ConnectionFactory connectionFactory = new ConnectionFactory();
|
||||
connectionFactory.initDatasource(StoreStrategy.DISK);
|
||||
taskDAO = new TaskDAOImpl(connectionFactory);
|
||||
|
||||
// 2. 初始化表
|
||||
taskDAO.initTable();
|
||||
}
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
void testUniqueKey() {
|
||||
|
||||
TaskDO taskDO = buildTaskDO("2", 2L, TaskStatus.WORKER_PROCESS_FAILED);
|
||||
boolean firstSaveRet = taskDAO.save(taskDO);
|
||||
assert firstSaveRet;
|
||||
log.info("[testUniqueKey] first save result: {}", firstSaveRet);
|
||||
assertThrows(SQLIntegrityConstraintViolationException.class, () -> {
|
||||
taskDAO.save(taskDO);
|
||||
});
|
||||
}
|
||||
|
||||
@Test
|
||||
@SneakyThrows
|
||||
void testCRUD() {
|
||||
TaskDO oneTask = buildTaskDO("1", 1L, TaskStatus.WAITING_DISPATCH);
|
||||
TaskDO twoTask = buildTaskDO("2", 1L, TaskStatus.WAITING_DISPATCH);
|
||||
TaskDO threeTask = buildTaskDO("99", 1L, TaskStatus.WAITING_DISPATCH);
|
||||
|
||||
boolean batchSave = taskDAO.batchSave(Lists.newArrayList(oneTask, twoTask, threeTask));
|
||||
log.info("[testCRUD] batchSave result: {}", batchSave);
|
||||
assert batchSave;
|
||||
|
||||
SimpleTaskQuery query = new SimpleTaskQuery();
|
||||
query.setInstanceId(1L);
|
||||
List<TaskDO> simpleQueryRet = taskDAO.simpleQuery(query);
|
||||
log.info("[testCRUD] simple query by instanceId's result: {}", simpleQueryRet);
|
||||
assert simpleQueryRet.size() == 3;
|
||||
|
||||
SimpleTaskQuery deleteQuery = new SimpleTaskQuery();
|
||||
deleteQuery.setTaskId("99");
|
||||
deleteQuery.setInstanceId(1L);
|
||||
boolean simpleDelete = taskDAO.simpleDelete(deleteQuery);
|
||||
log.info("[testCRUD] simpleDelete result: {}", simpleDelete);
|
||||
assert simpleDelete;
|
||||
|
||||
query.setQueryContent("status, result");
|
||||
List<Map<String, Object>> simpleQueryPlusRet = taskDAO.simpleQueryPlus(query);
|
||||
log.info("[testCRUD] simple query plus by instanceId's result: {}", simpleQueryPlusRet);
|
||||
assert simpleQueryPlusRet.size() == 2;
|
||||
assert simpleQueryPlusRet.get(0).get("status") != null;
|
||||
assert simpleQueryPlusRet.get(0).get("instanceId") == null;
|
||||
|
||||
boolean updateToSuccessRet = taskDAO.updateTaskStatus(1L, "1", TaskStatus.WORKER_PROCESS_SUCCESS.getValue(), System.currentTimeMillis(), "UPDATE_TO_SUCCESS");
|
||||
boolean updateToFailedRet = taskDAO.updateTaskStatus(1L, "2", TaskStatus.WORKER_PROCESS_FAILED.getValue(), System.currentTimeMillis(), "UPDATE_TO_FAILED");
|
||||
assert updateToSuccessRet;
|
||||
assert updateToFailedRet;
|
||||
|
||||
List<TaskResult> allTaskResult = taskDAO.getAllTaskResult(1L, 1L);
|
||||
log.info("[testCRUD] allTaskResult: {}", allTaskResult);
|
||||
assert allTaskResult.size() == 2;
|
||||
}
|
||||
|
||||
private static TaskDO buildTaskDO(String taskId, Long instanceId, TaskStatus taskStatus) {
|
||||
TaskDO taskDO = new TaskDO();
|
||||
taskDO.setTaskId(taskId);
|
||||
taskDO.setInstanceId(instanceId);
|
||||
taskDO.setSubInstanceId(instanceId);
|
||||
taskDO.setTaskName("TEST_TASK");
|
||||
taskDO.setTaskContent("TEST_CONTENT".getBytes(StandardCharsets.UTF_8));
|
||||
taskDO.setAddress("127.0.0.1:10086");
|
||||
taskDO.setStatus(taskStatus.getValue());
|
||||
taskDO.setResult("SUCCESS");
|
||||
taskDO.setFailedCnt(0);
|
||||
taskDO.setLastModifiedTime(System.currentTimeMillis());
|
||||
taskDO.setLastReportTime(System.currentTimeMillis());
|
||||
taskDO.setCreatedTime(System.currentTimeMillis());
|
||||
return taskDO;
|
||||
}
|
||||
|
||||
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user