Commit 60464455 by 朽木不可雕也

backup

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