Skip to content

Commit

Permalink
ci: add fake ship tests
Browse files Browse the repository at this point in the history
  • Loading branch information
ripperi committed Sep 27, 2024
1 parent fd6bf8c commit 766e498
Showing 1 changed file with 232 additions and 5 deletions.
237 changes: 232 additions & 5 deletions .github/workflows/shared.yml
Original file line number Diff line number Diff line change
Expand Up @@ -115,11 +115,238 @@ jobs:
-Dpace=${{inputs.pace}} \
--summary all
# - name: Run fake ship tests
# if: ${{ matrix.target == 'linux-x86_64' && inputs.fake_tests }}
# run: |
# # See https://github.com/urbit/vere/issues/40.
# bazel build //pkg/vere:test-fake-ship
- name: Run fake ship tests
if: ${{ inputs.fake_tests }}
run: |
set -xeuo pipefail
urbit_binary=${{ github.workspace }}/zig-out/x86_64-linux-musl/urbit
solid_pill=${{ github.workspace }}/solid.pill
curl -LJ -o $solid_pill https://github.com/urbit/urbit/raw/255fb1ca8206072f1d09425f0db61ecfe7ff5b17/bin/solid.pill
curl -LJ -o urbit.tar.gz https://github.com/urbit/urbit/archive/ea8fee3aa0434d4bdf1bf785e5ec346c7ecba7fd.tar.gz
mkdir ./urbit
tar xfz urbit.tar.gz -C ./urbit --strip-components=1
cp -RL ./urbit/tests ./urbit/pkg/arvo/tests
$urbit_binary --lite-boot --daemon --fake bus \
--bootstrap $solid_pill \
--arvo ./urbit/pkg/arvo \
--pier ./pier
cleanup() {
if [ -f ./pier/.vere.lock ]; then
kill $(< ./pier/.vere.lock) || true
fi
set +x
}
trap cleanup EXIT
port=$(grep loopback ./pier/.http.ports | awk -F ' ' '{print $1}')
lensd() {
curl -s \
--data "{\\"source\\":{\\"dojo\\":\\"$1\\"},\\"sink\\":{\\"stdout\\":null}}" \
"http://localhost:$port" | xargs printf %s | sed 's/\\\\n/\\n/g'
}
lensa() {
curl -s \
--data "{\\"source\\":{\\"dojo\\":\\"$2\\"},\\"sink\\":{\\"app\\":\\"$1\\"}}" \
"http://localhost:$port" | xargs printf %s | sed 's/\\\\n/\\n/g'
}
check() {
[ 3 -eq $(lensd 3) ]
}
lensd '+vat %base'
if check && sleep 10 && check; then
echo "boot success"
lensa hood '+hood/exit'
while [ -f ./pier/.vere.lock ]; do
echo "waiting for pier to shut down"
sleep 5
done
else
echo "boot failure"
kill $(< ./pier/.vere.lock) || true
set +x
exit 1
fi
# set +x
ls
ls -a ./pier
# zip -q -r $urbit_binary ./pier
# cp $(execpath :boot-fake-ship) pier.zip
# unzip -qq pier.zip
chmod -R u+rw pier
set -x
$urbit_binary --lite-boot --daemon --gc ./pier 2> urbit-output
port=$(grep loopback ./pier/.http.ports | awk -F ' ' '{print $1}')
lensd() {
curl -s \
--data "{\\"source\\":{\\"dojo\\":\\"$1\\"},\\"sink\\":{\\"stdout\\":null}}" \
"http://localhost:$port" | xargs printf %s | sed 's/\\\\n/\\n/g'
}
lensa() {
curl -s \
--data "{\\"source\\":{\\"dojo\\":\\"$2\\"},\\"sink\\":{\\"app\\":\\"$1\\"}}" \
"http://localhost:$port" | xargs printf %s | sed 's/\\\\n/\\n/g'
}
tail -F urbit-output >&2 &
tailproc=$!
cleanup () {
kill $(cat ./pier/.vere.lock) || true
kill "$tailproc" 2>/dev/null || true
set +x
}
trap cleanup EXIT
# print the arvo version
#
lensd '+vat %base'
# measure initial memory usage
#
lensd '~& ~ ~& %init-mass-start ~'
lensa hood '+hood/mass'
lensd '~& ~ ~& %init-mass-end ~'
# run the unit tests
#
lensd '~& ~ ~& %test-unit-start ~'
lensd '-test %/tests ~'
lensd '~& ~ ~& %test-unit-end ~'
# use the :test app to build all agents, generators, and marks
#
lensa hood '+hood/start %test'
lensd '~& ~ ~& %test-agents-start ~'
lensa test '%agents'
lensd '~& ~ ~& %test-agents-end ~'
lensd '~& ~ ~& %test-generators-start ~'
lensa test '%generators'
lensd '~& ~ ~& %test-generators-end ~'
lensd '~& ~ ~& %test-marks-start ~'
lensa test '%marks'
lensd '~& ~ ~& %test-marks-end ~'
# measure memory usage post tests
#
lensd '~& ~ ~& %test-mass-start ~'
lensa hood '+hood/mass'
lensd '~& ~ ~& %test-mass-end ~'
# defragment the loom
#
lensd '~& ~ ~& %pack-start ~'
lensa hood '+hood/pack'
lensd '~& ~ ~& %pack-end ~'
# reclaim space within arvo
#
lensd '~& ~ ~& %trim-start ~'
lensa hood '+hood/trim'
lensd '~& ~ ~& %trim-end ~'
# measure memory usage pre |meld
#
lensd '~& ~ ~& %trim-mass-start ~'
lensa hood '+hood/mass'
lensd '~& ~ ~& %trim-mass-end ~'
# globally deduplicate
#
lensd '~& ~ ~& %meld-start ~'
lensa hood '+hood/meld'
lensd '~& ~ ~& %meld-end ~'
# measure memory usage post |meld
#
lensd '~& ~ ~& %meld-mass-start ~'
lensa hood '+hood/mass'
lensd '~& ~ ~& %meld-mass-end ~'
lensa hood '+hood/exit'
cleanup
# Collect output
cp urbit-output test-output-unit
cp urbit-output test-output-agents
cp urbit-output test-output-generators
cp urbit-output test-output-marks
# TODO: when re-enabling fake ship tests on macOS, use `sed -i ''`
# instead of `sed -i`.
sed -i '0,/test-unit-start/d' test-output-unit
sed -i '/test-unit-end/,$d' test-output-unit
sed -i '0,/test-agents-start/d' test-output-agents
sed -i '/test-agents-end/,$d' test-output-agents
sed -i '0,/test-generators-start/d' test-output-generators
sed -i '/test-generators-end/,$d' test-output-generators
sed -i '0,/test-marks-start/d' test-output-marks
sed -i '/test-marks-end/,$d' test-output-marks
OUTDIR="$(pwd)/test-fake-ship-output"
mkdir -p $OUTDIR
cp test-output-* $OUTDIR
set +x
hdr () {
echo =====$(sed 's/./=/g' <<< "$1")=====
echo ==== $1 ====
echo =====$(sed 's/./=/g' <<< "$1")=====
}
for f in $(find "$OUTDIR" -type f); do
hdr "$(basename $f)"
cat "$f"
done
fail=0
for f in $(find "$OUTDIR" -type f); do
if egrep "((FAILED|CRASHED)|warn:) " $f >/dev/null; then
if [[ $fail -eq 0 ]]; then
hdr "Test Failures"
fi
echo "ERROR Test failure in $(basename $f)"
((fail++))
fi
done
if [[ $fail -eq 0 ]]; then
hdr "Success"
fi
zip -q -r $@ $OUTDIR
exit "$fail"
#
# UPLOAD TO GCP
Expand Down

0 comments on commit 766e498

Please sign in to comment.