date: '2014-01-19'
ADC Test specification
Fredrik Ullner <[email protected]> 1.0.0, December 2012
These is the official test specification for ADC.
This document describes the different circumstances that may arise and what implementations may be aware that others are sending and how they are processing the information.
The server in this document may describe the server party in a client-hub connection as well as in a client-client connection.
Version history
The latest draft of the next version of this document as well as intermediate and older versions can be downloaded from \$URL: <https://adc.svn.sourceforge.net/svnroot/adc/trunk/ADC-Test.txt> \$.
This version corresponds to \$Revision: 90 \$.
Version 1.0
Fredrik Ullner <[email protected]>, 2012-12-27
- Initial release.
Tests
GPA
Too short random data
Purpose: Validate what a client does when it receives random data in the GPA that is too short (less than 24 bytes)
Expected: Client sends a STA indicating that the GPA is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client B sends "INF BBBB …" | |
5 | The server sends "GPA A" (1 byte) |
Result:
Invalid characters in random data
Purpose: Validate what a client does when it receives random data in the GPA that contain invalid characters (1 for instance)
Expected: Client sends a STA indicating that the GPA is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client B sends "INF BBBB …" | |
5 | The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAA1" (24 bytes) |
Result:
Valid random data
Result:
Empty GPA
Result:
INF
ID and PD fields present and matching
Result:
ID and PD fields present and mismatching
Result:
Only ID field present
Result:
Only PD field present
Result:
Neither ID or PD fields present
Result:
Invalid characters in ID field
Result:
Invalid characters in PD field
Result:
Invalid characters in NI field
Result:
Invalid characters in DE field
Result:
Invalid characters in I4 field
Result:
Invalid characters in I6 field
Result:
Invalid IP in I4 field
Result:
Invalid IP in I6 field
Result:
Wrong IP in I4 field
Result:
Wrong IP in I6 field
Result:
DNS in I4 field
Result:
DNS in I6 field
Result:
Zero address in I4 field
Result:
Zero address in I6 field
Result:
Correct address in I4 field
Result:
Correct address in I6 field
Result:
Too long FOURCC in SU field
Result:
Too short FOURCC in SU field
Result:
Invalid FOURCC in SU field
Result:
Invalid formatting of SU field
Result:
Empty INF
Result:
Underflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW
Result:
Negative out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW
Result:
0 value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW
Result:
Overflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW
Result:
Positive out-of-range value for fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW
Result:
Invalid characters in fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW
Result:
MSG
A basic MSG with no named parameters
Purpose: Validate that the server forwards the message unmodified
Expected: The other client receives the message unmodified and display it appropriately
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
2 | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
3 | Client A sends "MSG example" |
Result:
A basic MSG with ME field
Purpose: Validate that the server forwards the message unmodified
Expected: The other client receives the message unmodified and display it appropriately
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
2 | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
3 | Client A sends "MSG example ME1" |
Result:
A basic MSG with PM field
Purpose: Validate that the server forwards the message unmodified
Expected: The other client receives the message unmodified and display it appropriately
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
2 | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
3 | Client A sends "MSG example PMAAAA" (Client A’s SID) |
Result:
A basic MSG with ME and PM fields
Purpose: Validate that the server forwards the message unmodified
Expected: The other client receives the message unmodified and display it appropriately
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
2 | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
3 | Client A sends "MSG example ME1 PMAAAA" (Client A’s SID) | |
4 | Client A sends "MSG example PMAAAA ME1" (Client A’s SID) |
Result:
Negative out-of-bounds value in ME field
Purpose: Validate that the server does not forward the message
Expected: The other client does not receive the message
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
2 | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR". Continue with normal communication until NORMAL is reached and stabalized | |
3 | Client A sends "MSG example ME-1" |
Result:
Underflow value in ME field
Result:
0 Value in ME field
Result:
Empty ME field
Result:
Overflow value in ME field
Result:
Postive out-of-bounds value in ME field
Result:
Invalid characters in ME field
Result:
Empty PM
Result:
Too short SID value in PM field
Result:
Too long SID value in PM field
Result:
Invalid characters SID value in PM field
Result:
Non-existing SID value in PM field
Result:
MSG in PROTOCOL state
Result:
MSG in IDENTIFY state
Result:
MSG in VERIFY state
Result:
MSG in NORMAL state
Result:
PAS
Invalid response based on the GPA
Purpose: Validate what a server does when it receives a response that does not match the request.
Expected: Server sends a STA indicating that the PAS is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client B sends "INF BBBB …" | |
5 | The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes) | |
6 | The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBBB" |
Result:
Invalid characters in response
Purpose: Validate what a server does when it receives a response that contain invalid characters (1 for instance)
Expected: Server sends a STA indicating that the PAS is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client B sends "INF BBBB …" | |
5 | The server sends "GPA AAAAAAAAAAAAAAAAAAAAAAAA" (24 bytes) | |
6 | The client sends "PAS BBBBBBBBBBBBBBBBBBBBBBB1" (last byte is invalid) |
Result:
Valid response
Result:
Empty PAS
Result:
QUI
Too short SID
Result:
Too long SID
Result:
Invalid characters in SID
Result:
No client with the specified SID
Result:
Too short ID field
Result:
Too long ID field
Result:
Invalid characters in ID field
Result:
No client with the specified SID in the ID field
Result:
Negative out-of-bounds value in TL field
Result:
Underflow TL field
Result:
Overflow TL field
Result:
-1 (forever) in TL field
Result:
120 second value in TL field
Result:
Invalid characters in TL field
Result:
Empty TL field
Result:
"example" in MS field
Result:
Empty MS field
Result:
Negative out-of-bounds value in DI field
Result:
Underflow DI field
Result:
Overflow DI field
Result:
0 as value in DI field
Result:
1 as value in DI field
Result:
Invalid characters in DI field
Result:
Empty DI field
Result:
Empty RD field
Result:
QUI in PROTOCOL state
Result:
QUI in IDENTIFY state
Result:
QUI in VERIFY state
Result:
QUI in NORMAL state
Result:
SCH
Underflow fields LE, GE, EQ, TY
Result:
Negative out-of-range value for fields LE, GE, EQ, TY
Result:
0 value for fields LE, GE, EQ, TY
Result:
Overflow fields LE, GE, EQ, TY
Result:
Positive out-of-range value for TY
Result:
Invalid characters in fields LE, GE, EQ, TY
Result:
Combination of LE and EQ fields with conflicting values
Result:
Combination of GE and EQ fields with conflicting values
Result:
Combination of LE, GE and EQ fields with conflicting values
Result:
Valid AN field
Result:
Valid NO field
Result:
Only NO field
Result:
Combination of AN and NO fields with conflicting values
Result:
Invalid characters in field EX
Result:
Empty AN
Result:
Empty NO
Result:
Empty EX
Result:
Empty LE
Result:
Empty GE
Result:
Empty EQ
Result:
Empty TO
Result:
Empty TY
Result:
SID
Too short SID from hub
Purpose: Validate what a client does when it receives an SID that is too short (less than 4 characters)
Expected: Client sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBB" |
Result:
Too long SID from hub
Purpose: Validate what a client does when it receives an SID that is too long (longer than 4 characters)
Expected: Client sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBBB" |
Result:
Invalid characters in SID from hub
Purpose: Validate what a client does when it receives an SID that contain invalid characters (1 for instance)
Expected: Client sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBB1" |
Result:
Too short SID from client in INF
Purpose: Validate what a server does when it receives an SID that is too short (less than 4 characters)
Expected: Server sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client sends "INF BBB …" |
Result:
Too long SID from client in INF
Purpose: Validate what a server does when it receives an SID that is too long (longer than 4 characters)
Expected: Server sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client sends INF BBBBB …" |
Result:
Invalid characters in SID from client
Purpose: Validate what a server does when it receives an SID that contain invalid characters (1 for instance)
Expected: Server sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client sends "INF BBB1 …" |
Result:
Non-assigned SID from client
Purpose: Validate what a server does when it receives an SID that it didn’t assign a client.
Expected: Server sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | The client sends "INF CCCC …" |
Result:
Assigned SID from another client
Purpose: Validate what a server does when it receives an SID that was already assigned to another a client.
Expected: Server sends a STA indicating that the SID is invalid and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | The server sends "SID BBBB" | |
4 | Continue with normal communication until NORMAL is reached and stabalized | |
5 | Connect with a client B to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
6 | The server sends "SID CCCC" | |
7 | Client B sends "INF BBBB …" |
Result:
Valid SID assignment
Result:
Valid SID use
Result:
No SID from server
Result:
SUP
Invalid BASE version from server
Purpose: Validate what a client does when it receives BAS2 instead of BASE.
Expected: Client sends a STA indicating lack of support for BASE and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE …" | |
2 | The server responds with "SUP ADBAS2 …" |
Result:
Invalid BASE version from client
Purpose: Validate what a server does when it receives BAS2 instead of BASE
Expected: Server sends a STA indicating lack of support for BASE and disconnects
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBAS2 … |
Result:
Lack of overlapping hash support from server
Purpose: Validate what a client does when it does not receive overlapping hashes.
Expected: Client sends a STA indicating no overlapping hash support and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE" |
Result:
Lack of overlapping hash support from client
Purpose: Validate what a server does when it does not receive overlapping hashes.
Expected: Server sends a STA indicating no overlapping hash support and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client to the server. Client initiates the connection by sending a "SUP ADBASE" |
Result:
Remove BASE support in NORMAL from server
Purpose: Validate what a client does when the BASE support is removed during NORMAL state.
Expected: Client sends a STA indicating lack of support for BASE and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | Continue with normal communication until NORMAL is reached and stabalized | |
4 | The server sends "SUP RMBASE" |
Result:
Remove BASE support in NORMAL from client
Purpose: Validate what a server does when the BASE support is removed during NORMAL state.
Expected: Server sends a STA indicating lack of support for BASE and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | Continue with normal communication until NORMAL is reached and stabalized | |
4 | The client sends "SUP RMBASE" |
Result:
Remove hash support in NORMAL from server
Purpose: Validate what a client does when the hash support is removed during NORMAL state.
Expected: Client sends a STA indicating lack of support for TIGR and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | Continue with normal communication until NORMAL is reached and stabalized | |
4 | The server sends "SUP RMTIGR" |
Result:
Remove hash support in NORMAL from client
Purpose: Validate what a server does when the hash support is removed during NORMAL state.
Expected: Server sends a STA indicating lack of support for TIGR and disconnects.
Steps:
Step item | Info | Comment |
---|---|---|
1 | Connect with a client A to the server. Client initiates the connection by sending a "SUP ADBASE ADTIGR" | |
2 | The server responds with "SUP ADBASE ADTIGR" | |
3 | Continue with normal communication until NORMAL is reached and stabalized |
| 4 | The client sends | | | | "SUP RMTIGR" | |
Result:
No SUP content from client
Result:
No SUP content from server
Result:
Valid SUP sequence from server
Result:
Valid SUP sequence from client
Result:
General
Server forwards unknown fields
Purpose: Validate if the server forwards unknown fields to other clients
Expected: Server forwards the unknown field
Result:
Server forwards unknown commands
Purpose: Validate that the server forwards the unknwon command
Expected: The server forwards the unknown command
Result: