Skip to content

Add hardware nPlay/Hub2 clock-sync stress tests + fixture hardening#188

Merged
cboulay merged 1 commit into
masterfrom
nplay-sync-stress-tests
Jun 30, 2026
Merged

Add hardware nPlay/Hub2 clock-sync stress tests + fixture hardening#188
cboulay merged 1 commit into
masterfrom
nplay-sync-stress-tests

Conversation

@cboulay

@cboulay cboulay commented Jun 28, 2026

Copy link
Copy Markdown
Collaborator

C++ integration (tests/integration/):

  • test_nplay_sync_stress.cpp: wrap-segmented host-timeline monotonicity for file-playback nPlay, plus an opt-in nPlay+live-Hub2 cross-device variant (CERELINK_HW_MULTIDEVICE).
  • nplay_fixture.h: unique per-launch lock name + remove the real $TMPDIR/.lock file, fixing the alternating "multiple instances" failures caused by a leftover O_EXCL lock.
  • download test assets from the v9.11.0 release.

pycbsdk (pycbsdk/tests/):

  • test_lsl_sync.py + _lsl_generator.py: stamp every batch with device_to_monotonic and assert a monotonic host timeline on the --device=LSL path, single-nPlay and nPlay+live-Hub2.
  • conftest.py: pylsl-driven LSL nPlayServer fixtures; a collection hook that runs LSL tests only in isolation (one NPLAY shmem per device type); EPERM-tolerant chmod for freshly-downloaded signed binaries; lock-file cleanup; and a guard that fails when the dev-built libcbsdk is older than the C++ sources.
  • pyproject.toml: pylsl/numpy test deps and the lsl marker.

C++ integration (tests/integration/):
- test_nplay_sync_stress.cpp: wrap-segmented host-timeline monotonicity for
  file-playback nPlay, plus an opt-in nPlay+live-Hub2 cross-device variant
  (CERELINK_HW_MULTIDEVICE).
- nplay_fixture.h: unique per-launch lock name + remove the real
  $TMPDIR/<name>.lock file, fixing the alternating "multiple instances"
  failures caused by a leftover O_EXCL lock.
- download test assets from the v9.11.0 release.

pycbsdk (pycbsdk/tests/):
- test_lsl_sync.py + _lsl_generator.py: stamp every batch with
  device_to_monotonic and assert a monotonic host timeline on the
  --device=LSL path, single-nPlay and nPlay+live-Hub2.
- conftest.py: pylsl-driven LSL nPlayServer fixtures; a collection hook that
  runs LSL tests only in isolation (one NPLAY shmem per device type);
  EPERM-tolerant chmod for freshly-downloaded signed binaries; lock-file
  cleanup; and a guard that fails when the dev-built libcbsdk is older than
  the C++ sources.
- pyproject.toml: pylsl/numpy test deps and the `lsl` marker.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@cboulay cboulay merged commit a0833c4 into master Jun 30, 2026
15 of 16 checks passed
@cboulay cboulay deleted the nplay-sync-stress-tests branch June 30, 2026 03:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant