gnunet-svn
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[taler-wallet-core] branch master updated: timeout for tests


From: gnunet
Subject: [taler-wallet-core] branch master updated: timeout for tests
Date: Thu, 04 Feb 2021 15:08:14 +0100

This is an automated email from the git hooks/post-receive script.

dold pushed a commit to branch master
in repository wallet-core.

The following commit(s) were added to refs/heads/master by this push:
     new aefc3f26 timeout for tests
aefc3f26 is described below

commit aefc3f26b673c38fa1ca8238c049d2739063069c
Author: Florian Dold <florian@dold.me>
AuthorDate: Thu Feb 4 15:07:47 2021 +0100

    timeout for tests
---
 packages/taler-wallet-cli/package.json             |  3 +-
 .../src/integrationtests/harness.ts                |  8 ++-
 .../src/integrationtests/testrunner.ts             | 84 +++++++++++++++-------
 pnpm-lock.yaml                                     | 24 ++++---
 4 files changed, 84 insertions(+), 35 deletions(-)

diff --git a/packages/taler-wallet-cli/package.json 
b/packages/taler-wallet-cli/package.json
index 63f5fc25..99372327 100644
--- a/packages/taler-wallet-cli/package.json
+++ b/packages/taler-wallet-cli/package.json
@@ -44,11 +44,12 @@
     "typescript": "^4.1.3"
   },
   "dependencies": {
+    "@gnu-taler/taler-wallet-core": "workspace:*",
     "@types/minimatch": "^3.0.3",
     "axios": "^0.21.1",
+    "cancellationtoken": "^2.2.0",
     "minimatch": "^3.0.4",
     "source-map-support": "^0.5.19",
-    "@gnu-taler/taler-wallet-core": "workspace:*",
     "tslib": "^2.1.0"
   }
 }
diff --git a/packages/taler-wallet-cli/src/integrationtests/harness.ts 
b/packages/taler-wallet-cli/src/integrationtests/harness.ts
index bd950da0..9a1136bc 100644
--- a/packages/taler-wallet-cli/src/integrationtests/harness.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/harness.ts
@@ -98,10 +98,14 @@ import {
 import { ApplyRefundResponse } from "@gnu-taler/taler-wallet-core";
 import { PendingOperationsResponse } from "@gnu-taler/taler-wallet-core";
 import { CoinConfig } from "./denomStructures";
+import CancellationToken from "cancellationtoken";
 
 const exec = util.promisify(require("child_process").exec);
 
-export async function delayMs(ms: number): Promise<void> {
+export async function delayMs(
+  ms: number,
+  cancellationToken?: CancellationToken,
+): Promise<void> {
   return new Promise((resolve, reject) => {
     setTimeout(() => resolve(), ms);
   });
@@ -1486,6 +1490,8 @@ export interface TestRunResult {
   timeSec: number;
 
   status: TestStatus;
+
+  reason?: string;
 }
 
 export async function runTestWithState(
diff --git a/packages/taler-wallet-cli/src/integrationtests/testrunner.ts 
b/packages/taler-wallet-cli/src/integrationtests/testrunner.ts
index e820ac25..77d974f2 100644
--- a/packages/taler-wallet-cli/src/integrationtests/testrunner.ts
+++ b/packages/taler-wallet-cli/src/integrationtests/testrunner.ts
@@ -15,6 +15,7 @@
  */
 
 import {
+  delayMs,
   GlobalTestState,
   runTestWithState,
   shouldLingerInTest,
@@ -56,6 +57,7 @@ import { runMerchantExchangeConfusionTest } from 
"./test-merchant-exchange-confu
 import { runLibeufinBasicTest } from "./test-libeufin-basic";
 import { runLibeufinTutorialTest } from "./test-libeufin-tutorial";
 import { runDepositTest } from "./test-deposit";
+import CancellationToken from "cancellationtoken";
 
 /**
  * Test runner.
@@ -201,30 +203,64 @@ export async function runTests(spec: TestRunSpec) {
     currentChild.stdout?.pipe(harnessLogStream);
     currentChild.stderr?.pipe(harnessLogStream);
 
-    const result: TestRunResult = await new Promise((resolve, reject) => {
-      let msg: TestRunResult | undefined;
-      currentChild!.on("message", (m) => {
-        msg = m as TestRunResult;
-      });
-      currentChild!.on("exit", (code, signal) => {
-        if (signal) {
-          reject(new Error(`test worker exited with signal ${signal}`));
-        } else if (code != 0) {
-          reject(new Error(`test worker exited with code ${code}`));
-        } else if (!msg) {
-          reject(
-            new Error(
-              `test worker exited without giving back the test results`,
-            ),
-          );
-        } else {
-          resolve(msg);
-        }
-      });
-      currentChild!.on("error", (err) => {
-        reject(err);
-      });
-    });
+    const testTimeoutMs = 60000;
+
+    const { token } = CancellationToken.timeout(60000);
+
+    const resultPromise: Promise<TestRunResult> = new Promise(
+      (resolve, reject) => {
+        let msg: TestRunResult | undefined;
+        currentChild!.on("message", (m) => {
+          if (token.isCancelled) {
+            return;
+          }
+          msg = m as TestRunResult;
+        });
+        currentChild!.on("exit", (code, signal) => {
+          if (token.isCancelled) {
+            return;
+          }
+          if (signal) {
+            reject(new Error(`test worker exited with signal ${signal}`));
+          } else if (code != 0) {
+            reject(new Error(`test worker exited with code ${code}`));
+          } else if (!msg) {
+            reject(
+              new Error(
+                `test worker exited without giving back the test results`,
+              ),
+            );
+          } else {
+            resolve(msg);
+          }
+        });
+        currentChild!.on("error", (err) => {
+          if (token.isCancelled) {
+            return;
+          }
+          reject(err);
+        });
+      },
+    );
+
+    let result: TestRunResult;
+
+    try {
+      result = await token.racePromise(resultPromise);
+    } catch (e) {
+      console.error(`test ${testName} timed out`);
+      if (token.isCancelled) {
+        result = {
+          status: "fail",
+          reason: "timeout",
+          timeSec: testTimeoutMs / 1000,
+          name: testName,
+        };
+        currentChild.kill("SIGTERM");
+      } else {
+        throw Error(e);
+      }
+    }
 
     harnessLogStream.close();
 
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index b2047579..7ec0403c 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -48,6 +48,7 @@ importers:
       rollup-plugin-terser: 7.0.2_rollup@2.37.1
       typescript: 4.1.3
     specifiers:
+      '@gnu-taler/taler-wallet-core': workspace:*
       '@rollup/plugin-commonjs': ^17.0.0
       '@rollup/plugin-json': ^4.1.0
       '@rollup/plugin-node-resolve': ^11.1.0
@@ -58,16 +59,16 @@ importers:
       rollup: ^2.37.1
       rollup-plugin-sourcemaps: ^0.6.3
       rollup-plugin-terser: ^7.0.2
-      '@gnu-taler/taler-wallet-core': workspace:*
       tslib: ^2.1.0
       typescript: ^4.1.3
   packages/taler-wallet-cli:
     dependencies:
+      '@gnu-taler/taler-wallet-core': link:../taler-wallet-core
       '@types/minimatch': 3.0.3
       axios: 0.21.1
+      cancellationtoken: 2.2.0
       minimatch: 3.0.4
       source-map-support: 0.5.19
-      '@gnu-taler/taler-wallet-core': link:../taler-wallet-core
       tslib: 2.1.0
     devDependencies:
       '@rollup/plugin-commonjs': 17.0.0_rollup@2.37.1
@@ -83,6 +84,7 @@ importers:
       typedoc: 0.20.16_typescript@4.1.3
       typescript: 4.1.3
     specifiers:
+      '@gnu-taler/taler-wallet-core': workspace:*
       '@rollup/plugin-commonjs': ^17.0.0
       '@rollup/plugin-json': ^4.1.0
       '@rollup/plugin-node-resolve': ^11.1.0
@@ -90,6 +92,7 @@ importers:
       '@types/minimatch': ^3.0.3
       '@types/node': ^14.14.22
       axios: ^0.21.1
+      cancellationtoken: ^2.2.0
       minimatch: ^3.0.4
       prettier: ^2.2.1
       rimraf: ^3.0.2
@@ -97,21 +100,21 @@ importers:
       rollup-plugin-sourcemaps: ^0.6.3
       rollup-plugin-terser: ^7.0.2
       source-map-support: ^0.5.19
-      '@gnu-taler/taler-wallet-core': workspace:*
       tslib: ^2.1.0
       typedoc: ^0.20.16
       typescript: ^4.1.3
   packages/taler-wallet-core:
     dependencies:
+      '@gnu-taler/idb-bridge': link:../idb-bridge
       '@types/node': 14.14.22
       axios: 0.21.1
       big-integer: 1.6.48
       fflate: 0.6.0
-      '@gnu-taler/idb-bridge': link:../idb-bridge
       source-map-support: 0.5.19
       tslib: 2.1.0
     devDependencies:
       '@ava/typescript': 1.1.1
+      '@gnu-taler/pogen': link:../pogen
       '@microsoft/api-extractor': 7.13.0
       '@typescript-eslint/eslint-plugin': 
4.14.0_980e7d90d2d08155204a38366bd3b934
       '@typescript-eslint/parser': 4.14.0_eslint@7.18.0+typescript@4.1.3
@@ -126,7 +129,6 @@ importers:
       jed: 1.1.1
       nyc: 15.1.0
       po2json: 0.4.5
-      '@gnu-taler/pogen': link:../pogen
       prettier: 2.2.1
       rimraf: 3.0.2
       rollup: 2.37.1
@@ -136,6 +138,8 @@ importers:
       typescript: 4.1.3
     specifiers:
       '@ava/typescript': ^1.1.1
+      '@gnu-taler/idb-bridge': workspace:*
+      '@gnu-taler/pogen': workspace:*
       '@microsoft/api-extractor': ^7.13.0
       '@types/node': ^14.14.22
       '@typescript-eslint/eslint-plugin': ^4.14.0
@@ -151,11 +155,9 @@ importers:
       eslint-plugin-react-hooks: ^4.2.0
       esm: ^3.2.25
       fflate: ^0.6.0
-      '@gnu-taler/idb-bridge': workspace:*
       jed: ^1.1.1
       nyc: ^15.1.0
       po2json: ^0.4.5
-      '@gnu-taler/pogen': workspace:*
       prettier: ^2.2.1
       rimraf: ^3.0.2
       rollup: ^2.37.1
@@ -167,8 +169,8 @@ importers:
       typescript: ^4.1.3
   packages/taler-wallet-webextension:
     dependencies:
-      moment: 2.29.1
       '@gnu-taler/taler-wallet-core': link:../taler-wallet-core
+      moment: 2.29.1
       tslib: 2.1.0
     devDependencies:
       '@rollup/plugin-commonjs': 17.0.0_rollup@2.37.1
@@ -192,6 +194,7 @@ importers:
       rollup-plugin-terser: 7.0.2_rollup@2.37.1
       typescript: 4.1.3
     specifiers:
+      '@gnu-taler/taler-wallet-core': workspace:*
       '@rollup/plugin-commonjs': ^17.0.0
       '@rollup/plugin-json': ^4.1.0
       '@rollup/plugin-node-resolve': ^11.1.0
@@ -212,7 +215,6 @@ importers:
       rollup-plugin-ignore: ^1.0.9
       rollup-plugin-sourcemaps: ^0.6.3
       rollup-plugin-terser: ^7.0.2
-      '@gnu-taler/taler-wallet-core': workspace:*
       tslib: ^2.1.0
       typescript: ^4.1.3
 lockfileVersion: 5.2
@@ -1314,6 +1316,10 @@ packages:
       node: '>=6'
     resolution:
       integrity: 
sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==
+  /cancellationtoken/2.2.0:
+    dev: false
+    resolution:
+      integrity: 
sha512-uF4sHE5uh2VdEZtIRJKGoXAD9jm7bFY0tDRCzH4iLp262TOJ2lrtNHjMG2zc8H+GICOpELIpM7CGW5JeWnb3Hg==
   /chalk/0.4.0:
     dependencies:
       ansi-styles: 1.0.0

-- 
To stop receiving notification emails like this one, please contact
gnunet@gnunet.org.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]