Skip to content

Commit d025568

Browse files
committed
Try running examples in parallel
Signed-off-by: Albert Callarisa <albert@diagrid.io>
1 parent adbcf32 commit d025568

2 files changed

Lines changed: 68 additions & 48 deletions

File tree

examples/validate.sh

Lines changed: 67 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,70 @@
11
#!/bin/sh
22
echo "Home: $HOME"
33

4-
cd $1 && mm.py -l README.md
4+
run_component() {
5+
component="$1"
6+
cd "$component" && mm.py -l README.md
7+
}
8+
9+
run_all_components_parallel() {
10+
tmpdir="$(mktemp -d "${TMPDIR:-/tmp}/validate-all.XXXXXX")" || exit 1
11+
overall_status=0
12+
13+
components=""
14+
for component in *; do
15+
if [ -d "$component" ] && [ -f "$component/README.md" ]; then
16+
components="$components $component"
17+
fi
18+
done
19+
components="$components .."
20+
21+
for component in $components; do
22+
safe_name="$(printf '%s' "$component" | tr '/.' '__')"
23+
(
24+
cd "$component" && mm.py -l README.md
25+
) >"$tmpdir/$safe_name.log" 2>&1 &
26+
pid=$!
27+
printf '%s\n' "$pid" >"$tmpdir/$safe_name.pid"
28+
done
29+
30+
for component in $components; do
31+
safe_name="$(printf '%s' "$component" | tr '/.' '__')"
32+
pid="$(cat "$tmpdir/$safe_name.pid")"
33+
if wait "$pid"; then
34+
status=0
35+
else
36+
status=$?
37+
overall_status=1
38+
fi
39+
printf '%s\n' "$status" >"$tmpdir/$safe_name.status"
40+
done
41+
42+
for component in $components; do
43+
safe_name="$(printf '%s' "$component" | tr '/.' '__')"
44+
status="$(cat "$tmpdir/$safe_name.status")"
45+
46+
if [ "$component" = ".." ]; then
47+
label="../"
48+
else
49+
label="$component"
50+
fi
51+
52+
printf '===== %s =====\n' "$label"
53+
cat "$tmpdir/$safe_name.log"
54+
printf '\n[exit %s]\n\n' "$status"
55+
done
56+
57+
rm -rf "$tmpdir"
58+
return "$overall_status"
59+
}
60+
61+
if [ -z "$1" ]; then
62+
echo "Usage: $0 <component|all>" >&2
63+
exit 2
64+
fi
65+
66+
if [ "$1" = "all" ]; then
67+
run_all_components_parallel
68+
else
69+
run_component "$1"
70+
fi

tox.ini

Lines changed: 1 addition & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -45,53 +45,7 @@ deps =
4545
mechanical-markdown
4646

4747
commands =
48-
./validate.sh conversation
49-
./validate.sh crypto
50-
./validate.sh metadata
51-
./validate.sh error_handling
52-
./validate.sh pubsub-simple
53-
./validate.sh pubsub-streaming
54-
./validate.sh pubsub-streaming-async
55-
./validate.sh state_store
56-
./validate.sh state_store_query
57-
./validate.sh secret_store
58-
./validate.sh invoke-simple
59-
./validate.sh invoke-custom-data
60-
./validate.sh demo_actor
61-
./validate.sh invoke-binding
62-
./validate.sh grpc_proxying
63-
./validate.sh w3c-tracing
64-
./validate.sh distributed_lock
65-
./validate.sh configuration
66-
./validate.sh demo_workflow
67-
./validate.sh workflow
68-
./validate.sh jobs
69-
./validate.sh langgraph-checkpointer
70-
./validate.sh ../
71-
allowlist_externals=*
72-
73-
commands_pre =
74-
pip uninstall -y dapr dapr-ext-grpc dapr-ext-fastapi dapr-ext-langgraph dapr-ext-strands dapr-ext-flask dapr-ext-langgraph dapr-ext-strands
75-
pip install -e {toxinidir}/ \
76-
-e {toxinidir}/ext/dapr-ext-workflow/ \
77-
-e {toxinidir}/ext/dapr-ext-grpc/ \
78-
-e {toxinidir}/ext/dapr-ext-fastapi/ \
79-
-e {toxinidir}/ext/dapr-ext-langgraph/ \
80-
-e {toxinidir}/ext/dapr-ext-strands/ \
81-
-e {toxinidir}/ext/flask_dapr/
82-
83-
[testenv:example-component]
84-
; This environment is used to validate a specific example component.
85-
; Usage: tox -e example-component -- component_name
86-
; Example: tox -e example-component -- conversation
87-
passenv = HOME
88-
basepython = python3
89-
changedir = ./examples/
90-
deps =
91-
mechanical-markdown
92-
commands =
93-
./validate.sh {posargs}
94-
48+
./validate.sh all
9549
allowlist_externals=*
9650

9751
commands_pre =

0 commit comments

Comments
 (0)