Merge test folder of test branch
[iotivity.git] / test / src / automation / robot / tc / interop_app / Iotivity_ComponentInterOp_RI_Test.txt
1 #####################################################################
2 #
3 # Copyright 2018 Samsung Electronics All Rights Reserved.
4 #
5 #
6 #
7 # Licensed under the Apache License, Version 2.0 (the "License");
8 # you may not use this file except in compliance with the License.
9 # You may obtain a copy of the License at
10 #
11 #      http://www.apache.org/licenses/LICENSE-2.0
12 #
13 # Unless required by applicable law or agreed to in writing, software
14 # distributed under the License is distributed on an "AS IS" BASIS,
15 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16 # See the License for the specific language governing permissions and
17 # limitations under the License.
18 #
19 #
20 #####################################################################
21
22 *** Settings ***
23 Documentation     Test RI Interoperability for all supported platform
24 Variables         ../../helper/variable.py
25 Library           Remote    ${REMOTE_IP}:${REMOTE_PORT}    WITH NAME    Local
26 Resource    ../../helper/Iotivity_Interop_Test_Helper.txt
27 Resource    ../../helper/Iotivity_Test_Helper.txt
28 Suite Setup    Do Suite Setup
29 Suite Teardown    Do Suite Teardown
30 Test Setup       Do Test Setup
31 Test Teardown    Do Test Teardown
32
33 *** Test Cases ***
34 1 RI DISCOVERY MULTICAST Resource
35     [Documentation]    |Item |Description |
36     ...    |since |2017-04-07 |
37     ...    |see | |
38     ...    |objective | Test the feature multicast resource discovery |
39     ...    |target | |
40     ...    |test_data | Menu option: 100, 104, 1, 12, 0 |
41     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
42     ...    |pre_condition | 2. Start RI interop server and client apps |
43     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
44     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
45     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
46     ...    |procedure | 1. [Client] Select Option 100 to select NON as message type |
47     ...    |procedure | 2. [Client] Select Option 12 to discover resource |
48     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
49     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
50     ...    |expected | Created resources in TestStep will show up in client |
51     [Tags]    nsmt
52     [Setup]    Do Custom Test Setup
53     ${log}    Provide Input    ${second_app}    100    1s
54     Do Discover Multiple
55     Check Substring Count    ${log}    6    ${GE}    Found a resource!!
56     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /BinarySwitchResURI
57     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /AirFlowResURI
58     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /TemperatureResURI
59     Check Substring Count    ${log}    0    ${EQ}    uri of the found resource is /Vendor/AirConditioner/Swinger
60
61 2 RI DISCOVERY MULTICAST Device
62     [Documentation]    |Item |Description |
63     ...    |since |2017-04-07 |
64     ...    |see | |
65     ...    |objective | Test the feature multicast resource discovery |
66     ...    |target | |
67     ...    |test_data | Menu option: 100, 104, 1, 10, 0 |
68     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
69     ...    |pre_condition | 2. Start RI interop server and client apps |
70     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
71     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
72     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
73     ...    |procedure | 1. [Client] Select Option 100 to select NON as message type |
74     ...    |procedure | 2. [Client] Select Option 10 to discover device |
75     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
76     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
77     ...    |expected | Created devices in precondition and procedure will show up in client |
78     [Tags]    nsmt
79     [Setup]    Do Custom Test Setup
80     ${log}    Provide Input    ${second_app}    100    1s
81     Do Discover Multiple
82     ${log}    Provide Input    ${second_app}    10    15s
83     Check Substring Count    ${log}    1    ${GE}    Device Information received
84     Check Substring Count    ${log}    1    ${GE}    Vendor Smart Home AirCon Device
85
86 3 RI DISCOVERY MULTICAST Platform
87     [Documentation]    |Item |Description |
88     ...    |since |2017-04-07 |
89     ...    |see | |
90     ...    |objective | Test the feature multicast platform discovery |
91     ...    |target | |
92     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
93     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
94     ...    |pre_condition | 2. Start RI interop server and client apps |
95     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
96     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
97     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
98     ...    |procedure | 1. [Client] Select Option 100 to select NON as message type |
99     ...    |procedure | 2. [Client] Select Option 11 to discover platform |
100     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
101     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
102     ...    |expected | Created resources in precondition will show up in client |
103     [Tags]    nsmt
104     [Setup]    Do Custom Test Setup
105     ${log}    Provide Input    ${second_app}    100    1s
106     Do Discover Multiple
107     ${log}    Provide Input    ${second_app}    11    15s
108     Check Substring Count    ${log}    2    ${GE}    Platform Information received
109
110 4 RI DISCOVERY UNICAST Resource
111     [Documentation]    |Item |Description |
112     ...    |since |2017-04-07 |
113     ...    |see | |
114     ...    |objective | Test the feature unicast resource discovery |
115     ...    |target | |
116     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
117     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
118     ...    |pre_condition | 2. Start RI interop server and client apps |
119     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
120     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
121     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
122     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
123     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
124     ...    |procedure | 1. [Client] Select Option 13 to Discover Resources - Unicast |
125     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
126     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
127     ...    |expected | All the resource should response to the GET request |
128     [Tags]    con    non
129     ${log}    Provide Input    ${second_app}    13    15s
130     Check Substring Count    ${log}    7    ${GE}    Found a resource!!
131     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /BinarySwitchResURI
132     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /AirFlowResURI
133     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /TemperatureResURI
134
135 5 RI RI DISCOVERY MULTICAST With Query
136     [Documentation]    |Item |Description |
137     ...    |since |2017-04-07 |
138     ...    |see | |
139     ...    |objective | Test the feature multicast resource discovery with resource type query |
140     ...    |target | |
141     ...    |test_data | Menu option: 100, 104, 1, 14, 0 |
142     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
143     ...    |pre_condition | 2. Start RI interop server and client apps |
144     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
145     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
146     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
147     ...    |procedure | 1. [Client] Select Option 100 to select NON as message type |
148     ...    |procedure | 2. [Client] Select Option 14 to Discover Resources - Multicast with Query |
149     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
150     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
151     ...    |expected | Test the feature multicast resource discovery with resource type query |
152     [Tags]    nsmt
153     [Setup]    Do Custom Test Setup
154     ${log}    Provide Input    ${second_app}    100    1s
155     ${log}    Provide Input    ${second_app}    14    15s
156     Check Substring Count    ${log}    1    ${GE}    Found a resource!!
157     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /TemperatureResURI
158
159 6 RI CRUDN GET
160     [Documentation]    |Item |Description |
161     ...    |since |2017-04-07 |
162     ...    |see | |
163     ...    |objective | Test GET Request and Response is working |
164     ...    |target | |
165     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
166     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
167     ...    |pre_condition | 2. Start RI interop server and client apps |
168     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
169     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
170     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
171     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
172     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
173     ...    |procedure | 1. [Client] Select Option 15 to send GET Request to Vertical Resources |
174     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
175     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
176     ...    |expected | All the resource should response to the GET request |
177     [Tags]    con    non
178     ${log}    Provide Input    ${second_app}    15    15s
179     Check Substring Count    ${log}    4    ${GE}    Response: GET request was successful
180     Check Substring Count    ${log}    1    ${GE}    The representation has uri: /BinarySwitchResURI
181     Check Substring Count    ${log}    1    ${GE}    The representation has uri: /AirFlowResURI
182     Check Substring Count    ${log}    1    ${GE}    The representation has uri: /TemperatureResURI
183     ${log}    Get Output    ${first_app}
184     Check Substring Count    ${log}    4    ${GE}    Inside handleGetRequest...
185
186 7 RI CRUDN POST Vertial
187     [Documentation]    |Item |Description |
188     ...    |since |2017-04-07 |
189     ...    |see | |
190     ...    |objective | Test Partial Update(POST) is working fine |
191     ...    |target | |
192     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
193     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
194     ...    |pre_condition | 2. Start RI interop server and client apps |
195     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
196     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
197     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
198     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
199     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
200     ...    |procedure | 1. [Client] Select Option 15 to send GET Request to Vertical Resources |
201     ...    |procedure | 1. [Client] Select Option 19 to send POST Request to Vertical Resources |
202     ...    |procedure | 1. [Client] Select Option 15 to send GET Request to Vertical Resources |
203     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
204     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
205     ...    |expected | Both the representation of light and fan resource should be updated |
206     [Tags]    con    non
207     ${log}    Provide Input    ${second_app}    15    15s
208     ${log}    Provide Input    ${second_app}    19    15s
209     ${log}    Provide Input    ${second_app}    15    25s
210     Check Substring Count    ${log}    8    ${GE}    Response: GET request was successful
211     Check Substring Count    ${log}    4    ${GE}    Response: POST request was successful
212     Check Substring Count    ${log}    1    ${GE}    direction : up
213     ${return}    Match Any String    ${log}    direction : right    direction : left
214     Should Be True    ${return}
215     ${log}    Get Output    ${first_app}
216     Check Substring Count    ${log}    4    ${GE}    Inside handlePostRequest...
217     Check Substring Count    ${log}    8    ${GE}    Inside handleGetRequest...
218
219 8 RI CRUDN POST Core
220     [Documentation]    |Item |Description |
221     ...    |since |2017-04-07 |
222     ...    |see | |
223     ...    |objective | Test Partial Update(POST) can not change core resource attributes |
224     ...    |target | |
225     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
226     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
227     ...    |pre_condition | 2. Start RI interop server and client apps |
228     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
229     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
230     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
231     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
232     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
233     ...    |procedure | 1. [Client] Select Option 16 to send GET Request to Core Resources |
234     ...    |procedure | 1. [Client] Select Option 20 to send Post Request to Core Resources |
235     ...    |procedure | 1. [Client] Select Option 16 to send GET Request to Core Resources |
236     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
237     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
238     ...    |expected | No core defined resources will be updated |
239     [Tags]    con    non
240     ${log}    Provide Input    ${second_app}    16    15s
241     ${log}    Provide Input    ${second_app}    20    15s
242     ${log}    Provide Input    ${second_app}    16    15s
243     Check Substring Count    ${log}    4    ${GE}    Response: GET request was successful
244     Run Keyword If    '${os2}' != '${android}'    Check Substring Count    ${log}    2    ${GE}    onPOST Response error: 46
245     Run Keyword If    '${os2}' == '${android}'    Check Substring Count    ${log}    2    ${GE}    onPostCallback UNAUTHORIZED_REQ
246     Check Substring Count    ${log}    2    ${GE}    n : Vendor Smart Home AirCon Device
247     Check Substring Count    ${log}    2    ${GE}    mnmn : Vendor
248
249 9 RI CRUDN PUT Vertical
250     [Documentation]    |Item |Description |
251     ...    |since |2017-04-07 |
252     ...    |see | |
253     ...    |objective | Test Complete Update(PUT) is rejected by vertical resources |
254     ...    |target | |
255     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
256     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
257     ...    |pre_condition | 2. Start RI interop server and client apps |
258     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
259     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
260     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
261     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
262     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
263     ...    |procedure | 1. [Client] Select Option 15 to send GET Request to Vertical Resources |
264     ...    |procedure | 1. [Client] Send PUT Request to Vertical Resources |
265     ...    |procedure | 1. [Client] Select Option 15 to send GET Request to Vertical Resources |
266     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
267     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
268     ...    |expected | The servers should completely updae their representation upon receiving PUT request |
269     [Tags]    con    non
270     ${log}    Provide Input    ${second_app}    15    15s
271     ${log}    Provide Input    ${second_app}    17    20s
272     ${log}    Provide Input    ${second_app}    15    15s
273     Check Substring Count    ${log}    4    ${GE}    Response: GET request was successful
274     #Run Keyword If    '${os2}' != '${android}'    Check Substring Count    ${log}    4    ${GE}    onPUT Response error: 21
275     #Run Keyword If    '${os2}' == '${android}'    Check Substring Count    ${log}    4    ${GE}    onPutCallback INVALID_QUERY
276     Check Substring Count    ${log}    1    ${GE}    direction : up
277     BuiltIn.Sleep    60s
278     ${log}    Get Output    ${first_app}
279     Check Substring Count    ${log}    4    ${GE}    Inside handlePutRequest...
280     Check Substring Count    ${log}    8    ${GE}    Inside handleGetRequest...
281
282 10 RI CRUDN PUT Core
283     [Documentation]    |Item |Description |
284     ...    |since |2017-04-07 |
285     ...    |see | |
286     ...    |objective | Test Complete Update(PUT) can not change core resource attributes |
287     ...    |target | |
288     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
289     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
290     ...    |pre_condition | 2. Start RI interop server and client apps |
291     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
292     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
293     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
294     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
295     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
296     ...    |procedure | 1. [Client] Select Option 16 to send GET Request to Core Resources |
297     ...    |procedure | 1. [Client] Select Option 18 to send PUT Request to Core Resources |
298     ...    |procedure | 1. [Client] Select Option 16 to send GET Request to Core Resources |
299     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
300     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
301     ...    |expected | Both the representation of light and fan resource should be updated |
302     [Tags]    con    non
303     ${log}    Provide Input    ${second_app}    16    15s
304     ${log}    Provide Input    ${second_app}    18    15s
305     ${log}    Provide Input    ${second_app}    16    15s
306     Check Substring Count    ${log}    4    ${GE}    Response: GET request was successful
307     Run Keyword If    '${os2}' != '${android}'    Check Substring Count    ${log}    2    ${GE}    onPUT Response error: 46
308     Run Keyword If    '${os2}' == '${android}'    Check Substring Count    ${log}    2    ${GE}    onPutCallback UNAUTHORIZED_REQ
309     Check Substring Count    ${log}    2    ${GE}    n : Vendor Smart Home AirCon Device
310     Check Substring Count    ${log}    2    ${GE}    mnmn : Vendor
311
312 11 RI CRUDN DELETE Vertical
313     [Documentation]    |Item |Description |
314     ...    |since |2017-04-07 |
315     ...    |see | |
316     ...    |objective | Test Delete is working fine |
317     ...    |target | |
318     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
319     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
320     ...    |pre_condition | 2. Start RI interop server and client apps |
321     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
322     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
323     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
324     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
325     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
326     ...    |procedure | 1. [Client] Select Option 15 to Send GET Request to Vertical Resources |
327     ...    |procedure | 2. [Client] Select Option 21 to Send Delete Request to Vertical Resources |
328     ...    |procedure | 3. [Client] Select Option 15 to Send GET Request to Vertical Resources |
329     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
330     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
331     ...    |expected | The server resources should be deleted upon receiving delete request from client |
332     [Tags]    con    non
333     ${log}    Provide Input    ${second_app}    15    15s
334     ${log}    Provide Input    ${second_app}    21    15s
335     ${log}    Provide Input    ${second_app}    15    25s
336     Check Substring Count    ${log}    4    ${GE}    Response: GET request was successful
337     Check Substring Count    ${log}    4    ${GE}    Response: DELETE request was successful
338     Run Keyword If    '${os2}' != '${android}'    Check Substring Count    ${log}    4    ${GE}    onGET Response error: 33
339     Run Keyword If    '${os2}' == '${android}'    Check Substring Count    ${log}    4    ${GE}    onGetCallback NO_RESOURCE
340     BuiltIn.Sleep    60s
341     ${log}    Get Output    ${first_app}
342     Check Substring Count    ${log}    4    ${GE}    Inside handleDeleteRequest...
343     Check Substring Count    ${log}    4    ${GE}    Inside handleGetRequest...
344
345 12 RI CRUDN DELETE Core
346     [Documentation]    |Item |Description |
347     ...    |since |2017-04-07 |
348     ...    |see | |
349     ...    |objective | Test Delete is working fine |
350     ...    |target | |
351     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
352     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
353     ...    |pre_condition | 2. Start RI interop server and client apps |
354     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
355     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
356     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
357     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
358     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
359     ...    |procedure | 1. [Client] Select Option 16 to Send GET Request to Core Resources |
360     ...    |procedure | 2. [Client] Select Option 22 to Send Delete Request to Core Resources |
361     ...    |procedure | 3. [Client] Select Option 16 to Send GET Request to Core Resources |
362     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
363     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
364     ...    |expected | The core resources should not be deleted upon receiving delete request from client |
365     [Tags]    con    non
366     ${log}    Provide Input    ${second_app}    16    15s
367     ${log}    Provide Input    ${second_app}    22    15s
368     ${log}    Provide Input    ${second_app}    16    15s
369     Check Substring Count    ${log}    4    ${GE}    Response: GET request was successful
370     Run Keyword If    '${os2}' != '${android}'    Check Substring Count    ${log}    2    ${GE}    onDELETE Response error: 46
371     Run Keyword If    '${os2}' == '${android}'    Check Substring Count    ${log}    2    ${GE}    onDeleteCallback UNAUTHORIZED_REQ
372
373 13 RI CRUDN Observe Vertical
374     [Documentation]    |Item |Description |
375     ...    |since |2017-04-07 |
376     ...    |see | |
377     ...    |objective | Test Delete request can not delete core defined resources |
378     ...    |target | |
379     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
380     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
381     ...    |pre_condition | 2. Start RI interop server and client apps |
382     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
383     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
384     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
385     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
386     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
387     ...    |procedure | 1. [Client] Select Option 23 to Send Observe Request to Vertical Observable Resources |
388     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
389     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
390     ...    |expected | Smart home resources should add the client as observer |
391     [Tags]    con    non
392     ${log}    Provide Input    ${second_app}    23    15s
393     Check Substring Count    ${log}    3    ${GE}    SequenceNumber: 0
394     Check Substring Count    ${log}    1    ${GE}    The representation has uri: /BinarySwitchResURI
395     Check Substring Count    ${log}    1    ${GE}    The representation has uri: /AirFlowResURI
396     Check Substring Count    ${log}    1    ${GE}    The representation has uri: /TemperatureResURI
397     ${log}    Get Output    ${first_app}
398     Check Substring Count    ${log}    3    ${GE}    Inside handleObserveRequest...
399
400 14 RI CRUDN Observe Core
401     [Documentation]    |Item |Description |
402     ...    |since |2017-04-07 |
403     ...    |see | |
404     ...    |objective | Test Observe request to vedor observale resource is working fine |
405     ...    |target | |
406     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
407     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
408     ...    |pre_condition | 2. Start RI interop server and client apps |
409     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
410     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
411     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
412     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
413     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
414     ...    |procedure | 1. [Client] Select Option 15 to Send Observe Request to Core Resources |
415     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
416     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
417     ...    |expected | Core defined resources should reject observe request |
418     [Tags]    con    non
419     ${log}    Provide Input    ${second_app}    24    15s
420     Check Substring Count    ${log}    2    ${GE}    SequenceNumber: 16777216
421     Check Substring Count    ${log}    2    ${GE}    The representation has no uri
422
423 15 RI CRUDN Observe Non-Observable
424     [Documentation]    |Item |Description |
425     ...    |since |2017-04-07 |
426     ...    |see | |
427     ...    |objective | Test Observe request to core defined resources is rejected |
428     ...    |target | |
429     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
430     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
431     ...    |pre_condition | 2. Start RI interop server and client apps |
432     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
433     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
434     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
435     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
436     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
437     ...    |procedure | 1. [Client] Select Option 24 to Send Observe Request to Vertical Non-observable Resources |
438     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
439     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
440     ...    |expected | The timer resource should deny the observe request and reply with a Get response, with sequence number 2 |
441     [Tags]    con    non
442     ${log}    Provide Input    ${second_app}    25    15s
443     Check Substring Count    ${log}    1    ${GE}    SequenceNumber: 16777216
444     Check Substring Count    ${log}    1    ${GE}    The representation has no uri
445
446 16 RI CRUDN Observe Notification CON Server
447     [Documentation]    |Item |Description |
448     ...    |since |2017-04-07 |
449     ...    |see | |
450     ...    |objective | Test Observe notifiaction is working fine for observale resource |
451     ...    |target | |
452     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
453     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
454     ...    |pre_condition | 2. Start RI interop server and client apps |
455     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
456     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
457     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
458     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
459     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
460     ...    |procedure | 1. [Client] Select Option 23 to Send Observe Request to Vertical Observable Resources |
461     ...    |procedure | 2. [Server] Select Option 4 to Update Local Resource three times |
462     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
463     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
464     ...    |expected | The client should receive 9 observe notifications and the option sequence no. should be increasing |
465     [Tags]    con    non
466     ${log}    Provide Input    ${second_app}    23    15s
467     ${log}    Provide Input    ${first_app}    4    5s
468     ${log}    Provide Input    ${first_app}    4    5s
469     ${log}    Provide Input    ${first_app}    4    5s
470     ${log}    Get Output    ${second_app}
471     Check Substring Count    ${log}    3    ${GE}    SequenceNumber: 1
472     Check Substring Count    ${log}    3    ${GE}    SequenceNumber: 2
473     Check Substring Count    ${log}    3    ${GE}    SequenceNumber: 3
474     ${log}    Get Output    ${first_app}
475     Check Substring Count    ${log}    3    ${GE}    Inside handleObserveRequest...
476     Check Substring Count    ${log}    9    ${GE}    Sending Notification to Observers....
477
478 17 RI CRUDN Observe Notification NON Server
479     [Documentation]    |Item |Description |
480     ...    |since |2017-04-07 |
481     ...    |see | |
482     ...    |objective | Test Observe notifiaction is working fine for observale resource |
483     ...    |target | |
484     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
485     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
486     ...    |pre_condition | 2. Start RI interop server and client apps |
487     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
488     ...    |pre_condition | 4. [Server] Select Option 101 to select NON as message type |
489     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
490     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
491     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
492     ...    |procedure | 1. [Client] Select Option 23 to Send Observe Request to Vertical Observable Resources |
493     ...    |procedure | 2. [Server] Select Option 4 to Update Local Resource three times |
494     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
495     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
496     ...    |expected | The client should receive 9 observe notifications and the option sequence no. should be increasing |
497     [Tags]    con    non
498     ${log}    Provide Input    ${second_app}    23    15s
499     ${log}    Provide Input    ${first_app}    4    5s
500     ${log}    Provide Input    ${first_app}    4    5s
501     ${log}    Provide Input    ${first_app}    4    5s
502     ${log}    Get Output    ${second_app}
503     Check Substring Count    ${log}    3    ${GE}    SequenceNumber:
504     ${log}    Get Output    ${first_app}
505     Check Substring Count    ${log}    3    ${GE}    Inside handleObserveRequest...
506     Check Substring Count    ${log}    9    ${GE}    Sending Notification to Observers....
507
508 18 RI CRUDN Observe Cancel
509     [Documentation]    |Item |Description |
510     ...    |since |2017-04-07 |
511     ...    |see | |
512     ...    |objective | Test Observe cancel is working fine for observable resource |
513     ...    |target | |
514     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
515     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
516     ...    |pre_condition | 2. Start RI interop server and client apps |
517     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
518     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
519     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
520     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
521     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
522     ...    |procedure | 1. [Client] Select Option 23 to send GET Request to Vertical Resources |
523     ...    |procedure | 2. [Client] Select Option 26 to Cancel Observing Resource |
524     ...    |procedure | 3. [Server] Select Option 4 to Update Local Resource three times |
525     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
526     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
527     ...    |expected | 1. Observe should have been canceled |
528     ...    |expected | 2. The server should remove client from observer list |
529     ...    |expected | 3. the client should not receive any more observe notification |
530     [Tags]    con    non
531     [Setup]    Do Test Setup    101
532     ${log}    Provide Input    ${second_app}    23    15s
533     ${log}    Provide Input    ${second_app}    26    15s
534     ${log}    Provide Input    ${first_app}    4    5s
535     ${log}    Provide Input    ${first_app}    4    5s
536     ${log}    Provide Input    ${first_app}    4    5s
537     ${log}    Get Output    ${second_app}
538     Check Substring Count    ${log}    3    ${GE}    SequenceNumber: 0
539     Check Substring Count    ${log}    0    ${EQ}    SequenceNumber: 3
540     Run Keyword If    '${QOS}'=='con'    Check Substring Count    ${log}    3    ${GE}    The representation has no uri
541     Run Keyword If    '${QOS}'=='non'    Check Substring Count    ${log}    3    ${GE}    Observe Cancel request will be sent when a CON Notification is received!!
542     ${log}    Get Output    ${first_app}
543     Run Keyword If    '${QOS}'=='con'    Check Substring Count    ${log}    3    ${GE}    Removing observer from observer list
544     Run Keyword If    '${QOS}'=='con'    Check Substring Count    ${log}    9    ${GE}    No observers available to notify!!
545     Run Keyword If    '${QOS}'=='non'    Check Substring Count    ${log}    3    ${GE}    Sending Notification to Observers
546     Run Keyword If    '${QOS}'=='non'    Check Substring Count    ${log}    6    ${GE}    No observers available to notify!!
547
548 19 RI DISCOVERY MULTICAST BWT
549     [Documentation]    |Item |Description |
550     ...    |since |2017-04-07 |
551     ...    |see | |
552     ...    |objective | Test BWT is working for discovery response |
553     ...    |target | |
554     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
555     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
556     ...    |pre_condition | 2. Start RI interop server and client apps |
557     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
558     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
559     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
560     ...    |pre_condition | 6. [Client] Select Option 100 |
561     ...    |procedure | 1. [Client] Select Option 12 to discover resource |
562     ...    |procedure | 2. [Client] Select Option 15 to send GET Request to Vertical Resources |
563     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
564     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
565     ...    |expected | All resources should be discovered |
566     [Tags]    nsmt
567     [Setup]    Do Custom Test Setup
568     Do Discover Multiple
569     ${log}    Provide Input    ${second_app}    15    15s
570     Check Substring Count    ${log}    4    ${GE}    Found a resource!!
571     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /BinarySwitchResURI
572     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /AirFlowResURI
573     Check Substring Count    ${log}    1    ${GE}    uri of the found resource is /TemperatureResURI
574
575 20 RI CRUDN GET BWT
576     [Documentation]    |Item |Description |
577     ...    |since |2017-04-07 |
578     ...    |see | |
579     ...    |objective | Test BWT is working fine for GET/POST |
580     ...    |target | |
581     ...    |test_data | Menu option: 100, 104, 1, 11, 0 |
582     ...    |pre_condition | 1. In secure mode, Client and Server both are provisioned and  pairwise linked |
583     ...    |pre_condition | 2. Start RI interop server and client apps |
584     ...    |pre_condition | 3. Select Appropriate Transport in both apps |
585     ...    |pre_condition | 4. [Server] Select Option 100 to select CON as message type |
586     ...    |pre_condition | 5. [Server] Select Option 1 (in non-secure mode) or 2 (in secure mode) |
587     ...    |pre_condition | 6. [Client] Select Option 100(for CON) or 101(for NON) |
588     ...    |pre_condition | 7. [Client] Select Option 12 to discover resource |
589     ...    |procedure | 1. [Client] Select Option 27 to send POST Request with Blockwise Payload |
590     ...    |procedure | 2. [Client] Select Option 15 to send GET Request to Vertical Resources |
591     ...    |post_condition | 1. [Server] Select 0 to terminate interop server |
592     ...    |post_condition | 1. [Client] Select 0 to terminate interop client |
593     ...    |expected | 1. Server should receive blockwise POST request and response with a blockwise data |
594     ...    |expected | 2. Client should receive blockwise POST response |
595     ...    |expected | 3. Client should receive blockwise GET response |
596     [Tags]    con    non
597     ${log}    Provide Input    ${second_app}    27    15s
598     ${log}    Provide Input    ${second_app}    15    25s
599     Check Substring Count    ${log}    1    ${GE}    Response: GET request was successful
600     Check Substring Count    ${log}    1    ${GE}    Response: POST request was successful
601     Check Substring Count    ${log}    2    ${GE}    x.com.vendor.timer.clock.location : Dhaka, Bangladesh
602     ${log}    Get Output    ${first_app}
603     Check Substring Count    ${log}    1    ${GE}    Inside handlePostRequest...
604     Check Substring Count    ${log}    1    ${GE}    Inside handleGetRequest...
605
606 *** Keywords ***
607 Do Suite Setup
608     [Arguments]    
609     ${iotivity_build_parmeters}    Set Variable   SECURED=0 WITH_TCP=1
610     ${tc_build_parmeters}    Set Variable   ${EMPTY}
611     BuiltIn.Log    ${OS}->${OS2}
612     BuiltIn.Log    ${TRANSPORT}
613     BuiltIn.Log    ${QOS}
614     Load Default Settings    ${iotivity_build_parmeters}    ${tc_build_parmeters}
615     Get Test Environment Details
616     Build Iotivity and Test App
617
618 Do Suite Teardown
619     [Arguments]    
620     Remove All Devices
621
622 Do Test Setup
623     [Arguments]    ${server_msg_type}=100
624     BuiltIn.Sleep    60s
625     Execute Interop Apps
626     Do Custom Test Setup
627     ${qos_input}    Set Variable If    '${QOS}'=='non'    101    100
628     Provide Input    ${second_app}    ${qos_input}    1s
629     Provide Input    ${second_app}    12    15s
630     Provide Input    ${second_app}    12    15s
631     Provide Input    ${second_app}    12    15s
632     Provide Input    ${second_app}    12    15s
633
634 Do Test Teardown
635     [Arguments]
636     ${log}    Get Output From First App
637     BuiltIn.Log    ${log}
638     ${log}    Get Output From Second App
639     BuiltIn.Log    ${log}    
640     Provide Input    ${first_app}    0    1s
641     Provide Input    ${second_app}    0    1s
642
643
644 Do Custom Test Setup
645     [Arguments]    ${server_msg_type}=100
646     Execute Interop Apps
647     #${TRANSPORT}    Set Variable    4
648     Provide Input    ${first_app}    ${server_msg_type}    1s
649     ${transport_input}    Set Variable    102
650     ${transport_input}    Set Variable If    '${TRANSPORT}'=='ipv6'    103    ${transport_input}
651     ${transport_input}    Set Variable If    '${TRANSPORT}'=='tcp'    107    ${transport_input}
652     Provide Input    ${first_app}    ${transport_input}    1s
653     Provide Input    ${second_app}    ${transport_input}    1s
654     Provide Input    ${first_app}    1    1s
655
656 Do Discover Multiple
657     ${log}    Provide Input    ${second_app}    12    15s
658     ${log}    Provide Input    ${second_app}    12    15s
659     ${log}    Provide Input    ${second_app}    12    15s
660     ${log}    Provide Input    ${second_app}    12    15s