Skip to content

Commit e9fadc7

Browse files
committed
Fix task creation in the "full" suite case
1 parent 6e73aaf commit e9fadc7

File tree

8 files changed

+29
-10
lines changed

8 files changed

+29
-10
lines changed

benchmark/apps/cli/src/index.ts

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,15 +52,14 @@ const run = async (toolbox: GluegunToolbox) => {
5252
if (language === "all") {
5353
for (const language of languages) {
5454
const exercises = getExercises()[language as Language]
55-
await pMap(exercises, async (exercise) => createTask({ runId: run.id, language, exercise }), {
55+
56+
await pMap(exercises, (exercise) => createTask({ runId: run.id, language, exercise }), {
5657
concurrency: 10,
5758
})
5859
}
5960
} else if (exercise === "all") {
6061
const exercises = getExercises()[language as Language]
61-
await pMap(exercises, async (exercise) => createTask({ runId: run.id, language, exercise }), {
62-
concurrency: 10,
63-
})
62+
await pMap(exercises, (exercise) => createTask({ runId: run.id, language, exercise }), { concurrency: 10 })
6463
} else {
6564
language = language || (await askLanguage(prompt))
6665
exercise = exercise || (await askExercise(prompt, language))

benchmark/apps/web/package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"lucide-react": "^0.479.0",
3131
"next": "15.2.2",
3232
"next-themes": "^0.4.6",
33+
"p-map": "^7.0.3",
3334
"react": "^19.0.0",
3435
"react-dom": "^19.0.0",
3536
"react-hook-form": "^7.54.2",

benchmark/apps/web/src/app/layout.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ export default function RootLayout({
2424
<ThemeProvider attribute="class" defaultTheme="system" enableSystem disableTransitionOnChange>
2525
<ReactQueryProvider>
2626
<Header />
27-
<div className="max-w-3xl mx-auto">{children}</div>
27+
<div className="max-w-3xl mx-auto pb-12">{children}</div>
2828
</ReactQueryProvider>
2929
</ThemeProvider>
3030
</body>

benchmark/apps/web/src/app/runs/[id]/task-status.tsx

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,11 @@ export const TaskStatus = ({ task, runningTaskId }: TaskStatusProps) => {
1212
<LoaderCircle className="size-4 animate-spin" />
1313
) : !task.finishedAt ? (
1414
<CircleDashed className="size-4" />
15-
) : !task.passed ? (
15+
) : task.passed === false ? (
1616
<CircleSlash className="size-4 text-destructive" />
17-
) : (
17+
) : task.passed === true ? (
1818
<CircleCheck className="size-4 text-green-500" />
19+
) : (
20+
<LoaderCircle className="size-4 animate-spin" />
1921
)
2022
}

benchmark/apps/web/src/hooks/use-run-status.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ export const useRunStatus = (run: Run) => {
1515
queryKey: ["run", run.id, runningTaskId],
1616
queryFn: async () => getTasks(run.id),
1717
placeholderData: keepPreviousData,
18+
refetchInterval: 10_000,
1819
})
1920

2021
const url = `/api/runs/${run.id}/stream`

benchmark/apps/web/src/lib/server/exercises.ts

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@ import * as fs from "fs/promises"
44
import * as path from "path"
55
import { fileURLToPath } from "url"
66

7-
import { languages } from "@benchmark/types"
7+
import { Language, languages } from "@benchmark/types"
88

99
const __dirname = path.dirname(fileURLToPath(import.meta.url))
1010

11-
const listDirectories = async (relativePath: string) => {
11+
export const listDirectories = async (relativePath: string) => {
1212
try {
1313
const targetPath = path.resolve(__dirname, relativePath)
1414
const entries = await fs.readdir(targetPath, { withFileTypes: true })
@@ -33,3 +33,6 @@ export const getExercises = async () => {
3333

3434
return result.flat()
3535
}
36+
37+
export const getExercisesForLanguage = async (language: Language) =>
38+
listDirectories(path.join(EXERCISES_BASE_PATH, language))

benchmark/apps/web/src/lib/server/runs.ts

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,13 @@ import path from "path"
55
import os from "os"
66

77
import { revalidatePath } from "next/cache"
8+
import pMap from "p-map"
89

9-
import { Language } from "@benchmark/types"
10+
import { Language, languages } from "@benchmark/types"
1011
import * as db from "@benchmark/db"
1112

1213
import { CreateRun } from "@/lib/schemas"
14+
import { getExercisesForLanguage } from "./exercises"
1315

1416
export async function createRun({ suite, exercises = [], ...values }: CreateRun) {
1517
const run = await db.createRun({
@@ -27,6 +29,14 @@ export async function createRun({ suite, exercises = [], ...values }: CreateRun)
2729

2830
await db.createTask({ ...values, runId: run.id, language: language as Language, exercise })
2931
}
32+
} else {
33+
for (const language of languages) {
34+
const exercises = await getExercisesForLanguage(language)
35+
36+
await pMap(exercises, (exercise) => db.createTask({ ...values, runId: run.id, language, exercise }), {
37+
concurrency: 10,
38+
})
39+
}
3040
}
3141

3242
revalidatePath("/runs")

benchmark/pnpm-lock.yaml

Lines changed: 3 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)