Implement engine-bridge v2 plugin masquerade (#10)
This commit is contained in:
97
docs/guides/engine-bridge-deploy.md
Normal file
97
docs/guides/engine-bridge-deploy.md
Normal file
@@ -0,0 +1,97 @@
|
||||
# engine-bridge v2 Deployment Guide
|
||||
|
||||
This guide explains how to deploy `Recordingtest.EgPlugin.dll` into the SUT
|
||||
(`EG-BIM Modeler`) so the recordingtest harness can read live HmEG state over
|
||||
HTTP. Issue #10.
|
||||
|
||||
## 1. Build
|
||||
|
||||
```
|
||||
dotnet publish src/Recordingtest.EgPlugin -c Release
|
||||
```
|
||||
|
||||
Output: `src/Recordingtest.EgPlugin/bin/Release/net8.0-windows/publish/`
|
||||
- `Recordingtest.EgPlugin.dll`
|
||||
- `Recordingtest.EgPlugin.deps.json`
|
||||
- `Recordingtest.EgPlugin.pdb`
|
||||
|
||||
`Editor03.PluginInterface.dll` and `HmEG.dll` are referenced with
|
||||
`<Private>false</Private>`, so the plugin output **does not** include copies
|
||||
of the SUT contracts. The plugin will bind to whatever the SUT loads at
|
||||
runtime.
|
||||
|
||||
## 2. Copy into SUT Plugins folder
|
||||
|
||||
> **Important:** writing into `EG-BIM Modeler/` is normally blocked by the
|
||||
> repo guard hook. Ask the operator before performing the copy step. The
|
||||
> copy is intentionally a manual operation.
|
||||
|
||||
Create a per-plugin folder under `EG-BIM Modeler/Plugins/` and copy the
|
||||
publish output:
|
||||
|
||||
```
|
||||
mkdir "EG-BIM Modeler\Plugins\Recordingtest.EgPlugin"
|
||||
copy src\Recordingtest.EgPlugin\bin\Release\net8.0-windows\publish\Recordingtest.EgPlugin.dll "EG-BIM Modeler\Plugins\Recordingtest.EgPlugin\"
|
||||
copy src\Recordingtest.EgPlugin\bin\Release\net8.0-windows\publish\Recordingtest.EgPlugin.deps.json "EG-BIM Modeler\Plugins\Recordingtest.EgPlugin\"
|
||||
```
|
||||
|
||||
`runtimeconfig.json` is not produced for class library projects; the SUT
|
||||
hosts the CLR. If a future change makes the plugin executable, also copy
|
||||
`Recordingtest.EgPlugin.runtimeconfig.json`.
|
||||
|
||||
## 3. Configure environment (optional)
|
||||
|
||||
The plugin listens on `http://localhost:38080/` by default. Override with:
|
||||
|
||||
```
|
||||
set RECORDINGTEST_BRIDGE_PORT=38090
|
||||
```
|
||||
|
||||
The variable is read once at plugin construction.
|
||||
|
||||
## 4. Launch SUT
|
||||
|
||||
Start `EG-BIM Modeler.exe` normally. The SUT's `HmEG.PluginLoader` walks
|
||||
`Plugins/` at startup and loads any DLL whose type derives from
|
||||
`HmEG.IPlugin` (our plugin inherits `Editor.PluginInterface.EditorPlugin`,
|
||||
which implements `IPlugin`).
|
||||
|
||||
## 5. Verify
|
||||
|
||||
```
|
||||
curl http://localhost:38080/health
|
||||
```
|
||||
|
||||
Expected:
|
||||
|
||||
```
|
||||
{"status":"ok","port":38080}
|
||||
```
|
||||
|
||||
Other endpoints:
|
||||
|
||||
- `GET /selection` -> `{"selected_ids":[...]}`
|
||||
- `GET /camera` -> `{"eye":[..],"target":[..],"up":[..],"fov":n}`
|
||||
- `GET /scene` -> `{"object_count":n,"document_path":"..."}`
|
||||
- `GET /render` -> `{"complete":true|false}`
|
||||
|
||||
The recordingtest client (`HmEgHttpSnapshot`) is the supported consumer.
|
||||
|
||||
## 6. Troubleshooting
|
||||
|
||||
| Symptom | Likely cause | Fix |
|
||||
|---|---|---|
|
||||
| `curl` connection refused | port already in use OR plugin failed to load | check SUT log under `EG-BIM Modeler/hmlogs/`, set a different `RECORDINGTEST_BRIDGE_PORT` |
|
||||
| `Could not load file or assembly Editor03.PluginInterface` | Wrong contract version dropped next to plugin | delete any local copy of `Editor03.PluginInterface.dll` from the plugin folder; the SUT must resolve it from its own folder |
|
||||
| Plugin loaded but `/health` 404 | SUT started a different `Plugins/Recordingtest.EgPlugin/` build | clean the folder and re-copy publish output |
|
||||
| `HttpListener` access denied (Windows) | URL ACL not registered | run SUT elevated once, or `netsh http add urlacl url=http://localhost:38080/ user=Everyone` |
|
||||
|
||||
SUT log location: `EG-BIM Modeler/hmlogs/` (Serilog rolling files).
|
||||
|
||||
## 7. Uninstall
|
||||
|
||||
```
|
||||
rmdir /s /q "EG-BIM Modeler\Plugins\Recordingtest.EgPlugin"
|
||||
```
|
||||
|
||||
No registry, no services, no env vars beyond optional `RECORDINGTEST_BRIDGE_PORT`.
|
||||
Reference in New Issue
Block a user