Commit Graph

89 Commits

Author SHA1 Message Date
5ced80cd85 Add results viewer dashboard page 2025-10-22 13:22:56 +00:00
6802e9ab15 Add test execution dashboard page 2025-10-17 11:13:32 +00:00
da4ce9bb46 Update dashboard to use HAL 2025-10-14 09:39:36 +00:00
84d1af3df7 Fix TempCo integration tests with thread-based async server
Redesign integration test architecture to eliminate async/sync deadlock:
- Run SimulationServer in dedicated background thread with own event loop
- Rewrite TempCo tests as fully synchronous (no @pytest.mark.asyncio)
- Add ServerThread fixture in tests/integration/conftest.py
- Fix Unicode encoding errors (replace deg, mu, +/- with ASCII)
- Optimize temperature points for faster settling (23C, 25C, 27C)

All 3 TempCo integration tests now passing in ~5 minutes total.
2025-10-12 17:59:48 +00:00
dcddb0e9f3 Fix SCPI server response handling and add TEMP:RAMP command
- Revert server to only send responses for non-empty strings
  Per SCPI protocol: successful commands with no output send nothing
- Add TEMP:RAMP command support to thermal chamber simulator
- Fixes test_multiple_commands and test_physics_engine_integration

TCP server integration tests now passing (8/8).
TempCo integration tests still need work due to async/sync mixing.
2025-10-09 15:25:08 +00:00
ae3de8484e WIP: Use thread pool executor for integration tests
Move synchronous test execution to thread pool executor to avoid
blocking the async event loop. This prevents deadlocks when sync
client code tries to communicate with async server in same loop.

Note: Integration tests still experiencing timeouts - needs further
investigation. Unit tests and TCP server communication are working.
2025-10-08 16:16:13 +00:00
e33bddd7a0 Fix TCP server response handling and add pandas-stubs
- Always send a response (even empty) to prevent client timeouts
- Add pandas-stubs to dev dependencies for mypy type checking
- Server now sends newline-terminated response for all commands

This fixes the mypy CI failure. Integration test failures still need
investigation - likely due to event loop blocking when mixing sync/async.
2025-10-01 17:37:36 +00:00
80baab6c94 Fix CI errors: linting, type checking, and tests
- Fix import sorting in test_instruments.py (ruff I001)
- Install pandas-stubs for mypy type checking
- Add garbage collection cleanup to repository test fixtures
- Prevent Windows file locking errors in tempfile cleanup

All CI checks now passing: lint, type check, and all 244 tests.
2025-09-29 18:02:39 +00:00
b8f1352e8c Add instrument CLI commands 2025-09-26 17:56:36 +00:00
37cf0a9c4b Add test execution CLI commands 2025-09-22 13:32:05 +00:00
c859a0964c Release v0.1.0-beta.2
Some checks failed
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Release (push) Has been cancelled
2025-09-22 11:04:43 +00:00
443819abb0 Add TempCo integration tests 2025-09-16 11:20:03 +00:00
9de1e172c4 Implement TempCo characterisation test 2025-09-15 18:32:58 +00:00
b85e9fd777 Add DVT test base class 2025-09-10 16:03:37 +00:00
ea6af3d777 Implement test runner 2025-09-09 19:31:09 +00:00
3d6e744775 Implement limit checker 2025-09-05 15:44:46 +00:00
93bb6ef0e3 Implement test logger 2025-08-31 17:24:16 +00:00
a0ea592fdb Add test framework models 2025-08-28 21:57:03 +00:00
de20237c67 Add data persistence tests 2025-08-25 14:31:30 +00:00
2de1c96ab4 Add Parquet measurement storage 2025-08-20 23:59:48 +00:00
b045165f6e Implement SQLite repository 2025-08-17 20:54:35 +00:00
0835e3785b Add data persistence models 2025-08-17 11:34:53 +00:00
bdc4fbff8f Add configuration tests 2025-08-14 15:59:04 +00:00
fdf8c32395 Add default configuration file 2025-08-11 13:11:17 +00:00
02c40d3e2f Implement configuration loader 2025-08-05 15:12:34 +00:00
a68c03f50d Add configuration Pydantic models 2025-08-01 17:46:03 +00:00
f74d44f097 Release v0.1.0-beta.1
Some checks failed
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Release (push) Has been cancelled
2025-08-01 11:46:21 +00:00
53bbfb823a Add instrument interface tests 2025-07-26 20:12:06 +00:00
552c43d04d Add instrument factory 2025-07-26 19:22:27 +00:00
9feb17ee8d Implement instrument interfaces in drivers 2025-07-24 18:15:50 +00:00
cf24462472 Add instrument interface protocols 2025-07-19 14:08:46 +00:00
5cd722664a Fix linting: use builtin OSError and TimeoutError instead of socket aliases 2025-07-15 11:15:17 +00:00
daf1670987 Add driver unit tests 2025-07-10 15:57:02 +00:00
3a72b9940e Add PSU and DMM drivers 2025-07-08 09:45:40 +00:00
5655ea1559 Add thermal chamber driver 2025-07-04 18:14:37 +00:00
f356cd7b93 Add driver base class 2025-06-30 15:04:21 +00:00
10521ad4da Refactor DUTModel from Protocol to ABC for explicit interface implementation 2025-06-29 17:33:28 +00:00
82a587a720 Refactor Transport from Protocol to ABC for explicit interface implementation 2025-06-25 19:25:42 +00:00
11a100832f Update specification to mandate ABC over Protocol for maximum type safety 2025-06-24 23:59:34 +00:00
4778b275d5 Add transport layer tests 2025-06-19 15:55:38 +00:00
ba72953132 Implement TCP transport 2025-06-16 13:30:35 +00:00
729da8184b Add transport protocol definition 2025-06-14 20:48:34 +00:00
b26943bdf8 Fix linting and type errors for CI
- Use X | None syntax instead of Optional[X] (UP045)
- Sort imports in dashboard app (I001)
- Remove unnecessary UTF-8 encoding argument (UP012)
- Add 'from err' to exception re-raises (B904)
- Remove unused imports in integration tests (F401)
- Fix useless expression in test (B018)
- Cast **1.5 result to float in LDO model (mypy no-any-return)
- Use functools.partial instead of lambda in server (mypy misc)
2025-06-12 22:05:46 +00:00
b4654cc974 Move InstrumentServer to instruments/transport
InstrumentServer is a general-purpose SCPI-over-TCP server that can
host any device implementing the SCPIDevice protocol (process method).
Moving it from simulation/ to instruments/transport/ reflects this:
- simulation package now depends on instruments package
- InstrumentServer can host both virtual and real instrument adapters
- Added SCPIDevice Protocol for type-safe device registration
2025-06-07 15:15:56 +00:00
f472001b57 Release v0.1.0-alpha.3
Some checks failed
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Test (push) Has been cancelled
CI / Release (push) Has been cancelled
2025-06-02 22:56:53 +00:00
e4397a7464 Add TCP server integration tests
Test connection handling, multiple clients, instrument access across
all three virtual instruments, physics engine integration, and error
handling. Update pytest-asyncio config for v1.x compatibility.
2025-05-30 22:59:33 +00:00
fe09ff46bf Add simulation server entry point
Create SimulationServer that wires physics engine to all virtual
instruments and exposes them over TCP. Add 'serve' CLI command to
start the server with configurable ports and physics rate.
2025-05-30 19:31:01 +00:00
eb2df949cf Implement TCP client handling
Add async client connection handling with:
- Multiple concurrent connections per port
- Line-based SCPI protocol (newline terminated)
- start(), stop(), and serve_forever() methods
- Proper connection lifecycle and error handling
2025-05-24 13:48:10 +00:00
0f0672dd03 Add async TCP server foundation
Create InstrumentServer class with asyncio for hosting virtual SCPI
instruments over TCP. Supports registering instruments on specific
ports with port-to-instrument mapping.
2025-05-22 21:32:38 +00:00
9fedc1f851 Add multimeter simulator tests
Comprehensive test coverage for MultimeterSim including MEAS:VOLT:DC,
MEAS:CURR:DC, CONF, and READ commands. Tests both standalone operation
and physics engine integration including temperature-dependent measurements.
2025-05-21 22:55:40 +00:00