diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_009.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_009.js index 646e818638e3d22fef5c2f056484a1436fb0fa80..59ce1ef2b5af7c8332c8a18ca882c695b0685747 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_009.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_009.js @@ -17,6 +17,7 @@ import worker from "@ohos.worker" const parentPort = worker.parentPort; var ss = undefined; +var flag = false; parentPort.onmessage = function(e) { let data = e.data; @@ -24,8 +25,20 @@ parentPort.onmessage = function(e) { case "new": ss = new worker.Worker("workers/worker_0091.js"); console.log("worker:: workerxx "); + ss.onexit = function() { + flag = true; + } parentPort.postMessage(ss != null); break; + case "wait": + if (flag) { + parentPort.postMessage("terminate"); + } + break; + case "terminate": + flag = false; + ss.terminate(); + break; default: break; } diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_010.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_010.js index 444946ad6a73b8174b5e1fe93953cccf2cf85356..748325ec6ceaf42ac90884f977a5130e2d875f38 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_010.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_010.js @@ -29,6 +29,10 @@ parentPort.onmessage = function(e) { backValue = ee.data; flag = true; } + ss.onexit = function() { + backValue = "terminate"; + flag = true; + } ss.postMessage(data.value); break; case "wait": @@ -36,6 +40,10 @@ parentPort.onmessage = function(e) { parentPort.postMessage(backValue); } break; + case "terminate": + flag = false; + ss.terminate(); + break; default: break; } diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_012.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_012.js index ae3c8f78308c615332ba0402a14c8066aa3291c8..7767338e55559db65720083a62c88fb60f589b8c 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_012.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_012.js @@ -29,6 +29,10 @@ parentPort.onmessage = function(e) { backValue = ee.data; flag = true; } + ss.onexit = function() { + backValue = "terminate"; + flag = true; + } ss.postMessage({type: "new"}); break; case "wait": @@ -36,6 +40,10 @@ parentPort.onmessage = function(e) { parentPort.postMessage(backValue); } break; + case "terminate": + flag = false; + ss.terminate(); + break; default: break; } diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0121.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0121.js index 42fb4c47eb5b6fe417095181ba3f5a41c8b1e9e8..862eafab6fb8008fe6923b2ff20bf522f67c606c 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0121.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0121.js @@ -25,7 +25,10 @@ parentPort.onmessage = function(e) { switch(data.type) { case "new": ss = new worker.Worker("workers/worker_0122.js"); - parentPort.postMessage(ss != null) + ss.terminate(); + ss.onexit = function() { + parentPort.postMessage(ss != null); + } break; default: break; diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0122.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0122.js index 41abfa902d197c06746babd4026bdaa05d435704..e875140b66f4b3663add4bde7864fa9537508338 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0122.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0122.js @@ -21,5 +21,5 @@ var backValue = undefined; var flag = false; parentPort.onmessage = function(e) { - console.log("worker:: thrid worker onmessage") + console.info("worker:: thrid worker onmessage") } \ No newline at end of file diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_013.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_013.js index 11eb95ff01b583aa826cee0629121e692ef4cc6b..b924e13d7cf802a84ced82ac5d19e36f435135bd 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_013.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_013.js @@ -29,6 +29,10 @@ parentPort.onmessage = function(e) { backValue = ee.data; flag = true; } + ss.onexit = function() { + backValue = "terminate"; + flag = true; + } ss.postMessage(data.value); break; case "wait": @@ -36,6 +40,10 @@ parentPort.onmessage = function(e) { parentPort.postMessage(backValue); } break; + case "terminate": + flag = false; + ss.terminate(); + break; default: break; } diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_014.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_014.js index 30e7f366a3526d2879ed02be68cc89599d4d0943..d635460be9f6d1a4d148089c7101391d543a21f3 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_014.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_014.js @@ -29,6 +29,10 @@ parentPort.onmessage = function(e) { backValue = ee.data; flag = true; } + ss.onexit = function() { + backValue = "terminate"; + flag = true; + } ss.postMessage(data.value); break; case "wait": @@ -36,6 +40,10 @@ parentPort.onmessage = function(e) { parentPort.postMessage(backValue); } break; + case "terminate": + flag = false; + ss.terminate(); + break; default: break; } diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_015.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_015.js index 2e4e0a1f04b41ea720c59bf255b3c44d8d066dae..6f30a0be40b06801fb69a08f1d1f4ea9f9376ade 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_015.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_015.js @@ -25,6 +25,9 @@ parentPort.onmessage = function(e) { switch(data.type) { case "new": ss = new worker.Worker("workers/worker_0151.js"); + ss.onexit = function() { + parentPort.postMessage(backValue); // 16 + } ss.onmessage = function(ee) { backValue = ee.data; // 16 flag = true; @@ -34,7 +37,7 @@ parentPort.onmessage = function(e) { case "wait": ss.postMessage({type: "wait"}); if (flag) { - parentPort.postMessage(backValue); // 16 + ss.terminate(); } break; default: diff --git a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0151.js b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0151.js index d9cc1e07a22997acd5f4389c2fee3c3b9c2a433f..1b29a29498c2bc3afb9068bf65bcff9b88a2bf6e 100644 --- a/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0151.js +++ b/compileruntime/worker_lib_standard/src/main/js/default/workers/worker_0151.js @@ -25,6 +25,9 @@ parentPort.onmessage = function(e) { switch(data.type) { case "new": ss = new worker.Worker("workers/worker_0152.js"); + ss.onexit = function() { + parentPort.postMessage(backValue); // 16 + } ss.onmessage = function(ee) { backValue = ee.data; flag = true; @@ -33,7 +36,7 @@ parentPort.onmessage = function(e) { break; case "wait": if (flag) { - parentPort.postMessage(backValue); // 16 + ss.terminate(); } break; default: diff --git a/compileruntime/worker_lib_standard/src/main/js/test/Worker.test.js b/compileruntime/worker_lib_standard/src/main/js/test/Worker.test.js index b3424fdef4d5fe2bf65abb7a94f00127e30dd85d..78fdec7d17eaaa40314fa6c823b141ac7b9b51da 100644 --- a/compileruntime/worker_lib_standard/src/main/js/test/Worker.test.js +++ b/compileruntime/worker_lib_standard/src/main/js/test/Worker.test.js @@ -16,7 +16,7 @@ // @ts-nocheck import app from '@system.app' import {describe, beforeAll, beforeEach, afterEach, afterAll, it, expect} from 'deccjsunit/index' -import worker from "@ohos.worker"; +import worker from "@ohos.worker" describe('workerTest', function () { @@ -28,43 +28,120 @@ describe('workerTest', function () { let p = new Promise(function (resolve, reject) { setTimeout(function () { resolve() - }, 100); + }, 100) }).then(undefined, (error) => { }) return p } // check worker constructor is ok - it('worker_constructor_test_001', 0, function () { + /** + * @tc.name: worker_constructor_test_001 + * @tc.desc: worker constructor to Creates a worker instance. + * @tc.author: hanyuqing + */ + it('worker_constructor_test_001', 0, async function (done) { let ss = new worker.Worker("workers/worker.js") + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } + expect(ss != null).assertTrue() + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) - it('worker_constructor_test_002', 0, function () { - let ss = new worker.Worker("workers/worker.js",{name:"second worker",shared:"False"}) + /** + * @tc.name: worker_constructor_test_002 + * @tc.desc: worker constructor to Creates a worker instance. + * @tc.author: hanyuqing + */ + it('worker_constructor_test_002', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js", {name:"second worker", shared:"False"}) + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } + expect(ss != null).assertTrue() + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) - it('worker_constructor_test_003', 0, function () { - let ss = new worker.Worker("workers/worker.js",{type:"classic",name:"second worker",shared:"false"}) + /** + * @tc.name: worker_constructor_test_003 + * @tc.desc: worker constructor to Creates a worker instance. + * @tc.author: hanyuqing + */ + it('worker_constructor_test_003', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js", {type:"classic", name:"second worker", shared:"false"}) + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } + expect(ss != null).assertTrue() + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) - it('worker_constructor_test_004', 0, function () { - let ss = new worker.Worker("workers/worker.js",{type:"classic",name:"third worker",shared:"true"}) + /** + * @tc.name: worker_constructor_test_004 + * @tc.desc: worker constructor to Creates a worker instance. + * @tc.author: hanyuqing + */ + it('worker_constructor_test_004', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js", {type:"classic", name:"third worker", shared:"true"}) + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } + expect(ss != null).assertTrue() + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) // check postMessage is ok // main post "hello world", will receive "hello world worker" + /** + * @tc.name: worker_postMessage_test_001 + * @tc.desc: Sends a message to the worker thread. + * @tc.author: hanyuqing + */ it('worker_postMessage_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker_002.js"); + let ss = new worker.Worker("workers/worker_002.js") let res = undefined let flag = false + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - res = e.data; + res = e.data flag = true } @@ -72,20 +149,35 @@ describe('workerTest', function () { while (!flag) { await promiseCase() } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(res).assertEqual("hello world worker") done() }) // check postMessage is ok // main post 12 , will receive 12 * 2 + 1 + /** + * @tc.name: worker_postMessage_test_002 + * @tc.desc: Sends a message to the worker thread. + * @tc.author: hanyuqing + */ it('worker_postMessage_test_002', 0, async function (done) { - let ss = new worker.Worker("workers/worker_003.js"); + let ss = new worker.Worker("workers/worker_003.js") let res = undefined let flag = false + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - res = e.data; + res = e.data flag = true } @@ -93,20 +185,35 @@ describe('workerTest', function () { while (!flag) { await promiseCase() } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(res).assertEqual(25) done() }) // check postMessage is ok // main post {message:"hello world"} , will receive {message:"hello world worker"} + /** + * @tc.name: worker_postMessage_test_003 + * @tc.desc: Sends a message to the worker thread. + * @tc.author: hanyuqing + */ it('worker_postMessage_test_003', 0, async function (done) { - let ss = new worker.Worker("workers/worker_004.js"); + let ss = new worker.Worker("workers/worker_004.js") let res = undefined let flag = false + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - res = e.data.message; + res = e.data.message flag = true } @@ -114,19 +221,34 @@ describe('workerTest', function () { while (!flag) { await promiseCase() } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(res).assertEqual("hello world worker") done() }) // check worker name is ok + /** + * @tc.name: worker_postMessage_test_004 + * @tc.desc: Sends a message to the worker thread. + * @tc.author: hanyuqing + */ it('worker_postMessage_test_004', 0, async function (done) { - let ss = new worker.Worker("workers/worker_005.js", {name: "zhangsan"}); + let ss = new worker.Worker("workers/worker_005.js", {name: "zhangsan"}) let res = undefined let flag = false + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - res = e.data; + res = e.data flag = true } @@ -134,23 +256,44 @@ describe('workerTest', function () { while (!flag) { await promiseCase() } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(res).assertEqual("zhangsan") done() }) // check worker transfer buffer is ok - it('worker_postMessage_test_005', 0, function () { - let ss = new worker.Worker("workers/worker_006.js"); + /** + * @tc.name: worker_postMessage_test_005 + * @tc.desc: Sends a message to the worker thread. + * @tc.author: hanyuqing + */ + it('worker_postMessage_test_005', 0, async function (done) { + let ss = new worker.Worker("workers/worker_006.js") + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } const buffer = new ArrayBuffer(8) expect(buffer.byteLength).assertEqual(8) ss.postMessage(buffer, [buffer]) - let length = undefined; - let exception = undefined; + let length = undefined + let exception = undefined try { - length = buffer.byteLength; + length = buffer.byteLength } catch (e) { - exception = e.message; + exception = e.message + } + + ss.terminate() + while (!isTerminate) { + await promiseCase() } console.log("worker:: length is " + length) @@ -161,55 +304,83 @@ describe('workerTest', function () { } else { expect(exception).assertEqual("IsDetachedBuffer") } + done() }) // check worker handle error is ok + /** + * @tc.name: worker_postMessage_test_006 + * @tc.desc: Sends a message to the worker thread. + * @tc.author: hanyuqing + */ it('worker_postMessage_test_006', 0, async function (done) { - let ss = new worker.Worker("workers/worker_007.js"); + let ss = new worker.Worker("workers/worker_007.js") let res = undefined let flag = false + let isTerminate = false ss.onerror = function (e) { - res = e.message; + res = e.message flag = true } + ss.onexit = function () { + isTerminate = true + } ss.postMessage("hello world") while (!flag) { await promiseCase() } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(res).assertEqual("Error: 123") done() }) // check worker terminate is ok + /** + * @tc.name: worker_terminate_test_001 + * @tc.desc: Terminates the worker thread to stop the worker from receiving messages. + * @tc.author: hanyuqing + */ it('worker_terminate_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker.js"); + let ss = new worker.Worker("workers/worker.js") let res = 0 let flag = false ss.onexit = function () { flag = true - res++; + res++ } + ss.terminate() while (!flag) { await promiseCase() } + expect(res).assertEqual(1) done() }) // check worker terminate is ok + /** + * @tc.name: worker_terminate_test_002 + * @tc.desc: Terminates the worker thread to stop the worker from receiving messages. + * @tc.author: hanyuqing + */ it('worker_terminate_test_002', 0, async function (done) { - let ss = new worker.Worker("workers/worker.js"); + let ss = new worker.Worker("workers/worker.js") let res = 0 let flag = false ss.onexit = function () { flag = true - res++; + res++ } // Repeated execution terminate @@ -219,23 +390,28 @@ describe('workerTest', function () { while (!flag) { await promiseCase() } + expect(res).assertEqual(1) done() }) // check worker terminate is ok + /** + * @tc.name: worker_terminate_test_003 + * @tc.desc: Terminates the worker thread to stop the worker from receiving messages. + * @tc.author: hanyuqing + */ it('worker_terminate_test_003', 0, async function (done) { - let ss = new worker.Worker("workers/worker.js"); + let ss = new worker.Worker("workers/worker.js") let res = 0 let flag = false ss.onexit = function () { flag = true - res++; + res++ } - ss.onmessage = function (e) { - res++; + res++ } ss.terminate() @@ -251,74 +427,151 @@ describe('workerTest', function () { }) // check worker on function is ok - it('worker_on_test_001', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_on_test_001 + * @tc.desc: Adds an event listener to the worker. + * @tc.author: hanyuqing + */ + it('worker_on_test_001', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let times = 0 + let isTerminate = false - let times = 0; + ss.onexit = function () { + isTerminate = true + } ss.on("zhangsan", ()=>{ - times++; + times++ }) ss.dispatchEvent({type: "zhangsan"}) + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(1) + done() }) // check worker on function is ok - it('worker_on_test_002', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_on_test_002 + * @tc.desc: Adds an event listener to the worker. + * @tc.author: hanyuqing + */ + it('worker_on_test_002', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let times = 0 + let isTerminate = false - let times = 0; + ss.onexit = function () { + isTerminate = true + } ss.on("zhangsan", ()=>{ - times--; + times-- }) - ss.on("lisi", ()=>{ - times++; + times++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "lisi"}) + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(0) + done() }) // check worker on function is ok - it('worker_on_test_003', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_on_test_003 + * @tc.desc: Adds an event listener to the worker. + * @tc.author: hanyuqing + */ + it('worker_on_test_003', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") - let times = 0; + let times = 0 + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } ss.on("zhangsan", ()=>{ - times++; + times++ }) for (let i=0;i<10;i++) { ss.dispatchEvent({type: "zhangsan"}) } - console.log("times " + times); + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + console.log("times " + times) expect(times).assertEqual(10) + done() }) // check worker once function is ok - it('worker_once_test_001', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_once_test_001 + * @tc.desc: Adds an event listener to the worker and removes the event listener automically + after it is invoked once. + * @tc.author: hanyuqing + */ + it('worker_once_test_001', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let times = 0 + let isTerminate = false - let times = 0; + ss.onexit = function () { + isTerminate = true + } ss.once("zhangsan", ()=>{ - times++; + times++ }) ss.dispatchEvent({type: "zhangsan"}) + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(1) + done() }) // check worker once function is ok - it('worker_once_test_002', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_once_test_002 + * @tc.desc: Adds an event listener to the worker and removes the event listener automically + after it is invoked once. + * @tc.author: hanyuqing + */ + it('worker_once_test_002', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let times = 0 + let isTerminate = false - let times = 0; + ss.onexit = function () { + isTerminate = true + } ss.once("zhangsan", ()=>{ - times++; + times++ }) for (let i=0;i<10;i++) @@ -326,68 +579,132 @@ describe('workerTest', function () { ss.dispatchEvent({type: "zhangsan"}) } + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(1) + done() }) - it('worker_once_test_003', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_once_test_003 + * @tc.desc: Adds an event listener to the worker and removes the event listener automically + after it is invoked once. + * @tc.author: hanyuqing + */ + it('worker_once_test_003', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") - let times = 0; + let times = 0 + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } ss.once("zhangsan", ()=>{ - times--; + times-- }) ss.once("lisi", ()=>{ - times++; + times++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "lisi"}) + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(0) + done() }) // check worker addEventListener function is ok - it('worker_addEventListener_test_001', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_addEventListener_test_001 + * @tc.desc: Add an event listener to the Worker. + * @tc.author: hanyuqing + */ + it('worker_addEventListener_test_001', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let times = 0 + let isTerminate = false - let times = 0; + ss.onexit = function () { + isTerminate = true + } ss.addEventListener("zhangsan", ()=>{ - times++; + times++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(2) + done() }) // check worker addEventListener function is ok - it('worker_addEventListener_test_002', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_addEventListener_test_002 + * @tc.desc: Add an event listener to the Worker. + * @tc.author: hanyuqing + */ + it('worker_addEventListener_test_002', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") - let times = 0; + let times = 0 + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } ss.addEventListener("zhangsan", ()=>{ - times++; + times++ }) - ss.addEventListener("lisi", ()=>{ - times++; + times++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "lisi"}) + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(2) + done() }) // check worker addEventListener function is ok - it('worker_addEventListener_test_003', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_addEventListener_test_003 + * @tc.desc: Add an event listener to the Worker. + * @tc.author: hanyuqing + */ + it('worker_addEventListener_test_003', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let times = 0 + let isTerminate = false - let times = 0; + ss.onexit = function () { + isTerminate = true + } ss.addEventListener("zhangsan", ()=>{ - times++; + times++ }) for (let i=0;i<10;i++) @@ -395,40 +712,73 @@ describe('workerTest', function () { ss.dispatchEvent({type: "zhangsan"}) } + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + expect(times).assertEqual(10) + done() }) // check worker off function is ok - it('worker_off_test_001', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_off_test_001 + * @tc.desc: Removes an event listener to the worker. + * @tc.author: hanyuqing + */ + it('worker_off_test_001', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let zhangSanTimes = 0 + let isTerminate = false - let zhangsan_times = 0; + ss.onexit = function () { + isTerminate = true + } ss.on("zhangsan", ()=>{ - zhangsan_times++; + zhangSanTimes++ }) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(1) + expect(zhangSanTimes).assertEqual(1) ss.off("zhangsan") ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(1) + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + expect(zhangSanTimes).assertEqual(1) + done() }) // check worker off function is ok - it('worker_off_test_002', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_off_test_002 + * @tc.desc: Removes an event listener to the worker. + * @tc.author: hanyuqing + */ + it('worker_off_test_002', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") - let zhangsan_times = 0; + let zhangSanTimes = 0 + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } ss.on("zhangsan", ()=>{ - zhangsan_times++; + zhangSanTimes++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(2) + expect(zhangSanTimes).assertEqual(2) for (let i=0;i<3;i++) { @@ -436,40 +786,74 @@ describe('workerTest', function () { } ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(2) + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + expect(zhangSanTimes).assertEqual(2) + done() }) // check worker removeEventListener function is ok - it('worker_removeListener_test_001', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_removeListener_test_001 + * @tc.desc: Removes an event defined for the worker. + * @tc.author: hanyuqing + */ + it('worker_removeListener_test_001', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let zhangSanTimes = 0 + let isTerminate = false - let zhangsan_times = 0; + ss.onexit = function () { + isTerminate = true + } ss.addEventListener("zhangsan", ()=>{ - zhangsan_times++; + zhangSanTimes++ }) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(1) + expect(zhangSanTimes).assertEqual(1) ss.removeEventListener("zhangsan") ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(1) + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + expect(zhangSanTimes).assertEqual(1) + done() }) // check worker removeEventListener function is ok - it('worker_removeListener_test_002', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_removeListener_test_002 + * @tc.desc: Removes an event defined for the worker. + * @tc.author: hanyuqing + */ + it('worker_removeListener_test_002', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") - let zhangsan_times = 0; + let zhangSanTimes = 0 + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } ss.addEventListener("zhangsan", ()=>{ - zhangsan_times++; + zhangSanTimes++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(2) + expect(zhangSanTimes).assertEqual(2) for (let i=0;i<3;i++) { @@ -477,73 +861,107 @@ describe('workerTest', function () { } ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(2) + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + expect(zhangSanTimes).assertEqual(2) + done() }) // check worker removeAllListener function is ok - it('worker_removeListener_test_003', 0, function () { - let ss = new worker.Worker("workers/worker.js"); + /** + * @tc.name: worker_removeListener_test_003 + * @tc.desc: Removes an event defined for the worker. + * @tc.author: hanyuqing + */ + it('worker_removeListener_test_003', 0, async function (done) { + let ss = new worker.Worker("workers/worker.js") + + let zhangSanTimes = 0 + let isTerminate = false - let zhangsan_times = 0; + ss.onexit = function () { + isTerminate = true + } ss.addEventListener("zhangsan", ()=>{ - zhangsan_times++; + zhangSanTimes++ }) - let lisi_times = 0; + let liSiTimes = 0 ss.addEventListener("lisi", ()=>{ - lisi_times++; + liSiTimes++ }) ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(2) + expect(zhangSanTimes).assertEqual(2) ss.dispatchEvent({type: "lisi"}) ss.dispatchEvent({type: "lisi"}) - expect(lisi_times).assertEqual(2) + expect(liSiTimes).assertEqual(2) ss.removeAllListener() ss.dispatchEvent({type: "zhangsan"}) ss.dispatchEvent({type: "zhangsan"}) - expect(zhangsan_times).assertEqual(2) + expect(zhangSanTimes).assertEqual(2) ss.dispatchEvent({type: "lisi"}) ss.dispatchEvent({type: "lisi"}) - expect(lisi_times).assertEqual(2) + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + expect(liSiTimes).assertEqual(2) + done() }) // check parentPort.close is ok + /** + * @tc.name: worker_parentPortClose_test_001 + * @tc.desc: Close the worker thread to stop the worker from receiving messages. + * @tc.author: hanyuqing + */ it('worker_parentPortClose_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker_008.js"); + let ss = new worker.Worker("workers/worker_008.js") let res = 0 - let flag = false; + let flag = false ss.onexit = function (e) { - res++; - flag = true; + res++ + flag = true } ss.postMessage("abc") while (!flag) { await promiseCase() } + expect(res).assertEqual(1) done() }) // check parentPort.close is ok + /** + * @tc.name: worker_parentPortClose_test_002 + * @tc.desc: Close the worker thread to stop the worker from receiving messages. + * @tc.author: hanyuqing + */ it('worker_parentPortClose_test_002', 0, async function (done) { - let ss = new worker.Worker("workers/worker_008.js"); + let ss = new worker.Worker("workers/worker_008.js") let res = 0 - let flag = false; + let flag = false ss.onexit = function () { flag = true } ss.onmessage = function (e) { - res++; + res++ } ss.postMessage("abc") @@ -558,17 +976,23 @@ describe('workerTest', function () { }) // check onmessageerror is ok + /** + * @tc.name: worker_onmessageerror_test_001 + * @tc.desc: The onmessage attribute of the worker specifies the event handler when the worker receives + a message that cannot be serialized. The event handler is executed in the host thread + * @tc.author: hanyuqing + */ it('worker_onmessageerror_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker_008.js"); + let ss = new worker.Worker("workers/worker_008.js") let res = 0 - let flag = false; + let flag = false ss.onexit = function () { flag = true } ss.onmessageerror = function (e) { - res++; + res++ } ss.postMessage("abc") @@ -580,14 +1004,24 @@ describe('workerTest', function () { }) // check onmessageerror is ok + /** + * @tc.name: worker_onmessageerror_test_002 + * @tc.desc: The onmessage attribute of the worker specifies the event handler when the worker receives + a message that cannot be serialized. The event handler is executed in the host thread + * @tc.author: hanyuqing + */ it('worker_onmessageerror_test_002', 0, async function (done) { - let ss = new worker.Worker("workers/worker_008.js"); + let ss = new worker.Worker("workers/worker_008.js") let res = 0 - let flag = false; + let flag = false + + ss.onexit = function() { + flag = true + } ss.onmessageerror = function (e) { - flag = true; - res++; + flag = true + res++ } function foo() { } @@ -595,186 +1029,323 @@ describe('workerTest', function () { while (!flag) { await promiseCase() } + + flag = false + ss.postMessage("terminate") + while (!flag) { + await promiseCase() + } expect(res).assertEqual(1) done() }) // check new second worker is ok + /** + * @tc.name: worker_new_second_worker_test_001 + * @tc.desc: Create a second worker. + * @tc.author: hanyuqing + */ it('worker_new_second_worker_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker_009.js"); - let flag = false; - let res = undefined; + let ss = new worker.Worker("workers/worker_009.js") + let flag = false + let res = undefined + let isTerminate = false + + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - flag = true; - res = e.data; + flag = true + res = e.data } ss.postMessage({type: "new", value: 12}) while (!flag) { console.log("worker:: foo wait") - await promiseCase(); + await promiseCase() } + console.log("worker:: " + res) - expect(res).assertTrue(); - done(); + expect(res).assertTrue() + + flag = false + ss.postMessage({type: "terminate"}) + while (!flag) { + ss.postMessage({type: "wait"}) + await promiseCase() + } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) // check new third worker is ok + /** + * @tc.name: worker_new_second_worker_test_002 + * @tc.desc: Create a third worker. + * @tc.author: hanyuqing + */ it('worker_new_second_worker_test_002', 0, async function (done) { - let ss = new worker.Worker("workers/worker_012.js"); - let flag = false; - let res = undefined; + let ss = new worker.Worker("workers/worker_012.js") + let flag = false + let res = undefined + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - flag = true; - res = e.data; + flag = true + res = e.data } ss.onerror = function(ee) { console.log("worker:: " + ee.message) } - ss.postMessage({type: "new", value: 12}); + ss.postMessage({type: "new", value: 12}) while (!flag) { - console.log("worker:: worker_second_worker_postMessage_test_001 wait"); - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() + } + expect(res).assertTrue() + + flag = false + ss.postMessage({type: "terminate"}) + while (!flag) { + ss.postMessage({type: "wait"}) + await promiseCase() } - expect(res).assertTrue(); - done(); + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) // check second worker postMessage number is ok + /** + * @tc.name: worker_second_worker_postMessage_test_001 + * @tc.desc: Check if the postMessage function of the second worker is ok. + * @tc.author: hanyuqing + */ it('worker_second_worker_postMessage_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker_010.js"); - let flag = false; - let res = undefined; + let ss = new worker.Worker("workers/worker_010.js") + let flag = false + let res = undefined + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - flag = true; - res = e.data; + flag = true + res = e.data } ss.onerror = function(ee) { console.log("worker:: " + ee.message) } - ss.postMessage({type: "new", value: 12}); + ss.postMessage({type: "new", value: 12}) while (!flag) { - console.log("worker:: worker_second_worker_postMessage_test_001 wait"); - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() + } + expect(res).assertEqual(25) + + flag = false + ss.postMessage({type: "terminate"}) + while (!flag) { + ss.postMessage({type: "wait"}) + await promiseCase() } - expect(res).assertEqual(25); - done(); + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) // check second worker postMessage string is ok + /** + * @tc.name: worker_second_worker_postMessage_test_002 + * @tc.desc: Check if the postMessage function of the second worker is ok. + * @tc.author: hanyuqing + */ it('worker_second_worker_postMessage_test_002', 0, async function (done) { - let ss = new worker.Worker("workers/worker_013.js"); - let flag = false; - let res = undefined; + let ss = new worker.Worker("workers/worker_013.js") + let flag = false + let res = undefined + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - flag = true; - res = e.data; + flag = true + res = e.data } ss.onerror = function(ee) { console.log("worker:: " + ee.message) } - ss.postMessage({type: "new", value: "hello world"}); + ss.postMessage({type: "new", value: "hello world"}) while (!flag) { - console.log("worker:: worker_second_worker_postMessage_test_002 wait") - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() } - expect(res).assertEqual("hello world worker"); - done(); + expect(res).assertEqual("hello world worker") + + flag = false + ss.postMessage({type: "terminate"}) + while (!flag) { + ss.postMessage({type: "wait"}) + await promiseCase() + } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) // check second worker postMessage array is ok + /** + * @tc.name: worker_second_worker_postMessage_test_003 + * @tc.desc: Check if the postMessage function of the second worker is ok. + * @tc.author: hanyuqing + */ it('worker_second_worker_postMessage_test_003', 0, async function (done) { - let ss = new worker.Worker("workers/worker_014.js"); - let flag = false; - let res = undefined; + let ss = new worker.Worker("workers/worker_014.js") + let flag = false + let res = undefined + let isTerminate = false + ss.onexit = function () { + isTerminate = true + } ss.onmessage = function (e) { - flag = true; - res = e.data; + flag = true + res = e.data } ss.onerror = function(ee) { console.log("worker:: " + ee.message) } - ss.postMessage({type: "new", value: [1, 2]}); + ss.postMessage({type: "new", value: [1, 2]}) while (!flag) { - console.log("worker:: worker_second_worker_postMessage_test_003 wait") - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() } - expect(res[0]).assertEqual(2); - expect(res[1]).assertEqual(2); - done(); + expect(res[0]).assertEqual(2) + expect(res[1]).assertEqual(2) + + flag = false + ss.postMessage({type: "terminate"}) + while (!flag) { + ss.postMessage({type: "wait"}) + await promiseCase() + } + + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + done() }) // check third worker postMessage is ok - it('worker_second_worker_postMessage_test_004', 0, async function (done) { - let ss = new worker.Worker("workers/worker_015.js"); - let flag = false; - let res = undefined; + /** + * @tc.name: worker_third_worker_postMessage_test_001 + * @tc.desc: Check if the postMessage function of the third worker is ok. + * @tc.author: hanyuqing + */ + it('worker_third_worker_postMessage_test_001', 0, async function (done) { + let ss = new worker.Worker("workers/worker_015.js") + let flag = false + let res = undefined + let isTerminate = false - ss.onmessage = function (e) { - flag = true; - res = e.data; + ss.onexit = function() { + isTerminate = true + } + ss.onmessage = function(e) { + flag = true + res = e.data } - ss.onerror = function(ee) { console.log("worker:: " + ee.message) } - ss.postMessage({type: "new", value: 10}); + ss.postMessage({type: "new", value: 10}) while (!flag) { - console.log("worker:: worker_second_worker_postMessage_test_003 wait") - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() + } + ss.terminate() + while (!isTerminate) { + await promiseCase() } - expect(res).assertEqual(16); - done(); + + expect(res).assertEqual(16) + + done() }) // check second worker terminate is ok + /** + * @tc.name: worker_second_worker_terminate_test_001 + * @tc.desc: Check if the terminate function of the second worker is ok. + * @tc.author: hanyuqing + */ it('worker_second_worker_terminate_test_001', 0, async function (done) { - let ss = new worker.Worker("workers/worker_011.js"); - let flag = false; - let res = undefined; + let ss = new worker.Worker("workers/worker_011.js") + let flag = false + let res = undefined + let isTerminate = false - ss.onmessage = function (e) { - flag = true; - res = e.data; + ss.onexit = function() { + isTerminate = true + } + + ss.onmessage = function(e) { + flag = true + res = e.data } ss.onerror = function(ee) { console.log("worker:: " + ee.message) } - ss.postMessage({type: "new", value: 12}); + ss.postMessage({type: "new", value: 12}) while (!flag) { - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() } - flag = false; - ss.postMessage({type: "terminate"}); + flag = false + ss.postMessage({type: "terminate"}) while (!flag) { - ss.postMessage({type: "wait"}); - await promiseCase(); + ss.postMessage({type: "wait"}) + await promiseCase() } - expect(res).assertEqual("terminate"); - done(); + ss.terminate() + while (!isTerminate) { + await promiseCase() + } + + expect(res).assertEqual("terminate") + done() }) }) \ No newline at end of file