MCCIProtocolTestCases - GobySoft/goby GitHub Wiki
MCCI: Protocol Test Cases
These test cases describe (and verify) the basic wire protocol of MCCI.
The cases will consider the following topology:
attachments/graphviz-G11-5c70d13ed1cf49bab9724fc60e7bd88829054b85.png
These components will be abbreviated C1, S1, and C2. All cases assume a fresh launch of the server -- no order of test cases is implied. The server is configured to be at a Node Address of 5.
At this stage, packets have fairly contrived names.
Connecting and Handshaking
TBD
Publishing Data
Experimentally, we assume there is a special message that can be used to ask the server what the latest revision of a particular variable is. This is different than requesting the latest of a given variable since the server only retains local data and we desire the freedom to ask about ANY variable known to the server, local or remote.
Un-acked
Response ID of zero is a special value indicating no response is desired.
Client1 to Server1:
[Table not converted]
Server1: ( No response )
Client2 to Server1: "get me the latest known revision number of variable 37 from local server (0)"
[Table not converted]
Server1 to Client2:
[Table not converted]
Acked
Client1 to Server1:
[Table not converted]
Server1:
[Table not converted]
Client2 to Server1: "get me the latest known revision number of variable 33 from local server (0)"
[Table not converted]
Server1 to Client2:
[Table not converted]
Requesting Data
Data Available, Request exact
Client1 to Server1:
[Table not converted]
Client2 to Server1:
[Table not converted]
Server1 to Client2:
[Table not converted]
Data Available, Request Latest
Client1 to Server1:
[Table not converted]
Client2 to Server1:
[Table not converted]
Server1 to Client2:
[Table not converted]
Data Unavailable, Request Exact
Note that the clients' ability to accept requests (forwarded from the server) should be implemented as publish/subscribe -- the clients subscribe to the types of requests that they can actually fulfill. In other words, Server1's request packet that is sent to the clients is only conceptual.
Client2 to Server1:
[Table not converted]
Server1 to Client1, Client2
[Table not converted]
Client1, Client2: no response.
Wait 10 seconds.
Client1 to Server1:
[Table not converted]
Server1 to Client2:
[Table not converted]