You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by bd...@apache.org on 2019/07/09 08:24:10 UTC

[sling-whiteboard] branch master updated (c9e6ce8 -> 6362e61)

This is an automated email from the ASF dual-hosted git repository.

bdelacretaz pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git.


    from c9e6ce8  Mention 'docker events'
     new 2d4b7ff  Switch to dockerode
     new 0284a72  Start + cleanup test container
     new 6362e61  tweaks

The 3 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 graalvm/time-to-first-request/index.js          |  65 +++++-
 graalvm/time-to-first-request/package-lock.json | 296 +++++++++++++++++++-----
 graalvm/time-to-first-request/package.json      |   2 +-
 3 files changed, 296 insertions(+), 67 deletions(-)


[sling-whiteboard] 01/03: Switch to dockerode

Posted by bd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bdelacretaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit 2d4b7ff3936f89483d3234fb0efc3eb1e1ca8794
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Fri Jul 5 16:58:37 2019 +0200

    Switch to dockerode
---
 graalvm/time-to-first-request/index.js          |  19 +-
 graalvm/time-to-first-request/package-lock.json | 296 +++++++++++++++++++-----
 graalvm/time-to-first-request/package.json      |   2 +-
 3 files changed, 255 insertions(+), 62 deletions(-)

diff --git a/graalvm/time-to-first-request/index.js b/graalvm/time-to-first-request/index.js
index 97764e3..1db88bb 100644
--- a/graalvm/time-to-first-request/index.js
+++ b/graalvm/time-to-first-request/index.js
@@ -16,14 +16,22 @@
 //
 const http = require('http');
 const httpProxy = require('http-proxy');
-const { Docker } = require('docker-cli-js');
+const Docker = require('dockerode');
 const waitOn = require('wait-on');
 const elapsedTime = require('elapsed-time')
 
 const listenPort = 9000;
 const targetUrl = 'http://127.0.0.1:8080';
 const waitUrl = `${targetUrl}/sling/chouc/route`;
-const dockerRunCmd = 'run -i --rm -p 8080:8080 quarkus/org.apache.sling.graalvm.experiments';
+const dockerImage = 'quarkus/org.apache.sling.graalvm.experiments';
+const dockerStartOptions = {
+  PortBindings: {
+    "8080/tcp": [{
+        "HostIP":"0.0.0.0",
+        "HostPort": "8080"
+    }],
+  },
+};
 
 const proxy = httpProxy.createProxyServer({});
 
@@ -37,12 +45,15 @@ const waitOpts = {
     window: 1,
 };
 
+const docker = new Docker();
+
 var server = http.createServer(function(req, res) {
-  console.log(`Starting container: docker ${dockerRunCmd}`);
   const et = elapsedTime.new().start();
   // TODO detect if container is already running, instead of blind catch
   // (maybe use node-docker-api instead)
-  new Docker({}).command(dockerRunCmd).catch();
+
+  console.log(`Starting container ${dockerImage}(${et.getValue()})`);
+  docker.run(dockerImage, null, process.stderr, dockerStartOptions);
   console.log(`Waiting on ${waitOpts.resources[0]} (${et.getValue()})`);
   waitOn(waitOpts).then(() =>{
     console.log(`Time to first request to ${waitUrl}: (${et.getValue()})`);
diff --git a/graalvm/time-to-first-request/package-lock.json b/graalvm/time-to-first-request/package-lock.json
index b302b21..e61d9e6 100644
--- a/graalvm/time-to-first-request/package-lock.json
+++ b/graalvm/time-to-first-request/package-lock.json
@@ -4,31 +4,13 @@
   "lockfileVersion": 1,
   "requires": true,
   "dependencies": {
-    "@types/blue-tape": {
-      "version": "0.1.33",
-      "resolved": "https://registry.npmjs.org/@types/blue-tape/-/blue-tape-0.1.33.tgz",
-      "integrity": "sha512-l5cQcLM3aPh55bBQ4geWQ8hZ4Ew+s4RvyhMaBpgW3aJ2HUfRgwd8ENKrk/utC4Hz1dJAiehyIa4vN6emxBMaog==",
+    "JSONStream": {
+      "version": "1.3.2",
+      "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.2.tgz",
+      "integrity": "sha1-wQI3G27Dp887hHygDCC7D85Mbeo=",
       "requires": {
-        "@types/node": "*",
-        "@types/tape": "*"
-      }
-    },
-    "@types/lodash": {
-      "version": "4.14.119",
-      "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.119.tgz",
-      "integrity": "sha512-Z3TNyBL8Vd/M9D9Ms2S3LmFq2sSMzahodD6rCS9V2N44HUMINb75jNkSuwAx7eo2ufqTdfOdtGQpNbieUjPQmw=="
-    },
-    "@types/node": {
-      "version": "12.0.8",
-      "resolved": "https://registry.npmjs.org/@types/node/-/node-12.0.8.tgz",
-      "integrity": "sha512-b8bbUOTwzIY3V5vDTY1fIJ+ePKDUBqt2hC2woVGotdQQhG/2Sh62HOKHrT7ab+VerXAcPyAiTEipPu/FsreUtg=="
-    },
-    "@types/tape": {
-      "version": "4.2.33",
-      "resolved": "https://registry.npmjs.org/@types/tape/-/tape-4.2.33.tgz",
-      "integrity": "sha512-ltfyuY5BIkYlGuQfwqzTDT8f0q8Z5DGppvUnWGs39oqDmMd6/UWhNpX3ZMh/VYvfxs3rFGHMrLC/eGRdLiDGuw==",
-      "requires": {
-        "@types/node": "*"
+        "jsonparse": "^1.2.0",
+        "through": ">=2.2.7 <3"
       }
     },
     "ajv": {
@@ -93,25 +75,53 @@
         "tweetnacl": "^0.14.3"
       }
     },
+    "bl": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.2.tgz",
+      "integrity": "sha512-e8tQYnZodmebYDWGH7KMRvtzKXaJHx3BbilrgZCfvyLUYdKpK1t5PSPmpkny/SgiTSCnjfLW7v5rlONXVFkQEA==",
+      "requires": {
+        "readable-stream": "^2.3.5",
+        "safe-buffer": "^5.1.1"
+      }
+    },
     "browser-process-hrtime": {
       "version": "0.1.3",
       "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-0.1.3.tgz",
       "integrity": "sha512-bRFnI4NnjO6cnyLmOV/7PVoDEMJChlcfN0z4s1YMBY989/SvlfMI1lgCnkFUs53e9gQF+w7qu7XdllSTiSl8Aw=="
     },
+    "buffer-alloc": {
+      "version": "1.2.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz",
+      "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==",
+      "requires": {
+        "buffer-alloc-unsafe": "^1.1.0",
+        "buffer-fill": "^1.0.0"
+      }
+    },
+    "buffer-alloc-unsafe": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz",
+      "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg=="
+    },
+    "buffer-fill": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz",
+      "integrity": "sha1-+PeLdniYiO858gXNY39o5wISKyw="
+    },
+    "buffer-from": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz",
+      "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A=="
+    },
     "caseless": {
       "version": "0.12.0",
       "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
       "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw="
     },
-    "cli-table-2-json": {
-      "version": "1.0.12",
-      "resolved": "https://registry.npmjs.org/cli-table-2-json/-/cli-table-2-json-1.0.12.tgz",
-      "integrity": "sha512-w4K5AGCI6CRsdUJAayiMEKusCMEK8TcZIbhHLLNJJdS6iu5P2dHbjf6EcmWm61fxfKLlmtwrtpiKT9SJJ+b7Sw==",
-      "requires": {
-        "@types/blue-tape": "^0.1.30",
-        "@types/lodash": "4.14.119",
-        "lodash": "4.17.11"
-      }
+    "chownr": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz",
+      "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g=="
     },
     "combined-stream": {
       "version": "1.0.8",
@@ -121,6 +131,17 @@
         "delayed-stream": "~1.0.0"
       }
     },
+    "concat-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz",
+      "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==",
+      "requires": {
+        "buffer-from": "^1.0.0",
+        "inherits": "^2.0.3",
+        "readable-stream": "^2.2.2",
+        "typedarray": "^0.0.6"
+      }
+    },
     "core-js": {
       "version": "2.6.9",
       "resolved": "https://registry.npmjs.org/core-js/-/core-js-2.6.9.tgz",
@@ -152,24 +173,48 @@
       "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
       "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk="
     },
-    "docker-cli-js": {
-      "version": "2.5.2",
-      "resolved": "https://registry.npmjs.org/docker-cli-js/-/docker-cli-js-2.5.2.tgz",
-      "integrity": "sha512-uoDNhZ5mpCLHtDGzX7tNg2FQVFt4Kf4PfdxiXAHqx4iBXQNEHtIkFLHuVP7S+x/MoxUqjgR/S3vyCtwo/pPDbw==",
+    "docker-modem": {
+      "version": "1.0.9",
+      "resolved": "https://registry.npmjs.org/docker-modem/-/docker-modem-1.0.9.tgz",
+      "integrity": "sha512-lVjqCSCIAUDZPAZIeyM125HXfNvOmYYInciphNrLrylUtKyW66meAjSPXWchKVzoIYZx69TPnAepVSSkeawoIw==",
       "requires": {
-        "cli-table-2-json": "1.0.12",
-        "dockermachine-cli-js": "3.0.4",
-        "lodash": "4.17.11",
-        "nodeify-ts": "1.0.6"
+        "JSONStream": "1.3.2",
+        "debug": "^3.2.6",
+        "readable-stream": "~1.0.26-4",
+        "split-ca": "^1.0.0"
+      },
+      "dependencies": {
+        "isarray": {
+          "version": "0.0.1",
+          "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz",
+          "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8="
+        },
+        "readable-stream": {
+          "version": "1.0.34",
+          "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz",
+          "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=",
+          "requires": {
+            "core-util-is": "~1.0.0",
+            "inherits": "~2.0.1",
+            "isarray": "0.0.1",
+            "string_decoder": "~0.10.x"
+          }
+        },
+        "string_decoder": {
+          "version": "0.10.31",
+          "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz",
+          "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ="
+        }
       }
     },
-    "dockermachine-cli-js": {
-      "version": "3.0.4",
-      "resolved": "https://registry.npmjs.org/dockermachine-cli-js/-/dockermachine-cli-js-3.0.4.tgz",
-      "integrity": "sha512-iQYkVp/fI1MZ0I9QDWOHfv/weTJeHEN1Bla8TtONjJBbUAp5QPNM3r9UL5bUNvpsHR7YzVMEd6HersBq7pHogA==",
+    "dockerode": {
+      "version": "2.5.8",
+      "resolved": "https://registry.npmjs.org/dockerode/-/dockerode-2.5.8.tgz",
+      "integrity": "sha512-+7iOUYBeDTScmOmQqpUYQaE7F4vvIt6+gIZNHWhqAQEI887tiPFB9OvXI/HzQYqfUNvukMK+9myLW63oTJPZpw==",
       "requires": {
-        "cli-table-2-json": "1.0.12",
-        "nodeify-ts": "1.0.6"
+        "concat-stream": "~1.6.2",
+        "docker-modem": "^1.0.8",
+        "tar-fs": "~1.16.3"
       }
     },
     "ecc-jsbn": {
@@ -190,6 +235,14 @@
         "browser-process-hrtime": "^0.1.2"
       }
     },
+    "end-of-stream": {
+      "version": "1.4.1",
+      "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.1.tgz",
+      "integrity": "sha512-1MkrZNvWTKCaigbn+W15elq2BB/L22nqrSY5DKlo3X6+vclJm8Bb5djXJBmEX6fS3+zCh/F4VBK5Z2KxJt4s2Q==",
+      "requires": {
+        "once": "^1.4.0"
+      }
+    },
     "eventemitter3": {
       "version": "3.1.2",
       "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-3.1.2.tgz",
@@ -238,6 +291,11 @@
         "mime-types": "^2.1.12"
       }
     },
+    "fs-constants": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz",
+      "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="
+    },
     "getpass": {
       "version": "0.1.7",
       "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
@@ -285,11 +343,21 @@
         "sshpk": "^1.7.0"
       }
     },
+    "inherits": {
+      "version": "2.0.3",
+      "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz",
+      "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4="
+    },
     "is-typedarray": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
       "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo="
     },
+    "isarray": {
+      "version": "1.0.0",
+      "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
+      "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
+    },
     "isemail": {
       "version": "3.2.0",
       "resolved": "https://registry.npmjs.org/isemail/-/isemail-3.2.0.tgz",
@@ -333,6 +401,11 @@
       "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
       "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus="
     },
+    "jsonparse": {
+      "version": "1.3.1",
+      "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz",
+      "integrity": "sha1-P02uSpH6wxX3EGL4UhzCOfE2YoA="
+    },
     "jsprim": {
       "version": "1.4.1",
       "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
@@ -344,11 +417,6 @@
         "verror": "1.10.0"
       }
     },
-    "lodash": {
-      "version": "4.17.11",
-      "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
-      "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg=="
-    },
     "mime-db": {
       "version": "1.40.0",
       "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.40.0.tgz",
@@ -367,31 +435,63 @@
       "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.0.tgz",
       "integrity": "sha1-o1AIsg9BOD7sH7kU9M1d95omQoQ="
     },
+    "mkdirp": {
+      "version": "0.5.1",
+      "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.1.tgz",
+      "integrity": "sha1-MAV0OOrGz3+MR2fzhkjWaX11yQM=",
+      "requires": {
+        "minimist": "0.0.8"
+      },
+      "dependencies": {
+        "minimist": {
+          "version": "0.0.8",
+          "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz",
+          "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0="
+        }
+      }
+    },
     "ms": {
       "version": "2.1.2",
       "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
       "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
     },
-    "nodeify-ts": {
-      "version": "1.0.6",
-      "resolved": "https://registry.npmjs.org/nodeify-ts/-/nodeify-ts-1.0.6.tgz",
-      "integrity": "sha512-jq+8sqVG1aLqy5maMTceL8NUJ1CvarWztlxvrYh3G0aao9BsVeoVmVedUnrUSBLetP7oLIAJrPrw4+iIo7v3GA=="
-    },
     "oauth-sign": {
       "version": "0.9.0",
       "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
       "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ=="
     },
+    "once": {
+      "version": "1.4.0",
+      "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
+      "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
+      "requires": {
+        "wrappy": "1"
+      }
+    },
     "performance-now": {
       "version": "2.1.0",
       "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
       "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns="
     },
+    "process-nextick-args": {
+      "version": "2.0.0",
+      "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.0.tgz",
+      "integrity": "sha512-MtEC1TqN0EU5nephaJ4rAtThHtC86dNN9qCuEhtshvpVBkAW5ZO7BASN9REnF9eoXGcRub+pFuKEpOHE+HbEMw=="
+    },
     "psl": {
       "version": "1.1.32",
       "resolved": "https://registry.npmjs.org/psl/-/psl-1.1.32.tgz",
       "integrity": "sha512-MHACAkHpihU/REGGPLj4sEfc/XKW2bheigvHO1dUqjaKigMp1C8+WLQYRGgeKFMsw5PMfegZcaN8IDXK/cD0+g=="
     },
+    "pump": {
+      "version": "1.0.3",
+      "resolved": "https://registry.npmjs.org/pump/-/pump-1.0.3.tgz",
+      "integrity": "sha512-8k0JupWme55+9tCVE+FS5ULT3K6AbgqrGa58lTT49RpyfwwcGedHqaC5LlQNdEAumn/wFsu6aPwkuPMioy8kqw==",
+      "requires": {
+        "end-of-stream": "^1.1.0",
+        "once": "^1.3.1"
+      }
+    },
     "punycode": {
       "version": "2.1.1",
       "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
@@ -402,6 +502,20 @@
       "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
       "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA=="
     },
+    "readable-stream": {
+      "version": "2.3.6",
+      "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz",
+      "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==",
+      "requires": {
+        "core-util-is": "~1.0.0",
+        "inherits": "~2.0.3",
+        "isarray": "~1.0.0",
+        "process-nextick-args": "~2.0.0",
+        "safe-buffer": "~5.1.1",
+        "string_decoder": "~1.1.1",
+        "util-deprecate": "~1.0.1"
+      }
+    },
     "request": {
       "version": "2.88.0",
       "resolved": "https://registry.npmjs.org/request/-/request-2.88.0.tgz",
@@ -449,6 +563,11 @@
       "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
       "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
     },
+    "split-ca": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/split-ca/-/split-ca-1.0.1.tgz",
+      "integrity": "sha1-bIOv82kvphJW4M0ZfgXp3hV2kaY="
+    },
     "sshpk": {
       "version": "1.16.1",
       "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
@@ -465,6 +584,49 @@
         "tweetnacl": "~0.14.0"
       }
     },
+    "string_decoder": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
+      "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
+      "requires": {
+        "safe-buffer": "~5.1.0"
+      }
+    },
+    "tar-fs": {
+      "version": "1.16.3",
+      "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-1.16.3.tgz",
+      "integrity": "sha512-NvCeXpYx7OsmOh8zIOP/ebG55zZmxLE0etfWRbWok+q2Qo8x/vOR/IJT1taADXPe+jsiu9axDb3X4B+iIgNlKw==",
+      "requires": {
+        "chownr": "^1.0.1",
+        "mkdirp": "^0.5.1",
+        "pump": "^1.0.0",
+        "tar-stream": "^1.1.2"
+      }
+    },
+    "tar-stream": {
+      "version": "1.6.2",
+      "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz",
+      "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==",
+      "requires": {
+        "bl": "^1.0.0",
+        "buffer-alloc": "^1.2.0",
+        "end-of-stream": "^1.0.0",
+        "fs-constants": "^1.0.0",
+        "readable-stream": "^2.3.0",
+        "to-buffer": "^1.1.1",
+        "xtend": "^4.0.0"
+      }
+    },
+    "through": {
+      "version": "2.3.8",
+      "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz",
+      "integrity": "sha1-DdTJ/6q8NXlgsbckEV1+Doai4fU="
+    },
+    "to-buffer": {
+      "version": "1.1.1",
+      "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz",
+      "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg=="
+    },
     "topo": {
       "version": "3.0.3",
       "resolved": "https://registry.npmjs.org/topo/-/topo-3.0.3.tgz",
@@ -509,6 +671,11 @@
       "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
       "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q="
     },
+    "typedarray": {
+      "version": "0.0.6",
+      "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz",
+      "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c="
+    },
     "uri-js": {
       "version": "4.2.2",
       "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.2.2.tgz",
@@ -517,6 +684,11 @@
         "punycode": "^2.1.0"
       }
     },
+    "util-deprecate": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
+      "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
+    },
     "uuid": {
       "version": "3.3.2",
       "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz",
@@ -543,6 +715,16 @@
         "request": "^2.88.0",
         "rx": "^4.1.0"
       }
+    },
+    "wrappy": {
+      "version": "1.0.2",
+      "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
+      "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
+    },
+    "xtend": {
+      "version": "4.0.1",
+      "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.1.tgz",
+      "integrity": "sha1-pcbVMr5lbiPbgg77lDofBJmNY68="
     }
   }
 }
diff --git a/graalvm/time-to-first-request/package.json b/graalvm/time-to-first-request/package.json
index ef89652..b55d1cc 100644
--- a/graalvm/time-to-first-request/package.json
+++ b/graalvm/time-to-first-request/package.json
@@ -9,7 +9,7 @@
   "author": "",
   "license": "Apache-2.0",
   "dependencies": {
-    "docker-cli-js": "^2.5.2",
+    "dockerode": "^2.5.8",
     "elapsed-time": "0.0.1",
     "http-proxy": "^1.17.0",
     "wait-on": "^3.2.0"


[sling-whiteboard] 03/03: tweaks

Posted by bd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bdelacretaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit 6362e614643f588b00eb7eb7874805adfa65db0a
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue Jul 9 10:23:58 2019 +0200

    tweaks
---
 graalvm/time-to-first-request/index.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/graalvm/time-to-first-request/index.js b/graalvm/time-to-first-request/index.js
index 987e304..46022ee 100644
--- a/graalvm/time-to-first-request/index.js
+++ b/graalvm/time-to-first-request/index.js
@@ -83,7 +83,7 @@ const cleanup = async () => {
   } else {
     const runningContainer = await getContainer(dockerImage);
     if(runningContainer) {
-      console.log(`cleanup: killing container ${dockerImage}/${runningContainer.Id.substring(0,12)} ...`);
+      console.log(`Killing container ${dockerImage}/${runningContainer.Id.substring(0,12)} ...`);
       const container = await docker.getContainer(runningContainer.Id);
       await container.kill();
       console.log('killed');


[sling-whiteboard] 02/03: Start + cleanup test container

Posted by bd...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

bdelacretaz pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-whiteboard.git

commit 0284a7257fc2d77af4bc59c5feb49e593f2e2395
Author: Bertrand Delacretaz <bd...@apache.org>
AuthorDate: Tue Jul 9 10:21:14 2019 +0200

    Start + cleanup test container
---
 graalvm/time-to-first-request/index.js | 50 +++++++++++++++++++++++++++++-----
 1 file changed, 43 insertions(+), 7 deletions(-)

diff --git a/graalvm/time-to-first-request/index.js b/graalvm/time-to-first-request/index.js
index 1db88bb..987e304 100644
--- a/graalvm/time-to-first-request/index.js
+++ b/graalvm/time-to-first-request/index.js
@@ -46,22 +46,58 @@ const waitOpts = {
 };
 
 const docker = new Docker();
+const actions = {};
 
-var server = http.createServer(function(req, res) {
+const getContainer = (async imageName => {
+  const containers = await docker.listContainers();
+  return containers.find(container => {
+    return container.Image == imageName;
+  });
+});
+
+var server = http.createServer(async (req, res) => {
   const et = elapsedTime.new().start();
-  // TODO detect if container is already running, instead of blind catch
-  // (maybe use node-docker-api instead)
+  existingContainer = await getContainer(dockerImage);
+
+  if(existingContainer) {
+    console.log(`Container is already running: ${dockerImage}(${et.getValue()})`);
+  } else {
+    actions.startedContainer = true;
+    console.log(`Starting container: ${dockerImage}(${et.getValue()})`);
+    docker.run(dockerImage, null, null, dockerStartOptions);
+  }
 
-  console.log(`Starting container ${dockerImage}(${et.getValue()})`);
-  docker.run(dockerImage, null, process.stderr, dockerStartOptions);
+  // No need to wait for async call, just wait for our URL
   console.log(`Waiting on ${waitOpts.resources[0]} (${et.getValue()})`);
   waitOn(waitOpts).then(() =>{
-    console.log(`Time to first request to ${waitUrl}: (${et.getValue()})`);
+    console.log(`Time to wait for ${waitUrl}: (${et.getValue()})`);
     console.log(`Proxying ${req.url} (${et.getValue()})`);
     proxy.web(req, res, { target: targetUrl });
     console.log(`Done proxying (${et.getValue()})`);
   });  
 });
 
+const cleanup = async () => {
+  if(!actions.startedContainer) {
+    console.log('Did not start container, nothing to cleanup');
+  } else {
+    const runningContainer = await getContainer(dockerImage);
+    if(runningContainer) {
+      console.log(`cleanup: killing container ${dockerImage}/${runningContainer.Id.substring(0,12)} ...`);
+      const container = await docker.getContainer(runningContainer.Id);
+      await container.kill();
+      console.log('killed');
+    }
+  }
+  process.exit();
+} 
+
+[
+  'SIGINT',
+  'SIGTERM',
+].forEach(signal => {
+  process.on(signal, cleanup);
+})
+
 console.log(`listening on port ${listenPort}, proxying to ${targetUrl}`);
-server.listen(listenPort);
\ No newline at end of file
+server.listen(listenPort)
\ No newline at end of file