Commit 60464455 by 朽木不可雕也

backup

parent 5134f3c2
......@@ -52,7 +52,7 @@ public class BarrageCollectionInfo implements Serializable {
* 任务执行状态
*/
@JsonProperty(value = "status")
@JsonDeserialize(contentUsing = BarrageStatusEnumJsonHandler.class)
@JsonDeserialize(converter = BarrageStatusEnumJsonHandler.class)
private BarrageStatusEnums status;
/**
* 直播间平台
......@@ -69,4 +69,9 @@ public class BarrageCollectionInfo implements Serializable {
*/
@JsonProperty(value = "collectionCount")
private int collectionCount;
/**
* 任务的开启状态
*/
@JsonProperty(value = "start")
private boolean start;
}
package com.zhiweidata.automatictest.barragecrawlerserver.jsonhandler;
import com.fasterxml.jackson.core.JsonParser;
import com.fasterxml.jackson.databind.DeserializationContext;
import com.fasterxml.jackson.databind.JsonDeserializer;
import com.fasterxml.jackson.databind.JavaType;
import com.fasterxml.jackson.databind.type.TypeFactory;
import com.fasterxml.jackson.databind.util.Converter;
import com.zhiweidata.automatictest.barragecrawlerserver.enums.BarrageStatusEnums;
import java.io.IOException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* 枚举 BarrageStatusEnums 的json转换器
*
* @author aszswaz
* @createTime 2021-09-18 11:44:33
* @ide IntelliJ IDEA
*/
@SuppressWarnings("JavaDoc")
public class BarrageStatusEnumJsonHandler extends JsonDeserializer<BarrageStatusEnums> {
@Nullable
public class BarrageStatusEnumJsonHandler implements Converter<String, BarrageStatusEnums> {
@Override
public BarrageStatusEnums deserialize(@NotNull JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException {
String value = jsonParser.getValueAsString();
public BarrageStatusEnums convert(String value) {
return BarrageStatusEnums.getInstance(value);
}
/**
* 砖砌可处理的类型
*/
@Override
public JavaType getInputType(@NotNull TypeFactory typeFactory) {
return typeFactory.constructType(String.class);
}
/**
* 转换器输出的类型
*/
@Override
public JavaType getOutputType(@NotNull TypeFactory typeFactory) {
return typeFactory.constructType(BarrageStatusEnums.class);
}
}
......@@ -3,13 +3,12 @@ package com.zhiweidata.automatictest.barragecrawlerserver.timertask;
import com.alibaba.excel.EasyExcel;
import com.alibaba.excel.event.SyncReadListener;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTestTask;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionInfo;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTestTask;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageExportResult;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.ServerResponseMessage;
import com.zhiweidata.automatictest.barragecrawlerserver.mapper.BarrageExportResultMapper;
import com.zhiweidata.automatictest.barragecrawlerserver.mapper.ServerResponseMessageMapper;
import com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
......@@ -28,8 +27,8 @@ import org.apache.ibatis.session.SqlSession;
import org.jetbrains.annotations.NotNull;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.JobDetail;
import org.quartz.JobExecutionContext;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
......@@ -37,7 +36,9 @@ import org.quartz.TriggerBuilder;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.CACHE_DIR;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.EXPORT_START_MAX_DELAY;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.TASK_URL;
import static com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil.randomDay;
import static com.zhiweidata.automatictest.publics.BeanContainer.HTTP_CLIENT;
import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER;
import static com.zhiweidata.automatictest.publics.BeanContainer.SQL_SESSION_FACTORY;
......@@ -57,9 +58,9 @@ import static java.util.Objects.requireNonNull;
@SuppressWarnings({"JavaDoc", "GrazieInspection"})
public class ExportTaskJob implements Job {
/**
* 作业对象
* 测试任务
*/
private JobDetail detail;
private BarrageCollectionTestTask testTask;
/**
* 1. 使用任务的 name 作为关键词,请求接口,获得对应任务的任务ID
......@@ -72,9 +73,8 @@ public class ExportTaskJob implements Job {
public void execute(JobExecutionContext context) {
try {
JobDataMap jobDataMap = requireNonNull(context.getMergedJobDataMap());
BarrageCollectionTestTask collectionTask = (BarrageCollectionTestTask) requireNonNull(jobDataMap.get(BARRAGE_COLLECTION_TASK_JOB_KEY));
this.detail = context.getJobDetail();
this.export(collectionTask);
this.testTask = (BarrageCollectionTestTask) requireNonNull(jobDataMap.get(BARRAGE_COLLECTION_TASK_JOB_KEY));
this.export();
} catch (Exception e) {
log.error(e.getMessage(), e);
}
......@@ -83,8 +83,8 @@ public class ExportTaskJob implements Job {
/**
* 尝试导出弹幕
*/
public void export(@NotNull BarrageCollectionTestTask collectionTask) throws IOException, SchedulerException {
String url = TASK_URL + "?limit=20&page=1&name=" + collectionTask.getName();
public void export() throws IOException, SchedulerException {
String url = TASK_URL + "?limit=20&page=1&name=" + this.testTask.getName();
HttpResponse response = HTTP_CLIENT.execute(new HttpGet(url));
ObjectMapper jsonMapper = new ObjectMapper();
......@@ -115,7 +115,7 @@ public class ExportTaskJob implements Job {
log.info(responseMessage.getMessage());
responseMessage.setName(collectionInfo.getName());
// 处理409资源冲突
this.conflict(responseMessage);
if (responseMessage.getCode() != 409) createExportTask(this.testTask);
// 保存响应
this.saveResponseMessage(responseMessage);
} else {
......@@ -213,11 +213,22 @@ public class ExportTaskJob implements Job {
/**
* 处理409资源冲突,随机一个时间再导出一次
*/
private void conflict(@NotNull ServerResponseMessage responseMessage) throws SchedulerException {
if (responseMessage.getCode() != 409) return;
public static void createExportTask(@NotNull BarrageCollectionTestTask collectionTestTask) throws SchedulerException {
Class<ExportTaskJob> taskJobClass = ExportTaskJob.class;
JobBuilder jobBuilder = JobBuilder.newJob(taskJobClass);
String name = collectionTestTask.getName(), group = taskJobClass.getSimpleName();
jobBuilder.withIdentity(name, group);
jobBuilder.withDescription("弹幕导出,以及导出的excel文件的分析");
JobDataMap dataMap = new JobDataMap();
dataMap.put(BARRAGE_COLLECTION_TASK_JOB_KEY, collectionTestTask);
jobBuilder.usingJobData(dataMap);
TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
triggerBuilder.withDescription("导出弹幕测试");
triggerBuilder.startAt(TimeUtil.randomDay(2));
SCHEDULER.scheduleJob(this.detail, triggerBuilder.build());
triggerBuilder.withIdentity(name, group);
triggerBuilder.withDescription("弹幕导出,以及导出的excel文件的分析");
// 在未来 N 天内,随机一个时间启动弹幕的导出测试任务
triggerBuilder.startAt(randomDay(EXPORT_START_MAX_DELAY));
SCHEDULER.scheduleJob(jobBuilder.build(), triggerBuilder.build());
}
}
......@@ -9,6 +9,7 @@ import lombok.extern.slf4j.Slf4j;
import org.quartz.DisallowConcurrentExecution;
import org.quartz.JobExecutionContext;
import static com.zhiweidata.automatictest.barragecrawlerserver.timertask.ExportTaskJob.createExportTask;
import static java.util.Objects.nonNull;
import static java.util.Objects.requireNonNull;
......@@ -41,7 +42,7 @@ public class BiliBiliCreateTaskJob extends CreateTaskJob {
try {
Map<?, ?> roomMap = (Map<?, ?>) room;
BarrageCollectionTestTask collectionTask = BiliBiliCreateTaskJob.super.createCollectionTask(baseUrl + roomMap.get("link"));
if (nonNull(collectionTask)) BiliBiliCreateTaskJob.super.createExportTask(collectionTask);
if (nonNull(collectionTask)) createExportTask(collectionTask);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
......
......@@ -3,10 +3,8 @@ package com.zhiweidata.automatictest.barragecrawlerserver.timertask.createtasks;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTestTask;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.ServerResponseMessage;
import com.zhiweidata.automatictest.barragecrawlerserver.timertask.ExportTaskJob;
import com.zhiweidata.automatictest.barragecrawlerserver.mapper.BarrageCollectionTestTaskMapper;
import com.zhiweidata.automatictest.barragecrawlerserver.mapper.ServerResponseMessageMapper;
import com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil;
import java.io.IOException;
import java.util.Set;
import java.util.UUID;
......@@ -20,21 +18,18 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.quartz.Job;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.EXPORT_START_MAX_DELAY;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.TASK_URL;
import static com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil.randomDay;
import static com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil.randomHour;
import static com.zhiweidata.automatictest.publics.BeanContainer.HTTP_CLIENT;
import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER;
import static com.zhiweidata.automatictest.publics.BeanContainer.SQL_SESSION_FACTORY;
import static com.zhiweidata.automatictest.publics.BeanContainer.STANDARD_DATE_FORMAT;
import static java.util.Objects.nonNull;
import static com.zhiweidata.automatictest.barragecrawlerserver.util.TimeUtil.randomHour;
import static com.zhiweidata.automatictest.barragecrawlerserver.timertask.ExportTaskJob.createExportTask;
/**
* @author aszswaz
......@@ -68,7 +63,7 @@ public abstract class CreateTaskJob implements Job {
liveUrls.forEach(liveUrl -> {
try {
BarrageCollectionTestTask collectionTask = this.createCollectionTask(liveUrl);
if (nonNull(collectionTask)) this.createExportTask(collectionTask);
if (nonNull(collectionTask)) createExportTask(collectionTask);
} catch (Exception e) {
log.error(e.getMessage(), e);
}
......@@ -102,26 +97,4 @@ public abstract class CreateTaskJob implements Job {
}
return responseMessage.getCode() != 200 ? null : collectionTask;
}
/**
* 创建定时导出任务
*/
protected final void createExportTask(@NotNull BarrageCollectionTestTask collectionTask) throws SchedulerException {
Class<ExportTaskJob> taskJobClass = ExportTaskJob.class;
JobBuilder jobBuilder = JobBuilder.newJob(taskJobClass);
String name = collectionTask.getName(), group = taskJobClass.getSimpleName();
jobBuilder.withIdentity(name, group);
jobBuilder.withDescription("弹幕导出,以及导出的excel文件的分析");
JobDataMap dataMap = new JobDataMap();
dataMap.put(BARRAGE_COLLECTION_TASK_JOB_KEY, collectionTask);
jobBuilder.usingJobData(dataMap);
TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
triggerBuilder.withIdentity(name, group);
triggerBuilder.withDescription("弹幕导出,以及导出的excel文件的分析");
// 在未来 N 天内,随机一个时间启动弹幕的导出测试任务
triggerBuilder.startAt(randomDay(EXPORT_START_MAX_DELAY));
SCHEDULER.scheduleJob(jobBuilder.build(), triggerBuilder.build());
}
}
package com.zhiweidata.automatictest.barragecrawlerserver.exporttasks;
import com.zhiweidata.automatictest.barragecrawlerserver.entity.BarrageCollectionTestTask;
import java.io.IOException;
import com.zhiweidata.automatictest.barragecrawlerserver.timertask.ExportTaskJob;
import org.quartz.JobBuilder;
import org.quartz.JobDataMap;
import org.quartz.SchedulerException;
import org.quartz.Trigger;
import org.quartz.TriggerBuilder;
import static com.zhiweidata.automatictest.barragecrawlerserver.config.BaseConfig.BARRAGE_COLLECTION_TASK_JOB_KEY;
import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER;
/**
......@@ -14,11 +19,20 @@ import static com.zhiweidata.automatictest.publics.BeanContainer.SCHEDULER;
@SuppressWarnings("JavaDoc")
class ExportTaskJobTest {
public static void main(String[] args) throws SchedulerException, IOException {
public static void main(String[] args) throws SchedulerException, InterruptedException {
BarrageCollectionTestTask collectionTask = new BarrageCollectionTestTask(
"https://live.bilibili.com/12265?hotRank=0", "62aae6a3-e563-4f24-9e3a-135c6e74a8ac"
"https://live.bilibili.com/21591544?hotRank=0", "9a337c17-f867-4ffb-bf7a-6437d454426e"
);
JobBuilder jobBuilder = JobBuilder.newJob(ExportTaskJob.class);
JobDataMap dataMap = new JobDataMap();
dataMap.put(BARRAGE_COLLECTION_TASK_JOB_KEY, collectionTask);
jobBuilder.setJobData(dataMap);
TriggerBuilder<Trigger> triggerBuilder = TriggerBuilder.newTrigger();
triggerBuilder.startNow();
SCHEDULER.scheduleJob(jobBuilder.build(), triggerBuilder.build());
Thread.sleep(100);
SCHEDULER.shutdown(true);
}
}
\ No newline at end of file
......@@ -2,7 +2,7 @@
name="automatic-test"
alias docker_local="docker -H 192.168.0.119"
if mvn clean package -Dmaven.test.skip=true; then
if mvn clean package -Dmaven.test.skip=true -P test; then
docker_local container stop ${name}
docker_local container rm ${name}
docker_local image rm ${name}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment