diff --git a/CHANGELOG.md b/CHANGELOG.md index 682f51e..53e6a92 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,30 +2,51 @@ All notable changes to this project will be documented in this file. Dates are displayed in UTC. -#### [v0.1.3](https://git.odit.services/lfk/document-server/compare/v0.1.2...v0.1.3) +#### [v0.1.3](https://git.odit.services/lfk/document-server/compare/v0.2.0...v0.1.3) -- Merge pull request 'Barcode generation feature/13-barcode_generation' (#21) from feature/13-barcode_generation into dev [`ff36b48`](https://git.odit.services/lfk/document-server/commit/ff36b4871f2d696c0b86883d529365ee8f1c6132) -- 🚀Bumped version to v0.1.3 [`6a14232`](https://git.odit.services/lfk/document-server/commit/6a142328898d5b89fa11eaf033372971d1093b0c) -- 🧾New changelog file version [CI SKIP] [skip ci] [`ad9a8a4`](https://git.odit.services/lfk/document-server/commit/ad9a8a4fe0649d48db924771be8ecb4cbf5c162a) +- Merge pull request 'Added speedtest feature/19-speed_test' (#23) from feature/19-speed_test into dev [`7ac8edb`](https://git.odit.services/lfk/document-server/commit/7ac8edb5cf4b7317a703faa32ded482a8c2b9b91) +- Implemented first experimental speedtest [`e3a45a6`](https://git.odit.services/lfk/document-server/commit/e3a45a61ac3b2d691c2f75d36155896b7ed301d8) +- 🧾New changelog file version [CI SKIP] [skip ci] [`149bf18`](https://git.odit.services/lfk/document-server/commit/149bf1849db20b863ec998a72c77559ec401bc32) +- Beautified output a bit [`aefe549`](https://git.odit.services/lfk/document-server/commit/aefe5493b06c04cc2b20029e1f7fc5f15ec9c04e) +- Implemented runner generation using fakerjs [`0894446`](https://git.odit.services/lfk/document-server/commit/08944460854c78cd4368cf178b022c31b624c8d9) +- Added speedtest script to package [`75b8b28`](https://git.odit.services/lfk/document-server/commit/75b8b281b87d9b173093f16beae12d707ec05052) +- Implemented basic contracts tests in various sizes [`a1b0a19`](https://git.odit.services/lfk/document-server/commit/a1b0a1918db552eb385fedcbaa576ad493a1d605) +- tmp [`0d27916`](https://git.odit.services/lfk/document-server/commit/0d27916188114fa41e666170135de2b714ff113a) + +#### [v0.2.0](https://git.odit.services/lfk/document-server/compare/v0.1.3...v0.2.0) + +> 9 February 2021 + +- Merge pull request 'Alpha Release 0.2.0 - The barcode release' (#22) from dev into main [`b952ac4`](https://git.odit.services/lfk/document-server/commit/b952ac4d728952e1fb6d26b0929e3f946748b85b) - Implemented async barcode generation using async helpers [`edc846a`](https://git.odit.services/lfk/document-server/commit/edc846ab05319a4e60422625678f204bc145884c) +- 📖New license file version [CI SKIP] [skip ci] [`fea0b1d`](https://git.odit.services/lfk/document-server/commit/fea0b1dc0582d2906bad22f2ff5e5aad90a1c885) - Reworked template layout for barcode [`1c06689`](https://git.odit.services/lfk/document-server/commit/1c066898009883f510fa204c66800e5f6228a15d) -- Added basic barcode generation [`8072d0b`](https://git.odit.services/lfk/document-server/commit/8072d0b1940ef6f316ce78dcbcb9e5af5bab04e7) -- 🧾New changelog file version [CI SKIP] [skip ci] [`03f63e3`](https://git.odit.services/lfk/document-server/commit/03f63e3777381a4475910e6fa4a3986f87b73f39) -- Merge pull request 'Alpha Release 0.1.3 - More env vars' (#20) from dev into main [`ecd02a1`](https://git.odit.services/lfk/document-server/commit/ecd02a1af7431d0bf615c4ec064f64e023946e49) +- 🧾New changelog file version [CI SKIP] [skip ci] [`7122fe7`](https://git.odit.services/lfk/document-server/commit/7122fe7dbe3fae64806492636255147078eb03c8) +- Merge pull request 'Barcode generation feature/13-barcode_generation' (#21) from feature/13-barcode_generation into dev [`ff36b48`](https://git.odit.services/lfk/document-server/commit/ff36b4871f2d696c0b86883d529365ee8f1c6132) - Now with working code scaleing [`4b79b29`](https://git.odit.services/lfk/document-server/commit/4b79b29ee6319559c9d68ddb11f831d25f12b3da) +- Added basic barcode generation [`8072d0b`](https://git.odit.services/lfk/document-server/commit/8072d0b1940ef6f316ce78dcbcb9e5af5bab04e7) - Now loading barcode format from env with overwrite via query param [`9a7c1d6`](https://git.odit.services/lfk/document-server/commit/9a7c1d64fdbdadbd104739133a87773e4d2bca01) - Added fallback error image [`5023457`](https://git.odit.services/lfk/document-server/commit/502345782f26895ccf3089d15c3817709b62dfcc) - First part of the handlebars barcode generation [`a35f8cf`](https://git.odit.services/lfk/document-server/commit/a35f8cfd3aa94923968fd77425c074844d28ec0d) -- 🧾New changelog file version [CI SKIP] [skip ci] [`b6296b8`](https://git.odit.services/lfk/document-server/commit/b6296b8d97cda943dfb5e11bc9dfbb2f363f5b81) - Added todo [`75d2ac3`](https://git.odit.services/lfk/document-server/commit/75d2ac3c5f80f8440b6d48c33b15ef17565559b3) - Removed promise [`e1ec193`](https://git.odit.services/lfk/document-server/commit/e1ec193a4ff1cd618da90f5f2d029ec848a6f669) -- Added new env vars to config [`3bb322e`](https://git.odit.services/lfk/document-server/commit/3bb322ede5db15a147c0d7a8db2a68ccb7fa2112) -- Now loading interpolation vars from config/env [`b4ebae2`](https://git.odit.services/lfk/document-server/commit/b4ebae283b472b2f0c6e28caed49b30edb119585) +- 🧾New changelog file version [CI SKIP] [skip ci] [`03f63e3`](https://git.odit.services/lfk/document-server/commit/03f63e3777381a4475910e6fa4a3986f87b73f39) - Fixed broken mime-type [`4187a8e`](https://git.odit.services/lfk/document-server/commit/4187a8e82015495c0e0362e957e236ed6935a908) -- Merge pull request 'Load more stuff from env feature/16-env_vars' (#17) from feature/16-env_vars into dev [`bc4d16e`](https://git.odit.services/lfk/document-server/commit/bc4d16e6f8959ed35d7e87647de84584cdfddd7b) -- Added new env vars to readme [`b77bb3a`](https://git.odit.services/lfk/document-server/commit/b77bb3ad9dba9d73c2c81215ba57936192155a9a) - Switched to using the current runner's id as the barcode text [`3e2b011`](https://git.odit.services/lfk/document-server/commit/3e2b011d2887d261fb9c36820982095d6dd6d847) - Added barcode field to template [`27d1d69`](https://git.odit.services/lfk/document-server/commit/27d1d69360c8513079abcfe3a6fc2a50309a2b61) + +#### [v0.1.3](https://git.odit.services/lfk/document-server/compare/v0.1.2...v0.1.3) + +> 9 February 2021 + +- Merge pull request 'Alpha Release 0.1.3 - More env vars' (#20) from dev into main [`ecd02a1`](https://git.odit.services/lfk/document-server/commit/ecd02a1af7431d0bf615c4ec064f64e023946e49) +- 🚀Bumped version to v0.1.3 [`6a14232`](https://git.odit.services/lfk/document-server/commit/6a142328898d5b89fa11eaf033372971d1093b0c) +- 🧾New changelog file version [CI SKIP] [skip ci] [`ad9a8a4`](https://git.odit.services/lfk/document-server/commit/ad9a8a4fe0649d48db924771be8ecb4cbf5c162a) +- 🧾New changelog file version [CI SKIP] [skip ci] [`b6296b8`](https://git.odit.services/lfk/document-server/commit/b6296b8d97cda943dfb5e11bc9dfbb2f363f5b81) +- Merge pull request 'Load more stuff from env feature/16-env_vars' (#17) from feature/16-env_vars into dev [`bc4d16e`](https://git.odit.services/lfk/document-server/commit/bc4d16e6f8959ed35d7e87647de84584cdfddd7b) +- Added new env vars to config [`3bb322e`](https://git.odit.services/lfk/document-server/commit/3bb322ede5db15a147c0d7a8db2a68ccb7fa2112) +- Added new env vars to readme [`b77bb3a`](https://git.odit.services/lfk/document-server/commit/b77bb3ad9dba9d73c2c81215ba57936192155a9a) +- Now loading interpolation vars from config/env [`b4ebae2`](https://git.odit.services/lfk/document-server/commit/b4ebae283b472b2f0c6e28caed49b30edb119585) - 🧾New changelog file version [CI SKIP] [skip ci] [`a306009`](https://git.odit.services/lfk/document-server/commit/a30600943d01116b99e946cb705a16d0372b5095) #### [v0.1.2](https://git.odit.services/lfk/document-server/compare/v0.1.1...v0.1.2) diff --git a/licenses.md b/licenses.md index ed35937..00f9823 100644 --- a/licenses.md +++ b/licenses.md @@ -877,6 +877,14 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# faker +**Author**: undefined +**Repo**: [object Object] +**License**: MIT +**Description**: Generate massive amounts of fake contextual data +## License Text + + # nodemon **Author**: [object Object] **Repo**: [object Object] @@ -958,6 +966,14 @@ ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +# start-server-and-test +**Author**: Gleb Bahmutov +**Repo**: [object Object] +**License**: MIT +**Description**: Starts server, waits for URL, then runs test command; when the tests end, shuts down server +## License Text + + # ts-node **Author**: [object Object] **Repo**: [object Object] diff --git a/package.json b/package.json index bfcc522..4d84162 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,9 @@ "build": "rimraf ./dist && tsc && cp-cli ./src/templates ./dist/templates && cp-cli ./src/locales ./dist/locales", "licenses:export": "license-exporter --markdown", "release": "release-it --only-version", - "translations:sort": "node sort_translations.js" + "translations:sort": "node sort_translations.js", + "test:speed": "start-server-and-test dev http://localhost:4010/docs/openapi.json test:speed:run", + "test:speed:run": "ts-node src/tests/speedtest.ts" }, "repository": { "type": "git", @@ -66,9 +68,11 @@ "@types/node": "^14.14.22", "@types/puppeteer": "^5.4.3", "cp-cli": "^2.0.0", + "faker": "^5.3.1", "nodemon": "^2.0.7", "release-it": "^14.2.2", "rimraf": "^3.0.2", + "start-server-and-test": "^1.12.0", "ts-node": "^9.1.1", "typescript": "^4.1.3" }, @@ -85,4 +89,4 @@ "publish": false } } -} +} \ No newline at end of file diff --git a/src/tests/speedtest.ts b/src/tests/speedtest.ts new file mode 100644 index 0000000..c016204 --- /dev/null +++ b/src/tests/speedtest.ts @@ -0,0 +1,79 @@ +import axios from "axios" +import faker from "faker" +import { Runner } from '../models/Runner' +import { RunnerGroup } from '../models/RunnerGroup' + +const baseurl = "http://localhost:4010" + +axios.interceptors.request.use((config) => { + config.headers['request-startTime'] = process.hrtime() + return config +}) + +axios.interceptors.response.use((response) => { + const start = response.config.headers['request-startTime'] + const end = process.hrtime(start) + const milliseconds = Math.round((end[0] * 1000) + (end[1] / 1000000)) + response.headers['request-duration'] = milliseconds + return response +}) + +function generateRunners(amount: number): Runner[] { + let runners: Runner[] = new Array(); + let group = new RunnerGroup(); + let runner = new Runner(); + for (var i = 0; i < amount; i++) { + group.name = faker.company.bsBuzz(); + group.id = Math.floor(Math.random() * (9999999 - 1) + 1); + runner.firstname = faker.name.firstName(); + runner.lastname = faker.name.lastName(); + runner.id = Math.floor(Math.random() * (9999999 - 1) + 1); + runners.push(runner); + } + return runners; +} + +async function postContracts(runners: Runner[]): Promise { + const res = await axios.post(`${baseurl}/contracts`, runners); + return new Measurement("contract", runners.length, parseInt(res.headers['request-duration'])) +} + +async function testContracts(sizes): Promise { + let measurements = new Array(); + console.log("#### Testing contracts ####"); + + for (let size of sizes) { + const m = await postContracts(generateRunners(size)); + console.log(m.toString()); + measurements.push(m); + } + return measurements; +} + +async function main() { + const sizes = [0, 1, 10, 50, 100, 200, 500, 1000] + console.log("########### Speedtest ###########"); + console.log(`Document server version (according to the api): ${(await axios.get("http://localhost:4010/version")).data.version}`); + console.log("####### Running tests #######"); + const contractResults = await testContracts(sizes); + console.log("####### Results #######"); + console.table(contractResults); +} + +main(); + +class Measurement { + public type: string; + public inputcount: number; + public responsetime: number; + + constructor(type: string, input: number, time: number) { + this.type = type; + this.inputcount = input; + this.responsetime = time; + } + + public toString(): string { + return `It took ${this.responsetime}ms to generate ${this.inputcount} pdfs for the type ${this.type}.` + } +} \ No newline at end of file