Skip to content

Commit 00f78cd

Browse files
author
mike dupont
committed
now starting to run locally, try github
1 parent 2dae7a6 commit 00f78cd

6 files changed

+179
-83
lines changed

.github/workflows/run-docker-unit-tests.yml

+102-50
Original file line numberDiff line numberDiff line change
@@ -21,56 +21,108 @@ jobs:
2121
strategy:
2222
matrix:
2323
tests:
24-
- "/app/src/lib/util/base58.unit-test.ts"
25-
- "/app/src/lib/ml/consistency.unit-test.ts"
26-
- "/app/src/lib/mina/account-update.unit-test.ts"
27-
- "/app/src/lib/mina/hash-input.unit-test.ts"
28-
- "/app/src/lib/mina/mina.unit-test.ts"
29-
- "/app/src/lib/mina/actions/offchain-contract.unit-test.ts"
30-
- "/app/src/lib/mina/actions/batch-reducer.unit-test.ts"
31-
- "/app/src/lib/mina/actions/batch-reducer-program.unit-test.ts"
32-
- "/app/src/lib/mina/test/dynamic-call.unit-test.ts"
33-
- "/app/src/lib/mina/token/forest-iterator.unit-test.ts"
34-
- "/app/src/lib/mina/token/token-contract.unit-test.ts"
35-
- "/app/src/lib/mina/fetch.unit-test.ts"
36-
- "/app/src/lib/mina/account-update-layout.unit-test.ts"
37-
- "/app/src/lib/proof-system/proof-system.unit-test.ts"
38-
- "/app/src/lib/proof-system/sideloaded.unit-test.ts"
39-
- "/app/src/lib/provable/test/bitwise.unit-test.ts"
40-
- "/app/src/lib/provable/test/base64.unit-test.ts"
41-
- "/app/src/lib/provable/test/field.unit-test.ts"
42-
- "/app/src/lib/provable/test/nullifier.unit-test.ts"
43-
- "/app/src/lib/provable/test/provable.unit-test.ts"
44-
- "/app/src/lib/provable/test/sha256.unit-test.ts"
45-
- "/app/src/lib/provable/test/string.unit-test.ts"
46-
- "/app/src/lib/provable/test/range-check.unit-test.ts"
47-
- "/app/src/lib/provable/test/foreign-field.unit-test.ts"
48-
- "/app/src/lib/provable/test/group.unit-test.ts"
49-
- "/app/src/lib/provable/test/custom-gates-recursion.unit-test.ts"
50-
- "/app/src/lib/provable/test/foreign-curve.unit-test.ts"
51-
- "/app/src/lib/provable/test/foreign-field-gadgets.unit-test.ts"
52-
- "/app/src/lib/provable/test/elliptic-curve.unit-test.ts"
53-
- "/app/src/lib/provable/test/lookup.unit-test.ts"
54-
- "/app/src/lib/provable/test/ecdsa.unit-test.ts"
55-
- "/app/src/lib/provable/test/arithmetic.unit-test.ts"
56-
- "/app/src/lib/provable/test/primitives.unit-test.ts"
57-
- "/app/src/lib/provable/test/keccak.unit-test.ts"
58-
- "/app/src/lib/provable/test/struct.unit-test.ts"
59-
- "/app/src/lib/provable/test/merkle-tree.unit-test.ts"
60-
- "/app/src/lib/testing/testing.unit-test.ts"
61-
- "/app/src/mina-signer/tests/verify-in-snark.unit-test.ts"
62-
- "/app/src/mina-signer/tests/zkapp.unit-test.ts"
63-
- "/app/src/mina-signer/src/sign-legacy.unit-test.ts"
64-
- "/app/src/mina-signer/src/transaction-hash.unit-test.ts"
65-
- "/app/src/mina-signer/src/signature.unit-test.ts"
66-
- "/app/src/mina-signer/src/sign-zkapp-command.unit-test.ts"
67-
- "/app/src/bindings/lib/binable.unit-test.ts"
68-
- "/app/src/bindings/crypto/bigint.unit-test.ts"
69-
- "/app/src/bindings/crypto/finite-field.unit-test.ts"
70-
- "/app/src/bindings/crypto/glv.unit-test.ts"
71-
- "/app/src/bindings/crypto/poseidon.unit-test.ts"
72-
- "/app/src/bindings/crypto/bindings/bindings.unit-test.ts"
73-
- "/app/src/bindings/crypto/elliptic-curve.unit-test.ts"
24+
# - "/app/src/lib/util/base58.unit-test.ts"
25+
# - "/app/src/lib/ml/consistency.unit-test.ts"
26+
# - "/app/src/lib/mina/account-update.unit-test.ts"
27+
# - "/app/src/lib/mina/hash-input.unit-test.ts"
28+
# - "/app/src/lib/mina/mina.unit-test.ts"
29+
# - "/app/src/lib/mina/actions/offchain-contract.unit-test.ts"
30+
# - "/app/src/lib/mina/actions/batch-reducer.unit-test.ts"
31+
# - "/app/src/lib/mina/actions/batch-reducer-program.unit-test.ts"
32+
# - "/app/src/lib/mina/test/dynamic-call.unit-test.ts"
33+
# - "/app/src/lib/mina/token/forest-iterator.unit-test.ts"
34+
# - "/app/src/lib/mina/token/token-contract.unit-test.ts"
35+
# - "/app/src/lib/mina/fetch.unit-test.ts"
36+
# - "/app/src/lib/mina/account-update-layout.unit-test.ts"
37+
# - "/app/src/lib/proof-system/proof-system.unit-test.ts"
38+
# - "/app/src/lib/proof-system/sideloaded.unit-test.ts"
39+
# - "/app/src/lib/provable/test/bitwise.unit-test.ts"
40+
# - "/app/src/lib/provable/test/base64.unit-test.ts"
41+
# - "/app/src/lib/provable/test/field.unit-test.ts"
42+
# - "/app/src/lib/provable/test/nullifier.unit-test.ts"
43+
# - "/app/src/lib/provable/test/provable.unit-test.ts"
44+
# - "/app/src/lib/provable/test/sha256.unit-test.ts"
45+
# - "/app/src/lib/provable/test/string.unit-test.ts"
46+
# - "/app/src/lib/provable/test/range-check.unit-test.ts"
47+
# - "/app/src/lib/provable/test/foreign-field.unit-test.ts"
48+
# - "/app/src/lib/provable/test/group.unit-test.ts"
49+
# - "/app/src/lib/provable/test/custom-gates-recursion.unit-test.ts"
50+
# - "/app/src/lib/provable/test/foreign-curve.unit-test.ts"
51+
# - "/app/src/lib/provable/test/foreign-field-gadgets.unit-test.ts"
52+
# - "/app/src/lib/provable/test/elliptic-curve.unit-test.ts"
53+
# - "/app/src/lib/provable/test/lookup.unit-test.ts"
54+
# - "/app/src/lib/provable/test/ecdsa.unit-test.ts"
55+
# - "/app/src/lib/provable/test/arithmetic.unit-test.ts"
56+
# - "/app/src/lib/provable/test/primitives.unit-test.ts"
57+
# - "/app/src/lib/provable/test/keccak.unit-test.ts"
58+
# - "/app/src/lib/provable/test/struct.unit-test.ts"
59+
# - "/app/src/lib/provable/test/merkle-tree.unit-test.ts"
60+
# - "/app/src/lib/testing/testing.unit-test.ts"
61+
# - "/app/src/mina-signer/tests/verify-in-snark.unit-test.ts"
62+
# - "/app/src/mina-signer/tests/zkapp.unit-test.ts"
63+
# - "/app/src/mina-signer/src/sign-legacy.unit-test.ts"
64+
# - "/app/src/mina-signer/src/transaction-hash.unit-test.ts"
65+
# - "/app/src/mina-signer/src/signature.unit-test.ts"
66+
# - "/app/src/mina-signer/src/sign-zkapp-command.unit-test.ts"
67+
# - "/app/src/bindings/lib/binable.unit-test.ts"
68+
# - "/app/src/bindings/crypto/bigint.unit-test.ts"
69+
# - "/app/src/bindings/crypto/finite-field.unit-test.ts"
70+
# - "/app/src/bindings/crypto/glv.unit-test.ts"
71+
# - "/app/src/bindings/crypto/poseidon.unit-test.ts"
72+
# - "/app/src/bindings/crypto/bindings/bindings.unit-test.ts"
73+
# - "/app/src/bindings/crypto/elliptic-curve.unit-test.ts"
74+
75+
- "/app/dist/node/lib/util/base58.unit-test.js"
76+
- "/app/dist/node/lib/ml/consistency.unit-test.js"
77+
- "/app/dist/node/lib/mina/account-update.unit-test.js"
78+
- "/app/dist/node/lib/mina/hash-input.unit-test.js"
79+
- "/app/dist/node/lib/mina/mina.unit-test.js"
80+
- "/app/dist/node/lib/mina/actions/offchain-contract.unit-test.js"
81+
- "/app/dist/node/lib/mina/actions/batch-reducer.unit-test.js"
82+
- "/app/dist/node/lib/mina/actions/batch-reducer-program.unit-test.js"
83+
- "/app/dist/node/lib/mina/test/dynamic-call.unit-test.js"
84+
- "/app/dist/node/lib/mina/token/forest-iterator.unit-test.js"
85+
- "/app/dist/node/lib/mina/token/token-contract.unit-test.js"
86+
- "/app/dist/node/lib/mina/fetch.unit-test.js"
87+
- "/app/dist/node/lib/mina/account-update-layout.unit-test.js"
88+
- "/app/dist/node/lib/proof-system/proof-system.unit-test.js"
89+
- "/app/dist/node/lib/proof-system/sideloaded.unit-test.js"
90+
- "/app/dist/node/lib/provable/test/bitwise.unit-test.js"
91+
- "/app/dist/node/lib/provable/test/base64.unit-test.js"
92+
- "/app/dist/node/lib/provable/test/field.unit-test.js"
93+
- "/app/dist/node/lib/provable/test/nullifier.unit-test.js"
94+
- "/app/dist/node/lib/provable/test/provable.unit-test.js"
95+
- "/app/dist/node/lib/provable/test/sha256.unit-test.js"
96+
- "/app/dist/node/lib/provable/test/string.unit-test.js"
97+
- "/app/dist/node/lib/provable/test/range-check.unit-test.js"
98+
- "/app/dist/node/lib/provable/test/foreign-field.unit-test.js"
99+
- "/app/dist/node/lib/provable/test/group.unit-test.js"
100+
- "/app/dist/node/lib/provable/test/custom-gates-recursion.unit-test.js"
101+
- "/app/dist/node/lib/provable/test/foreign-curve.unit-test.js"
102+
- "/app/dist/node/lib/provable/test/foreign-field-gadgets.unit-test.js"
103+
- "/app/dist/node/lib/provable/test/elliptic-curve.unit-test.js"
104+
- "/app/dist/node/lib/provable/test/lookup.unit-test.js"
105+
- "/app/dist/node/lib/provable/test/ecdsa.unit-test.js"
106+
- "/app/dist/node/lib/provable/test/arithmetic.unit-test.js"
107+
- "/app/dist/node/lib/provable/test/primitives.unit-test.js"
108+
- "/app/dist/node/lib/provable/test/keccak.unit-test.js"
109+
- "/app/dist/node/lib/provable/test/struct.unit-test.js"
110+
- "/app/dist/node/lib/provable/test/merkle-tree.unit-test.js"
111+
- "/app/dist/node/lib/testing/testing.unit-test.js"
112+
- "/app/dist/node/mina-signer/tests/verify-in-snark.unit-test.js"
113+
- "/app/dist/node/mina-signer/tests/zkapp.unit-test.js"
114+
- "/app/dist/node/mina-signer/src/sign-legacy.unit-test.js"
115+
- "/app/dist/node/mina-signer/src/transaction-hash.unit-test.js"
116+
- "/app/dist/node/mina-signer/src/signature.unit-test.js"
117+
- "/app/dist/node/mina-signer/src/sign-zkapp-command.unit-test.js"
118+
- "/app/dist/node/bindings/lib/binable.unit-test.js"
119+
- "/app/dist/node/bindings/crypto/bigint.unit-test.js"
120+
- "/app/dist/node/bindings/crypto/finite-field.unit-test.js"
121+
- "/app/dist/node/bindings/crypto/glv.unit-test.js"
122+
- "/app/dist/node/bindings/crypto/poseidon.unit-test.js"
123+
- "/app/dist/node/bindings/crypto/bindings/bindings.unit-test.js"
124+
- "/app/dist/node/bindings/crypto/elliptic-curve.unit-test.js"
125+
74126
runs-on: ubuntu-latest
75127
steps:
76128
- name: Sets NAME

Makefile

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
unit-tests:
2-
docker compose build unit-tests
3-
TESTS="/app/dist/node/lib/util/base58.unit-test.js" docker compose up unit-tests
2+
docker compose build unit-tests-local
3+
TESTS="/app/dist/node/lib/util/base58.unit-test.js" docker compose up unit-tests-local
44

55
test:
66
docker compose build mina-local-network

docker-compose.yml

+40
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,46 @@ services:
5555
# run the test from the mounted source
5656
command: "bash -x /opt/introspector/test/run-all-tests.sh"
5757

58+
unit-tests:
59+
restart: no
60+
image: ghcr.io/meta-introspector/o1js/o1js-perf-recording:latest
61+
privileged: true
62+
environment:
63+
- PROOF_LEVEL=full
64+
- LOG_LEVEL=Debug
65+
- TESTS=${TESTS}
66+
working_dir: /app
67+
# mount the source
68+
volumes:
69+
- type: bind
70+
source: "/home/runner/work/o1js/o1js/"
71+
target: "/opt/introspector/test/"
72+
cap_add:
73+
- SYS_PTRACE
74+
- SYS_ADMIN
75+
# run the test from the mounted source
76+
command: "bash -x /opt/introspector/test/run-all-unit-tests.sh"
77+
78+
unit-tests-local:
79+
restart: no
80+
image: ghcr.io/meta-introspector/o1js/o1js-perf-recording:latest
81+
privileged: true
82+
environment:
83+
- PROOF_LEVEL=full
84+
- LOG_LEVEL=Debug
85+
- TESTS=${TESTS}
86+
working_dir: /app
87+
# mount the source
88+
volumes:
89+
- type: bind
90+
source: "."
91+
target: "/opt/introspector/test/"
92+
cap_add:
93+
- SYS_PTRACE
94+
- SYS_ADMIN
95+
# run the test from the mounted source
96+
command: "bash -x /opt/introspector/test/run-all-unit-tests.sh"
97+
5898

5999
reporting:
60100
restart: no

package.json

-1
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,6 @@
121121

122122
"jest": {
123123
"verbose": true,
124-
"allowJs": true,
125124
"preset": "ts-jest/presets/default-esm",
126125
"testRegex": "(/__tests__/.*|(\\.|/)(test|unit-test))\\.(js?|ts?)$",
127126
"modulePathIgnorePatterns": [

run-all-tests.sh

-7
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,6 @@ cp /opt/introspector/test/*.yml /app/
2020
rm /app/jest.config.js
2121
ls -latr /opt/introspector/test/package.json /app/package.json
2222
md5sum /opt/introspector/test/package.json /app/package.json
23-
24-
## now copy in the files from mounted
25-
#mount
26-
#unit-tests-1 | overlay on / type overlay (rw,relatime,lowerdir=/var/lib/docker/overlay2/l/UIKBC2YXV3UYUZFYRCLH4TJ37M:/var/lib/docker/overlay2/l/7LHLJLNVB27OGHXUO7XEJ73IKX:/var/lib/docker/overlay2/l/YNWPTNT4K5HT7DOLEKYTJ6YREI:/var/lib/docker/overlay2/l/3PHXSMMFQSD23LIQ2COAJGPMYT:/var/lib/docker/overlay2/l/5EZVVUZPIKKCBIHINUVQ6GAKPJ:/var/lib/docker/overlay2/l/A7HWVJNLVJM4XFDQCZ3A445PF6:/var/lib/docker/overlay2/l/V6QGRAJZ5C6PZ2DZ75AOMYCIJC:/var/lib/docker/overlay2/l/NLOXRMXOVMKJNGFVJ3N5OMX3XL:/var/lib/docker/overlay2/l/2DYQLDCOXDJ5YKEZPT62YDVWYT:/var/lib/docker/overlay2/l/SYENOBCMM4GYKG47EKMVGTKFMW:/var/lib/docker/overlay2/l/EWQ26C3LXGQYXFA5CHQ3T2SZEM:/var/lib/docker/overlay2/l/MJBPWKMZDIZHZMCU63VOAERPQE:/var/lib/docker/overlay2/l/2MZPMWLNWBFDLRX47REXX7G62M:/var/lib/docker/overlay2/l/N2OU72N5OJFA2IFJZEG3G5L5MT:/var/lib/docker/overlay2/l/3UAOAEALKH4XSVPE5LAVYNTFIZ:/var/lib/docker/overlay2/l/35UE4N4JPSRQ3ZVYEVHWC35HVY:/var/lib/docker/overlay2/l/SEZOZ3BO3MF5XLWZFL3CY4UGJM:/var/lib/docker/overlay2/l/R2TOJKMVGSKG7OU
27-
#find /opt/introspector
28-
#cp -v "/opt/introspector/test/*.json" /app/
29-
3023
mkdir "${OUTPUT_DIR}"
3124
mkdir "${NODE_OUTPUT_DIR}"
3225
mkdir "${CLINIC_OUTPUT_DIR}"

run-all-unit-tests.sh

+35-23
Original file line numberDiff line numberDiff line change
@@ -1,33 +1,36 @@
11
#!/bin/bash
2-
set +e
2+
set -e
33
set -x
44
export OUTPUT_DIR="/tmp/perf"
5+
rm -rf /tmp/perf/
56
export NODE_OUTPUT_DIR="${OUTPUT_DIR}/node"
67
export CLINIC_OUTPUT_DIR="${OUTPUT_DIR}/clinic"
78
export NO_INSIGHT=true
89
export NODE_OPTIONS="--experimental-vm-modules --perf-basic-prof --enable-source-maps --stack-trace-limit=1000 --report-dir $NODE_OUTPUT_DIR --perf-prof-unwinding-info --perf-prof"
910
export NO_INSIGHT=true
10-
export JESTOPTS=--collectCoverage
11-
export NODEOPT1="--prof --expose-gc"
11+
export NODEOPT1="--test"
12+
# setup perf permissions
13+
echo 2 > /proc/sys/kernel/perf_event_paranoid || echo run as root!
1214

1315

14-
# setup perf permissions
15-
echo 2 > /proc/sys/kernel/perf_event_paranoid
16+
## hacks to update the docker image
17+
ls -latr /opt/introspector/test/package.json /app/package.json
18+
md5sum /opt/introspector/test/package.json /app/package.json
19+
cp /opt/introspector/test/package.json /app/
20+
cp /opt/introspector/test/*.json /app/ || echo ok
21+
cp /opt/introspector/test/*.yaml /app/ || echo ok
22+
cp /opt/introspector/test/*.yml /app/ || echo ok
23+
rm /app/jest.config.js || echo ok
24+
ls -latr /opt/introspector/test/package.json /app/package.json
25+
md5sum /opt/introspector/test/package.json /app/package.json
26+
######
1627

1728
mkdir "${OUTPUT_DIR}"
1829
mkdir "${NODE_OUTPUT_DIR}"
1930
mkdir "${CLINIC_OUTPUT_DIR}"
2031
pnpm install -g clinic
21-
2232
cd /app/
2333
export SOURCE_DIR=/app/src
24-
# limit to only working tests
25-
#TESTS="${SOURCE_DIR}/lib/provable/test/merkle-list.test.ts ${SOURCE_DIR}/lib/provable/test/merkle-tree.test.ts ${SOURCE_DIR}/lib/provable/test/scalar.test.ts ${SOURCE_DIR}/lib/provable/test/merkle-map.test.ts ${SOURCE_DIR}/lib/provable/test/provable.test.ts ${SOURCE_DIR}/lib/provable/test/primitives.test.ts ${SOURCE_DIR}/lib/provable/test/group.test.ts ${SOURCE_DIR}/lib/provable/test/int.test.ts ${SOURCE_DIR}/lib/mina/precondition.test.ts"
26-
#${SOURCE_DIR}/lib/mina/token.test.ts"
27-
# FIXME this all tests is not used because many of them fail.
28-
ALL_TESTS=`ls -b ${SOURCE_DIR}/lib/provable/test/*.test.ts ${SOURCE_DIR}/lib/mina/*.test.ts `
29-
30-
3134
run_test() {
3235
testname=$1
3336
export MULTIPLE="${testname}"
@@ -37,21 +40,30 @@ run_test() {
3740
mkdir -p "${OUTPUT_DIR2}log/"
3841
mkdir -p "${OUTPUT_DIR2}coverage/"
3942

40-
clinic flame -- node $NODEOPT1 ./node_modules/.bin/../jest/bin/jest.js "${JESTOPTS}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-flame.txt" 2>&1
41-
clinic doctor -- node $NODEOPT1 ./node_modules/.bin/../jest/bin/jest.js "${JESTOPTS}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-doctor.txt" 2>&1
42-
clinic bubbleprof -- node $NODEOPT1 ./node_modules/.bin/../jest/bin/jest.js "${JESTOPTS}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-bubble.txt" 2>&1
43-
clinic heapprofiler -- node $NODEOPT1 ./node_modules/.bin/../jest/bin/jest.js "${JESTOPTS}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-heap.txt" 2>&1
44-
perf record -g -o "${testname}.perf.data" -F 999 --call-graph dwarf node $NODEOPT1 ./node_modules/.bin/../jest/bin/jest.js "${JESTOPTS}" "${MULTIPLE}" > "${testname}.reportout.txt" 2>&1
45-
perf archive ${testname}.perf.data
43+
echo plain test
44+
node "${NODEOPT1}" "${MULTIPLE}"
45+
46+
echo run again for capture
47+
node "${NODEOPT1}" "${MULTIPLE}" | tee "${testname}.report_plain.txt" 2>&1
48+
49+
echo run clinic
50+
51+
clinic flame -- node "${NODEOPT1}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-flame.txt" 2>&1
52+
clinic doctor -- node "${NODEOPT1}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-doctor.txt" 2>&1
53+
clinic bubbleprof -- node "${NODEOPT1}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-bubble.txt" 2>&1
54+
clinic heapprofiler --open=false -- node "${NODEOPT1}" "${MULTIPLE}" | tee "${OUTPUT_DIR2}clinic-heap.txt" 2>&1
55+
56+
echo run perf
57+
perf record -g -o "${testname}.perf.data" -F 999 --call-graph dwarf node "${NODEOPT1}" "${MULTIPLE}" > "${testname}.reportout.txt" 2>&1
58+
perf archive "${testname}.perf.data"
4659
perf report -i "${perfdata}" --verbose --stdio --header > "${perfdata}.header.txt" 2>&1
4760
perf report -i "${perfdata}" --verbose --stdio --stats > "${perfdata}.stats.txt" 2>&1
4861
perf script -F +pid -i "${perfdata}" > "${perfdata}.script.txt" 2>&1
4962
perf report --stdio -i "${perfdata}" > "${perfdata}.report.txt" 2>&1
5063
ls -latr jit*.dump
51-
rm -r jit*.dump
52-
53-
mv ${testname}.perf.data "${OUTPUT_DIR2}/perf_data"
54-
mv "${testname}.*.txt" "${OUTPUT_DIR2}/perf_data"
64+
rm -r jit*.dump
65+
mv ${testname}.perf.data "${OUTPUT_DIR2}perf_data"
66+
mv "${testname}.*.txt" "${OUTPUT_DIR2}perf_data"
5567
mv .clinic/* "${OUTPUT_DIR2}clinic/"
5668
mv coverage/* "${OUTPUT_DIR2}coverage/"
5769
mv *.log "${OUTPUT_DIR2}log/"

0 commit comments

Comments
 (0)