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