Interoperability Test Description
Identifier: TD_COAP_CORE_01
Objective: Perform GET transaction (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 1.2, 2.1, 2.2, 3.1
Pre-test conditions: Server offers the resource /test with resource content is not empty that handles GET with an arbitrary payload
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a GET request with:
  • Type = 0 (CON)
  • Code = 1 (GET)
2 Check The request sent by the client contains:
  • Type=0 and Code=1
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Content-format option
  • Non-empty Payload
4 Verify Client displays the received information
Interoperability Test Description
Identifier: TD_COAP_CORE_02
Objective: Perform DELETE transaction (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.4, 1.2, 2.1, 2.2, 3.1
Pre-test conditions: Server offers a /test resource that handles DELETE
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a DELETE request with:
  • Type = 0 (CON)
  • Code = 4 (DELETE)
2 Check The request sent by the client contains:
  • Type=0 and Code=4
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Code = 2.02 (Deleted)
  • Message ID = CMID, Token = CTOK
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
4 Verify Client displays the received information
Interoperability Test Description
Identifier: TD_COAP_CORE_03
Objective: Perform PUT transaction (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.3, 1.2, 2.1, 2.2, 3.1
Pre-test conditions: Server offers already available resource /test or accepts creation of new resource on /test that handles PUT
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a PUT request with:
  • Type = 0 (CON)
  • Code = 3 (PUT)
  • Content-format option
  • Empty or non-empty Payload
2 Check The request sent by the client contains:
  • Type=0 and Code=3
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Verify Server displays received information
4 Check Server sends response containing:
  • Code = 2.04 (Changed) or 2.01 (Created)
  • Message ID = CMID, Token = CTOK
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
5 Verify Client displays the received response
Interoperability Test Description
Identifier: TD_COAP_CORE_04
Objective: Perform POST transaction (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.2, 1.2, 2.1, 2.2, 3.1
Pre-test conditions: Server accepts POST request on /test
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a POST request with:
  • Type = 0 (CON)
  • Code = 2(POST)
  • Content-format option
  • Empty or non-empty Payload
2 Check The request sent by the client contains:
  • Type=0 and Code=2
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Verify Server displays received information
4 Check Server sends response containing:
  • Code = 2.01 (Created) or 2.04 (Changed)
  • Message ID = CMID, Token = CTOK
  • Content-format option if payload non-empty
  • Zero or more Location-path options
  • Empty or non-empty Payload
5 Verify Client displays the received response
Interoperability Test Description
Identifier: TD_COAP_CORE_05
Objective: Perform GET transaction (NON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.2.3
Pre-test conditions: Server offers a /test resource with resource content is not empty that handles GET
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a GET request with:
  • Type = 1 (NON)
  • Code = 1 (GET)
2 Check The request sent by the client contains:
  • Type=1 and Code=1
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Type = 1 (NON)
  • Code = 2.05 (Content)
  • Server-generated Message ID (➔ SMID)
  • Token = CTOK
  • Content-format option
4 Verify Client displays the received information
Interoperability Test Description
Identifier: TD_COAP_CORE_06
Objective: Perform DELETE transaction (NON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.4, 5.2.3
Pre-test conditions: Server offers a /test resource that handles DELETE
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a DELETE request with:
  • Type = 1 (NON)
  • Code = 4 (DELETE)
2 Check The request sent by the client contains:
  • Type=1 and Code=4
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Type = 1 (NON)
  • Code = 2.02 (Deleted)
  • Server-generated Message ID (➔ SMID)
  • Token = CTOK
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
4 Verify Client displays the received information
Interoperability Test Description
Identifier: TD_COAP_CORE_07
Objective: Perform PUT transaction (NON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.3, 5.2.3
Pre-test conditions: Server offers a /test resource that handles PUT
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a PUT request with:
  • Type = 1 (NON)
  • Code = 3 (PUT)
  • An arbitrary payload
  • Content-format option
2 Check The request sent by the client contains:
  • Type=1 and Code=3
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Verify Server displays the received information
4 Check Server sends response containing:
  • Type = 1 (NON)
  • Code = 2.04 (Changed) or 2.01 (Created)
  • Server-generated Message ID (➔ SMID)
  • Token = CTOK
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
5 Verify Client displays the received response
Interoperability Test Description
Identifier: TD_COAP_CORE_08
Objective: Perform POST transaction (NON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.2, 5.2.3
Pre-test conditions: Server accepts POST request on /test
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a POST request with:
  • Type = 1 (NON)
  • Code = 2(POST)
  • An arbitrary payload
  • Content-format option
2 Check The request sent by the client contains:
  • Type=1 and Code=2
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Verify Server displays the received information
4 Check Server sends response containing:
  • Type = 1 (NON)
  • Code = 2.01 (Created) or 2.04 (Changed)
  • Server-generated Message ID (➔ SMID)
  • Token = CTOK
  • Zero or more Location-path options
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
5 Verify Client displays the received response
Interoperability Test Description
Identifier: TD_COAP_CORE_09
Objective: Perform GET transaction with separate response (CON mode, no piggyback)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.2.2
Pre-test conditions: Server offers a resource /separate which is not served immediately and which therefore is not acknowledged in a piggybacked way.
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Uri-Path option "separate"
  • Client-generated Token (➔ CTOK)
3 Check Server sends response containing:
  • Type = 2 (ACK)
  • Code = 0
  • Message ID = CMID
  • Empty Payload
Some time (a couple of seconds) elapses.
4 Check Server sends response containing:
  • Type = 0 (CON)
  • Code = 2.05 (Content)
  • Server-generated Message ID (➔ SMID)
  • Token = CTOK
  • Content-format option
  • Non-empty Payload
5 Check Client sends response containing:
  • Type = 2 (ACK)
  • Code = 0
  • Message ID = SMID
  • Empty Payload
6 Verify Client displays the response
Notes: Steps 3 and 4 may occur out-of-order
Interoperability Test Description
Identifier: TD_COAP_CORE_10
Objective: Perform GET transaction containing non-empty Token (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 2.2, 5.8.1, 5.10.1
Pre-test conditions: Server offers a /test resource with resource content is not empty that handles GET
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a GET request to server’s resource with non-empty Token option
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Length of the token should be between 1 to 8 Bytes
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Content-format option
  • Non-empty Payload
4 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_11
Objective: Perform GET transaction containing non-empty Token with a separate response (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 2.2, 5.2.2, 5.8.1
Pre-test conditions: Server offers a resource /separate which is not served immediately and which therefore is not acknowledged in a piggybacked way.
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a GET request to server’s resource including Token option
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Length of the token should be between 1 to 8 Bytes
  • Uri-Path option "separate"
3 Check Server sends response containing:
  • Type = 2 (ACK)
  • Code = 0
  • Message ID = CMID
  • Empty Payload
Some time (a couple of seconds) elapses.
4 Check Server sends response containing:
  • Type = 0 (CON)
  • Code = 2.05 (Content)
  • Server-generated Message ID (➔ SMID)
  • Token = CTOK
  • Non-empty Payload
5 Check Client sends response containing:
  • Type = 2 (ACK)
  • Code = 0
  • Message ID = SMID
  • Empty Payload
6 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_12
Objective: Perform GET transaction using empty Token (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 2.2, 5.8.1, 5.10.1
Pre-test conditions: Server offers the resource /test with resource content is not empty that handles GET with an arbitrary payload
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable GET request using zero-length Token to server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Zero-Length Token ➔ CTOK
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Content-format option
  • Non-empty Payload
4 Verify Client displays the response
Notes: Not all clients may be able to send a zero-length Token
Interoperability Test Description
Identifier: TD_COAP_CORE_13
Objective: Perform GET transaction containing several URI-Path options (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.4.5, 5.10.2, 6.5
Pre-test conditions: Server offers a /seg1/seg2/seg3 resource with resource content is not empty
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
and three options of type Uri-Path, with the values:
  • seg1
  • seg2
  • seg3
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Content-format option
  • Non-empty Payload
4 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_14
Objective: Perform GET transaction containing several URI-Query options (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.4.5, 5.10.2, 6.5
Pre-test conditions: Server offers a /query resource with resource content is not empty
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable GET request with three Query parameters (e.g. ?first=1&second=2&third=3) to the server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "query"
and two options of Uri-Query, with values such as:
  • first=1
  • second=2
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Content-format option
  • Non-empty Payload
4 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_15
Objective: Perform GET transaction (CON mode, piggybacked response) in a lossy context
Configuration: CoAP_CFG_LOSSY
References: [COAP] 4.4.1, 5.2.1, 5.8.1
Pre-test conditions:
  • Gateway is introduced and configured to produce packet losses
  • Server offers a /test resource with resource content is not empty that can handle GET
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check Sent request must contain:
  • Type = 0
  • Code = 1
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Content-format option
  • Non-empty Payload
4 Verify Client displays the response
5 Check Repeat steps 1-4 until at least one of the following actions has been observed:
  • One dropped request
  • One dropped response
6 Verify
  • For each case mentioned in step 5:
  • Observe that retransmission is launched
Interoperability Test Description
Identifier: TD_COAP_CORE_16
Objective: Perform GET transaction (CON mode, delayed response) in a lossy context
Configuration: CoAP_CFG_LOSSY
References: [COAP] 4.4.1, 5.2.2, 5.8.1
Pre-test conditions:
  • Gateway is introduced and configured to produce packet losses
  • Server offers a resource /separate which is not served immediately and which therefore is not acknowledged in a piggybacked way.
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check The requested sent by the client contains:
  • Type = 0
  • Code = 1
  • Client-generated Message ID (➔ CMID)
  • Uri-Path option "separate"
3 Check Server sends response containing:
  • Type = 2 (ACK)
  • Code = 0
  • Message ID = CMID
  • Empty Payload
4 Check Server sends response containing:
  • Type = 0 (CON)
  • Code = 2.05 (Content)
  • Server-generated Message ID (➔ SMID)
  • Non-empty Payload
  • Content-format option
5 Check Client sends response containing:
  • Type = 2 (ACK)
  • Code = 0
  • Message ID = SMID
  • Empty Payload
6 Verify Client displays the response
7 Check Repeat steps 1-6 until at least one of the following actions has been observed:
  • One dropped request
  • One dropped request ACK
  • One dropped response
  • One dropped response ACK and its retransmission
8 Check
  • For each case mentioned in step 7:
  • Observe that retransmission is launched
9 Check
  • For the dropped request ACK case:
  • Check that retransmission is also stopped by the arrival of the CON response
Interoperability Test Description
Identifier: TD_COAP_CORE_17
Objective: Perform GET transaction with a separate response (NON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 2.2, 5.2.2, 5.8.1
Pre-test conditions: Server offers a resource /separate which is not served immediately and which therefore is not acknowledged in a piggybacked way.
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a non-confirmable GET request to server’s resource
2 Check The request sent by the client contains:
  • Type = 1 (NON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Uri-Path option "separate"
3 Check Server DOES NOT send response containing:
  • Type = 2 (ACK)
  • Same message ID as in the request in step 2
  • Empty Payload
Some time (a couple of seconds) elapses.
4 Check Server sends response containing:
  • Type = 1 (NON)
  • Code = 2.05 (Content)
  • Server-generated Message ID (➔ SMID)
  • Content-format option
  • Non-empty Payload
5 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_18
Objective: Perform POST transaction with responses containing several Location-Path options (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.10.8, 5.9.1.1
Pre-test conditions: Server accepts creation of new resource on /test and the created resource is located at /location1/location2/location3 (resource does not exist yet)
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable POST request to server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON
  • Code = 2 (POST)
  • An arbitrary payload
  • Content-format option
  • Uri-Path option "test"
3 Check Server sends response containing:
  • Code = 2.01 (Created)
and three options of type Location-Path, with the values (none of which contains a "/"):
  • location1
  • location2
  • location3
4 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_19
Objective: Perform POST transaction with responses containing several Location-Query options (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.10.8, 5.9.1.1
Pre-test conditions: Server accepts creation of new resource on uri /location-query, the location of the created resource contains two query parameters ?first=1&second=2
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a confirmable POST request to server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 2 (POST)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Content-format option
  • Empty or non-empty Payload
  • Uri-Path option "location-query"
3 Check Server sends response containing:
  • Code = 2.01 (Created)
  • Message ID = CMID, Token = CTOK
  • Content-format option if payload non-empty
  • Zero or more Location-path options
  • Empty or non-empty Payload
and two options of type Location-Query, with the values (none of which contains a "?" or "&"):
  • first=1
  • second=2
4 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_20
Objective: Perform GET transaction containing the Accept option (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.10.5, 5.10.4
Pre-test conditions: Server should provide a resource /multi-format which exists in two formats:
  • text/plain;charset=utf-8
  • application/xml
Test Sequence: Step Type Description
client requests a resource in text format
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check The request sent request by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Option type = Accept, value = 0 (text/plain;charset=utf-8)
  • Uri-Path option "multi-format"
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Option type = Content-Format, value = 0 (text/plain;charset=utf-8)
  • Payload = Content of the requested resource in text/plain;charset=utf-8 format
4 Verify Client displays the response
client requests a resource in xml format
5 Stimulus Client is requested to send a confirmable GET request to server’s resource
6 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Another client-generated Message ID ≠ CMID (➔ CMID2)
  • Client-generated Token which may or may not be ≠ CTOK (➔ CTOK2)
  • Option type = Accept, value = 41 (application/xml)
7 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID2, Token = CTOK2
  • Option type = Content-Format, value = 41 (application/xml)
Payload = Content of the requested resource in application/xml format
8 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_21
Objective: Perform GET transaction containing the ETag option (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.10.7, 5.10.10, 12.1.12
Pre-test conditions:
  • Server should offer a /validate resource which may be made to vary over time
  • Client & server supports ETag option
  • The Client’s cache must be purged
Test Sequence: Step Type Description
Verifying that client cache is empty
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check The request sent request by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "validate"
  • No ETag option
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Option type = ETag, value = a value chosen by the server (➔ ETAG1)
  • Non-empty Payload
4 Verify Client displays the response
Verifying client cache entry is still valid
5 Stimulus Client is requested to send a confirmable GET request to server’s resource so as to check if the resource was updated
6 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Another client-generated Message ID ≠ CMID (➔ CMID2)
  • Client-generated Token which may or may not be ≠ CTOK (➔ CTOK2)
  • Uri-Path option "validate"
  • Option Type = ETag, value = ETAG1 (the ETag value received in step 3)
7 Check Server sends response containing:
  • Code = 2.03 (Valid)
  • Message ID = CMID2, Token = CTOK2
  • Option type = ETag, value = ETAG1
  • Empty Payload
8 Verify Client displays the response
Verifying that client cache entry is no longer valid
9 Stimulus Update the content of the server’s resource from a CoAP client (either another client, or the testing client in a separate transaction)
10 Stimulus Client is requested to send a confirmable GET request to server’s resource so as to check if the resource was updated
11 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Another client-generated Message ID ≠ CMID and ≠ CMID2 (➔ CMID3)
  • Client-generated Token which may or may not be ≠ CTOK or CTOK2 (➔ CTOK3)
  • Uri-Path option "validate"
  • Option Type = ETag, value = ETAG1 (the ETag value received in step 3)
12 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID3, Token = CTOK3
  • Option type = ETag, value = another ETag value ≠ ETAG1
  • The payload of the requested resource, which should be different from the payload in step 3
13 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_22
Objective: Perform GET transaction with responses containing the ETag option and requests containing the If-Match option (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.10.7, 5.10.9, 12.1.12
Pre-test conditions:
  • Server offers a /validate resource
  • Client & server supports ETag and If-Match option
  • The Client ‘s cache must be purged
Test Sequence: Step Type Description
client gets the resource
1 Stimulus Client is requested to send a confirmable GET request to server’s resource
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Uri-Path option "validate"
  • No ETag option
3 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID, Token = CTOK
  • Option type = ETag, value = a value chosen by the server (➔ ETAG1)
  • Non-empty Payload
single update
4 Stimulus Client is requested to send a confirmable PUT request to server’s resource so as to perform an atomic update
5 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 3 (PUT)
  • Another client-generated Message ID ≠ CMID (➔ CMID2)
  • Client-generated Token which may or may not be ≠ CTOK (➔ CTOK2)
  • Content-format option
  • Uri-Path option "validate"
  • Option type = If-Match, value = ETAG1 (ETag value received in step 3)
  • An arbitrary payload (which differs from the payload received in step 3)
6 Check Server sends response containing:
  • Code = 2.04 (Changed)
  • Message ID = CMID2, Token = CTOK2
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
7 Verify Client displays the response and the server changed its resource
concurrent updates
8 Stimulus Client is requested to send a confirmable GET request to server’s resource
9 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 1 (GET)
  • Another client-generated Message ID ≠ CMID and ≠ CMID2 (➔ CMID3)
  • Client-generated Token which may or may not be ≠ CTOK or CTOK2 (➔ CTOK3)
  • Uri-Path option "validate"
10 Check Server sends response containing:
  • Code = 2.05 (Content)
  • Message ID = CMID3, Token = CTOK3
  • Option type = ETag, value = a value ≠ ETAG1 chosen by the server (➔ ETAG2)
  • The Payload sent in step 5
11 Verify Client displays the response
12 Stimulus Update the content of the server’s resource from a CoAP client once more
13 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 3 (PUT)
  • Another client-generated Message ID ≠ CMID, CMID2, CMID3 (➔ CMID4)
  • Client-generated Token which may or may not be ≠ CTOK, CTOK2, CTOK3 (➔ CTOK4)
  • Content-format option
  • Uri-Path option "validate"
  • An arbitrary payload (which differs from the payloads received in steps 3 and 10)
14 Check Server sends response containing:
  • Code = 2.04 (Changed)
  • Message ID = CMID4, Token = CTOK4
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
15 Verify Client displays the response and the server changed its resource
16 Stimulus Client is requested to send a confirmable PUT request to server’s resource so as to perform an atomic update, assuming it is still unchanged from step 10
17 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 3 (PUT)
  • Another client-generated Message ID ≠ CMID, CMID2, CMID3 (➔ CMID4)
  • Client-generated Token which may or may not be ≠ CTOK, CTOK2, CTOK3 (➔ CTOK4)
  • Content-format option
  • Uri-Path option "validate"
  • Option type = If-Match, value = ETAG2 (ETag value received in step 10)
  • An arbitrary payload (which differs from the previous payloads)
18 Check Server sends response containing:
  • Code = 4.12 (Precondition Failed)
  • Message ID = CMID4, Token = CTOK4
  • Optional Content-format option
  • Empty or non-empty Payload
19 Verify Client displays the response and the server did not update the content of the resource
Interoperability Test Description
Identifier: TD_COAP_CORE_23
Objective: Perform PUT transaction containing the If-None-Match option (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 5.8.1, 5.10.7, 5.10.10, 12.1.12
Pre-test conditions:
  • Server offers a /create1 resource, which does not exist and can be created by the client
  • Client & server support If-Non-Match
Test Sequence: Step Type Description
single creation
1 Stimulus Client is requested to send a confirmable PUT request to server’s resource so as to atomically create the resource.
2 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 3 (PUT)
  • Client-generated Message ID (➔ CMID)
  • Client-generated Token (➔ CTOK)
  • Content-format option
  • Uri-Path option "create1"
  • Option Type=If-None-Match
  • An arbitrary payload
3 Check Server sends response containing:
  • Code = 2.01 (Created)
  • Message ID = CMID, Token = CTOK
  • Content-format option if payload non-empty
  • Empty or non-empty Payload
4 Verify Client displays the response and the server created a new resource
concurrent creations
5 Stimulus Client is requested to send a confirmable PUT request to server’s resource so as to atomically create the resource.
6 Check The request sent by the client contains:
  • Type = 0 (CON)
  • Code = 3 (PUT)
  • Another client-generated Message ID ≠ CMID (➔ CMID2)
  • Client-generated Token which may or may not be ≠ CTOK (➔ CTOK2)
  • Content-format option
  • Uri-Path option "create1"
  • Option Type=If-None-Match
  • An arbitrary payload
7 Check Server sends response containing:
  • Code = 4.12 (Precondition Failed)
  • Message ID = CMID2, Token = CTOK2
  • Optional Content-format option
  • Empty or non-empty Payload
8 Verify Client displays the response
Interoperability Test Description
Identifier: TD_COAP_CORE_31
Objective: Perform CoAP Ping (CON mode)
Configuration: CoAP_CFG_BASIC
References: [COAP] 4.3
Pre-test conditions: (Should work with any CoAP server)
Test Sequence: Step Type Description
1 Stimulus Client is requested to send a "Ping" request with:
  • Type = 0 (CON)
  • Code = 0 (empty)
2 Check The request sent by the client is four bytes and contains:
  • Type=0 and Code=0
  • Client-generated Message ID (➔ CMID)
  • Zero-length Token
  • No payload
3 Check Server sends four-byte RST response containing:
  • Type=3 and Code=0
  • Message ID = CMID
  • Zero-length Token
  • No payload
4 Verify Client displays that the "Ping" was successful