1c87c5fbaSopenharmony_ci#!/bin/bash
2c87c5fbaSopenharmony_ci
3c87c5fbaSopenharmony_cifunction start_tcpdump {
4c87c5fbaSopenharmony_ci  testfunc=$1
5c87c5fbaSopenharmony_ci  logfile=$LOGDIR/"$testfunc"_$(date +%s).dump
6c87c5fbaSopenharmony_ci  tcpdumpcmd="$tcpdump -i $INTERFACE host $SERVERADDRESS and (udp port $SERVERPORT or icmp) -s0 -n -w $logfile"
7c87c5fbaSopenharmony_ci  if [ $verbose ]; then
8c87c5fbaSopenharmony_ci    echo "$tcpdumpcmd"
9c87c5fbaSopenharmony_ci    $tcpdumpcmd&
10c87c5fbaSopenharmony_ci  else
11c87c5fbaSopenharmony_ci    $tcpdumpcmd 2>/dev/null&
12c87c5fbaSopenharmony_ci  fi
13c87c5fbaSopenharmony_ci  tcpdumppid=$!
14c87c5fbaSopenharmony_ci  # wait until tcpdump is ready to write
15c87c5fbaSopenharmony_ci  for t in {0..20} ; do
16c87c5fbaSopenharmony_ci    if [ ! -e $logfile ] ; then
17c87c5fbaSopenharmony_ci      sleep 0.1
18c87c5fbaSopenharmony_ci    else
19c87c5fbaSopenharmony_ci      sleep 1
20c87c5fbaSopenharmony_ci      if [ $verbose ]; then
21c87c5fbaSopenharmony_ci        echo "tcpdump started"
22c87c5fbaSopenharmony_ci      fi
23c87c5fbaSopenharmony_ci      break
24c87c5fbaSopenharmony_ci    fi
25c87c5fbaSopenharmony_ci  done
26c87c5fbaSopenharmony_ci}
27c87c5fbaSopenharmony_ci
28c87c5fbaSopenharmony_cifunction kill_tcpdump {
29c87c5fbaSopenharmony_ci  kill $tcpdumppid 2>/dev/null || ERROR=1
30c87c5fbaSopenharmony_ci  if [ $ERROR ]; then
31c87c5fbaSopenharmony_ci    echo "tcpdump failed."
32c87c5fbaSopenharmony_ci    exit 1
33c87c5fbaSopenharmony_ci  fi
34c87c5fbaSopenharmony_ci}
35c87c5fbaSopenharmony_ci
36c87c5fbaSopenharmony_cifunction start_coap_test {
37c87c5fbaSopenharmony_ci  if [ -z $1 ]; then
38c87c5fbaSopenharmony_ci    echo "missing argument for start_coap_test"
39c87c5fbaSopenharmony_ci    exit 1
40c87c5fbaSopenharmony_ci  fi
41c87c5fbaSopenharmony_ci  start_tcpdump $1
42c87c5fbaSopenharmony_ci  if [ $verbose ]; then
43c87c5fbaSopenharmony_ci      echo "client command: $COAP_CLIENT $clientopts $testaddress"
44c87c5fbaSopenharmony_ci  fi
45c87c5fbaSopenharmony_ci  echo -e "\nOutput of client:"
46c87c5fbaSopenharmony_ci  # for OBS
47c87c5fbaSopenharmony_ci  if [[ ! -z $2 ]]; then
48c87c5fbaSopenharmony_ci    testfifo=/tmp/tmpfifo$(date +%s)
49c87c5fbaSopenharmony_ci    mkfifo $testfifo
50c87c5fbaSopenharmony_ci    $COAP_CLIENT $clientopts "$testaddress" &> $testfifo &
51c87c5fbaSopenharmony_ci    clientpid=$!
52c87c5fbaSopenharmony_ci    ($timeoutcmd $clienttimeout cat $testfifo | if read -n 1 char; then echo "output: $char" ; fi) 2>/dev/null
53c87c5fbaSopenharmony_ci    # when client has written an output to fifo, kill client
54c87c5fbaSopenharmony_ci    kill $clientpid
55c87c5fbaSopenharmony_ci    rm $testfifo
56c87c5fbaSopenharmony_ci    if [[ $2 == "wait" ]] ; then
57c87c5fbaSopenharmony_ci      echo "Client killed. Waiting.."
58c87c5fbaSopenharmony_ci      sleep $longtimeout
59c87c5fbaSopenharmony_ci    fi
60c87c5fbaSopenharmony_ci  else
61c87c5fbaSopenharmony_ci    $COAP_CLIENT $clientopts "$testaddress"
62c87c5fbaSopenharmony_ci  fi
63c87c5fbaSopenharmony_ci  kill_tcpdump
64c87c5fbaSopenharmony_ci}
65c87c5fbaSopenharmony_ci
66c87c5fbaSopenharmony_ci
67c87c5fbaSopenharmony_ci##
68c87c5fbaSopenharmony_ci# Perform GET (CON mode) on resource /test
69c87c5fbaSopenharmony_ci#
70c87c5fbaSopenharmony_ci# pre: resource /test exists and can handle GET with arbitrary payload
71c87c5fbaSopenharmony_ci#
72c87c5fbaSopenharmony_ci# client sends GET request with Type=0(CON) and Code=1(GET)
73c87c5fbaSopenharmony_ci#
74c87c5fbaSopenharmony_ci# check if sent request contains Type value indicating 0 and Code
75c87c5fbaSopenharmony_ci# value indicating 1
76c87c5fbaSopenharmony_ci#
77c87c5fbaSopenharmony_ci# check if server sends response containing Code = 69(2.05 Content),
78c87c5fbaSopenharmony_ci# the same Message ID as that of previous request, content type option
79c87c5fbaSopenharmony_ci#
80c87c5fbaSopenharmony_ci# verify that server displays received information
81c87c5fbaSopenharmony_ci#
82c87c5fbaSopenharmony_cifunction TD_COAP_CORE_01 {
83c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
84c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
85c87c5fbaSopenharmony_ci  echo "perform GET (CON mode) on resource $testaddress"
86c87c5fbaSopenharmony_ci  start_coap_test $1
87c87c5fbaSopenharmony_ci}
88c87c5fbaSopenharmony_ci
89c87c5fbaSopenharmony_ci##
90c87c5fbaSopenharmony_ci# Perform POST transaction (CON mode) on resource /test: create
91c87c5fbaSopenharmony_ci# resource /test
92c87c5fbaSopenharmony_ci#
93c87c5fbaSopenharmony_ci# pre: resource /test doesn't exist but can be created on /test
94c87c5fbaSopenharmony_ci#
95c87c5fbaSopenharmony_ci# client sends POST with Type=0(CON), Code=2(POST), arbitrary payload,
96c87c5fbaSopenharmony_ci# Content type option
97c87c5fbaSopenharmony_ci#
98c87c5fbaSopenharmony_ci# check: client sends request containing Type value indicating 0 and
99c87c5fbaSopenharmony_ci# Code value indicating 2
100c87c5fbaSopenharmony_ci#
101c87c5fbaSopenharmony_ci# verify: Server displays received information
102c87c5fbaSopenharmony_ci#
103c87c5fbaSopenharmony_ci# check: server sends response containing Code=69(2.01 Created), same
104c87c5fbaSopenharmony_ci# message ID as that of the previous request, Content type option
105c87c5fbaSopenharmony_ci#
106c87c5fbaSopenharmony_ci# verify: client displays received information
107c87c5fbaSopenharmony_ci#
108c87c5fbaSopenharmony_cifunction TD_COAP_CORE_02 {
109c87c5fbaSopenharmony_ci  # -t 0: content type text/plain
110c87c5fbaSopenharmony_ci  clientopts="$callopts -m post -t 0 -e sometext"
111c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
112c87c5fbaSopenharmony_ci  echo "perform POST (CON) on resource $testaddress"
113c87c5fbaSopenharmony_ci  start_coap_test $1
114c87c5fbaSopenharmony_ci}
115c87c5fbaSopenharmony_ci
116c87c5fbaSopenharmony_ci##
117c87c5fbaSopenharmony_ci# Perform PUT transaction (CON mode) on resource /test
118c87c5fbaSopenharmony_ci#
119c87c5fbaSopenharmony_ci# pre: resource /test exists which can handle PUT
120c87c5fbaSopenharmony_ci#
121c87c5fbaSopenharmony_ci# Client sends a PUT request with Type=0(CON), Code=3(PUT), arbitrary
122c87c5fbaSopenharmony_ci# payload, content type option
123c87c5fbaSopenharmony_ci#
124c87c5fbaSopenharmony_ci# check: sent request contains Type value indicating 0 and Code value
125c87c5fbaSopenharmony_ci# indicating 3
126c87c5fbaSopenharmony_ci#
127c87c5fbaSopenharmony_ci# verify: server displays received information
128c87c5fbaSopenharmony_ci#
129c87c5fbaSopenharmony_ci# check: Server sends response containing Code=68(2.04 Changed), same
130c87c5fbaSopenharmony_ci# Message ID as that of the previous request
131c87c5fbaSopenharmony_ci#
132c87c5fbaSopenharmony_ci# verify: client displays received response
133c87c5fbaSopenharmony_ci#
134c87c5fbaSopenharmony_cifunction TD_COAP_CORE_03 {
135c87c5fbaSopenharmony_ci  clientopts="$callopts -m put -t 0 -e sometext"
136c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
137c87c5fbaSopenharmony_ci  echo "perform PUT (CON) on resource $testaddress"
138c87c5fbaSopenharmony_ci  start_coap_test $1
139c87c5fbaSopenharmony_ci}
140c87c5fbaSopenharmony_ci
141c87c5fbaSopenharmony_ci##
142c87c5fbaSopenharmony_ci# Perform DELETE transaction (CON mode) on resource /test
143c87c5fbaSopenharmony_ci#
144c87c5fbaSopenharmony_ci# pre: resource /test exists which can handle DELETE
145c87c5fbaSopenharmony_ci#
146c87c5fbaSopenharmony_ci# Client sends a DELETE request with Type=0(CON), Code=4(DELETE)
147c87c5fbaSopenharmony_ci#
148c87c5fbaSopenharmony_ci# check: sent request contains Type value indicating 0 and Code value
149c87c5fbaSopenharmony_ci# indicating 4
150c87c5fbaSopenharmony_ci#
151c87c5fbaSopenharmony_ci# check: Server sends response containing Code=66(2.02 Deleted), same
152c87c5fbaSopenharmony_ci# Message ID as that of the previous request
153c87c5fbaSopenharmony_ci#
154c87c5fbaSopenharmony_ci# verify: client displays received response
155c87c5fbaSopenharmony_ci#
156c87c5fbaSopenharmony_cifunction TD_COAP_CORE_04 {
157c87c5fbaSopenharmony_ci  clientopts="$callopts -m delete"
158c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
159c87c5fbaSopenharmony_ci  echo "perform DELETE (CON) on resource $testaddress"
160c87c5fbaSopenharmony_ci  start_coap_test $1
161c87c5fbaSopenharmony_ci}
162c87c5fbaSopenharmony_ci
163c87c5fbaSopenharmony_ci##
164c87c5fbaSopenharmony_ci# Perform GET transaction (NON mode) on resource /test
165c87c5fbaSopenharmony_ci#
166c87c5fbaSopenharmony_ci# pre: resource /test exits which can handle GET
167c87c5fbaSopenharmony_ci#
168c87c5fbaSopenharmony_ci# Client sends a GET request with Type=1(NON), Code=1(GET)
169c87c5fbaSopenharmony_ci#
170c87c5fbaSopenharmony_ci# check: sent request contains Type value indicating 1 and Code value
171c87c5fbaSopenharmony_ci# indicating 1
172c87c5fbaSopenharmony_ci#
173c87c5fbaSopenharmony_ci# check: Server sends response containing Type=1(NON), Code=69(2.05
174c87c5fbaSopenharmony_ci# Content), content type option
175c87c5fbaSopenharmony_ci#
176c87c5fbaSopenharmony_ci# verify: client displays received response
177c87c5fbaSopenharmony_ci#
178c87c5fbaSopenharmony_cifunction TD_COAP_CORE_05 {
179c87c5fbaSopenharmony_ci  # -N: send non-confirmable message
180c87c5fbaSopenharmony_ci  clientopts="$callopts -m get -N"
181c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
182c87c5fbaSopenharmony_ci  echo "perform GET (NON mode) on resource $testaddress"
183c87c5fbaSopenharmony_ci  start_coap_test $1
184c87c5fbaSopenharmony_ci}
185c87c5fbaSopenharmony_ci
186c87c5fbaSopenharmony_ci##
187c87c5fbaSopenharmony_ci# Perform POST transaction (NON mode), create resource on /test
188c87c5fbaSopenharmony_ci#
189c87c5fbaSopenharmony_ci# pre: resource on /test doesn't exist but can be created
190c87c5fbaSopenharmony_ci#
191c87c5fbaSopenharmony_ci# Client sends a POST request with Type=1(NON), Code=2(POST),
192c87c5fbaSopenharmony_ci# arbitrary payload, content type option
193c87c5fbaSopenharmony_ci#
194c87c5fbaSopenharmony_ci# check: sent request contains Type value indicating 1 and Code value
195c87c5fbaSopenharmony_ci# indicating 2
196c87c5fbaSopenharmony_ci#
197c87c5fbaSopenharmony_ci# verify: Server displays the received information
198c87c5fbaSopenharmony_ci#
199c87c5fbaSopenharmony_ci# check: Server sends response containing Type=1(NON), Code=65(2.01
200c87c5fbaSopenharmony_ci# Created)
201c87c5fbaSopenharmony_ci#
202c87c5fbaSopenharmony_ci# verify: client displays received response
203c87c5fbaSopenharmony_ci#
204c87c5fbaSopenharmony_cifunction TD_COAP_CORE_06 {
205c87c5fbaSopenharmony_ci  clientopts="$callopts -m post -t 0 -e sometext -N"
206c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
207c87c5fbaSopenharmony_ci  echo "perform POST (NON) on resource $testaddress"
208c87c5fbaSopenharmony_ci  start_coap_test $1
209c87c5fbaSopenharmony_ci}
210c87c5fbaSopenharmony_ci
211c87c5fbaSopenharmony_ci##
212c87c5fbaSopenharmony_ci# Perform PUT transaction (NON mode) on resource /test
213c87c5fbaSopenharmony_ci#
214c87c5fbaSopenharmony_ci# pre: /test exists and can handle PUT
215c87c5fbaSopenharmony_ci#
216c87c5fbaSopenharmony_ci# Client sends a PUT request with Type=1(NON), Code=3(PUT),
217c87c5fbaSopenharmony_ci# arbitrary payload, content type option
218c87c5fbaSopenharmony_ci#
219c87c5fbaSopenharmony_ci# check: sent request contains Type value indicating 1 and Code value
220c87c5fbaSopenharmony_ci# indicating 3
221c87c5fbaSopenharmony_ci#
222c87c5fbaSopenharmony_ci# verify: Server displays the received information
223c87c5fbaSopenharmony_ci#
224c87c5fbaSopenharmony_ci# check: Server sends response containing Type=1(NON), Code=68(2.04
225c87c5fbaSopenharmony_ci# Changed)
226c87c5fbaSopenharmony_ci#
227c87c5fbaSopenharmony_ci# verify: client displays received response
228c87c5fbaSopenharmony_ci#
229c87c5fbaSopenharmony_cifunction TD_COAP_CORE_07 {
230c87c5fbaSopenharmony_ci  clientopts="$callopts -m put -t 0 -e sometext -N"
231c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
232c87c5fbaSopenharmony_ci  echo "perform PUT (NON) on resource $testaddress"
233c87c5fbaSopenharmony_ci  start_coap_test $1
234c87c5fbaSopenharmony_ci}
235c87c5fbaSopenharmony_ci
236c87c5fbaSopenharmony_ci##
237c87c5fbaSopenharmony_ci# Perform DELETE transaction (NON mode) on resource /test
238c87c5fbaSopenharmony_ci#
239c87c5fbaSopenharmony_ci# pre: /test exists and can handle DELETE
240c87c5fbaSopenharmony_ci#
241c87c5fbaSopenharmony_ci# Client sends a DELETE request with Type=1(NON), Code=4(DELETE)
242c87c5fbaSopenharmony_ci#
243c87c5fbaSopenharmony_ci# check: sent request contains Type value indicating 1 and Code value
244c87c5fbaSopenharmony_ci# indicating 4
245c87c5fbaSopenharmony_ci#
246c87c5fbaSopenharmony_ci# check: Server sends response containing Type=1(NON), Code=66(2.02
247c87c5fbaSopenharmony_ci# Deleted)
248c87c5fbaSopenharmony_ci#
249c87c5fbaSopenharmony_ci# verify: client displays received response
250c87c5fbaSopenharmony_ci#
251c87c5fbaSopenharmony_cifunction TD_COAP_CORE_08 {
252c87c5fbaSopenharmony_ci  clientopts="$callopts -m delete -N"
253c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
254c87c5fbaSopenharmony_ci  echo "perform DELETE (NON) on resource $testaddress"
255c87c5fbaSopenharmony_ci  start_coap_test $1
256c87c5fbaSopenharmony_ci}
257c87c5fbaSopenharmony_ci
258c87c5fbaSopenharmony_ci##
259c87c5fbaSopenharmony_ci# Perform GET transaction with a separate response on resource /separate
260c87c5fbaSopenharmony_ci#
261c87c5fbaSopenharmony_ci# pre: resource /separate exists which cannot be served immediately and which
262c87c5fbaSopenharmony_ci# cannot be acknowledged in a piggy-backed way
263c87c5fbaSopenharmony_ci#
264c87c5fbaSopenharmony_ci# Client sends a confirmable GET request to server's resource
265c87c5fbaSopenharmony_ci#
266c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON), Code=1(GET), client
267c87c5fbaSopenharmony_ci# generated Message ID
268c87c5fbaSopenharmony_ci#
269c87c5fbaSopenharmony_ci# check: Server sends response containing Type=2(ACK), message ID same
270c87c5fbaSopenharmony_ci# as the request, empty Payload
271c87c5fbaSopenharmony_ci#
272c87c5fbaSopenharmony_ci# check: Server sends response containing Type=0(CON), Code=69(2.05
273c87c5fbaSopenharmony_ci# content), Payload=Content of the requested resource, Content type option
274c87c5fbaSopenharmony_ci#
275c87c5fbaSopenharmony_ci# check: Client sends response containing Type=2(ACK), message ID same
276c87c5fbaSopenharmony_ci# as the response, empty Payload
277c87c5fbaSopenharmony_ci#
278c87c5fbaSopenharmony_ci# verify: client displays received response
279c87c5fbaSopenharmony_ci#
280c87c5fbaSopenharmony_cifunction TD_COAP_CORE_09 {
281c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
282c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/separate
283c87c5fbaSopenharmony_ci  echo "perform GET (CON) on resource $testaddress which cannot be served immediately"
284c87c5fbaSopenharmony_ci  start_coap_test $1
285c87c5fbaSopenharmony_ci}
286c87c5fbaSopenharmony_ci
287c87c5fbaSopenharmony_ci##
288c87c5fbaSopenharmony_ci# Perform GET transaction with Token on resource /test
289c87c5fbaSopenharmony_ci#
290c87c5fbaSopenharmony_ci# pre: resource /test exists which can handle GET requests
291c87c5fbaSopenharmony_ci#
292c87c5fbaSopenharmony_ci# Client sends a confirmable GET request to server's resource
293c87c5fbaSopenharmony_ci# including Token option
294c87c5fbaSopenharmony_ci#
295c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON) and Code=1(GET), client
296c87c5fbaSopenharmony_ci# generated Token value, length of the token which should be between 1
297c87c5fbaSopenharmony_ci# to 8 B, Option Type=Token
298c87c5fbaSopenharmony_ci#
299c87c5fbaSopenharmony_ci# check: Server sends response containing Code=69(2.05 content),
300c87c5fbaSopenharmony_ci# length of the token should be between 1 to 8 B, Token value same as
301c87c5fbaSopenharmony_ci# the requested, Payload=Content of the requested resource, Content
302c87c5fbaSopenharmony_ci# type option
303c87c5fbaSopenharmony_ci#
304c87c5fbaSopenharmony_ci# verify: client displays received response
305c87c5fbaSopenharmony_ci#
306c87c5fbaSopenharmony_cifunction TD_COAP_CORE_10 {
307c87c5fbaSopenharmony_ci  clientopts="$callopts -m get -T sometok"
308c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
309c87c5fbaSopenharmony_ci  echo "perform GET (CON) on resource $testaddress with Token"
310c87c5fbaSopenharmony_ci  start_coap_test $1
311c87c5fbaSopenharmony_ci}
312c87c5fbaSopenharmony_ci
313c87c5fbaSopenharmony_ci##
314c87c5fbaSopenharmony_ci# Perform GET transaction without Token on resource /test
315c87c5fbaSopenharmony_ci#
316c87c5fbaSopenharmony_ci# pre: resource /test exists which can handle GET requests
317c87c5fbaSopenharmony_ci#
318c87c5fbaSopenharmony_ci# Client sends a confirmable GET request to server's resource
319c87c5fbaSopenharmony_ci# not containing Token option
320c87c5fbaSopenharmony_ci#
321c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON) and Code=1(GET), no Token
322c87c5fbaSopenharmony_ci# option
323c87c5fbaSopenharmony_ci#
324c87c5fbaSopenharmony_ci# check: Server sends response containing Code=69(2.05 content), no
325c87c5fbaSopenharmony_ci# Token option, Payload=Content of the requested resource, Content
326c87c5fbaSopenharmony_ci# type option
327c87c5fbaSopenharmony_ci#
328c87c5fbaSopenharmony_ci# verify: client displays received response
329c87c5fbaSopenharmony_ci#
330c87c5fbaSopenharmony_cifunction TD_COAP_CORE_11 {
331c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
332c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
333c87c5fbaSopenharmony_ci  echo "perform GET (CON mode) without Token on resource $testaddress"
334c87c5fbaSopenharmony_ci  start_coap_test $1
335c87c5fbaSopenharmony_ci}
336c87c5fbaSopenharmony_ci
337c87c5fbaSopenharmony_ci##
338c87c5fbaSopenharmony_ci# Perform GET transaction to resource /seg1/seg2/seg3
339c87c5fbaSopenharmony_ci#
340c87c5fbaSopenharmony_ci# pre: resource /seg1/seg2/seg3 exists on server
341c87c5fbaSopenharmony_ci#
342c87c5fbaSopenharmony_ci# Client sends a confirmable GET request to server's resource
343c87c5fbaSopenharmony_ci#
344c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON) and Code=1(GET), Option
345c87c5fbaSopenharmony_ci# type=URI-Path (one for each path segment)
346c87c5fbaSopenharmony_ci#
347c87c5fbaSopenharmony_ci# check: Server sends response containing Code=69(2.05 content),
348c87c5fbaSopenharmony_ci# Payload=Content of the requested resource, Content type option
349c87c5fbaSopenharmony_ci#
350c87c5fbaSopenharmony_ci# verify: client displays received response
351c87c5fbaSopenharmony_ci#
352c87c5fbaSopenharmony_cifunction TD_COAP_CORE_12 {
353c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
354c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/seg1/seg2/seg3
355c87c5fbaSopenharmony_ci  echo "perform GET (CON mode) on resource $testaddress"
356c87c5fbaSopenharmony_ci  start_coap_test $1
357c87c5fbaSopenharmony_ci}
358c87c5fbaSopenharmony_ci
359c87c5fbaSopenharmony_ci##
360c87c5fbaSopenharmony_ci# Perform GET transaction to resource /query
361c87c5fbaSopenharmony_ci#
362c87c5fbaSopenharmony_ci# pre: resource /query exists on server
363c87c5fbaSopenharmony_ci#
364c87c5fbaSopenharmony_ci# Client sends a confirmable GET request with three Query parameters
365c87c5fbaSopenharmony_ci# (e.g. ?first=1&second=2&third=3) to server's resource
366c87c5fbaSopenharmony_ci#
367c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON) and Code=1(GET), Option
368c87c5fbaSopenharmony_ci# type=URI-Query (More than one query parameter)
369c87c5fbaSopenharmony_ci#
370c87c5fbaSopenharmony_ci# check: Server sends response containing Type=0/2(Con/ACK),
371c87c5fbaSopenharmony_ci# Code=69(2.05 content), Payload=Content of the requested resource,
372c87c5fbaSopenharmony_ci# Content type option
373c87c5fbaSopenharmony_ci#
374c87c5fbaSopenharmony_ci# verify: client displays received response
375c87c5fbaSopenharmony_ci#
376c87c5fbaSopenharmony_cifunction TD_COAP_CORE_13 {
377c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
378c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/query
379c87c5fbaSopenharmony_ci  query="?first=1&second=2&third=3"
380c87c5fbaSopenharmony_ci  echo -e "perform GET (CON mode) on resource $testaddress with query $query"
381c87c5fbaSopenharmony_ci  testaddress=$testaddress$query
382c87c5fbaSopenharmony_ci  start_coap_test $1
383c87c5fbaSopenharmony_ci}
384c87c5fbaSopenharmony_ci
385c87c5fbaSopenharmony_ci##
386c87c5fbaSopenharmony_ci# Perform GET transaction to resource /test in lossy context
387c87c5fbaSopenharmony_ci#
388c87c5fbaSopenharmony_ci# pre: gateway is introduced and configured to produce packet loss,
389c87c5fbaSopenharmony_ci# resource /test exists on server
390c87c5fbaSopenharmony_ci#
391c87c5fbaSopenharmony_ci# Configuration=CoAP_CFG_02
392c87c5fbaSopenharmony_ci#
393c87c5fbaSopenharmony_ci# observe: One dropped request, one dropped request ACK, one dropped
394c87c5fbaSopenharmony_ci# response, one dropped response ACK and its retransmission, test
395c87c5fbaSopenharmony_ci# sequence should be executed several times
396c87c5fbaSopenharmony_ci#
397c87c5fbaSopenharmony_ci# Client sends a confirmable GET request to server's resource
398c87c5fbaSopenharmony_ci#
399c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON) and Code=1(GET), Client
400c87c5fbaSopenharmony_ci# generated Message ID
401c87c5fbaSopenharmony_ci#
402c87c5fbaSopenharmony_ci# check: Server sends response containing Type=2(ACK), Code=69(2.05
403c87c5fbaSopenharmony_ci# content), Payload=Content of the requested resource, Content type
404c87c5fbaSopenharmony_ci# option
405c87c5fbaSopenharmony_ci#
406c87c5fbaSopenharmony_ci# verify: client displays received response
407c87c5fbaSopenharmony_ci#
408c87c5fbaSopenharmony_cifunction TD_COAP_CORE_14 {
409c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
410c87c5fbaSopenharmony_ci  #FIXME: address for lossy context?
411c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/test
412c87c5fbaSopenharmony_ci  echo "perform GET (CON mode) on resource $testaddress in lossy context"
413c87c5fbaSopenharmony_ci  start_coap_test $1
414c87c5fbaSopenharmony_ci}
415c87c5fbaSopenharmony_ci
416c87c5fbaSopenharmony_ci##
417c87c5fbaSopenharmony_ci# Perform GET transaction to resource /separate in lossy context
418c87c5fbaSopenharmony_ci#
419c87c5fbaSopenharmony_ci# pre: gateway is introduced and configured to produce packet loss,
420c87c5fbaSopenharmony_ci# resource /separate exists which cannot be served immediately and
421c87c5fbaSopenharmony_ci# which cannot be acknowledged in a piggy-backed way
422c87c5fbaSopenharmony_ci#
423c87c5fbaSopenharmony_ci# Configuration=CoAP_CFG_02
424c87c5fbaSopenharmony_ci#
425c87c5fbaSopenharmony_ci# observe: One dropped request, one dropped request ACK, one dropped
426c87c5fbaSopenharmony_ci# response, one dropped response ACK and its retransmission, test
427c87c5fbaSopenharmony_ci# sequence should be executed several times
428c87c5fbaSopenharmony_ci#
429c87c5fbaSopenharmony_ci# Client sends a confirmable GET request to server's resource
430c87c5fbaSopenharmony_ci#
431c87c5fbaSopenharmony_ci# check: sent request contains Type=0(CON) and Code=1(GET), Client
432c87c5fbaSopenharmony_ci# generated Message ID
433c87c5fbaSopenharmony_ci#
434c87c5fbaSopenharmony_ci# check: server sends response containing Type=2(ACK), Message ID same
435c87c5fbaSopenharmony_ci# as the request, empty Payload
436c87c5fbaSopenharmony_ci#
437c87c5fbaSopenharmony_ci# check: Server sends response containing Type=0(CON), Code=69(2.05
438c87c5fbaSopenharmony_ci# content), Payload=Content of the requested resource, Content type
439c87c5fbaSopenharmony_ci# option
440c87c5fbaSopenharmony_ci#
441c87c5fbaSopenharmony_ci# check: Client sends response containing Type=2(ACK), message ID same
442c87c5fbaSopenharmony_ci# as the response, empty Payload
443c87c5fbaSopenharmony_ci#
444c87c5fbaSopenharmony_ci# verify: client displays received response
445c87c5fbaSopenharmony_ci#
446c87c5fbaSopenharmony_cifunction TD_COAP_CORE_15 {
447c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
448c87c5fbaSopenharmony_ci  #FIXME: address for lossy context?
449c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/separate
450c87c5fbaSopenharmony_ci  echo "perform GET (CON mode) on resource $testaddress in lossy context"
451c87c5fbaSopenharmony_ci  start_coap_test $1
452c87c5fbaSopenharmony_ci}
453c87c5fbaSopenharmony_ci
454c87c5fbaSopenharmony_ci### LINK ###
455c87c5fbaSopenharmony_ci
456c87c5fbaSopenharmony_ci##
457c87c5fbaSopenharmony_ci# Access to well-known interface for resource discovery
458c87c5fbaSopenharmony_ci#
459c87c5fbaSopenharmony_ci# Pre: client supports CoRE Link Format, server supports
460c87c5fbaSopenharmony_ci# /.well-known/core resource and the CoRE Link Format
461c87c5fbaSopenharmony_ci#
462c87c5fbaSopenharmony_ci# Client retrieves Server's list of resource
463c87c5fbaSopenharmony_ci#
464c87c5fbaSopenharmony_ci# check: client sends GET request for /.well-known/core resource
465c87c5fbaSopenharmony_ci#
466c87c5fbaSopenharmony_ci# check: server sends response containing content-type option
467c87c5fbaSopenharmony_ci# indicating 40 (application/link-format), payload indicating all the
468c87c5fbaSopenharmony_ci# links available on Server
469c87c5fbaSopenharmony_ci#
470c87c5fbaSopenharmony_ci# client displays the list of resources available on Server
471c87c5fbaSopenharmony_ci#
472c87c5fbaSopenharmony_cifunction TD_COAP_LINK_01 {
473c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
474c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/.well-known/core
475c87c5fbaSopenharmony_ci  echo "retrieve server's list of resource"
476c87c5fbaSopenharmony_ci  start_tcpdump $1
477c87c5fbaSopenharmony_ci  if [ $verbose ]; then
478c87c5fbaSopenharmony_ci    echo "client command: $COAP_CLIENT $clientopts $testaddress"
479c87c5fbaSopenharmony_ci  fi
480c87c5fbaSopenharmony_ci  clientoutput=$($COAP_CLIENT $clientopts "$testaddress")
481c87c5fbaSopenharmony_ci  if [[ ! $(echo $clientoutput | grep rt) ]] ; then
482c87c5fbaSopenharmony_ci    echo "no resource with attribute rt found on server"
483c87c5fbaSopenharmony_ci  else
484c87c5fbaSopenharmony_ci    rt="${clientoutput##*rt=}"
485c87c5fbaSopenharmony_ci    rt="${rt%%;*}"
486c87c5fbaSopenharmony_ci  fi
487c87c5fbaSopenharmony_ci  echo -e "\nOutput of client:"
488c87c5fbaSopenharmony_ci  echo -e $clientoutput
489c87c5fbaSopenharmony_ci  echo
490c87c5fbaSopenharmony_ci  kill_tcpdump
491c87c5fbaSopenharmony_ci}
492c87c5fbaSopenharmony_ci
493c87c5fbaSopenharmony_ci##
494c87c5fbaSopenharmony_ci# Use filtered requests for limiting discovery results
495c87c5fbaSopenharmony_ci#
496c87c5fbaSopenharmony_ci# Pre: client supports CoRE Link Format, server supports CoRE Link
497c87c5fbaSopenharmony_ci# Format and offers different types of resources (Type 1, Type 2
498c87c5fbaSopenharmony_ci# (extracted from /.well-knwon/core resource
499c87c5fbaSopenharmony_ci#
500c87c5fbaSopenharmony_ci# Client retrieves Server's list of resource of a specific Type 1
501c87c5fbaSopenharmony_ci#
502c87c5fbaSopenharmony_ci# check: client sends GET request for /.well-known/core resource
503c87c5fbaSopenharmony_ci# containing URI-Query indicating "rt=Type1"
504c87c5fbaSopenharmony_ci#
505c87c5fbaSopenharmony_ci# check: server sends response containing content-type option
506c87c5fbaSopenharmony_ci# indicating 40 (application/link-format), payload indicating only the
507c87c5fbaSopenharmony_ci# links of type Type1 available on server
508c87c5fbaSopenharmony_ci#
509c87c5fbaSopenharmony_ci# client displays the list of resources of type Type1 available on Server
510c87c5fbaSopenharmony_ci#
511c87c5fbaSopenharmony_cifunction TD_COAP_LINK_02 {
512c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
513c87c5fbaSopenharmony_ci  echo "retrieve server's list of resource for appropriate type"
514c87c5fbaSopenharmony_ci  if [[ ! -z $rt ]]; then
515c87c5fbaSopenharmony_ci    testaddress="coap://$SERVERTUP/.well-known/core?rt=$rt"
516c87c5fbaSopenharmony_ci  else
517c87c5fbaSopenharmony_ci    echo "no appropriate resource found. Skipping test"
518c87c5fbaSopenharmony_ci    return
519c87c5fbaSopenharmony_ci  fi
520c87c5fbaSopenharmony_ci  start_coap_test $1
521c87c5fbaSopenharmony_ci}
522c87c5fbaSopenharmony_ci
523c87c5fbaSopenharmony_ci### BLOCK ###
524c87c5fbaSopenharmony_ci
525c87c5fbaSopenharmony_ci##
526c87c5fbaSopenharmony_ci# Perform GET blockwise transfer for large resource (early negotiation)
527c87c5fbaSopenharmony_ci#
528c87c5fbaSopenharmony_ci# pre: Client supports Block transfers, Server supports Block
529c87c5fbaSopenharmony_ci# transfers, Server offers a large resource /large, client knows
530c87c5fbaSopenharmony_ci# /large requires block transfer
531c87c5fbaSopenharmony_ci#
532c87c5fbaSopenharmony_ci# Client is requested to retrieve resource /large
533c87c5fbaSopenharmony_ci#
534c87c5fbaSopenharmony_ci# check: client sends a GET request containing Block2 option indicating block
535c87c5fbaSopenharmony_ci# number 0 and desired block size
536c87c5fbaSopenharmony_ci#
537c87c5fbaSopenharmony_ci# check: Each request contains Block2 option indicating block number
538c87c5fbaSopenharmony_ci# of the next block and size of the last received block
539c87c5fbaSopenharmony_ci#
540c87c5fbaSopenharmony_ci# check: server sends further responses containing Block2 option
541c87c5fbaSopenharmony_ci# indicating block number and size
542c87c5fbaSopenharmony_ci#
543c87c5fbaSopenharmony_ci# verify: client displays received response
544c87c5fbaSopenharmony_ci#
545c87c5fbaSopenharmony_cifunction TD_COAP_BLOCK_01 {
546c87c5fbaSopenharmony_ci  clientopts="$callopts -m get -b 1024"
547c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/large
548c87c5fbaSopenharmony_ci  echo "perform GET on large resource $testaddress (early negotiation)"
549c87c5fbaSopenharmony_ci  start_coap_test $1
550c87c5fbaSopenharmony_ci}
551c87c5fbaSopenharmony_ci
552c87c5fbaSopenharmony_ci##
553c87c5fbaSopenharmony_ci# Perform GET blockwise transfer for large resource (late negotiation)
554c87c5fbaSopenharmony_ci#
555c87c5fbaSopenharmony_ci# pre: Client supports Block transfers, Server supports Block
556c87c5fbaSopenharmony_ci# transfers, Server offers a large resource /large, client does not
557c87c5fbaSopenharmony_ci# know /large requires block transfer
558c87c5fbaSopenharmony_ci#
559c87c5fbaSopenharmony_ci# Client is requested to retrieve resource /large
560c87c5fbaSopenharmony_ci#
561c87c5fbaSopenharmony_ci# check: client sends a GET request not containing Block2 option
562c87c5fbaSopenharmony_ci#
563c87c5fbaSopenharmony_ci# check: server sends response containing Block2 option indicating
564c87c5fbaSopenharmony_ci# block number and size
565c87c5fbaSopenharmony_ci#
566c87c5fbaSopenharmony_ci# check: Each request contains Block2 option indicating block number
567c87c5fbaSopenharmony_ci# of the next block and size of the last received block or the desired
568c87c5fbaSopenharmony_ci# size of the next block
569c87c5fbaSopenharmony_ci#
570c87c5fbaSopenharmony_ci# check: server sends further responses containing Block2 option
571c87c5fbaSopenharmony_ci# indicating block number and size
572c87c5fbaSopenharmony_ci#
573c87c5fbaSopenharmony_ci# verify: client displays received response
574c87c5fbaSopenharmony_ci#
575c87c5fbaSopenharmony_cifunction TD_COAP_BLOCK_02 {
576c87c5fbaSopenharmony_ci  clientopts="$callopts -m get"
577c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/large
578c87c5fbaSopenharmony_ci  echo "perform GET blockwise transfer for large resource (late negotiation) on resource $testaddress"
579c87c5fbaSopenharmony_ci  start_coap_test $1 stop
580c87c5fbaSopenharmony_ci}
581c87c5fbaSopenharmony_ci
582c87c5fbaSopenharmony_ci##
583c87c5fbaSopenharmony_ci# Perform PUT blockwise transfer for large resource
584c87c5fbaSopenharmony_ci#
585c87c5fbaSopenharmony_ci# pre: Client supports Block transfers, Server supports Block
586c87c5fbaSopenharmony_ci# transfers, Server offers a large updatable resource /large-update
587c87c5fbaSopenharmony_ci#
588c87c5fbaSopenharmony_ci# Client is requested to retrieve resource /large-update on server
589c87c5fbaSopenharmony_ci#
590c87c5fbaSopenharmony_ci# check: client sends a PUT request containing Block1 option
591c87c5fbaSopenharmony_ci# indicating block number 0 and block size
592c87c5fbaSopenharmony_ci#
593c87c5fbaSopenharmony_ci# check: client sends further request containing Block1 option
594c87c5fbaSopenharmony_ci# indicating block number and size
595c87c5fbaSopenharmony_ci#
596c87c5fbaSopenharmony_ci# verify: server indicates presence of the complete updated resource
597c87c5fbaSopenharmony_ci# /large-update
598c87c5fbaSopenharmony_ci#
599c87c5fbaSopenharmony_cifunction TD_COAP_BLOCK_03 {
600c87c5fbaSopenharmony_ci  clientopts="$callopts -m put -b 1024"
601c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/large-update
602c87c5fbaSopenharmony_ci  echo "perform PUT on large resource $testaddress"
603c87c5fbaSopenharmony_ci  start_coap_test $1
604c87c5fbaSopenharmony_ci}
605c87c5fbaSopenharmony_ci
606c87c5fbaSopenharmony_ci##
607c87c5fbaSopenharmony_ci# Perform POST blockwise transfer for large resource
608c87c5fbaSopenharmony_ci#
609c87c5fbaSopenharmony_ci# pre: Client supports Block transfers, Server supports Block
610c87c5fbaSopenharmony_ci# transfers, Server accepts creation of new resources on /large-create
611c87c5fbaSopenharmony_ci#
612c87c5fbaSopenharmony_ci# Client is requested to create a new resource on server
613c87c5fbaSopenharmony_ci#
614c87c5fbaSopenharmony_ci# check: client sends a POST request containing Block1 option
615c87c5fbaSopenharmony_ci# indicating block number 0 and block size
616c87c5fbaSopenharmony_ci#
617c87c5fbaSopenharmony_ci# check: client sends further requests containing Block1 option
618c87c5fbaSopenharmony_ci# indicating block number and size
619c87c5fbaSopenharmony_ci#
620c87c5fbaSopenharmony_ci# verify: server indicates presence of the complete new resource
621c87c5fbaSopenharmony_ci#
622c87c5fbaSopenharmony_cifunction TD_COAP_BLOCK_04 {
623c87c5fbaSopenharmony_ci  clientopts="$callopts -m post -b 1024"
624c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/large-create
625c87c5fbaSopenharmony_ci  echo "perform POST on large resource $testaddress"
626c87c5fbaSopenharmony_ci  start_coap_test $1
627c87c5fbaSopenharmony_ci}
628c87c5fbaSopenharmony_ci
629c87c5fbaSopenharmony_ci# # OBS
630c87c5fbaSopenharmony_ci
631c87c5fbaSopenharmony_ci##
632c87c5fbaSopenharmony_ci# Handle observe option
633c87c5fbaSopenharmony_ci#
634c87c5fbaSopenharmony_ci# pre: client supports Observe option, server supports observe option,
635c87c5fbaSopenharmony_ci# server offers an observable resource /obs which changes periodically
636c87c5fbaSopenharmony_ci# (e.g. every 5s.)
637c87c5fbaSopenharmony_ci#
638c87c5fbaSopenharmony_ci# client is requested to observe resource /obs on server
639c87c5fbaSopenharmony_ci#
640c87c5fbaSopenharmony_ci# check: client sends a GET request containing observe option
641c87c5fbaSopenharmony_ci#
642c87c5fbaSopenharmony_ci# verify: client displays the received information
643c87c5fbaSopenharmony_ci#
644c87c5fbaSopenharmony_ci# check: server sends response containing observe option indicating
645c87c5fbaSopenharmony_ci# increasing values, as resource changes
646c87c5fbaSopenharmony_ci#
647c87c5fbaSopenharmony_ci# verify: client displays the updated information
648c87c5fbaSopenharmony_ci#
649c87c5fbaSopenharmony_cifunction TD_COAP_OBS_01 {
650c87c5fbaSopenharmony_ci  # we need some time to verify the correct behavior
651c87c5fbaSopenharmony_ci  clientopts="$callopts -s 0" #"-v 5 -B $longtimeout -s 0"
652c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/obs
653c87c5fbaSopenharmony_ci  echo "observe resource $testaddress"
654c87c5fbaSopenharmony_ci  start_coap_test $1
655c87c5fbaSopenharmony_ci}
656c87c5fbaSopenharmony_ci
657c87c5fbaSopenharmony_ci##
658c87c5fbaSopenharmony_ci# Stop resource observation
659c87c5fbaSopenharmony_ci#
660c87c5fbaSopenharmony_ci# pre: client supports Observe option, server supports observe option,
661c87c5fbaSopenharmony_ci# server offers an observable resource /obs which changes periodically
662c87c5fbaSopenharmony_ci# (e.g. every 5s.), client is observing /obs on server
663c87c5fbaSopenharmony_ci#
664c87c5fbaSopenharmony_ci# client is requested to stop observing resource /obs on server
665c87c5fbaSopenharmony_ci#
666c87c5fbaSopenharmony_ci# check: client sends a GET request not containing observe option
667c87c5fbaSopenharmony_ci#
668c87c5fbaSopenharmony_ci# verify: client displays the received information
669c87c5fbaSopenharmony_ci#
670c87c5fbaSopenharmony_ci# check: server does not send further response
671c87c5fbaSopenharmony_ci#
672c87c5fbaSopenharmony_ci# verify: client does not display the updated information
673c87c5fbaSopenharmony_ci#
674c87c5fbaSopenharmony_ci# function TD_COAP_OBS_02 {
675c87c5fbaSopenharmony_ci#   #FIXME: client does not support stopping yet
676c87c5fbaSopenharmony_ci  # we need some time to verify the correct behavior
677c87c5fbaSopenharmony_ci#   clientopts="-v 5 -B $longtimeout -s 1"
678c87c5fbaSopenharmony_ci#   testaddress=coap://$SERVERTUP/obs
679c87c5fbaSopenharmony_ci#   echo "stop observing resource $testaddress"
680c87c5fbaSopenharmony_ci#   start_coap_test $1
681c87c5fbaSopenharmony_ci# }
682c87c5fbaSopenharmony_ci
683c87c5fbaSopenharmony_ci##
684c87c5fbaSopenharmony_ci# client detection of deregistration (Max-Age)
685c87c5fbaSopenharmony_ci#
686c87c5fbaSopenharmony_ci# pre: client supports Observe option, server supports observe option,
687c87c5fbaSopenharmony_ci# server offers an observable resource /obs which changes periodically
688c87c5fbaSopenharmony_ci# (e.g. every 5s.), client is observing /obs on server
689c87c5fbaSopenharmony_ci#
690c87c5fbaSopenharmony_ci# Server is rebooted
691c87c5fbaSopenharmony_ci#
692c87c5fbaSopenharmony_ci# check: Server does not send notifications
693c87c5fbaSopenharmony_ci#
694c87c5fbaSopenharmony_ci# verify: Client does not display updated information
695c87c5fbaSopenharmony_ci#
696c87c5fbaSopenharmony_ci# verify: After Max-Age expiration, client sends a new GET with observe
697c87c5fbaSopenharmony_ci# option for Server's observable resource
698c87c5fbaSopenharmony_ci#
699c87c5fbaSopenharmony_ci# check: Sent request contains Observe option indicating 0
700c87c5fbaSopenharmony_ci#
701c87c5fbaSopenharmony_ci# check: Server sends response containing Observe option
702c87c5fbaSopenharmony_ci#
703c87c5fbaSopenharmony_ci# verify: client displays the received information
704c87c5fbaSopenharmony_ci#
705c87c5fbaSopenharmony_ci# check: Server sends response containing Observe option indicating
706c87c5fbaSopenharmony_ci# increasing values, as resource changes
707c87c5fbaSopenharmony_ci#
708c87c5fbaSopenharmony_ci# verify: Client displays the updated information
709c87c5fbaSopenharmony_ci#
710c87c5fbaSopenharmony_cifunction TD_COAP_OBS_03 {
711c87c5fbaSopenharmony_ci  clientopts="$callopts -s 0"#"-v5 -B $longtimeout -s 0"
712c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/obs
713c87c5fbaSopenharmony_ci  echo "client detection of deregistration (Max-Age)"
714c87c5fbaSopenharmony_ci  start_coap_test $1
715c87c5fbaSopenharmony_ci}
716c87c5fbaSopenharmony_ci
717c87c5fbaSopenharmony_ci##
718c87c5fbaSopenharmony_ci# Server detection of deregistration (client OFF)
719c87c5fbaSopenharmony_ci#
720c87c5fbaSopenharmony_ci# pre: client supports Observe option, server supports observe option,
721c87c5fbaSopenharmony_ci# server offers an observable resource /obs which changes periodically
722c87c5fbaSopenharmony_ci# (e.g. every 5s.), client is observing /obs on server
723c87c5fbaSopenharmony_ci#
724c87c5fbaSopenharmony_ci# Client is switched off
725c87c5fbaSopenharmony_ci#
726c87c5fbaSopenharmony_ci# check: Server’s confirmable responses are not acknowledged
727c87c5fbaSopenharmony_ci#
728c87c5fbaSopenharmony_ci# verify: After some delay, Server does not send further responses
729c87c5fbaSopenharmony_ci#
730c87c5fbaSopenharmony_cifunction TD_COAP_OBS_04 {
731c87c5fbaSopenharmony_ci  clientopts="$callopts -s 0"
732c87c5fbaSopenharmony_ci#"-v 5 -B $longtimeout -s 0"
733c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/obs
734c87c5fbaSopenharmony_ci  echo "server detection of deregistration (client off)"
735c87c5fbaSopenharmony_ci  start_coap_test $1 wait
736c87c5fbaSopenharmony_ci}
737c87c5fbaSopenharmony_ci
738c87c5fbaSopenharmony_ci##
739c87c5fbaSopenharmony_ci# Server detection of deregistration (explicit RST)
740c87c5fbaSopenharmony_ci#
741c87c5fbaSopenharmony_ci# pre: client supports Observe option, server supports observe option,
742c87c5fbaSopenharmony_ci# server offers an observable resource /obs which changes periodically
743c87c5fbaSopenharmony_ci# (e.g. every 5s.), client is observing /obs on server
744c87c5fbaSopenharmony_ci#
745c87c5fbaSopenharmony_ci# Client is rebooted
746c87c5fbaSopenharmony_ci#
747c87c5fbaSopenharmony_ci# check: Server sends response containing Observe option
748c87c5fbaSopenharmony_ci#
749c87c5fbaSopenharmony_ci# verify: Client discards response and does not display information
750c87c5fbaSopenharmony_ci#
751c87c5fbaSopenharmony_ci# check: Client sends RST to Server
752c87c5fbaSopenharmony_ci#
753c87c5fbaSopenharmony_ci# check: Server does not send further response
754c87c5fbaSopenharmony_ci#
755c87c5fbaSopenharmony_cifunction TD_COAP_OBS_05 {
756c87c5fbaSopenharmony_ci  clientopts="$callopts -s 0 -p $CLIENTPORT"
757c87c5fbaSopenharmony_ci#"-v 5 -B $longtimeout -p $CLIENTPORT -s 0"
758c87c5fbaSopenharmony_ci  testaddress=coap://$SERVERTUP/obs
759c87c5fbaSopenharmony_ci  echo "server detection of deregistration (explicit RST)"
760c87c5fbaSopenharmony_ci  start_coap_test $1 stop
761c87c5fbaSopenharmony_ci  clientopts="$callopts -p $CLIENTPORT -s 0 -N"
762c87c5fbaSopenharmony_ci#"-v 5 -B $clienttimeout -p $CLIENTPORT -s 0 -N"
763c87c5fbaSopenharmony_ci  testaddress=coap://[::1]/obs
764c87c5fbaSopenharmony_ci  start_coap_test $1
765c87c5fbaSopenharmony_ci}
766