Skip to content

Commit

Permalink
instead of step for each package, loop throw packages
Browse files Browse the repository at this point in the history
  • Loading branch information
avifenesh committed Mar 2, 2024
1 parent b2017ba commit 25b310b
Show file tree
Hide file tree
Showing 3 changed files with 54 additions and 60 deletions.
68 changes: 31 additions & 37 deletions .github/workflows/lint-ts.yml
Original file line number Diff line number Diff line change
@@ -1,45 +1,39 @@
name: lint-ts

on:
push:
branches: ["main"]
paths:
- benchmarks/node/**
- node/**
- benchmarks/utilities/*
- .github/workflows/lint-ts.yml
pull_request:
paths:
- benchmarks/node/**
- node/**
- benchmarks/utilities/*
- .github/workflows/lint-ts.yml
push:
branches: ["main"]
paths:
- benchmarks/node/**
- node/**
- benchmarks/utilities/*
- .github/workflows/lint-ts.yml
pull_request:
paths:
- benchmarks/node/**
- node/**
- benchmarks/utilities/*
- .github/workflows/lint-ts.yml

env:
CARGO_TERM_COLOR: always
jobs:
job:
runs-on: ubuntu-latest
timeout-minutes: 10
steps:
- uses: actions/checkout@v4
CARGO_TERM_COLOR: always

- uses: ./.github/workflows/lint-ts
with:
package-folder: ./node
name: lint node
jobs:
lint:
runs-on: ubuntu-latest
timeout-minutes: 10

- uses: ./.github/workflows/lint-ts
with:
package-folder: ./benchmarks/node
name: lint benchmark
steps:
- name: Checkout code
uses: actions/checkout@v4

- uses: ./.github/workflows/lint-ts
with:
package-folder: ./benchmarks/utilities
name: lint benchmark utilities
- name: Install dependencies
run: |
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-tsdoc eslint typescript eslint-plugin-import@latest eslint-config-prettier prettier
- name: lint ts
run: |
npm install @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-tsdoc eslint typescript eslint-plugin-import@latest eslint-config-prettier prettier
npx eslint .
npx prettier --check .
- name: Run linting and prettier
run: |
for folder in node benchmarks/node benchmarks/utilities; do
npx eslint ${{ github.workspace }}/$folder
npx prettier --check ${{ github.workspace }}/$folder
done
44 changes: 22 additions & 22 deletions benchmarks/node/node_benchmark.ts
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ async function redisBenchmark(
clients: IAsyncClient[],
totalCommands: number,
data: string,
actionLatencies: Record<ChosenAction, number[]>
actionLatencies: Record<ChosenAction, number[]>,
) {
while (startedTasksCounter < totalCommands) {
startedTasksCounter += 1;
Expand Down Expand Up @@ -97,14 +97,14 @@ async function createBenchTasks(
totalCommands: number,
numOfConcurrentTasks: number,
data: string,
actionLatencies: Record<ChosenAction, number[]>
actionLatencies: Record<ChosenAction, number[]>,
) {
startedTasksCounter = 0;
const tic = process.hrtime();

for (let i = 0; i < numOfConcurrentTasks; i++) {
runningTasks.push(
redisBenchmark(clients, totalCommands, data, actionLatencies)
redisBenchmark(clients, totalCommands, data, actionLatencies),
);
}

Expand All @@ -115,7 +115,7 @@ async function createBenchTasks(

function latencyResults(
prefix: string,
latencies: number[]
latencies: number[],
): Record<string, number> {
const result: Record<string, number> = {};
result[prefix + "_p50_latency"] = calculateLatency(latencies, 50);
Expand All @@ -136,13 +136,13 @@ async function runClients(
dataSize: number,
data: string,
clientDisposal: (client: IAsyncClient) => void,
isCluster: boolean
isCluster: boolean,
) {
const now = new Date();
console.log(
`Starting ${clientName} data size: ${dataSize} concurrency: ${numOfConcurrentTasks} client count: ${
clients.length
} isCluster: ${isCluster} ${now.toLocaleTimeString()}`
} isCluster: ${isCluster} ${now.toLocaleTimeString()}`,
);
const actionLatencies = {
[ChosenAction.SET]: [],
Expand All @@ -155,21 +155,21 @@ async function runClients(
totalCommands,
numOfConcurrentTasks,
data,
actionLatencies
actionLatencies,
);
const tps = Math.round(startedTasksCounter / time);

const getNonExistingLatencies =
actionLatencies[ChosenAction.GET_NON_EXISTING];
const getNonExistingLatencyResults = latencyResults(
"get_non_existing",
getNonExistingLatencies
getNonExistingLatencies,
);

const getExistingLatencies = actionLatencies[ChosenAction.GET_EXISTING];
const getExistingLatencyResults = latencyResults(
"get_existing",
getExistingLatencies
getExistingLatencies,
);

const setLatencies = actionLatencies[ChosenAction.SET];
Expand All @@ -193,10 +193,10 @@ async function runClients(

function createClients(
clientCount: number,
createAction: () => Promise<IAsyncClient>
createAction: () => Promise<IAsyncClient>,
): Promise<IAsyncClient[]> {
const creationActions = Array.from({ length: clientCount }, () =>
createAction()
createAction(),
);
return Promise.all(creationActions);
}
Expand All @@ -210,7 +210,7 @@ async function main(
clientCount: number,
useTLS: boolean,
clusterModeEnabled: boolean,
port: number
port: number,
) {
const data = generateValue(dataSize);

Expand All @@ -222,7 +222,7 @@ async function main(
clientClass.createClient({
addresses: [{ host, port }],
useTLS,
})
}),
);
await runClients(
clients,
Expand All @@ -234,7 +234,7 @@ async function main(
(client) => {
(client as RedisClient).close();
},
clusterModeEnabled
clusterModeEnabled,
);
await new Promise((resolve) => setTimeout(resolve, 100));
}
Expand Down Expand Up @@ -268,7 +268,7 @@ async function main(
(client) => {
(client as RedisClientType).disconnect();
},
clusterModeEnabled
clusterModeEnabled,
);
await new Promise((resolve) => setTimeout(resolve, 100));

Expand Down Expand Up @@ -297,7 +297,7 @@ async function main(
(client) => {
(client as RedisClientType).disconnect();
},
clusterModeEnabled
clusterModeEnabled,
);
}
}
Expand All @@ -313,20 +313,20 @@ Promise.resolve() // just added to clean the indentation of the rest of the call
const clientCount: string[] = receivedOptions.clientCount;
const lambda: (
numOfClients: string,
concurrentTasks: string
concurrentTasks: string,
) => [number, number, number] = (
numOfClients: string,
concurrentTasks: string
concurrentTasks: string,
) => [parseInt(concurrentTasks), dataSize, parseInt(numOfClients)];
const product: [number, number, number][] = concurrentTasks
.flatMap((concurrentTasks: string) =>
clientCount.map((clientCount) =>
lambda(clientCount, concurrentTasks)
)
lambda(clientCount, concurrentTasks),
),
)
.filter(
([concurrentTasks, , clientCount]) =>
clientCount <= concurrentTasks
clientCount <= concurrentTasks,
);

for (const [concurrentTasks, dataSize, clientCount] of product) {
Expand All @@ -342,7 +342,7 @@ Promise.resolve() // just added to clean the indentation of the rest of the call
clientCount,
receivedOptions.tls,
receivedOptions.clusterModeEnabled,
receivedOptions.port
receivedOptions.port,
);
}

Expand Down
2 changes: 1 addition & 1 deletion node/DEVELOPER.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ Development on the Node wrapper may involve changes in either the TypeScript or
npm install eslint-plugin-import@latest @typescript-eslint/parser @typescript-eslint/eslint-plugin eslint-plugin-tsdoc eslint typescript eslint-plugin-import@latest eslint-config-prettier prettier
npm i
npx eslint . --max-warnings=0
npm run prettier:check:ci
npx run prettier:check:ci
```
2. Rust
```bash
Expand Down

0 comments on commit 25b310b

Please sign in to comment.