From 136c62a62caf088b86a7e430784c8581d90cb360 Mon Sep 17 00:00:00 2001 From: Igor Chevdar Date: Tue, 29 Aug 2017 11:46:43 +0300 Subject: [PATCH] Added test on workers with invalid transfer attempt --- backend.native/tests/build.gradle | 6 +++++ .../tests/runtime/workers/worker3.kt | 23 +++++++++++++++++++ 2 files changed, 29 insertions(+) create mode 100644 backend.native/tests/runtime/workers/worker3.kt diff --git a/backend.native/tests/build.gradle b/backend.native/tests/build.gradle index 878aed5c4f8..bb6ee6412b5 100644 --- a/backend.native/tests/build.gradle +++ b/backend.native/tests/build.gradle @@ -502,6 +502,12 @@ task worker2(type: RunKonanTest) { source = "runtime/workers/worker2.kt" } +task worker3(type: RunKonanTest) { + disabled = (project.testTarget == 'wasm32') // Workers need pthreads. + goldValue = "OK\n" + source = "runtime/workers/worker3.kt" +} + task superFunCall(type: RunKonanTest) { goldValue = "\n\n" source = "codegen/basics/superFunCall.kt" diff --git a/backend.native/tests/runtime/workers/worker3.kt b/backend.native/tests/runtime/workers/worker3.kt new file mode 100644 index 00000000000..783fd0e2c6d --- /dev/null +++ b/backend.native/tests/runtime/workers/worker3.kt @@ -0,0 +1,23 @@ +import konan.worker.* + +data class WorkerArgument(val intParam: Int, val stringParam: String) +data class WorkerResult(val intResult: Int, val stringResult: String) + +fun main(args: Array) { + val worker = startWorker() + val s = "zzz${args.size.toString()}" + + val future = try { + worker.schedule(TransferMode.CHECKED, + { WorkerArgument(42, s) }, + { input -> WorkerResult(input.intParam, input.stringParam + " result") } + ) + } catch (e: IllegalStateException) { + null + } + if (future != null) + println("Fail 1") + if (s != "zzz0") println("Fail 2") + worker.requestTermination().consume { _ -> } + println("OK") +} \ No newline at end of file