Skip to content

Commit

Permalink
chore: add historical performance benchmarking (#1432)
Browse files Browse the repository at this point in the history
  • Loading branch information
tatomyr authored Feb 16, 2024
1 parent c51fbc7 commit d01b16f
Show file tree
Hide file tree
Showing 7 changed files with 89 additions and 9 deletions.
43 changes: 40 additions & 3 deletions .github/workflows/performance.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ on:
- main

jobs:
hyperfine:
latest-vs-next:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20
cache: 'npm'
- name: Install Dependencies
run: npm ci
Expand All @@ -38,4 +38,41 @@ jobs:
uses: thollander/actions-comment-pull-request@v2
with:
filePath: benchmark_check.md
comment_tag: hyperfine-comparison
comment_tag: latest-vs-next-comparison

historical-versions:
# Run only on release branch (changeset-release/main):
if: github.head_ref == 'changeset-release/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 20
cache: 'npm'
- name: Install Dependencies
run: npm ci
- name: Install External
run: npm i -g hyperfine
- name: Prepare
run: |
npm run compile
npm run pack:prepare
cd benchmark/
npm i
npm run make-test
- name: Run Benchmark
run: |
cd benchmark/
npm test
cat benchmark_check.md
env:
CI: true
REDOCLY_TELEMETRY: off

- name: Comment PR
if: ${{ github.event.pull_request.head.repo.full_name == github.repository }}
uses: thollander/actions-comment-pull-request@v2
with:
filePath: benchmark/benchmark_check.md
comment_tag: historical-versions-comparison
2 changes: 1 addition & 1 deletion .github/workflows/release.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -199,7 +199,7 @@ jobs:

- name: Send to a Slack channel
id: slack
uses: slackapi/slack-github-action@v1.23.0
uses: slackapi/slack-github-action@v1.25.0
with:
channel-id: C019K52TC0L #releases
payload-file-path: './output/release-message.json'
Expand Down
10 changes: 5 additions & 5 deletions .github/workflows/tests.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
Expand All @@ -35,7 +35,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
Expand All @@ -56,7 +56,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20
cache: 'npm'
- name: Coverage Report
uses: artiomtr/[email protected]
Expand All @@ -72,7 +72,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
Expand All @@ -86,7 +86,7 @@ jobs:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
node-version: 20
cache: 'npm'
- name: Install dependencies
run: npm ci
Expand Down
6 changes: 6 additions & 0 deletions benchmark/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
api-definitions
node_modules
package-lock.json
test-command.txt
benchmark_check.md
benchmark_check.json
4 changes: 4 additions & 0 deletions benchmark/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
# Historical versions benchmark

This directory is for automated benchmark testing of the existing versions of **Redocly CLI**.
After releasing a new version, please add its reference to the `dependencies` section of the [package.json](./package.json) file.
12 changes: 12 additions & 0 deletions benchmark/make-test-command.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
#!/bin/bash

set -eo pipefail # Fail on script errors

# Clone the repo with test openapi files:
git clone https://github.com/Rebilly/api-definitions.git

# Store the command into a text file:
echo hyperfine -i --warmup 3 $(cat package.json | jq '.dependencies' | jq 'keys' | jq 'map("'\''node node_modules/" + . + "/bin/cli.js lint api-definitions/openapi/openapi.yaml'\''")' | jq 'join(" ")' | xargs) --export-markdown benchmark_check.md --export-json benchmark_check.json > test-command.txt

# Put the command in the test section of the package.json:
cat package.json | jq ".scripts.test = \"$(cat test-command.txt)\"" > package.json
21 changes: 21 additions & 0 deletions benchmark/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"name": "benchmark",
"version": "1.0.0",
"description": "Test benchmark for Redocly CLI",
"scripts": {
"make-test": "bash make-test-command.sh"
},
"dependencies": {
"cli-100": "npm:@redocly/[email protected]",
"cli-110": "npm:@redocly/[email protected]",
"cli-120": "npm:@redocly/[email protected]",
"cli-130": "npm:@redocly/[email protected]",
"cli-140": "npm:@redocly/[email protected]",
"cli-150": "npm:@redocly/[email protected]",
"cli-160": "npm:@redocly/[email protected]",
"cli-170": "npm:@redocly/[email protected]",
"cli-180": "npm:@redocly/[email protected]",
"cli-190": "npm:@redocly/[email protected]",
"cli-next": "file:../redocly-cli.tgz"
}
}

1 comment on commit d01b16f

@github-actions
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Coverage report

St.
Category Percentage Covered / Total
🟡 Statements 76.19% 4326/5678
🟡 Branches 65.97% 2258/3423
🟡 Functions 68.93% 699/1014
🟡 Lines 76.39% 4067/5324

Test suite run success

710 tests passing in 101 suites.

Report generated by 🧪jest coverage report action from d01b16f

Please sign in to comment.