Skip to content

Commit 9e927fc

Browse files
committed
ci: scratch probe for the AVAssetReader decoder fix (not for merge) [probe]
1 parent 45a8269 commit 9e927fc

2 files changed

Lines changed: 745 additions & 0 deletions

File tree

Lines changed: 98 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,98 @@
1+
name: AVF decoder fix probe (scratch)
2+
3+
# Scratch proof for fix/avf-decoder-requests, not for merge. Repeats the AVF
4+
# cases the decoder fix targets, plus the rec-studio across-segments case,
5+
# on base (product diff reverted) and fix, with no flaky reruns.
6+
7+
on:
8+
push:
9+
branches: [ci/fixproof-avf-decoder]
10+
11+
permissions:
12+
contents: read
13+
14+
env:
15+
CARGO_TERM_COLOR: always
16+
CARGO_INCREMENTAL: "0"
17+
CAP_VERIFY_CARGO_PROFILE: ci-verify
18+
CAP_VERIFY_LOCKED: "1"
19+
20+
jobs:
21+
probe:
22+
if: contains(github.event.head_commit.message, '[probe]')
23+
name: probe ${{ matrix.config }} ${{ matrix.runner }}
24+
runs-on: ${{ matrix.runner }}
25+
timeout-minutes: 170
26+
strategy:
27+
fail-fast: false
28+
matrix:
29+
config: [base, fix]
30+
runner: [blacksmith-6vcpu-macos-15, blacksmith-6vcpu-macos-26]
31+
steps:
32+
- uses: actions/checkout@v4
33+
with:
34+
persist-credentials: false
35+
- name: Revert the product diff (base)
36+
if: matrix.config == 'base'
37+
run: |
38+
git apply -R probe/product.patch
39+
git diff --stat
40+
- name: Setup
41+
uses: ./.github/actions/engine-verify-setup
42+
with:
43+
target: aarch64-apple-darwin
44+
tier: full
45+
- name: Build
46+
run: |
47+
scripts/verify/run.sh full --suites export,playback,seek --no-run
48+
cargo test --profile ci-verify --locked -p cap-rendering --lib --no-run
49+
- name: Repeat cases
50+
run: |
51+
set +e
52+
out="$RUNNER_TEMP/probe"
53+
mkdir -p "$out"
54+
summary() {
55+
cat "$1"/*.jsonl 2>/dev/null | python3 -c '
56+
import sys, json
57+
for l in sys.stdin:
58+
r = json.loads(l)
59+
print(" ", r["outcome"], r["case"], sorted(r["failures"]), "|", r["summary"][:200].replace("\n", " "))'
60+
}
61+
run() {
62+
local name="$1" test="$2" case="$3" reps="$4" tier="$5"
63+
for i in $(seq 1 "$reps"); do
64+
export CAP_VERIFY_REPORT_DIR="$out/$name-$i"
65+
local t0=$(date +%s)
66+
CAP_VERIFY_TIER="$tier" CAP_VERIFY_CASE="$case" /usr/bin/time -l cargo nextest run --cargo-profile ci-verify --locked -p cap-verify --test "$test" --no-fail-fast \
67+
> "$out/$name-$i.log" 2>&1
68+
echo "$name rep $i: $(( $(date +%s) - t0 )) s, $(grep -E 'instructions retired' "$out/$name-$i.log" | awk '{print $1}') instructions"
69+
summary "$CAP_VERIFY_REPORT_DIR"
70+
done
71+
}
72+
model() {
73+
for i in $(seq 1 "$1"); do
74+
cargo test --profile ci-verify --locked -p cap-rendering --lib decoder::model::avassetreader -- --nocapture > "$out/model-$i.log" 2>&1
75+
echo "model rep $i: exit $?"
76+
grep -E 'UNEXPECTED|^FAIL|decoder model' "$out/model-$i.log" | cut -c1-220
77+
done
78+
}
79+
run recstudio export 'export/rec-studio/across-segments/*/avf' 8 fast
80+
run transition-export export 'export/basic/transition/*/avf' 5 fast
81+
run transition-playback playback 'playback/basic/transition/seq*/avf' 5 fast
82+
run vfr-holds seek 'seek/vfr-holds/*/avf' 5 fast
83+
run keyframes seek 'seek/seek-*/keyframes60/avf' 5 fast
84+
run storm30 seek 'seek/seek-*/storm30/avf' 3 full
85+
run backward-hold export 'export/backward-hold/backward-jumps/*/avf' 3 fast
86+
run campts export 'export/camera-pts-late/full/mp430/avf' 5 full
87+
run jitter40 export 'export/jitter-camera-40s/full/mp460/avf' 3 fast
88+
run cuts-realtime playback 'playback/basic/cuts-speeds-reorder/realtime30-from25/avf' 5 fast
89+
model 5
90+
true
91+
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
92+
if: always()
93+
with:
94+
name: avf-decoder-probe-${{ matrix.config }}-${{ matrix.runner }}
95+
path: |
96+
${{ runner.temp }}/probe/**/*.jsonl
97+
${{ runner.temp }}/probe/*.log
98+
retention-days: 7

0 commit comments

Comments
 (0)