Source of: markdown/Test.md.twig
---
date: '2014-01-19'
---
ADC Test specification {{ '{#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 {{ '{#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 {{ '{#version_1_0}' }}
-----------
Fredrik Ullner <[email protected]>, 2012-12-27
- Initial release.
Tests {{ '{#tests}' }}
=====
GPA {{ '{#gpa}' }}
---
### Too short random data {{ '{#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 {{ '{#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 {{ '{#valid_random_data}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty GPA {{ '{#empty_gpa}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
INF {{ '{#inf}' }}
---
### ID and PD fields present and matching {{ '{#id_and_pd_fields_present_and_matching}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### ID and PD fields present and mismatching {{ '{#id_and_pd_fields_present_and_mismatching}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Only ID field present {{ '{#only_id_field_present}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Only PD field present {{ '{#only_pd_field_present}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Neither ID or PD fields present {{ '{#neither_id_or_pd_fields_present}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in ID field {{ '{#invalid_characters_in_id_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in PD field {{ '{#invalid_characters_in_pd_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in NI field {{ '{#invalid_characters_in_ni_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in DE field {{ '{#invalid_characters_in_de_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in I4 field {{ '{#invalid_characters_in_i4_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in I6 field {{ '{#invalid_characters_in_i6_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid IP in I4 field {{ '{#invalid_ip_in_i4_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid IP in I6 field {{ '{#invalid_ip_in_i6_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Wrong IP in I4 field {{ '{#wrong_ip_in_i4_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Wrong IP in I6 field {{ '{#wrong_ip_in_i6_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### DNS in I4 field {{ '{#dns_in_i4_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### DNS in I6 field {{ '{#dns_in_i6_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Zero address in I4 field {{ '{#zero_address_in_i4_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Zero address in I6 field {{ '{#zero_address_in_i6_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Correct address in I4 field {{ '{#correct_address_in_i4_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Correct address in I6 field {{ '{#correct_address_in_i6_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too long FOURCC in SU field {{ '{#too_long_fourcc_in_su_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too short FOURCC in SU field {{ '{#too_short_fourcc_in_su_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid FOURCC in SU field {{ '{#invalid_fourcc_in_su_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid formatting of SU field {{ '{#invalid_formatting_of_su_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty INF {{ '{#empty_inf}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Underflow fields SS, SF, US, DS, SL, AS, AM, HN, HR, HO, CT, AW {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#invalid_characters_in_fields_ss_sf_us_ds_sl_as_am_hn_hr_ho_ct_aw}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
MSG {{ '{#msg}' }}
---
### A basic MSG with no named parameters {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#underflow_value_in_me_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### 0 Value in ME field {{ '{#0_value_in_me_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty ME field {{ '{#empty_me_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Overflow value in ME field {{ '{#overflow_value_in_me_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Postive out-of-bounds value in ME field {{ '{#postive_out_of_bounds_value_in_me_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in ME field {{ '{#invalid_characters_in_me_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty PM {{ '{#empty_pm}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too short SID value in PM field {{ '{#too_short_sid_value_in_pm_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too long SID value in PM field {{ '{#too_long_sid_value_in_pm_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters SID value in PM field {{ '{#invalid_characters_sid_value_in_pm_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Non-existing SID value in PM field {{ '{#non_existing_sid_value_in_pm_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### MSG in PROTOCOL state {{ '{#msg_in_protocol_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### MSG in IDENTIFY state {{ '{#msg_in_identify_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### MSG in VERIFY state {{ '{#msg_in_verify_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### MSG in NORMAL state {{ '{#msg_in_normal_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
PAS {{ '{#pas}' }}
---
### Invalid response based on the GPA {{ '{#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 {{ '{#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 {{ '{#valid_response}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty PAS {{ '{#empty_pas}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
QUI {{ '{#qui}' }}
---
### Too short SID {{ '{#too_short_sid}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too long SID {{ '{#too_long_sid}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in SID {{ '{#invalid_characters_in_sid}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### No client with the specified SID {{ '{#no_client_with_the_specified_sid}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too short ID field {{ '{#too_short_id_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Too long ID field {{ '{#too_long_id_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in ID field {{ '{#invalid_characters_in_id_field_2}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### No client with the specified SID in the ID field {{ '{#no_client_with_the_specified_sid_in_the_id_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Negative out-of-bounds value in TL field {{ '{#negative_out_of_bounds_value_in_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Underflow TL field {{ '{#underflow_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Overflow TL field {{ '{#overflow_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### -1 (forever) in TL field {{ '{#1_forever_in_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### 120 second value in TL field {{ '{#120_second_value_in_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in TL field {{ '{#invalid_characters_in_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty TL field {{ '{#empty_tl_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### "example" in MS field {{ '{#example_in_ms_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty MS field {{ '{#empty_ms_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Negative out-of-bounds value in DI field {{ '{#negative_out_of_bounds_value_in_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Underflow DI field {{ '{#underflow_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Overflow DI field {{ '{#overflow_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### 0 as value in DI field {{ '{#0_as_value_in_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### 1 as value in DI field {{ '{#1_as_value_in_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in DI field {{ '{#invalid_characters_in_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty DI field {{ '{#empty_di_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty RD field {{ '{#empty_rd_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### QUI in PROTOCOL state {{ '{#qui_in_protocol_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### QUI in IDENTIFY state {{ '{#qui_in_identify_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### QUI in VERIFY state {{ '{#qui_in_verify_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### QUI in NORMAL state {{ '{#qui_in_normal_state}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
SCH {{ '{#sch}' }}
---
### Underflow fields LE, GE, EQ, TY {{ '{#underflow_fields_le_ge_eq_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Negative out-of-range value for fields LE, GE, EQ, TY {{ '{#negative_out_of_range_value_for_fields_le_ge_eq_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### 0 value for fields LE, GE, EQ, TY {{ '{#0_value_for_fields_le_ge_eq_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Overflow fields LE, GE, EQ, TY {{ '{#overflow_fields_le_ge_eq_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Positive out-of-range value for TY {{ '{#positive_out_of_range_value_for_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in fields LE, GE, EQ, TY {{ '{#invalid_characters_in_fields_le_ge_eq_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Combination of LE and EQ fields with conflicting values {{ '{#combination_of_le_and_eq_fields_with_conflicting_values}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Combination of GE and EQ fields with conflicting values {{ '{#combination_of_ge_and_eq_fields_with_conflicting_values}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Combination of LE, GE and EQ fields with conflicting values {{ '{#combination_of_le_ge_and_eq_fields_with_conflicting_values}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Valid AN field {{ '{#valid_an_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Valid NO field {{ '{#valid_no_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Only NO field {{ '{#only_no_field}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Combination of AN and NO fields with conflicting values {{ '{#combination_of_an_and_no_fields_with_conflicting_values}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Invalid characters in field EX {{ '{#invalid_characters_in_field_ex}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty AN {{ '{#empty_an}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty NO {{ '{#empty_no}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty EX {{ '{#empty_ex}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty LE {{ '{#empty_le}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty GE {{ '{#empty_ge}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty EQ {{ '{#empty_eq}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty TO {{ '{#empty_to}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Empty TY {{ '{#empty_ty}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
SID {{ '{#sid}' }}
---
### Too short SID from hub {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#valid_sid_assignment}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Valid SID use {{ '{#valid_sid_use}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### No SID from server {{ '{#no_sid_from_server}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
SUP {{ '{#sup}' }}
---
### Invalid BASE version from server {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#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 {{ '{#no_sup_content_from_client}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### No SUP content from server {{ '{#no_sup_content_from_server}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Valid SUP sequence from server {{ '{#valid_sup_sequence_from_server}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
### Valid SUP sequence from client {{ '{#valid_sup_sequence_from_client}' }}
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------
General {{ '{#general}' }}
-------
### Server forwards unknown fields {{ '{#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 {{ '{#server_forwards_unknown_commands}' }}
Purpose: Validate that the server forwards the unknwon command
Expected: The server forwards the unknown command
Result:
------------------------------------------------------------------------
------------------------------------------------------------------------