From 1ccf8251a367314ceb17e141f26940b560e8c9d1 Mon Sep 17 00:00:00 2001 From: bryan31 Date: Mon, 8 Nov 2021 19:48:18 +0800 Subject: [PATCH] =?UTF-8?q?enhancement=20#I3DM92=20=E9=9B=86=E6=88=90async?= =?UTF-8?q?Tool=E4=BD=9C=E4=B8=BA=E7=BA=BF=E7=A8=8B=E7=BC=96=E6=8E=92?= =?UTF-8?q?=E7=9A=84=E6=A0=B8=E5=BF=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- liteflow-async-tool/pom.xml | 18 +++- .../asynctool/test/seqwork/SeqWorkTest.java | 91 +++++++++++++++++++ .../test/seqwork/work/Callback1.java | 12 +++ .../test/seqwork/work/Callback2.java | 12 +++ .../test/seqwork/work/Callback3.java | 12 +++ .../asynctool/test/seqwork/work/SeqWork1.java | 18 ++++ .../asynctool/test/seqwork/work/SeqWork2.java | 18 ++++ .../asynctool/test/seqwork/work/SeqWork3.java | 18 ++++ 8 files changed, 195 insertions(+), 4 deletions(-) create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/SeqWorkTest.java create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback1.java create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback2.java create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback3.java create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork1.java create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork2.java create mode 100644 liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork3.java diff --git a/liteflow-async-tool/pom.xml b/liteflow-async-tool/pom.xml index b64aadba6..d09dff99e 100644 --- a/liteflow-async-tool/pom.xml +++ b/liteflow-async-tool/pom.xml @@ -11,9 +11,19 @@ liteflow-async-tool - - 8 - 8 - + + + cn.hutool + hutool-core + ${hutool-core.version} + test + + + org.springframework.boot + spring-boot-starter-test + ${springboot.version} + test + + \ No newline at end of file diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/SeqWorkTest.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/SeqWorkTest.java new file mode 100644 index 000000000..6dd483498 --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/SeqWorkTest.java @@ -0,0 +1,91 @@ +package com.yomahub.liteflow.asynctool.test.seqwork; + +import com.yomahub.liteflow.asynctool.executor.Async; +import com.yomahub.liteflow.asynctool.test.seqwork.work.*; +import com.yomahub.liteflow.asynctool.wrapper.WorkerWrapper; +import org.junit.Test; + +public class SeqWorkTest { + + @Test + public void test1(){ + SeqWork1 seqWork1 = new SeqWork1(); + SeqWork2 seqWork2 = new SeqWork2(); + SeqWork3 seqWork3 = new SeqWork3(); + + Callback1 callback1 = new Callback1(); + Callback2 callback2 = new Callback2(); + Callback3 callback3 = new Callback3(); + + WorkerWrapper workerWrapper1 = new WorkerWrapper.Builder() + .worker(seqWork1) + .callback(callback1) + .param("param1") + .build(); + + WorkerWrapper workerWrapper2 = new WorkerWrapper.Builder() + .worker(seqWork2) + .callback(callback2) + .param("param2") + .depend(workerWrapper1) + .build(); + + WorkerWrapper workerWrapper3 = new WorkerWrapper.Builder() + .worker(seqWork3) + .callback(callback3) + .param("param3") + .depend(workerWrapper2) + .build(); + + try{ + boolean flag = Async.beginWork(3500,workerWrapper1); + System.out.println(workerWrapper3.getWorkResult().getResultState()); + System.out.println(flag); + }catch (Exception e){ + e.printStackTrace(); + }finally { + Async.shutDown(); + } + } + + @Test + public void test2(){ + SeqWork1 seqWork1 = new SeqWork1(); + SeqWork2 seqWork2 = new SeqWork2(); + SeqWork3 seqWork3 = new SeqWork3(); + + Callback1 callback1 = new Callback1(); + Callback2 callback2 = new Callback2(); + Callback3 callback3 = new Callback3(); + + WorkerWrapper workerWrapper1 = new WorkerWrapper.Builder() + .worker(seqWork1) + .callback(callback1) + .param("param1") + .build(); + + WorkerWrapper workerWrapper2 = new WorkerWrapper.Builder() + .worker(seqWork2) + .callback(callback2) + .param("param2") + .depend(workerWrapper1) + .build(); + + WorkerWrapper workerWrapper3 = new WorkerWrapper.Builder() + .worker(seqWork3) + .callback(callback3) + .param("param3") + .depend(workerWrapper2) + .build(); + + try{ + boolean flag = Async.beginWork(2500,workerWrapper1); + System.out.println(workerWrapper3.getWorkResult().getResultState()); + System.out.println(flag); + }catch (Exception e){ + e.printStackTrace(); + }finally { + Async.shutDown(); + } + } +} diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback1.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback1.java new file mode 100644 index 000000000..986715b3d --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback1.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.asynctool.test.seqwork.work; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.asynctool.callback.ICallback; +import com.yomahub.liteflow.asynctool.worker.WorkResult; + +public class Callback1 implements ICallback { + @Override + public void result(boolean success, String param, WorkResult workResult) { + System.out.println(StrUtil.format("开始执行{},结果为{},参数为{},workResult为{}", this.getClass().getSimpleName(), success, param, workResult.getResult())); + } +} diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback2.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback2.java new file mode 100644 index 000000000..196c3e98d --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback2.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.asynctool.test.seqwork.work; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.asynctool.callback.ICallback; +import com.yomahub.liteflow.asynctool.worker.WorkResult; + +public class Callback2 implements ICallback { + @Override + public void result(boolean success, String param, WorkResult workResult) { + System.out.println(StrUtil.format("开始执行{},结果为{},参数为{},workResult为{}", this.getClass().getSimpleName(), success, param, workResult.getResult())); + } +} diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback3.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback3.java new file mode 100644 index 000000000..4b95e8f62 --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/Callback3.java @@ -0,0 +1,12 @@ +package com.yomahub.liteflow.asynctool.test.seqwork.work; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.asynctool.callback.ICallback; +import com.yomahub.liteflow.asynctool.worker.WorkResult; + +public class Callback3 implements ICallback { + @Override + public void result(boolean success, String param, WorkResult workResult) { + System.out.println(StrUtil.format("开始执行{},结果为{},参数为{},workResult为{}", this.getClass().getSimpleName(), success, param, workResult.getResult())); + } +} diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork1.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork1.java new file mode 100644 index 000000000..d7a39707f --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork1.java @@ -0,0 +1,18 @@ +package com.yomahub.liteflow.asynctool.test.seqwork.work; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.asynctool.callback.IWorker; +import com.yomahub.liteflow.asynctool.wrapper.WorkerWrapper; + +import java.util.Map; + +public class SeqWork1 implements IWorker { + @Override + public String action(String object, Map allWrappers) { + System.out.println(StrUtil.format("开始执行{},参数为{},当前线程ID为{}", this.getClass().getSimpleName(), object, Thread.currentThread().getId())); + try{ + Thread.sleep(1000); + }catch (Exception ignored){} + return "result1"; + } +} diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork2.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork2.java new file mode 100644 index 000000000..fa5c53a6c --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork2.java @@ -0,0 +1,18 @@ +package com.yomahub.liteflow.asynctool.test.seqwork.work; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.asynctool.callback.IWorker; +import com.yomahub.liteflow.asynctool.wrapper.WorkerWrapper; + +import java.util.Map; + +public class SeqWork2 implements IWorker { + @Override + public String action(String object, Map allWrappers) { + System.out.println(StrUtil.format("开始执行{},参数为{},当前线程ID为{}", this.getClass().getSimpleName(), object, Thread.currentThread().getId())); + try{ + Thread.sleep(1000); + }catch (Exception ignored){} + return "result2"; + } +} diff --git a/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork3.java b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork3.java new file mode 100644 index 000000000..36c1d259f --- /dev/null +++ b/liteflow-async-tool/src/test/java/com/yomahub/liteflow/asynctool/test/seqwork/work/SeqWork3.java @@ -0,0 +1,18 @@ +package com.yomahub.liteflow.asynctool.test.seqwork.work; + +import cn.hutool.core.util.StrUtil; +import com.yomahub.liteflow.asynctool.callback.IWorker; +import com.yomahub.liteflow.asynctool.wrapper.WorkerWrapper; + +import java.util.Map; + +public class SeqWork3 implements IWorker { + @Override + public String action(String object, Map allWrappers) { + System.out.println(StrUtil.format("开始执行{},参数为{},当前线程ID为{}", this.getClass().getSimpleName(), object, Thread.currentThread().getId())); + try{ + Thread.sleep(1000); + }catch (Exception ignored){} + return "result3"; + } +}