Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,8 @@ conformance failures. v2 is:
sessions and timers layered on top
- **predicator as the datamodel** - safe, non-evaluative expressions; no
ECMAScript, no eval
- built **corpus-first** - 275 generated SCION/W3C conformance tests (119
SCION + 156 W3C) behind a forward-only regression ratchet inherited from
- built **corpus-first** - 287 generated SCION/W3C conformance tests (119
SCION + 168 W3C) behind a forward-only regression ratchet inherited from
v1, with the generator committed this time

## Installation
Expand Down
3 changes: 3 additions & 0 deletions changelog.d/st-8kn8.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
### Added

- The conformance corpus claims eleven more W3C documents, the Basic HTTP Event I/O Processor's: test509, test510, test518, test519, test520, test522, test531, test532, test534, test567 and test577. test201 is in the corpus and unclaimed. The case schema gains `host.event_io_processors`, the Event I/O Processors a host runs with a location that reaches the session, and the one `host` key a W3C case may carry. A new guide, `docs/basichttp.md`.
27 changes: 24 additions & 3 deletions conformance/RATCHET.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,9 +169,30 @@ A case may carry an optional `host` object, reserved by ADR-0070 decision 5
for what a `statifier` case needs from its host: `send_types`, the send
types the case registers in
[ADR-0069](../docs/adr/0069-host-registered-send-types.md)'s sense, and
`expect_sends`, the sends the case expects handed to the host. Every W3C and
SCION case omits it, because upstream cases run with no registration, and
`schema/case.json` refuses a `scion` or `w3c` case that carries it.
`expect_sends`, the sends the case expects handed to the host. Every SCION
case omits it, because upstream cases run with no registration, and
`schema/case.json` refuses a `scion` case that carries it. A W3C case
carries it only for `event_io_processors`, its one key there, below.

A `host` object may carry `event_io_processors`, the Event I/O Processors
the host runs, by URI
([ADR-0075](../docs/adr/0075-basichttp-event-io-processor.md) decision 7).
It is the one `host` key a W3C case may carry, because the documents that
need a processor cannot run without one; `schema/case.json` refuses every
other `host` key on a `w3c` case. The item set is closed, and its one member
is the Basic HTTP Event I/O Processor's URI,
`http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor`. A runner honours it
by registering the processor under that URI and its short form `basichttp`,
with a location in `_ioprocessors` that reaches the running session, and by
delivering every send to it, so none is handed to the recording processor
above. statifier-ex's runner delivers through a loopback HTTP front it
starts for the case. An implementation that does not run a processor the
case names leaves the case unclaimed; that is what an optional processor
means in a registry. A case can be in the corpus and outside every claim:
`w3c/test201` needs the Basic HTTP processor and is unclaimed, because it
expects a send delivered from outside the session to arrive ahead of a send
the same step appends to the session's own external queue, which no
delivery over HTTP does (ADR-0075 decision 7).

A runner honours the object by registering each of `send_types` with an
Event I/O Processor of its own, which records every send it is handed and
Expand Down
12 changes: 12 additions & 0 deletions conformance/corpus/w3c.json

Large diffs are not rendered by default.

72 changes: 0 additions & 72 deletions conformance/exclusions.json
Original file line number Diff line number Diff line change
Expand Up @@ -39,12 +39,6 @@
"reason": "duplicates_w3c_corpus",
"detail": "SCION framework's embedded copy of the W3C IRP suite; duplicates tools/corpus/scxml_w3's output with no predicator transform applied"
},
{
"suite": "w3c",
"key": "test201",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor as a <send type>: the event is delivered only by a processor that implements HTTP POST"
},
{
"suite": "w3c",
"key": "test216",
Expand Down Expand Up @@ -79,72 +73,6 @@
"reason": "needs_invoke_src",
"detail": "top-level <data> values supplied at instantiation: the child is loaded from src, which is never dereferenced (ADR-0038)",
"adr": 38
},
{
"suite": "w3c",
"key": "test509",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor MUST accept POST requests"
},
{
"suite": "w3c",
"key": "test510",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor MUST validate and enqueue the message"
},
{
"suite": "w3c",
"key": "test518",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor namelist -> POST parameter mapping"
},
{
"suite": "w3c",
"key": "test519",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor param children -> POST parameter mapping"
},
{
"suite": "w3c",
"key": "test520",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor content child -> message body"
},
{
"suite": "w3c",
"key": "test522",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor _ioprocessors['basichttp'] entry"
},
{
"suite": "w3c",
"key": "test531",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor _scxmleventname -> event name"
},
{
"suite": "w3c",
"key": "test532",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor HTTP method -> event name fallback"
},
{
"suite": "w3c",
"key": "test534",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor send/@event -> _scxmleventname"
},
{
"suite": "w3c",
"key": "test567",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor message content -> _event.data"
},
{
"suite": "w3c",
"key": "test577",
"reason": "needs_basichttp",
"detail": "BasicHTTP Event I/O Processor missing target -> error.communication"
}
]
}
4 changes: 2 additions & 2 deletions conformance/manifest.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
{
"corpus_hash": "sha256:c15e87820da654e8dde6ae97bed1631051cf6456c461cf67e7b617a36b24b02b",
"corpus_hash": "sha256:127a498eb4b44976bf6b1fe8d39d2c7412a4d31b63c991f2d54dd8a525e4eb1c",
"suites": [
{
"suite": "scion",
Expand All @@ -9,7 +9,7 @@
{
"suite": "w3c",
"file": "corpus/w3c.json",
"case_count": 156
"case_count": 168
},
{
"suite": "statifier",
Expand Down
13 changes: 12 additions & 1 deletion conformance/registry.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"implementation": "statifier-ex",
"corpus_hash": "sha256:c15e87820da654e8dde6ae97bed1631051cf6456c461cf67e7b617a36b24b02b",
"corpus_hash": "sha256:127a498eb4b44976bf6b1fe8d39d2c7412a4d31b63c991f2d54dd8a525e4eb1c",
"claims": ["scion","statifier","w3c-mandatory","w3c-optional"],
"entries": [
{"case_id":"scion/actionSend/send1","suite":"scion"},
Expand Down Expand Up @@ -292,19 +292,30 @@
{"case_id":"w3c/test504","suite":"w3c"},
{"case_id":"w3c/test505","suite":"w3c"},
{"case_id":"w3c/test506","suite":"w3c"},
{"case_id":"w3c/test509","suite":"w3c"},
{"case_id":"w3c/test510","suite":"w3c"},
{"case_id":"w3c/test518","suite":"w3c"},
{"case_id":"w3c/test519","suite":"w3c"},
{"case_id":"w3c/test520","suite":"w3c"},
{"case_id":"w3c/test521","suite":"w3c"},
{"case_id":"w3c/test522","suite":"w3c"},
{"case_id":"w3c/test525","suite":"w3c"},
{"case_id":"w3c/test527","suite":"w3c"},
{"case_id":"w3c/test528","suite":"w3c"},
{"case_id":"w3c/test529","suite":"w3c"},
{"case_id":"w3c/test530","suite":"w3c"},
{"case_id":"w3c/test531","suite":"w3c"},
{"case_id":"w3c/test532","suite":"w3c"},
{"case_id":"w3c/test533","suite":"w3c"},
{"case_id":"w3c/test534","suite":"w3c"},
{"case_id":"w3c/test550","suite":"w3c"},
{"case_id":"w3c/test551","suite":"w3c"},
{"case_id":"w3c/test553","suite":"w3c"},
{"case_id":"w3c/test554","suite":"w3c"},
{"case_id":"w3c/test567","suite":"w3c"},
{"case_id":"w3c/test570","suite":"w3c"},
{"case_id":"w3c/test576","suite":"w3c"},
{"case_id":"w3c/test577","suite":"w3c"},
{"case_id":"w3c/test579","suite":"w3c"},
{"case_id":"w3c/test580","suite":"w3c"}
]
Expand Down
19 changes: 15 additions & 4 deletions conformance/schema/case.json
Original file line number Diff line number Diff line change
Expand Up @@ -103,8 +103,15 @@
},
"host": {
"type": "object",
"description": "Optional, and carried by no scion or w3c case: what a statifier case needs from the host running it. The host registers each of send_types with an Event I/O Processor of its own, which records every send it is handed and delivers none of them; a delayed send handed to it is its timer, and it never fires one. An expect_sends item's outcome says what more the host does with that send: reports it failed, or is handed a cancel for it. With no host object a case registers nothing. declared_events and expect_accepts are present together or not at all: the host checks the chart's declaration of the event names it accepts before it runs the case. to_source and expect_diff are present together or not at all, and mapping and expect_compatible_at each need them: the host diffs the case's chart to a second chart before it runs the case, and after the last step asks whether the position the steps left is untouched by the edit.",
"description": "Optional, carried by no scion case, and carried by a w3c case only with event_io_processors as its one key: what a case needs from the host running it. The host registers each of send_types with an Event I/O Processor of its own, which records every send it is handed and delivers none of them; a delayed send handed to it is its timer, and it never fires one. An expect_sends item's outcome says what more the host does with that send: reports it failed, or is handed a cancel for it. The host registers each of event_io_processors under its URI and its short form, with a location that reaches the running session, and delivers every send to it. With no host object a case registers nothing. declared_events and expect_accepts are present together or not at all: the host checks the chart's declaration of the event names it accepts before it runs the case. to_source and expect_diff are present together or not at all, and mapping and expect_compatible_at each need them: the host diffs the case's chart to a second chart before it runs the case, and after the last step asks whether the position the steps left is untouched by the edit.",
"properties": {
"event_io_processors": {
"type": "array",
"description": "The Event I/O Processors the host runs, by URI (ADR-0075 decision 7): each is registered under its URI and its short form, with a location in _ioprocessors that reaches the running session through a loopback front, and every send to it is delivered, none recorded. The item set is closed; its one member is the Basic HTTP Event I/O Processor, whose short form is basichttp. A port that does not run a processor named here leaves the case unclaimed.",
"items": { "enum": ["http://www.w3.org/TR/scxml/#BasicHTTPEventProcessor"] },
"minItems": 1,
"uniqueItems": true
},
"send_types": {
"type": "array",
"description": "The send type strings the case registers, in ADR-0069's sense: a send whose type is one of them is handed to the host's processor, and its target is that processor's own route string, which the SCXML processor never parses. None is a built-in spelling: not scxml, and not the SCXML Event I/O Processor URI.",
Expand Down Expand Up @@ -504,10 +511,14 @@
"properties": {
"id": { "pattern": "^w3c/" },
"conformance": { "enum": ["mandatory", "optional"] },
"upstream": { "properties": { "license": { "const": "BSD-3-Clause-W3C" } } }
"upstream": { "properties": { "license": { "const": "BSD-3-Clause-W3C" } } },
"host": {
"properties": { "event_io_processors": true },
"required": ["event_io_processors"],
"additionalProperties": false
}
},
"required": ["upstream"],
"not": { "required": ["host"] }
"required": ["upstream"]
}
},
{
Expand Down
Loading
Loading