# CI-Eng-Sample A small, invented sample project that anyone with this repo can load into a CI Server test system (R1.03 or R1.05). Skills use its names in their examples, and every skill task is re-tested against it so that no other project is needed. Built and tested on CI Server R1.03.00 (unlicensed test system), 2026-09-30; operator HMI, demo user and live-data feed added 2026-10-06. Reduced load (below) tested on R1.05.00 on a shared server, 2026-10-08: loads with 0 errors (the `@VERSION 1.03.00` headers are accepted). **Every test ends with the system back in its original state:** remove what was loaded, stop processes started for the test, undo certificate trust, delete scratch and temporary files. ## Load and remove Test systems only: loading writes to the CI Server database. CI Server must be running. From an elevated prompt, call the scripts by full path (a bare `load.cmd` may not be found from the current folder): ``` cmd /c "\examples\CI-Eng-Sample\load.cmd" cmd /c "\examples\CI-Eng-Sample\remove.cmd" ``` - Each step prints a summary and writes a `.qlo` listing; check that `Errors` is 0. - **Restart CI Server after loading** (stop, then start the CI Service): a new storage group stores no history until CI Server restarts. - `load.cmd` on a system that already has the project reports `Exists` and changes nothing. - Before `remove.cmd`, log out every `CIENG` session (Operator Interface and web): on 2026-10-06 an open session kept its user's authorization group in use (`DSSP-E-NODEL` … `USER_VAL`), and a retry in that state stopped the `DSSSDA03` process (`DUR-F-BAD_SIZE`) until CI Server was restarted. - `remove.cmd` takes about 1½ minutes: a storage group can only be deleted after its stop time has passed, so the script sets a stop time one minute ahead and waits. Removing the group also deletes its history. ### Testing on a shared server (`shared\`) For a server that other projects use, where CI Server must not be restarted: | Script | Does | |---|---| | `shared\snapshot.ps1 -Out ` | Read-only snapshot: record names (count, hash, `CIENG*` names) of every dataset the sample touches, file lists of `tls\com`, `sup`, `sav`, `lst`, the `pki` folders, running CI Server processes. Run before and after; compare the two files. | | `shared\reduced_load.cmd` | `load.cmd` without the storage groups and history bindings (`03`, `04`: need a restart), the authorization group and user `CIENG` (`08`, `08b`: a password-less user on a shared server) and the layouts/displays (shared `Layouts.xml`) | | `shared\test_r105.ps1` | Starts the Modbus slave mirror only for the test, checks classes, sub-items, Modbus loopback and OPC UA loopback with `itmval`, stops the mirror again | | `shared\reduced_remove.cmd` | Removes exactly what `reduced_load.cmd` loaded | | `shared\clean_dss_tmp.ps1 -Since