c64bridge 1.0.7 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/.github/skills/assembly-program/SKILL.md +37 -0
  2. package/.github/skills/basic-program/SKILL.md +40 -0
  3. package/.github/skills/cross-platform-demo/SKILL.md +32 -0
  4. package/.github/skills/drive-manager/SKILL.md +33 -0
  5. package/.github/skills/graphics-demo/SKILL.md +30 -0
  6. package/.github/skills/hello-world/SKILL.md +36 -0
  7. package/.github/skills/memory-debug/SKILL.md +32 -0
  8. package/.github/skills/pr-converge/SKILL.md +33 -0
  9. package/.github/skills/printer-job/SKILL.md +30 -0
  10. package/.github/skills/sid-music/SKILL.md +35 -0
  11. package/.github/skills/software-launch/SKILL.md +31 -0
  12. package/.github/skills/stream-control/SKILL.md +29 -0
  13. package/.github/skills/system-control/SKILL.md +32 -0
  14. package/AGENTS.md +28 -7
  15. package/README.md +69 -14
  16. package/data/assembly/assembly-spec.md +2 -0
  17. package/dist/c64Client.js +238 -60
  18. package/dist/config.js +48 -26
  19. package/dist/device.js +92 -37
  20. package/dist/diagnostics.js +62 -2
  21. package/dist/hostPaths.js +128 -0
  22. package/dist/loggingHttpClient.js +59 -1
  23. package/dist/mcp-server.js +409 -286
  24. package/dist/numericArg.js +55 -0
  25. package/dist/petscii.js +13 -1
  26. package/dist/platform.js +12 -3
  27. package/dist/prompts/registry.js +6 -1
  28. package/dist/tools/access.js +66 -0
  29. package/dist/tools/debug.js +6 -0
  30. package/dist/tools/developer.js +67 -34
  31. package/dist/tools/errors.js +54 -3
  32. package/dist/tools/input.js +23 -6
  33. package/dist/tools/machineControl.js +112 -20
  34. package/dist/tools/memory.js +135 -30
  35. package/dist/tools/meta/artifacts.js +5 -5
  36. package/dist/tools/meta/background.js +216 -54
  37. package/dist/tools/meta/compilation.js +6 -5
  38. package/dist/tools/meta/config.js +15 -6
  39. package/dist/tools/meta/filesystem.js +16 -14
  40. package/dist/tools/meta/graphics.js +48 -20
  41. package/dist/tools/meta/memory.js +45 -19
  42. package/dist/tools/meta/program.js +10 -7
  43. package/dist/tools/meta/screen.js +116 -25
  44. package/dist/tools/pauseGuard.js +23 -0
  45. package/dist/tools/pollValidator.js +53 -8
  46. package/dist/tools/programRunners.js +62 -18
  47. package/dist/tools/registry/batch.js +16 -4
  48. package/dist/tools/registry/config.js +9 -2
  49. package/dist/tools/registry/disk.js +12 -2
  50. package/dist/tools/registry/drive.js +3 -0
  51. package/dist/tools/registry/extract.js +3 -0
  52. package/dist/tools/registry/graphics.js +59 -6
  53. package/dist/tools/registry/index.js +17 -1
  54. package/dist/tools/registry/memory.js +11 -1
  55. package/dist/tools/registry/platform.js +4 -1
  56. package/dist/tools/registry/printer.js +2 -1
  57. package/dist/tools/registry/program.js +5 -1
  58. package/dist/tools/registry/rag.js +1 -0
  59. package/dist/tools/registry/sound.js +12 -1
  60. package/dist/tools/registry/stream.js +2 -1
  61. package/dist/tools/registry/system.js +8 -1
  62. package/dist/tools/schema.js +7 -7
  63. package/dist/tools/streaming.js +34 -4
  64. package/dist/tools/translation/assembler.js +247 -24
  65. package/dist/tools/translation/basicDetokenizer.js +80 -0
  66. package/dist/tools/translation/basicTokenizer.js +8 -3
  67. package/dist/tools/translation/disassembler.js +14 -0
  68. package/dist/tools/types.js +258 -7
  69. package/dist/tools/vice.js +5 -16
  70. package/dist/vicBitmap.js +1 -1
  71. package/dist/vice/mockServer.js +3 -0
  72. package/dist/vice/process.js +19 -0
  73. package/dist/vice/resourcePolicy.js +36 -0
  74. package/dist/vice/viceClient.js +22 -5
  75. package/doc/vice/support-matrix.md +17 -11
  76. package/mcp/schemas/c64_batch.schema.json +2 -1
  77. package/mcp/schemas/c64_config.schema.json +25 -475
  78. package/mcp/schemas/c64_debug.schema.json +3 -602
  79. package/mcp/schemas/c64_disk.schema.json +17 -344
  80. package/mcp/schemas/c64_drive.schema.json +2 -157
  81. package/mcp/schemas/c64_extract.schema.json +10 -364
  82. package/mcp/schemas/c64_graphics.schema.json +19 -426
  83. package/mcp/schemas/c64_input.schema.json +5 -318
  84. package/mcp/schemas/c64_memory.schema.json +23 -491
  85. package/mcp/schemas/c64_printer.schema.json +3 -258
  86. package/mcp/schemas/c64_program.schema.json +16 -491
  87. package/mcp/schemas/c64_rag.schema.json +1 -81
  88. package/mcp/schemas/c64_select_backend.schema.json +2 -36
  89. package/mcp/schemas/c64_sound.schema.json +20 -822
  90. package/mcp/schemas/c64_stream.schema.json +4 -75
  91. package/mcp/schemas/c64_system.schema.json +28 -348
  92. package/mcp/schemas/c64_vice.schema.json +2 -71
  93. package/mcp/server.json +1 -1
  94. package/mcp/tools.json +1983 -6910
  95. package/mcp.json +21 -1
  96. package/package.json +16 -8
  97. package/scripts/mockC64Server.mjs +44 -0
  98. package/scripts/run-coverage.mjs +27 -1
  99. package/scripts/smoke-run.sh +3 -2
  100. package/scripts/start.mjs +23 -1
  101. package/server.json +35 -2
  102. package/dist/.tsbuildinfo +0 -1
  103. package/doc/agent-state-spec.md +0 -243
  104. package/doc/audit/secret-handling.md +0 -61
  105. package/doc/plans/bun/baseline-metrics.md +0 -16
  106. package/doc/plans/bun/migration-checklist.md +0 -55
  107. package/doc/plans/bun/migration.md +0 -83
  108. package/doc/plans/improve-knowledge/notes.md +0 -43
  109. package/doc/plans/improve-knowledge/plan.md +0 -121
  110. package/doc/plans/improve-knowledge/rollout.md +0 -110
  111. package/doc/plans/meta-tools/README.md +0 -110
  112. package/doc/plans/meta-tools/analysis.md +0 -272
  113. package/doc/plans/meta-tools/catalog.md +0 -435
  114. package/doc/plans/meta-tools/notes.md +0 -192
  115. package/doc/plans/meta-tools/rollout.md +0 -368
  116. package/doc/plans/prompts/README.md +0 -96
  117. package/doc/plans/prompts/user-prompt-ideas.md +0 -147
  118. package/doc/plans/tool-consolidation/notes.md +0 -28
  119. package/doc/plans/tool-consolidation/plan.md +0 -169
  120. package/doc/plans/tool-consolidation/rollout.md +0 -104
  121. package/doc/plans/vice-backend-switch/plan.md +0 -486
  122. package/doc/plans/vice-backend-switch-2/plan.md +0 -48
  123. package/doc/plans/vice-support/notes.md +0 -63
  124. package/doc/plans/vice-support/plan.md +0 -88
  125. package/doc/plans/vice-support/rollout.md +0 -99
  126. package/doc/reviews/audit.md +0 -143
  127. package/doc/reviews/hardening/01-fable/prompt-handover.md +0 -125
  128. package/doc/reviews/hardening/01-fable/prompt.md +0 -98
  129. package/doc/reviews/hardening/01-fable/review-prompt.md +0 -468
  130. package/doc/reviews/hardening/01-fable/review.md +0 -1234
  131. package/doc/reviews/vice-support-review.md +0 -185
  132. package/scripts/compare-rest/rest-compare-2025-11-01T00-25-21-830Z.json +0 -2513
@@ -1,2513 +0,0 @@
1
- {
2
- "generatedAt": "2025-11-01T00:25:21.830Z",
3
- "realBase": "http://192.168.1.13",
4
- "mockBase": "http://127.0.0.1:40443",
5
- "operationsDiscovered": 48,
6
- "scenariosExecuted": 22,
7
- "ignoredOperations": [
8
- "POST /v1/runners:modplay",
9
- "PUT /v1/configs:load_from_flash",
10
- "PUT /v1/configs:reset_to_default",
11
- "PUT /v1/configs:save_to_flash",
12
- "PUT /v1/machine:menu_button",
13
- "PUT /v1/machine:poweroff",
14
- "PUT /v1/runners:modplay"
15
- ],
16
- "missingOperations": [
17
- "POST /v1/drives/{drive}:load_rom",
18
- "POST /v1/drives/{drive}:mount",
19
- "POST /v1/runners:run_crt",
20
- "PUT /v1/drives/{drive}:load_rom",
21
- "PUT /v1/drives/{drive}:off",
22
- "PUT /v1/drives/{drive}:on",
23
- "PUT /v1/drives/{drive}:remove",
24
- "PUT /v1/files/{path}:create_d64",
25
- "PUT /v1/files/{path}:create_d71",
26
- "PUT /v1/files/{path}:create_d81",
27
- "PUT /v1/files/{path}:create_dnp"
28
- ],
29
- "results": [
30
- {
31
- "scenarioId": "version-get",
32
- "operations": [
33
- "GET /v1/version"
34
- ],
35
- "requestName": "success",
36
- "request": {
37
- "method": "GET",
38
- "path": "/v1/version"
39
- },
40
- "real": {
41
- "url": "http://192.168.1.13/v1/version",
42
- "status": 200,
43
- "ok": true,
44
- "headers": {
45
- "content-length": "43",
46
- "content-type": "application/json"
47
- },
48
- "bodyType": "json",
49
- "body": {
50
- "version": "0.1",
51
- "errors": []
52
- },
53
- "size": 43,
54
- "latencyMs": 13.731846999999988
55
- },
56
- "mock": {
57
- "url": "http://127.0.0.1:40443/v1/version",
58
- "status": 200,
59
- "ok": true,
60
- "headers": {
61
- "content-length": "34",
62
- "content-type": "application/json"
63
- },
64
- "bodyType": "json",
65
- "body": {
66
- "version": "0.1-mock",
67
- "errors": []
68
- },
69
- "size": 34,
70
- "latencyMs": 1.4793850000000077
71
- },
72
- "diff": [
73
- {
74
- "kind": "headers",
75
- "real": {
76
- "content-length": "43",
77
- "content-type": "application/json"
78
- },
79
- "mock": {
80
- "content-length": "34",
81
- "content-type": "application/json"
82
- }
83
- },
84
- {
85
- "kind": "body",
86
- "real": {
87
- "version": "0.1",
88
- "errors": []
89
- },
90
- "mock": {
91
- "version": "0.1-mock",
92
- "errors": []
93
- }
94
- }
95
- ]
96
- },
97
- {
98
- "scenarioId": "info-get",
99
- "operations": [
100
- "GET /v1/info"
101
- ],
102
- "requestName": "success",
103
- "request": {
104
- "method": "GET",
105
- "path": "/v1/info"
106
- },
107
- "real": {
108
- "url": "http://192.168.1.13/v1/info",
109
- "status": 200,
110
- "ok": true,
111
- "headers": {
112
- "content-length": "211",
113
- "content-type": "application/json"
114
- },
115
- "bodyType": "json",
116
- "body": {
117
- "product": "Ultimate 64 Elite",
118
- "firmware_version": "3.12a",
119
- "fpga_version": "121",
120
- "core_version": "1.45",
121
- "hostname": "Ultimate-64-Elite-F83C87",
122
- "unique_id": "38C1BA",
123
- "errors": []
124
- },
125
- "size": 211,
126
- "latencyMs": 20.069546000000003
127
- },
128
- "mock": {
129
- "url": "http://127.0.0.1:40443/v1/info",
130
- "status": 200,
131
- "ok": true,
132
- "headers": {
133
- "content-length": "86",
134
- "content-type": "application/json"
135
- },
136
- "bodyType": "json",
137
- "body": {
138
- "product": "U64-MOCK",
139
- "firmware_version": "3.12-mock",
140
- "hostname": "mockc64",
141
- "errors": []
142
- },
143
- "size": 86,
144
- "latencyMs": 1.286012999999997
145
- },
146
- "diff": [
147
- {
148
- "kind": "headers",
149
- "real": {
150
- "content-length": "211",
151
- "content-type": "application/json"
152
- },
153
- "mock": {
154
- "content-length": "86",
155
- "content-type": "application/json"
156
- }
157
- },
158
- {
159
- "kind": "body",
160
- "real": {
161
- "product": "Ultimate 64 Elite",
162
- "firmware_version": "3.12a",
163
- "fpga_version": "121",
164
- "core_version": "1.45",
165
- "hostname": "Ultimate-64-Elite-F83C87",
166
- "unique_id": "38C1BA",
167
- "errors": []
168
- },
169
- "mock": {
170
- "product": "U64-MOCK",
171
- "firmware_version": "3.12-mock",
172
- "hostname": "mockc64",
173
- "errors": []
174
- }
175
- }
176
- ]
177
- },
178
- {
179
- "scenarioId": "drives-get",
180
- "operations": [
181
- "GET /v1/drives"
182
- ],
183
- "requestName": "success",
184
- "request": {
185
- "method": "GET",
186
- "path": "/v1/drives"
187
- },
188
- "real": {
189
- "url": "http://192.168.1.13/v1/drives",
190
- "status": 200,
191
- "ok": true,
192
- "headers": {
193
- "content-length": "590",
194
- "content-type": "application/json"
195
- },
196
- "bodyType": "json",
197
- "body": {
198
- "drives": [
199
- {
200
- "a": {
201
- "enabled": true,
202
- "bus_id": 8,
203
- "type": "1541",
204
- "rom": "1541.rom",
205
- "image_file": "",
206
- "image_path": ""
207
- }
208
- },
209
- {
210
- "b": {
211
- "enabled": false,
212
- "bus_id": 9,
213
- "type": "1541",
214
- "rom": "1541.rom",
215
- "image_file": "",
216
- "image_path": ""
217
- }
218
- },
219
- {
220
- "IEC Drive": {
221
- "bus_id": 11,
222
- "enabled": false,
223
- "type": "DOS emulation",
224
- "last_error": "73,U64IEC ULTIMATE DOS V1.1,00,00",
225
- "partitions": [
226
- {
227
- "id": 0,
228
- "path": "/Usb0/"
229
- }
230
- ]
231
- }
232
- },
233
- {
234
- "Printer Emulation": {
235
- "bus_id": 4,
236
- "enabled": false
237
- }
238
- }
239
- ],
240
- "errors": []
241
- },
242
- "size": 590,
243
- "latencyMs": 17.055509
244
- },
245
- "mock": {
246
- "url": "http://127.0.0.1:40443/v1/drives",
247
- "status": 200,
248
- "ok": true,
249
- "headers": {
250
- "content-length": "92",
251
- "content-type": "application/json"
252
- },
253
- "bodyType": "json",
254
- "body": {
255
- "drives": {
256
- "drive8": {
257
- "enabled": false,
258
- "power": "off",
259
- "mode": "1541",
260
- "image": null
261
- }
262
- },
263
- "errors": []
264
- },
265
- "size": 92,
266
- "latencyMs": 1.1615209999999934
267
- },
268
- "diff": [
269
- {
270
- "kind": "headers",
271
- "real": {
272
- "content-length": "590",
273
- "content-type": "application/json"
274
- },
275
- "mock": {
276
- "content-length": "92",
277
- "content-type": "application/json"
278
- }
279
- },
280
- {
281
- "kind": "body",
282
- "real": {
283
- "drives": [
284
- {
285
- "a": {
286
- "enabled": true,
287
- "bus_id": 8,
288
- "type": "1541",
289
- "rom": "1541.rom",
290
- "image_file": "",
291
- "image_path": ""
292
- }
293
- },
294
- {
295
- "b": {
296
- "enabled": false,
297
- "bus_id": 9,
298
- "type": "1541",
299
- "rom": "1541.rom",
300
- "image_file": "",
301
- "image_path": ""
302
- }
303
- },
304
- {
305
- "IEC Drive": {
306
- "bus_id": 11,
307
- "enabled": false,
308
- "type": "DOS emulation",
309
- "last_error": "73,U64IEC ULTIMATE DOS V1.1,00,00",
310
- "partitions": [
311
- {
312
- "id": 0,
313
- "path": "/Usb0/"
314
- }
315
- ]
316
- }
317
- },
318
- {
319
- "Printer Emulation": {
320
- "bus_id": 4,
321
- "enabled": false
322
- }
323
- }
324
- ],
325
- "errors": []
326
- },
327
- "mock": {
328
- "drives": {
329
- "drive8": {
330
- "enabled": false,
331
- "power": "off",
332
- "mode": "1541",
333
- "image": null
334
- }
335
- },
336
- "errors": []
337
- }
338
- }
339
- ]
340
- },
341
- {
342
- "scenarioId": "configs-get",
343
- "operations": [
344
- "GET /v1/configs"
345
- ],
346
- "requestName": "success",
347
- "request": {
348
- "method": "GET",
349
- "path": "/v1/configs"
350
- },
351
- "real": {
352
- "url": "http://192.168.1.13/v1/configs",
353
- "status": 200,
354
- "ok": true,
355
- "headers": {
356
- "content-length": "447",
357
- "content-type": "application/json"
358
- },
359
- "bodyType": "json",
360
- "body": {
361
- "categories": [
362
- "Audio Mixer",
363
- "SID Sockets Configuration",
364
- "UltiSID Configuration",
365
- "SID Addressing",
366
- "U64 Specific Settings",
367
- "C64 and Cartridge Settings",
368
- "Clock Settings",
369
- "Network Settings",
370
- "Ethernet Settings",
371
- "WiFi settings",
372
- "LED Strip Settings",
373
- "Data Streams",
374
- "SoftIEC Drive Settings",
375
- "Printer Settings",
376
- "Modem Settings",
377
- "User Interface Settings",
378
- "Tape Settings",
379
- "Drive A Settings",
380
- "Drive B Settings"
381
- ],
382
- "errors": []
383
- },
384
- "size": 447,
385
- "latencyMs": 16.586332
386
- },
387
- "mock": {
388
- "url": "http://127.0.0.1:40443/v1/configs",
389
- "status": 200,
390
- "ok": true,
391
- "headers": {
392
- "content-length": "121",
393
- "content-type": "application/json"
394
- },
395
- "bodyType": "json",
396
- "body": {
397
- "categories": [
398
- "Audio",
399
- "Video"
400
- ],
401
- "configs": {
402
- "Audio": {
403
- "Volume": "6",
404
- "Balance": "center"
405
- },
406
- "Video": {
407
- "Mode": "PAL"
408
- }
409
- },
410
- "errors": []
411
- },
412
- "size": 121,
413
- "latencyMs": 1.3562689999999975
414
- },
415
- "diff": [
416
- {
417
- "kind": "headers",
418
- "real": {
419
- "content-length": "447",
420
- "content-type": "application/json"
421
- },
422
- "mock": {
423
- "content-length": "121",
424
- "content-type": "application/json"
425
- }
426
- },
427
- {
428
- "kind": "body",
429
- "real": {
430
- "categories": [
431
- "Audio Mixer",
432
- "SID Sockets Configuration",
433
- "UltiSID Configuration",
434
- "SID Addressing",
435
- "U64 Specific Settings",
436
- "C64 and Cartridge Settings",
437
- "Clock Settings",
438
- "Network Settings",
439
- "Ethernet Settings",
440
- "WiFi settings",
441
- "LED Strip Settings",
442
- "Data Streams",
443
- "SoftIEC Drive Settings",
444
- "Printer Settings",
445
- "Modem Settings",
446
- "User Interface Settings",
447
- "Tape Settings",
448
- "Drive A Settings",
449
- "Drive B Settings"
450
- ],
451
- "errors": []
452
- },
453
- "mock": {
454
- "categories": [
455
- "Audio",
456
- "Video"
457
- ],
458
- "configs": {
459
- "Audio": {
460
- "Volume": "6",
461
- "Balance": "center"
462
- },
463
- "Video": {
464
- "Mode": "PAL"
465
- }
466
- },
467
- "errors": []
468
- }
469
- }
470
- ]
471
- },
472
- {
473
- "scenarioId": "configs-category-get",
474
- "operations": [
475
- "GET /v1/configs/{category}"
476
- ],
477
- "requestName": "missing-category",
478
- "request": {
479
- "method": "GET",
480
- "path": "/v1/configs/DOES_NOT_EXIST"
481
- },
482
- "note": "Shared config category not found on both endpoints; testing error path.",
483
- "real": {
484
- "url": "http://192.168.1.13/v1/configs/DOES_NOT_EXIST",
485
- "status": 200,
486
- "ok": true,
487
- "headers": {
488
- "content-length": "22",
489
- "content-type": "application/json"
490
- },
491
- "bodyType": "json",
492
- "body": {
493
- "errors": []
494
- },
495
- "size": 22,
496
- "latencyMs": 10.661611999999991
497
- },
498
- "mock": {
499
- "url": "http://127.0.0.1:40443/v1/configs/DOES_NOT_EXIST",
500
- "status": 200,
501
- "ok": true,
502
- "headers": {
503
- "content-length": "13",
504
- "content-type": "application/json"
505
- },
506
- "bodyType": "json",
507
- "body": {
508
- "errors": []
509
- },
510
- "size": 13,
511
- "latencyMs": 1.4338209999999947
512
- },
513
- "diff": [
514
- {
515
- "kind": "headers",
516
- "real": {
517
- "content-length": "22",
518
- "content-type": "application/json"
519
- },
520
- "mock": {
521
- "content-length": "13",
522
- "content-type": "application/json"
523
- }
524
- }
525
- ]
526
- },
527
- {
528
- "scenarioId": "configs-item-get",
529
- "operations": [
530
- "GET /v1/configs/{category}/{item}"
531
- ],
532
- "requestName": "missing-item",
533
- "request": {
534
- "method": "GET",
535
- "path": "/v1/configs/DOES_NOT_EXIST/NOPE"
536
- },
537
- "real": {
538
- "url": "http://192.168.1.13/v1/configs/DOES_NOT_EXIST/NOPE",
539
- "status": 200,
540
- "ok": true,
541
- "headers": {
542
- "content-length": "22",
543
- "content-type": "application/json"
544
- },
545
- "bodyType": "json",
546
- "body": {
547
- "errors": []
548
- },
549
- "size": 22,
550
- "latencyMs": 9.938006000000001
551
- },
552
- "mock": {
553
- "url": "http://127.0.0.1:40443/v1/configs/DOES_NOT_EXIST/NOPE",
554
- "status": 200,
555
- "ok": true,
556
- "headers": {
557
- "content-length": "13",
558
- "content-type": "application/json"
559
- },
560
- "bodyType": "json",
561
- "body": {
562
- "errors": []
563
- },
564
- "size": 13,
565
- "latencyMs": 1.1919579999999996
566
- },
567
- "diff": [
568
- {
569
- "kind": "headers",
570
- "real": {
571
- "content-length": "22",
572
- "content-type": "application/json"
573
- },
574
- "mock": {
575
- "content-length": "13",
576
- "content-type": "application/json"
577
- }
578
- }
579
- ]
580
- },
581
- {
582
- "scenarioId": "configs-item-put",
583
- "operations": [
584
- "PUT /v1/configs/{category}/{item}"
585
- ],
586
- "requestName": "invalid-category",
587
- "request": {
588
- "method": "PUT",
589
- "path": "/v1/configs/DOES_NOT_EXIST/NOPE",
590
- "query": {
591
- "value": "foo"
592
- }
593
- },
594
- "real": {
595
- "url": "http://192.168.1.13/v1/configs/DOES_NOT_EXIST/NOPE?value=foo",
596
- "status": 404,
597
- "ok": false,
598
- "headers": {
599
- "content-length": "81",
600
- "content-type": "application/json"
601
- },
602
- "bodyType": "json",
603
- "body": {
604
- "errors": [
605
- "There is no config category that matches 'DOES_NOT_EXIST'"
606
- ]
607
- },
608
- "size": 81,
609
- "latencyMs": 10.481756000000019
610
- },
611
- "mock": {
612
- "url": "http://127.0.0.1:40443/v1/configs/DOES_NOT_EXIST/NOPE?value=foo",
613
- "status": 200,
614
- "ok": true,
615
- "headers": {
616
- "content-length": "88",
617
- "content-type": "application/json"
618
- },
619
- "bodyType": "json",
620
- "body": {
621
- "result": "updated",
622
- "category": "DOES_NOT_EXIST",
623
- "item": "NOPE",
624
- "value": "foo",
625
- "errors": []
626
- },
627
- "size": 88,
628
- "latencyMs": 1.0861439999999902
629
- },
630
- "diff": [
631
- {
632
- "kind": "status",
633
- "real": 404,
634
- "mock": 200
635
- },
636
- {
637
- "kind": "headers",
638
- "real": {
639
- "content-length": "81",
640
- "content-type": "application/json"
641
- },
642
- "mock": {
643
- "content-length": "88",
644
- "content-type": "application/json"
645
- }
646
- },
647
- {
648
- "kind": "body",
649
- "real": {
650
- "errors": [
651
- "There is no config category that matches 'DOES_NOT_EXIST'"
652
- ]
653
- },
654
- "mock": {
655
- "result": "updated",
656
- "category": "DOES_NOT_EXIST",
657
- "item": "NOPE",
658
- "value": "foo",
659
- "errors": []
660
- }
661
- }
662
- ]
663
- },
664
- {
665
- "scenarioId": "configs-post",
666
- "operations": [
667
- "POST /v1/configs"
668
- ],
669
- "requestName": "empty-payload",
670
- "request": {
671
- "method": "POST",
672
- "path": "/v1/configs",
673
- "body": {}
674
- },
675
- "real": {
676
- "url": "http://192.168.1.13/v1/configs",
677
- "status": 200,
678
- "ok": true,
679
- "headers": {
680
- "content-length": "22",
681
- "content-type": "application/json"
682
- },
683
- "bodyType": "json",
684
- "body": {
685
- "errors": []
686
- },
687
- "size": 22,
688
- "latencyMs": 31.91837700000002
689
- },
690
- "mock": {
691
- "url": "http://127.0.0.1:40443/v1/configs",
692
- "status": 200,
693
- "ok": true,
694
- "headers": {
695
- "content-length": "53",
696
- "content-type": "application/json"
697
- },
698
- "bodyType": "json",
699
- "body": {
700
- "result": "batch_update",
701
- "categories": [],
702
- "errors": []
703
- },
704
- "size": 53,
705
- "latencyMs": 5.195329000000015
706
- },
707
- "diff": [
708
- {
709
- "kind": "headers",
710
- "real": {
711
- "content-length": "22",
712
- "content-type": "application/json"
713
- },
714
- "mock": {
715
- "content-length": "53",
716
- "content-type": "application/json"
717
- }
718
- },
719
- {
720
- "kind": "body",
721
- "real": {
722
- "errors": []
723
- },
724
- "mock": {
725
- "result": "batch_update",
726
- "categories": [],
727
- "errors": []
728
- }
729
- }
730
- ]
731
- },
732
- {
733
- "scenarioId": "machine-debugreg",
734
- "operations": [
735
- "GET /v1/machine:debugreg",
736
- "PUT /v1/machine:debugreg"
737
- ],
738
- "requestName": "read",
739
- "request": {
740
- "method": "GET",
741
- "path": "/v1/machine:debugreg"
742
- },
743
- "real": {
744
- "url": "http://192.168.1.13/v1/machine:debugreg",
745
- "status": 200,
746
- "ok": true,
747
- "headers": {
748
- "content-length": "40",
749
- "content-type": "application/json"
750
- },
751
- "bodyType": "json",
752
- "body": {
753
- "value": "AB",
754
- "errors": []
755
- },
756
- "size": 40,
757
- "latencyMs": 12.208035999999993
758
- },
759
- "mock": {
760
- "url": "http://127.0.0.1:40443/v1/machine:debugreg",
761
- "status": 200,
762
- "ok": true,
763
- "headers": {
764
- "content-length": "26",
765
- "content-type": "application/json"
766
- },
767
- "bodyType": "json",
768
- "body": {
769
- "value": "00",
770
- "errors": []
771
- },
772
- "size": 26,
773
- "latencyMs": 5.862879000000021
774
- },
775
- "diff": [
776
- {
777
- "kind": "headers",
778
- "real": {
779
- "content-length": "40",
780
- "content-type": "application/json"
781
- },
782
- "mock": {
783
- "content-length": "26",
784
- "content-type": "application/json"
785
- }
786
- },
787
- {
788
- "kind": "body",
789
- "real": {
790
- "value": "AB",
791
- "errors": []
792
- },
793
- "mock": {
794
- "value": "00",
795
- "errors": []
796
- }
797
- }
798
- ]
799
- },
800
- {
801
- "scenarioId": "machine-debugreg",
802
- "operations": [
803
- "GET /v1/machine:debugreg",
804
- "PUT /v1/machine:debugreg"
805
- ],
806
- "requestName": "write-ab",
807
- "request": {
808
- "method": "PUT",
809
- "path": "/v1/machine:debugreg",
810
- "query": {
811
- "value": "AB"
812
- }
813
- },
814
- "real": {
815
- "url": "http://192.168.1.13/v1/machine:debugreg?value=AB",
816
- "status": 200,
817
- "ok": true,
818
- "headers": {
819
- "content-length": "40",
820
- "content-type": "application/json"
821
- },
822
- "bodyType": "json",
823
- "body": {
824
- "value": "AB",
825
- "errors": []
826
- },
827
- "size": 40,
828
- "latencyMs": 12.966503999999986
829
- },
830
- "mock": {
831
- "url": "http://127.0.0.1:40443/v1/machine:debugreg?value=AB",
832
- "status": 200,
833
- "ok": true,
834
- "headers": {
835
- "content-length": "26",
836
- "content-type": "application/json"
837
- },
838
- "bodyType": "json",
839
- "body": {
840
- "value": "AB",
841
- "errors": []
842
- },
843
- "size": 26,
844
- "latencyMs": 3.7596939999999677
845
- },
846
- "diff": [
847
- {
848
- "kind": "headers",
849
- "real": {
850
- "content-length": "40",
851
- "content-type": "application/json"
852
- },
853
- "mock": {
854
- "content-length": "26",
855
- "content-type": "application/json"
856
- }
857
- }
858
- ]
859
- },
860
- {
861
- "scenarioId": "machine-readmem",
862
- "operations": [
863
- "GET /v1/machine:readmem"
864
- ],
865
- "requestName": "read-json",
866
- "request": {
867
- "method": "GET",
868
- "path": "/v1/machine:readmem",
869
- "query": {
870
- "address": "0400",
871
- "length": 16
872
- }
873
- },
874
- "real": {
875
- "url": "http://192.168.1.13/v1/machine:readmem?address=0400&length=16",
876
- "status": 200,
877
- "ok": true,
878
- "headers": {
879
- "content-length": "16",
880
- "content-type": "application/octet-stream"
881
- },
882
- "bodyType": "binary",
883
- "body": "ICAgICAgICAgICAgICAgIA==",
884
- "size": 16,
885
- "latencyMs": 14.354614000000026
886
- },
887
- "mock": {
888
- "url": "http://127.0.0.1:40443/v1/machine:readmem?address=0400&length=16",
889
- "status": 200,
890
- "ok": true,
891
- "headers": {
892
- "content-length": "47",
893
- "content-type": "application/json"
894
- },
895
- "bodyType": "json",
896
- "body": {
897
- "data": "ElJFQURZLg0AAAAAAAAAAA==",
898
- "errors": []
899
- },
900
- "size": 47,
901
- "latencyMs": 3.723443999999972
902
- },
903
- "diff": [
904
- {
905
- "kind": "headers",
906
- "real": {
907
- "content-length": "16",
908
- "content-type": "application/octet-stream"
909
- },
910
- "mock": {
911
- "content-length": "47",
912
- "content-type": "application/json"
913
- }
914
- },
915
- {
916
- "kind": "body-type",
917
- "real": "binary",
918
- "mock": "json"
919
- }
920
- ]
921
- },
922
- {
923
- "scenarioId": "machine-readmem",
924
- "operations": [
925
- "GET /v1/machine:readmem"
926
- ],
927
- "requestName": "invalid-length",
928
- "request": {
929
- "method": "GET",
930
- "path": "/v1/machine:readmem",
931
- "query": {
932
- "address": "ZZZZ",
933
- "length": 0
934
- }
935
- },
936
- "note": "Intentionally invalid address/length to observe error parity.",
937
- "real": {
938
- "url": "http://192.168.1.13/v1/machine:readmem?address=ZZZZ&length=0",
939
- "status": 200,
940
- "ok": true,
941
- "headers": {
942
- "content-length": "0",
943
- "content-type": "application/octet-stream"
944
- },
945
- "bodyType": "binary",
946
- "body": "",
947
- "size": 0,
948
- "latencyMs": 10.394500999999991
949
- },
950
- "mock": {
951
- "url": "http://127.0.0.1:40443/v1/machine:readmem?address=ZZZZ&length=0",
952
- "status": 200,
953
- "ok": true,
954
- "headers": {
955
- "content-length": "23",
956
- "content-type": "application/json"
957
- },
958
- "bodyType": "json",
959
- "body": {
960
- "data": "",
961
- "errors": []
962
- },
963
- "size": 23,
964
- "latencyMs": 1.6215240000000222
965
- },
966
- "diff": [
967
- {
968
- "kind": "headers",
969
- "real": {
970
- "content-length": "0",
971
- "content-type": "application/octet-stream"
972
- },
973
- "mock": {
974
- "content-length": "23",
975
- "content-type": "application/json"
976
- }
977
- },
978
- {
979
- "kind": "body-type",
980
- "real": "binary",
981
- "mock": "json"
982
- }
983
- ]
984
- },
985
- {
986
- "scenarioId": "machine-writemem-put",
987
- "operations": [
988
- "PUT /v1/machine:writemem"
989
- ],
990
- "requestName": "write-hex",
991
- "request": {
992
- "method": "PUT",
993
- "path": "/v1/machine:writemem",
994
- "query": {
995
- "address": "C000",
996
- "data": "1122"
997
- }
998
- },
999
- "real": {
1000
- "url": "http://192.168.1.13/v1/machine:writemem?address=C000&data=1122",
1001
- "status": 200,
1002
- "ok": true,
1003
- "headers": {
1004
- "content-length": "49",
1005
- "content-type": "application/json"
1006
- },
1007
- "bodyType": "json",
1008
- "body": {
1009
- "address": "C000-C001",
1010
- "errors": []
1011
- },
1012
- "size": 49,
1013
- "latencyMs": 10.583773000000008
1014
- },
1015
- "mock": {
1016
- "url": "http://127.0.0.1:40443/v1/machine:writemem?address=C000&data=1122",
1017
- "status": 200,
1018
- "ok": true,
1019
- "headers": {
1020
- "content-length": "57",
1021
- "content-type": "application/json"
1022
- },
1023
- "bodyType": "json",
1024
- "body": {
1025
- "result": "wrote",
1026
- "address": 49152,
1027
- "length": 2,
1028
- "errors": []
1029
- },
1030
- "size": 57,
1031
- "latencyMs": 1.5539150000000177
1032
- },
1033
- "diff": [
1034
- {
1035
- "kind": "headers",
1036
- "real": {
1037
- "content-length": "49",
1038
- "content-type": "application/json"
1039
- },
1040
- "mock": {
1041
- "content-length": "57",
1042
- "content-type": "application/json"
1043
- }
1044
- },
1045
- {
1046
- "kind": "body",
1047
- "real": {
1048
- "address": "C000-C001",
1049
- "errors": []
1050
- },
1051
- "mock": {
1052
- "result": "wrote",
1053
- "address": 49152,
1054
- "length": 2,
1055
- "errors": []
1056
- }
1057
- }
1058
- ]
1059
- },
1060
- {
1061
- "scenarioId": "machine-writemem-put",
1062
- "operations": [
1063
- "PUT /v1/machine:writemem"
1064
- ],
1065
- "requestName": "invalid-data",
1066
- "request": {
1067
- "method": "PUT",
1068
- "path": "/v1/machine:writemem",
1069
- "query": {
1070
- "address": "C000",
1071
- "data": "GG"
1072
- }
1073
- },
1074
- "real": {
1075
- "url": "http://192.168.1.13/v1/machine:writemem?address=C000&data=GG",
1076
- "status": 400,
1077
- "ok": false,
1078
- "headers": {
1079
- "content-length": "55",
1080
- "content-type": "application/json"
1081
- },
1082
- "bodyType": "json",
1083
- "body": {
1084
- "errors": [
1085
- "Invalid char 'G' at position 0."
1086
- ]
1087
- },
1088
- "size": 55,
1089
- "latencyMs": 10.780507999999998
1090
- },
1091
- "mock": {
1092
- "url": "http://127.0.0.1:40443/v1/machine:writemem?address=C000&data=GG",
1093
- "status": 200,
1094
- "ok": true,
1095
- "headers": {
1096
- "content-length": "57",
1097
- "content-type": "application/json"
1098
- },
1099
- "bodyType": "json",
1100
- "body": {
1101
- "result": "wrote",
1102
- "address": 49152,
1103
- "length": 0,
1104
- "errors": []
1105
- },
1106
- "size": 57,
1107
- "latencyMs": 1.9445179999999596
1108
- },
1109
- "diff": [
1110
- {
1111
- "kind": "status",
1112
- "real": 400,
1113
- "mock": 200
1114
- },
1115
- {
1116
- "kind": "headers",
1117
- "real": {
1118
- "content-length": "55",
1119
- "content-type": "application/json"
1120
- },
1121
- "mock": {
1122
- "content-length": "57",
1123
- "content-type": "application/json"
1124
- }
1125
- },
1126
- {
1127
- "kind": "body",
1128
- "real": {
1129
- "errors": [
1130
- "Invalid char 'G' at position 0."
1131
- ]
1132
- },
1133
- "mock": {
1134
- "result": "wrote",
1135
- "address": 49152,
1136
- "length": 0,
1137
- "errors": []
1138
- }
1139
- }
1140
- ]
1141
- },
1142
- {
1143
- "scenarioId": "machine-writemem-post",
1144
- "operations": [
1145
- "POST /v1/machine:writemem"
1146
- ],
1147
- "requestName": "write-binary",
1148
- "request": {
1149
- "method": "POST",
1150
- "path": "/v1/machine:writemem",
1151
- "query": {
1152
- "address": "C100"
1153
- },
1154
- "body": {
1155
- "length": 32
1156
- }
1157
- },
1158
- "real": {
1159
- "url": "http://192.168.1.13/v1/machine:writemem?address=C100",
1160
- "status": 200,
1161
- "ok": true,
1162
- "headers": {
1163
- "content-length": "49",
1164
- "content-type": "application/json"
1165
- },
1166
- "bodyType": "json",
1167
- "body": {
1168
- "address": "C100-C11F",
1169
- "errors": []
1170
- },
1171
- "size": 49,
1172
- "latencyMs": 28.592206000000033
1173
- },
1174
- "mock": {
1175
- "url": "http://127.0.0.1:40443/v1/machine:writemem?address=C100",
1176
- "status": 200,
1177
- "ok": true,
1178
- "headers": {
1179
- "content-length": "58",
1180
- "content-type": "application/json"
1181
- },
1182
- "bodyType": "json",
1183
- "body": {
1184
- "result": "wrote",
1185
- "address": 49408,
1186
- "length": 32,
1187
- "errors": []
1188
- },
1189
- "size": 58,
1190
- "latencyMs": 2.0092899999999645
1191
- },
1192
- "diff": [
1193
- {
1194
- "kind": "headers",
1195
- "real": {
1196
- "content-length": "49",
1197
- "content-type": "application/json"
1198
- },
1199
- "mock": {
1200
- "content-length": "58",
1201
- "content-type": "application/json"
1202
- }
1203
- },
1204
- {
1205
- "kind": "body",
1206
- "real": {
1207
- "address": "C100-C11F",
1208
- "errors": []
1209
- },
1210
- "mock": {
1211
- "result": "wrote",
1212
- "address": 49408,
1213
- "length": 32,
1214
- "errors": []
1215
- }
1216
- }
1217
- ]
1218
- },
1219
- {
1220
- "scenarioId": "machine-reset",
1221
- "operations": [
1222
- "PUT /v1/machine:reset"
1223
- ],
1224
- "requestName": "success",
1225
- "request": {
1226
- "method": "PUT",
1227
- "path": "/v1/machine:reset"
1228
- },
1229
- "real": {
1230
- "url": "http://192.168.1.13/v1/machine:reset",
1231
- "status": 200,
1232
- "ok": true,
1233
- "headers": {
1234
- "content-length": "22",
1235
- "content-type": "application/json"
1236
- },
1237
- "bodyType": "json",
1238
- "body": {
1239
- "errors": []
1240
- },
1241
- "size": 22,
1242
- "latencyMs": 20.462079999999958
1243
- },
1244
- "mock": {
1245
- "url": "http://127.0.0.1:40443/v1/machine:reset",
1246
- "status": 200,
1247
- "ok": true,
1248
- "headers": {
1249
- "content-length": "30",
1250
- "content-type": "application/json"
1251
- },
1252
- "bodyType": "json",
1253
- "body": {
1254
- "result": "reset",
1255
- "errors": []
1256
- },
1257
- "size": 30,
1258
- "latencyMs": 1.2104700000000435
1259
- },
1260
- "diff": [
1261
- {
1262
- "kind": "headers",
1263
- "real": {
1264
- "content-length": "22",
1265
- "content-type": "application/json"
1266
- },
1267
- "mock": {
1268
- "content-length": "30",
1269
- "content-type": "application/json"
1270
- }
1271
- },
1272
- {
1273
- "kind": "body",
1274
- "real": {
1275
- "errors": []
1276
- },
1277
- "mock": {
1278
- "result": "reset",
1279
- "errors": []
1280
- }
1281
- }
1282
- ]
1283
- },
1284
- {
1285
- "scenarioId": "machine-pause-resume",
1286
- "operations": [
1287
- "PUT /v1/machine:pause",
1288
- "PUT /v1/machine:resume"
1289
- ],
1290
- "requestName": "pause",
1291
- "request": {
1292
- "method": "PUT",
1293
- "path": "/v1/machine:pause"
1294
- },
1295
- "real": {
1296
- "url": "http://192.168.1.13/v1/machine:pause",
1297
- "status": 200,
1298
- "ok": true,
1299
- "headers": {
1300
- "content-length": "22",
1301
- "content-type": "application/json"
1302
- },
1303
- "bodyType": "json",
1304
- "body": {
1305
- "errors": []
1306
- },
1307
- "size": 22,
1308
- "latencyMs": 13.30542800000012
1309
- },
1310
- "mock": {
1311
- "url": "http://127.0.0.1:40443/v1/machine:pause",
1312
- "status": 200,
1313
- "ok": true,
1314
- "headers": {
1315
- "content-length": "31",
1316
- "content-type": "application/json"
1317
- },
1318
- "bodyType": "json",
1319
- "body": {
1320
- "result": "paused",
1321
- "errors": []
1322
- },
1323
- "size": 31,
1324
- "latencyMs": 2.7924819999998363
1325
- },
1326
- "diff": [
1327
- {
1328
- "kind": "headers",
1329
- "real": {
1330
- "content-length": "22",
1331
- "content-type": "application/json"
1332
- },
1333
- "mock": {
1334
- "content-length": "31",
1335
- "content-type": "application/json"
1336
- }
1337
- },
1338
- {
1339
- "kind": "body",
1340
- "real": {
1341
- "errors": []
1342
- },
1343
- "mock": {
1344
- "result": "paused",
1345
- "errors": []
1346
- }
1347
- }
1348
- ]
1349
- },
1350
- {
1351
- "scenarioId": "machine-pause-resume",
1352
- "operations": [
1353
- "PUT /v1/machine:pause",
1354
- "PUT /v1/machine:resume"
1355
- ],
1356
- "requestName": "resume",
1357
- "request": {
1358
- "method": "PUT",
1359
- "path": "/v1/machine:resume"
1360
- },
1361
- "real": {
1362
- "url": "http://192.168.1.13/v1/machine:resume",
1363
- "status": 200,
1364
- "ok": true,
1365
- "headers": {
1366
- "content-length": "22",
1367
- "content-type": "application/json"
1368
- },
1369
- "bodyType": "json",
1370
- "body": {
1371
- "errors": []
1372
- },
1373
- "size": 22,
1374
- "latencyMs": 11.664884999999913
1375
- },
1376
- "mock": {
1377
- "url": "http://127.0.0.1:40443/v1/machine:resume",
1378
- "status": 200,
1379
- "ok": true,
1380
- "headers": {
1381
- "content-length": "32",
1382
- "content-type": "application/json"
1383
- },
1384
- "bodyType": "json",
1385
- "body": {
1386
- "result": "resumed",
1387
- "errors": []
1388
- },
1389
- "size": 32,
1390
- "latencyMs": 1.9521500000000742
1391
- },
1392
- "diff": [
1393
- {
1394
- "kind": "headers",
1395
- "real": {
1396
- "content-length": "22",
1397
- "content-type": "application/json"
1398
- },
1399
- "mock": {
1400
- "content-length": "32",
1401
- "content-type": "application/json"
1402
- }
1403
- },
1404
- {
1405
- "kind": "body",
1406
- "real": {
1407
- "errors": []
1408
- },
1409
- "mock": {
1410
- "result": "resumed",
1411
- "errors": []
1412
- }
1413
- }
1414
- ]
1415
- },
1416
- {
1417
- "scenarioId": "runners-run_prg",
1418
- "operations": [
1419
- "POST /v1/runners:run_prg",
1420
- "PUT /v1/runners:run_prg"
1421
- ],
1422
- "requestName": "run-basic-prg",
1423
- "request": {
1424
- "method": "POST",
1425
- "path": "/v1/runners:run_prg",
1426
- "body": {
1427
- "length": 24
1428
- }
1429
- },
1430
- "real": {
1431
- "url": "http://192.168.1.13/v1/runners:run_prg",
1432
- "status": 200,
1433
- "ok": true,
1434
- "headers": {
1435
- "content-length": "22",
1436
- "content-type": "application/json"
1437
- },
1438
- "bodyType": "json",
1439
- "body": {
1440
- "errors": []
1441
- },
1442
- "size": 22,
1443
- "latencyMs": 1779.557843
1444
- },
1445
- "mock": {
1446
- "url": "http://127.0.0.1:40443/v1/runners:run_prg",
1447
- "status": 200,
1448
- "ok": true,
1449
- "headers": {
1450
- "content-length": "38",
1451
- "content-type": "application/json"
1452
- },
1453
- "bodyType": "json",
1454
- "body": {
1455
- "result": "ok",
1456
- "bytes": 24,
1457
- "errors": []
1458
- },
1459
- "size": 38,
1460
- "latencyMs": 9.802785000000085
1461
- },
1462
- "diff": [
1463
- {
1464
- "kind": "headers",
1465
- "real": {
1466
- "content-length": "22",
1467
- "content-type": "application/json"
1468
- },
1469
- "mock": {
1470
- "content-length": "38",
1471
- "content-type": "application/json"
1472
- }
1473
- },
1474
- {
1475
- "kind": "body",
1476
- "real": {
1477
- "errors": []
1478
- },
1479
- "mock": {
1480
- "result": "ok",
1481
- "bytes": 24,
1482
- "errors": []
1483
- }
1484
- }
1485
- ]
1486
- },
1487
- {
1488
- "scenarioId": "runners-run_prg",
1489
- "operations": [
1490
- "POST /v1/runners:run_prg",
1491
- "PUT /v1/runners:run_prg"
1492
- ],
1493
- "requestName": "missing-file",
1494
- "request": {
1495
- "method": "PUT",
1496
- "path": "/v1/runners:run_prg",
1497
- "query": {
1498
- "file": "//USB0/does-not-exist.prg"
1499
- }
1500
- },
1501
- "real": {
1502
- "url": "http://192.168.1.13/v1/runners:run_prg?file=%2F%2FUSB0%2Fdoes-not-exist.prg",
1503
- "status": 404,
1504
- "ok": false,
1505
- "headers": {
1506
- "content-length": "40",
1507
- "content-type": "application/json"
1508
- },
1509
- "bodyType": "json",
1510
- "body": {
1511
- "errors": [
1512
- "Cannot open file"
1513
- ]
1514
- },
1515
- "size": 40,
1516
- "latencyMs": 13.30945900000006
1517
- },
1518
- "mock": {
1519
- "url": "http://127.0.0.1:40443/v1/runners:run_prg?file=%2F%2FUSB0%2Fdoes-not-exist.prg",
1520
- "status": 404,
1521
- "ok": false,
1522
- "headers": {
1523
- "content-length": "0"
1524
- },
1525
- "bodyType": "binary",
1526
- "body": "",
1527
- "size": 0,
1528
- "latencyMs": 2.866899000000103
1529
- },
1530
- "diff": [
1531
- {
1532
- "kind": "headers",
1533
- "real": {
1534
- "content-length": "40",
1535
- "content-type": "application/json"
1536
- },
1537
- "mock": {
1538
- "content-length": "0"
1539
- }
1540
- },
1541
- {
1542
- "kind": "body-type",
1543
- "real": "json",
1544
- "mock": "binary"
1545
- }
1546
- ]
1547
- },
1548
- {
1549
- "scenarioId": "runners-load_prg",
1550
- "operations": [
1551
- "POST /v1/runners:load_prg",
1552
- "PUT /v1/runners:load_prg"
1553
- ],
1554
- "requestName": "missing-file",
1555
- "request": {
1556
- "method": "PUT",
1557
- "path": "/v1/runners:load_prg",
1558
- "query": {
1559
- "file": "//USB0/does-not-exist.prg"
1560
- }
1561
- },
1562
- "real": {
1563
- "url": "http://192.168.1.13/v1/runners:load_prg?file=%2F%2FUSB0%2Fdoes-not-exist.prg",
1564
- "status": 404,
1565
- "ok": false,
1566
- "headers": {
1567
- "content-length": "40",
1568
- "content-type": "application/json"
1569
- },
1570
- "bodyType": "json",
1571
- "body": {
1572
- "errors": [
1573
- "Cannot open file"
1574
- ]
1575
- },
1576
- "size": 40,
1577
- "latencyMs": 29.19256600000017
1578
- },
1579
- "mock": {
1580
- "url": "http://127.0.0.1:40443/v1/runners:load_prg?file=%2F%2FUSB0%2Fdoes-not-exist.prg",
1581
- "status": 404,
1582
- "ok": false,
1583
- "headers": {
1584
- "content-length": "0"
1585
- },
1586
- "bodyType": "binary",
1587
- "body": "",
1588
- "size": 0,
1589
- "latencyMs": 3.289795999999569
1590
- },
1591
- "diff": [
1592
- {
1593
- "kind": "headers",
1594
- "real": {
1595
- "content-length": "40",
1596
- "content-type": "application/json"
1597
- },
1598
- "mock": {
1599
- "content-length": "0"
1600
- }
1601
- },
1602
- {
1603
- "kind": "body-type",
1604
- "real": "json",
1605
- "mock": "binary"
1606
- }
1607
- ]
1608
- },
1609
- {
1610
- "scenarioId": "runners-load_prg",
1611
- "operations": [
1612
- "POST /v1/runners:load_prg",
1613
- "PUT /v1/runners:load_prg"
1614
- ],
1615
- "requestName": "upload-basic",
1616
- "request": {
1617
- "method": "POST",
1618
- "path": "/v1/runners:load_prg",
1619
- "body": {
1620
- "length": 24
1621
- }
1622
- },
1623
- "note": "Uploads a small BASIC program without running it.",
1624
- "real": {
1625
- "url": "http://192.168.1.13/v1/runners:load_prg",
1626
- "status": 200,
1627
- "ok": true,
1628
- "headers": {
1629
- "content-length": "22",
1630
- "content-type": "application/json"
1631
- },
1632
- "bodyType": "json",
1633
- "body": {
1634
- "errors": []
1635
- },
1636
- "size": 22,
1637
- "latencyMs": 413.32102299999997
1638
- },
1639
- "mock": {
1640
- "url": "http://127.0.0.1:40443/v1/runners:load_prg",
1641
- "status": 404,
1642
- "ok": false,
1643
- "headers": {
1644
- "content-length": "0"
1645
- },
1646
- "bodyType": "binary",
1647
- "body": "",
1648
- "size": 0,
1649
- "latencyMs": 4.091777000000093
1650
- },
1651
- "diff": [
1652
- {
1653
- "kind": "status",
1654
- "real": 200,
1655
- "mock": 404
1656
- },
1657
- {
1658
- "kind": "headers",
1659
- "real": {
1660
- "content-length": "22",
1661
- "content-type": "application/json"
1662
- },
1663
- "mock": {
1664
- "content-length": "0"
1665
- }
1666
- },
1667
- {
1668
- "kind": "body-type",
1669
- "real": "json",
1670
- "mock": "binary"
1671
- }
1672
- ]
1673
- },
1674
- {
1675
- "scenarioId": "runners-run_crt",
1676
- "operations": [
1677
- "PUT /v1/runners:run_crt"
1678
- ],
1679
- "requestName": "missing-crt",
1680
- "request": {
1681
- "method": "PUT",
1682
- "path": "/v1/runners:run_crt",
1683
- "query": {
1684
- "file": "//USB0/does-not-exist.crt"
1685
- }
1686
- },
1687
- "real": {
1688
- "url": "http://192.168.1.13/v1/runners:run_crt?file=%2F%2FUSB0%2Fdoes-not-exist.crt",
1689
- "status": 404,
1690
- "ok": false,
1691
- "headers": {
1692
- "content-length": "40",
1693
- "content-type": "application/json"
1694
- },
1695
- "bodyType": "json",
1696
- "body": {
1697
- "errors": [
1698
- "Cannot open file"
1699
- ]
1700
- },
1701
- "size": 40,
1702
- "latencyMs": 11.658648999999969
1703
- },
1704
- "mock": {
1705
- "url": "http://127.0.0.1:40443/v1/runners:run_crt?file=%2F%2FUSB0%2Fdoes-not-exist.crt",
1706
- "status": 404,
1707
- "ok": false,
1708
- "headers": {
1709
- "content-length": "0"
1710
- },
1711
- "bodyType": "binary",
1712
- "body": "",
1713
- "size": 0,
1714
- "latencyMs": 0.6082959999994273
1715
- },
1716
- "diff": [
1717
- {
1718
- "kind": "headers",
1719
- "real": {
1720
- "content-length": "40",
1721
- "content-type": "application/json"
1722
- },
1723
- "mock": {
1724
- "content-length": "0"
1725
- }
1726
- },
1727
- {
1728
- "kind": "body-type",
1729
- "real": "json",
1730
- "mock": "binary"
1731
- }
1732
- ]
1733
- },
1734
- {
1735
- "scenarioId": "runners-sidplay",
1736
- "operations": [
1737
- "PUT /v1/runners:sidplay",
1738
- "POST /v1/runners:sidplay"
1739
- ],
1740
- "requestName": "missing-sid-file",
1741
- "request": {
1742
- "method": "PUT",
1743
- "path": "/v1/runners:sidplay",
1744
- "query": {
1745
- "file": "//USB0/does-not-exist.sid",
1746
- "songnr": 0
1747
- }
1748
- },
1749
- "real": {
1750
- "url": "http://192.168.1.13/v1/runners:sidplay?file=%2F%2FUSB0%2Fdoes-not-exist.sid&songnr=0",
1751
- "status": 404,
1752
- "ok": false,
1753
- "headers": {
1754
- "content-length": "40",
1755
- "content-type": "application/json"
1756
- },
1757
- "bodyType": "json",
1758
- "body": {
1759
- "errors": [
1760
- "Cannot open file"
1761
- ]
1762
- },
1763
- "size": 40,
1764
- "latencyMs": 28.587531000000126
1765
- },
1766
- "mock": {
1767
- "url": "http://127.0.0.1:40443/v1/runners:sidplay?file=%2F%2FUSB0%2Fdoes-not-exist.sid&songnr=0",
1768
- "status": 200,
1769
- "ok": true,
1770
- "headers": {
1771
- "content-length": "78",
1772
- "content-type": "application/json"
1773
- },
1774
- "bodyType": "json",
1775
- "body": {
1776
- "result": "sidplay",
1777
- "file": "//USB0/does-not-exist.sid",
1778
- "songnr": 0,
1779
- "errors": []
1780
- },
1781
- "size": 78,
1782
- "latencyMs": 1.4851129999997283
1783
- },
1784
- "diff": [
1785
- {
1786
- "kind": "status",
1787
- "real": 404,
1788
- "mock": 200
1789
- },
1790
- {
1791
- "kind": "headers",
1792
- "real": {
1793
- "content-length": "40",
1794
- "content-type": "application/json"
1795
- },
1796
- "mock": {
1797
- "content-length": "78",
1798
- "content-type": "application/json"
1799
- }
1800
- },
1801
- {
1802
- "kind": "body",
1803
- "real": {
1804
- "errors": [
1805
- "Cannot open file"
1806
- ]
1807
- },
1808
- "mock": {
1809
- "result": "sidplay",
1810
- "file": "//USB0/does-not-exist.sid",
1811
- "songnr": 0,
1812
- "errors": []
1813
- }
1814
- }
1815
- ]
1816
- },
1817
- {
1818
- "scenarioId": "runners-sidplay",
1819
- "operations": [
1820
- "PUT /v1/runners:sidplay",
1821
- "POST /v1/runners:sidplay"
1822
- ],
1823
- "requestName": "upload-invalid-sid",
1824
- "request": {
1825
- "method": "POST",
1826
- "path": "/v1/runners:sidplay",
1827
- "query": {
1828
- "songnr": 0
1829
- },
1830
- "body": {
1831
- "length": 7
1832
- }
1833
- },
1834
- "real": {
1835
- "url": "http://192.168.1.13/v1/runners:sidplay?songnr=0",
1836
- "status": 415,
1837
- "ok": false,
1838
- "headers": {
1839
- "content-length": "53",
1840
- "content-type": "application/json"
1841
- },
1842
- "bodyType": "json",
1843
- "body": {
1844
- "errors": [
1845
- "Error detected in file format"
1846
- ]
1847
- },
1848
- "size": 53,
1849
- "latencyMs": 30.858664999999746
1850
- },
1851
- "mock": {
1852
- "url": "http://127.0.0.1:40443/v1/runners:sidplay?songnr=0",
1853
- "status": 200,
1854
- "ok": true,
1855
- "headers": {
1856
- "content-length": "64",
1857
- "content-type": "application/json"
1858
- },
1859
- "bodyType": "json",
1860
- "body": {
1861
- "result": "sidplay_attachment",
1862
- "bytes": 7,
1863
- "songnr": 0,
1864
- "errors": []
1865
- },
1866
- "size": 64,
1867
- "latencyMs": 1.2729319999998552
1868
- },
1869
- "diff": [
1870
- {
1871
- "kind": "status",
1872
- "real": 415,
1873
- "mock": 200
1874
- },
1875
- {
1876
- "kind": "headers",
1877
- "real": {
1878
- "content-length": "53",
1879
- "content-type": "application/json"
1880
- },
1881
- "mock": {
1882
- "content-length": "64",
1883
- "content-type": "application/json"
1884
- }
1885
- },
1886
- {
1887
- "kind": "body",
1888
- "real": {
1889
- "errors": [
1890
- "Error detected in file format"
1891
- ]
1892
- },
1893
- "mock": {
1894
- "result": "sidplay_attachment",
1895
- "bytes": 7,
1896
- "songnr": 0,
1897
- "errors": []
1898
- }
1899
- }
1900
- ]
1901
- },
1902
- {
1903
- "scenarioId": "streams-start-stop",
1904
- "operations": [
1905
- "PUT /v1/streams/{stream}:start",
1906
- "PUT /v1/streams/{stream}:stop"
1907
- ],
1908
- "requestName": "start-video-invalid-ip",
1909
- "request": {
1910
- "method": "PUT",
1911
- "path": "/v1/streams/video:start",
1912
- "query": {
1913
- "ip": "999.999.999.999"
1914
- }
1915
- },
1916
- "real": {
1917
- "url": "http://192.168.1.13/v1/streams/video:start?ip=999.999.999.999",
1918
- "status": 404,
1919
- "ok": false,
1920
- "headers": {
1921
- "content-length": "50",
1922
- "content-type": "application/json"
1923
- },
1924
- "bodyType": "json",
1925
- "body": {
1926
- "errors": [
1927
- "Network Host Resolve Error"
1928
- ]
1929
- },
1930
- "size": 50,
1931
- "latencyMs": 51.22103199999947
1932
- },
1933
- "mock": {
1934
- "url": "http://127.0.0.1:40443/v1/streams/video:start?ip=999.999.999.999",
1935
- "status": 200,
1936
- "ok": true,
1937
- "headers": {
1938
- "content-length": "76",
1939
- "content-type": "application/json"
1940
- },
1941
- "bodyType": "json",
1942
- "body": {
1943
- "result": "started",
1944
- "stream": "video",
1945
- "target": "999.999.999.999",
1946
- "errors": []
1947
- },
1948
- "size": 76,
1949
- "latencyMs": 5.435134999999718
1950
- },
1951
- "diff": [
1952
- {
1953
- "kind": "status",
1954
- "real": 404,
1955
- "mock": 200
1956
- },
1957
- {
1958
- "kind": "headers",
1959
- "real": {
1960
- "content-length": "50",
1961
- "content-type": "application/json"
1962
- },
1963
- "mock": {
1964
- "content-length": "76",
1965
- "content-type": "application/json"
1966
- }
1967
- },
1968
- {
1969
- "kind": "body",
1970
- "real": {
1971
- "errors": [
1972
- "Network Host Resolve Error"
1973
- ]
1974
- },
1975
- "mock": {
1976
- "result": "started",
1977
- "stream": "video",
1978
- "target": "999.999.999.999",
1979
- "errors": []
1980
- }
1981
- }
1982
- ]
1983
- },
1984
- {
1985
- "scenarioId": "streams-start-stop",
1986
- "operations": [
1987
- "PUT /v1/streams/{stream}:start",
1988
- "PUT /v1/streams/{stream}:stop"
1989
- ],
1990
- "requestName": "stop-video",
1991
- "request": {
1992
- "method": "PUT",
1993
- "path": "/v1/streams/video:stop"
1994
- },
1995
- "real": {
1996
- "url": "http://192.168.1.13/v1/streams/video:stop",
1997
- "status": 200,
1998
- "ok": true,
1999
- "headers": {
2000
- "content-length": "22",
2001
- "content-type": "application/json"
2002
- },
2003
- "bodyType": "json",
2004
- "body": {
2005
- "errors": []
2006
- },
2007
- "size": 22,
2008
- "latencyMs": 26.100201000000197
2009
- },
2010
- "mock": {
2011
- "url": "http://127.0.0.1:40443/v1/streams/video:stop",
2012
- "status": 200,
2013
- "ok": true,
2014
- "headers": {
2015
- "content-length": "49",
2016
- "content-type": "application/json"
2017
- },
2018
- "bodyType": "json",
2019
- "body": {
2020
- "result": "stopped",
2021
- "stream": "video",
2022
- "errors": []
2023
- },
2024
- "size": 49,
2025
- "latencyMs": 4.120307000000139
2026
- },
2027
- "diff": [
2028
- {
2029
- "kind": "headers",
2030
- "real": {
2031
- "content-length": "22",
2032
- "content-type": "application/json"
2033
- },
2034
- "mock": {
2035
- "content-length": "49",
2036
- "content-type": "application/json"
2037
- }
2038
- },
2039
- {
2040
- "kind": "body",
2041
- "real": {
2042
- "errors": []
2043
- },
2044
- "mock": {
2045
- "result": "stopped",
2046
- "stream": "video",
2047
- "errors": []
2048
- }
2049
- }
2050
- ]
2051
- },
2052
- {
2053
- "scenarioId": "drives-operations",
2054
- "operations": [
2055
- "PUT /v1/drives/{drive}:mount",
2056
- "PUT /v1/drives/{drive}:reset",
2057
- "PUT /v1/drives/{drive}:set_mode"
2058
- ],
2059
- "requestName": "mount-missing-image",
2060
- "request": {
2061
- "method": "PUT",
2062
- "path": "/v1/drives/drive8:mount",
2063
- "query": {
2064
- "image": "//USB0/does-not-exist.d64"
2065
- }
2066
- },
2067
- "real": {
2068
- "url": "http://192.168.1.13/v1/drives/drive8:mount?image=%2F%2FUSB0%2Fdoes-not-exist.d64",
2069
- "status": 400,
2070
- "ok": false,
2071
- "headers": {
2072
- "content-length": "46",
2073
- "content-type": "application/json"
2074
- },
2075
- "bodyType": "json",
2076
- "body": {
2077
- "errors": [
2078
- "Invalid Drive 'drive8'"
2079
- ]
2080
- },
2081
- "size": 46,
2082
- "latencyMs": 13.061549000000014
2083
- },
2084
- "mock": {
2085
- "url": "http://127.0.0.1:40443/v1/drives/drive8:mount?image=%2F%2FUSB0%2Fdoes-not-exist.d64",
2086
- "status": 200,
2087
- "ok": true,
2088
- "headers": {
2089
- "content-length": "109",
2090
- "content-type": "application/json"
2091
- },
2092
- "bodyType": "json",
2093
- "body": {
2094
- "result": "mounted",
2095
- "drive": "drive8",
2096
- "image": "//USB0/does-not-exist.d64",
2097
- "type": null,
2098
- "mode": null,
2099
- "errors": []
2100
- },
2101
- "size": 109,
2102
- "latencyMs": 4.411107000000811
2103
- },
2104
- "diff": [
2105
- {
2106
- "kind": "status",
2107
- "real": 400,
2108
- "mock": 200
2109
- },
2110
- {
2111
- "kind": "headers",
2112
- "real": {
2113
- "content-length": "46",
2114
- "content-type": "application/json"
2115
- },
2116
- "mock": {
2117
- "content-length": "109",
2118
- "content-type": "application/json"
2119
- }
2120
- },
2121
- {
2122
- "kind": "body",
2123
- "real": {
2124
- "errors": [
2125
- "Invalid Drive 'drive8'"
2126
- ]
2127
- },
2128
- "mock": {
2129
- "result": "mounted",
2130
- "drive": "drive8",
2131
- "image": "//USB0/does-not-exist.d64",
2132
- "type": null,
2133
- "mode": null,
2134
- "errors": []
2135
- }
2136
- }
2137
- ]
2138
- },
2139
- {
2140
- "scenarioId": "drives-operations",
2141
- "operations": [
2142
- "PUT /v1/drives/{drive}:mount",
2143
- "PUT /v1/drives/{drive}:reset",
2144
- "PUT /v1/drives/{drive}:set_mode"
2145
- ],
2146
- "requestName": "reset-drive",
2147
- "request": {
2148
- "method": "PUT",
2149
- "path": "/v1/drives/drive8:reset"
2150
- },
2151
- "real": {
2152
- "url": "http://192.168.1.13/v1/drives/drive8:reset",
2153
- "status": 400,
2154
- "ok": false,
2155
- "headers": {
2156
- "content-length": "46",
2157
- "content-type": "application/json"
2158
- },
2159
- "bodyType": "json",
2160
- "body": {
2161
- "errors": [
2162
- "Invalid Drive 'drive8'"
2163
- ]
2164
- },
2165
- "size": 46,
2166
- "latencyMs": 10.906342000000222
2167
- },
2168
- "mock": {
2169
- "url": "http://127.0.0.1:40443/v1/drives/drive8:reset",
2170
- "status": 200,
2171
- "ok": true,
2172
- "headers": {
2173
- "content-length": "57",
2174
- "content-type": "application/json"
2175
- },
2176
- "bodyType": "json",
2177
- "body": {
2178
- "result": "reset",
2179
- "drive": "drive8",
2180
- "count": 1,
2181
- "errors": []
2182
- },
2183
- "size": 57,
2184
- "latencyMs": 2.5490149999995992
2185
- },
2186
- "diff": [
2187
- {
2188
- "kind": "status",
2189
- "real": 400,
2190
- "mock": 200
2191
- },
2192
- {
2193
- "kind": "headers",
2194
- "real": {
2195
- "content-length": "46",
2196
- "content-type": "application/json"
2197
- },
2198
- "mock": {
2199
- "content-length": "57",
2200
- "content-type": "application/json"
2201
- }
2202
- },
2203
- {
2204
- "kind": "body",
2205
- "real": {
2206
- "errors": [
2207
- "Invalid Drive 'drive8'"
2208
- ]
2209
- },
2210
- "mock": {
2211
- "result": "reset",
2212
- "drive": "drive8",
2213
- "count": 1,
2214
- "errors": []
2215
- }
2216
- }
2217
- ]
2218
- },
2219
- {
2220
- "scenarioId": "drives-operations",
2221
- "operations": [
2222
- "PUT /v1/drives/{drive}:mount",
2223
- "PUT /v1/drives/{drive}:reset",
2224
- "PUT /v1/drives/{drive}:set_mode"
2225
- ],
2226
- "requestName": "set-mode-invalid",
2227
- "request": {
2228
- "method": "PUT",
2229
- "path": "/v1/drives/drive8:set_mode",
2230
- "query": {
2231
- "mode": "9999"
2232
- }
2233
- },
2234
- "real": {
2235
- "url": "http://192.168.1.13/v1/drives/drive8:set_mode?mode=9999",
2236
- "status": 400,
2237
- "ok": false,
2238
- "headers": {
2239
- "content-length": "46",
2240
- "content-type": "application/json"
2241
- },
2242
- "bodyType": "json",
2243
- "body": {
2244
- "errors": [
2245
- "Invalid Drive 'drive8'"
2246
- ]
2247
- },
2248
- "size": 46,
2249
- "latencyMs": 26.646512000000257
2250
- },
2251
- "mock": {
2252
- "url": "http://127.0.0.1:40443/v1/drives/drive8:set_mode?mode=9999",
2253
- "status": 200,
2254
- "ok": true,
2255
- "headers": {
2256
- "content-length": "64",
2257
- "content-type": "application/json"
2258
- },
2259
- "bodyType": "json",
2260
- "body": {
2261
- "result": "mode_set",
2262
- "drive": "drive8",
2263
- "mode": "9999",
2264
- "errors": []
2265
- },
2266
- "size": 64,
2267
- "latencyMs": 2.5817559999995865
2268
- },
2269
- "diff": [
2270
- {
2271
- "kind": "status",
2272
- "real": 400,
2273
- "mock": 200
2274
- },
2275
- {
2276
- "kind": "headers",
2277
- "real": {
2278
- "content-length": "46",
2279
- "content-type": "application/json"
2280
- },
2281
- "mock": {
2282
- "content-length": "64",
2283
- "content-type": "application/json"
2284
- }
2285
- },
2286
- {
2287
- "kind": "body",
2288
- "real": {
2289
- "errors": [
2290
- "Invalid Drive 'drive8'"
2291
- ]
2292
- },
2293
- "mock": {
2294
- "result": "mode_set",
2295
- "drive": "drive8",
2296
- "mode": "9999",
2297
- "errors": []
2298
- }
2299
- }
2300
- ]
2301
- },
2302
- {
2303
- "scenarioId": "files-info-invalid",
2304
- "operations": [
2305
- "GET /v1/files/{path}:info"
2306
- ],
2307
- "requestName": "missing-file",
2308
- "request": {
2309
- "method": "GET",
2310
- "path": "/v1/files/Usb0%2Fmissing.prg:info"
2311
- },
2312
- "real": {
2313
- "url": "http://192.168.1.13/v1/files/Usb0%2Fmissing.prg:info",
2314
- "status": 404,
2315
- "ok": false,
2316
- "headers": {
2317
- "content-length": "42",
2318
- "content-type": "application/json"
2319
- },
2320
- "bodyType": "json",
2321
- "body": {
2322
- "errors": [
2323
- "PATH DOESN'T EXIST"
2324
- ]
2325
- },
2326
- "size": 42,
2327
- "latencyMs": 11.513906000000134
2328
- },
2329
- "mock": {
2330
- "url": "http://127.0.0.1:40443/v1/files/Usb0%2Fmissing.prg:info",
2331
- "status": 200,
2332
- "ok": true,
2333
- "headers": {
2334
- "content-length": "65",
2335
- "content-type": "application/json"
2336
- },
2337
- "bodyType": "json",
2338
- "body": {
2339
- "path": "Usb0/missing.prg",
2340
- "size": 4096,
2341
- "type": "file",
2342
- "errors": []
2343
- },
2344
- "size": 65,
2345
- "latencyMs": 1.4496719999997367
2346
- },
2347
- "diff": [
2348
- {
2349
- "kind": "status",
2350
- "real": 404,
2351
- "mock": 200
2352
- },
2353
- {
2354
- "kind": "headers",
2355
- "real": {
2356
- "content-length": "42",
2357
- "content-type": "application/json"
2358
- },
2359
- "mock": {
2360
- "content-length": "65",
2361
- "content-type": "application/json"
2362
- }
2363
- },
2364
- {
2365
- "kind": "body",
2366
- "real": {
2367
- "errors": [
2368
- "PATH DOESN'T EXIST"
2369
- ]
2370
- },
2371
- "mock": {
2372
- "path": "Usb0/missing.prg",
2373
- "size": 4096,
2374
- "type": "file",
2375
- "errors": []
2376
- }
2377
- }
2378
- ]
2379
- },
2380
- {
2381
- "scenarioId": "machine-reboot",
2382
- "operations": [
2383
- "PUT /v1/machine:reboot"
2384
- ],
2385
- "requestName": "reboot",
2386
- "request": {
2387
- "method": "PUT",
2388
- "path": "/v1/machine:reboot"
2389
- },
2390
- "note": "Exercises reboot endpoint; allow extra settle time after call.",
2391
- "real": {
2392
- "url": "http://192.168.1.13/v1/machine:reboot",
2393
- "status": 200,
2394
- "ok": true,
2395
- "headers": {
2396
- "content-length": "22",
2397
- "content-type": "application/json"
2398
- },
2399
- "bodyType": "json",
2400
- "body": {
2401
- "errors": []
2402
- },
2403
- "size": 22,
2404
- "latencyMs": 148.9344430000001
2405
- },
2406
- "mock": {
2407
- "url": "http://127.0.0.1:40443/v1/machine:reboot",
2408
- "status": 200,
2409
- "ok": true,
2410
- "headers": {
2411
- "content-length": "31",
2412
- "content-type": "application/json"
2413
- },
2414
- "bodyType": "json",
2415
- "body": {
2416
- "result": "reboot",
2417
- "errors": []
2418
- },
2419
- "size": 31,
2420
- "latencyMs": 1.722233999999844
2421
- },
2422
- "diff": [
2423
- {
2424
- "kind": "headers",
2425
- "real": {
2426
- "content-length": "22",
2427
- "content-type": "application/json"
2428
- },
2429
- "mock": {
2430
- "content-length": "31",
2431
- "content-type": "application/json"
2432
- }
2433
- },
2434
- {
2435
- "kind": "body",
2436
- "real": {
2437
- "errors": []
2438
- },
2439
- "mock": {
2440
- "result": "reboot",
2441
- "errors": []
2442
- }
2443
- }
2444
- ]
2445
- },
2446
- {
2447
- "scenarioId": "cleanup-reset",
2448
- "operations": [
2449
- "PUT /v1/machine:reset"
2450
- ],
2451
- "requestName": "final-reset",
2452
- "request": {
2453
- "method": "PUT",
2454
- "path": "/v1/machine:reset"
2455
- },
2456
- "note": "Issued automatically after the comparison suite to return the device to READY.",
2457
- "real": {
2458
- "url": "http://192.168.1.13/v1/machine:reset",
2459
- "status": 200,
2460
- "ok": true,
2461
- "headers": {
2462
- "content-length": "22",
2463
- "content-type": "application/json"
2464
- },
2465
- "bodyType": "json",
2466
- "body": {
2467
- "errors": []
2468
- },
2469
- "size": 22,
2470
- "latencyMs": 33.36906100000033
2471
- },
2472
- "mock": {
2473
- "url": "http://127.0.0.1:40443/v1/machine:reset",
2474
- "status": 200,
2475
- "ok": true,
2476
- "headers": {
2477
- "content-length": "30",
2478
- "content-type": "application/json"
2479
- },
2480
- "bodyType": "json",
2481
- "body": {
2482
- "result": "reset",
2483
- "errors": []
2484
- },
2485
- "size": 30,
2486
- "latencyMs": 4.308577000000696
2487
- },
2488
- "diff": [
2489
- {
2490
- "kind": "headers",
2491
- "real": {
2492
- "content-length": "22",
2493
- "content-type": "application/json"
2494
- },
2495
- "mock": {
2496
- "content-length": "30",
2497
- "content-type": "application/json"
2498
- }
2499
- },
2500
- {
2501
- "kind": "body",
2502
- "real": {
2503
- "errors": []
2504
- },
2505
- "mock": {
2506
- "result": "reset",
2507
- "errors": []
2508
- }
2509
- }
2510
- ]
2511
- }
2512
- ]
2513
- }