2 Documentation Metconf MDSAL Northbound test suite.
4 ... Copyright (c) 2015 Cisco Systems, Inc. and others. All rights reserved.
6 ... This program and the accompanying materials are made available under the
7 ... terms of the Eclipse Public License v1.0 which accompanies this distribution,
8 ... and is available at http://www.eclipse.org/legal/epl-v10.html
11 ... The request produced by test cases "Get Config Running", "Get Config Running
12 ... To Confirm No_Edit Before Commit", "Get Config Running To Confirm Delete
13 ... After Commit" and "Get Config Candidate To Confirm Discard" all use the same
14 ... message id ("empty") for their requests. This is possible because the
15 ... requests produced by this suite are strictly serialized. The RFC 6241 does
16 ... not state that these IDs are unique, it only requires that each ID used is
17 ... "XML attribute normalized" if the client wants it to be returned unmodified.
18 ... The RFC specifically says that "the content of this attribute is not
19 ... interpreted in any way, it only is stored to be returned with the reply to
20 ... the request. The reuse of the "empty" string for the 4 test cases was chosen
23 ... TODO: Change the 4 testcases to use unique message IDs.
25 ... TODO: There are many sections with too many "Should_[Not_]Contain" keyword
26 ... invocations (see Check_Multiple_Modules_Merge_Replace for a particularly bad
27 ... example). Create a resource that will be able to extract the data from the
28 ... requests and search for them in the response, then convert to usage of this
29 ... resource (think "Thou shall not repeat yourself"). The following resource was
30 ... found when doing research on this:
31 ... http://robotframework.org/robotframework/latest/libraries/XML.html
32 Suite Setup Setup_Everything
33 Suite Teardown Teardown_Everything
34 Test Setup SetupUtils.Setup_Test_With_Logging_And_Without_Fast_Failing
35 Test Teardown SetupUtils.Teardown_Test_Show_Bugs_If_Test_Failed
36 Library RequestsLibrary
38 Resource ${CURDIR}/../../../libraries/CompareStream.robot
39 Resource ${CURDIR}/../../../libraries/FailFast.robot
40 Resource ${CURDIR}/../../../libraries/SetupUtils.robot
41 Resource ${CURDIR}/../../../libraries/SSHKeywords.robot
42 Resource ${CURDIR}/../../../libraries/Utils.robot
43 Variables ${CURDIR}/../../../variables/Variables.py
46 ${datadir} ${CURDIR}/../../../variables/netconf/MDSAL
51 Connect_To_ODL_Netconf
52 [Documentation] Connect to ODL Netconf and fail if that is not possible.
53 Create_ODL_Netconf_Connection
54 Open_ODL_Netconf_Connection
57 [Documentation] Make sure the configuration has only the default elements in it.
58 Check_Test_Objects_Not_Present_In_Config get-config
60 Missing_Message_ID_Attribute
61 [Documentation] Check that messages with missing "message-ID" attribute are rejected with the correct error (RFC 6241, section 4.1).
62 Perform_Test missing-attr
64 Additional_Attributes_In_Message
65 [Documentation] Check that additional attributes in messages are returned properly (RFC 6241, sections 4.1 and 4.2).
66 ${reply}= Load_And_Send_Message additional-attr
67 BuiltIn.Should_Contain ${reply} xmlns="urn:ietf:params:xml:ns:netconf:base:1.0"
68 BuiltIn.Should_Contain ${reply} message-id="1"
69 BuiltIn.Should_Contain ${reply} attribute="something"
70 BuiltIn.Should_Contain ${reply} additional="otherthing"
71 BuiltIn.Should_Contain ${reply} xmlns:prefix="http://www.example.com/my-schema-example.html"
73 Send_Stuff_In_Undefined_Namespace
74 [Documentation] Try to send something within an undefined namespace and check the reply complains about the nonexistent namespace and element.
75 ${reply}= Load_And_Send_Message merge-nonexistent-namespace
76 SetupUtils.Set_Known_Bug_Id 5125
77 BuiltIn.Should_Not_Contain ${reply} java.lang.NullPointerException
78 SetupUtils.Set_Unknown_Bug_Id
79 BuiltIn.Should_Contain ${reply} urn:this:is:in:a:nonexistent:namespace
80 BuiltIn.Should_Contain ${reply} <rpc-error>
82 Edit_Config_First_Batch_Merge
83 [Documentation] Request a "merge" operation adding an element in candidate configuration and check the reply.
86 Get_Config_Running_To_Confirm_No_Edit_Before_Commit
87 [Documentation] Make sure the running configuration is still unchanged as the change was not commited yet.
88 Check_Test_Objects_Not_Present_In_Config get-config-no-edit-before-commit
91 [Documentation] Commit the change and check the reply.
92 Perform_Test commit-edit
94 First_Batch_In_Config_Running_To_Confirm_Edit_After_Commit
95 [Documentation] Check that the change is now in the configuration.
96 ${reply}= Load_And_Send_Message get-config-edit-after-commit
97 Check_First_Batch_Data_Present ${reply}
99 Terminate_Connection_Gracefully
100 [Documentation] Close the session and disconnect.
101 Close_ODL_Netconf_Connection_Gracefully
103 Reconnect_To_ODL_Netconf_After_Graceful_Session_End
104 [Documentation] Reconnect to ODL Netconf and fail if that is not possible.
105 Open_ODL_Netconf_Connection
107 First_Batch_In_Config_Running_After_Reconnect
108 [Documentation] Check that the change is now in the configuration.
109 ${reply}= Load_And_Send_Message get-config-edit-after-commit
110 Check_First_Batch_Data_Present ${reply}
112 Edit_Config_Create_Shall_Fail_Now
113 [Documentation] Request a "create" operation of an element that already exists and check that it fails with the correct error (RFC 6241, section 7.2, operation "create").
117 [Documentation] Delete the created element from the candidate configuration and check the reply.
120 Get_Config_Running_To_Confirm_No_Delete_Before_Commit
121 [Documentation] Make sure the element is still present in the running configuration as the delete command was not committed yet.
122 ${reply}= Load_And_Send_Message get-config-no-delete-before-commit
123 Check_First_Batch_Data_Present ${reply}
126 [Documentation] Commit the deletion of the element and check the reply.
127 Perform_Test commit-delete
129 Get_Config_Running_To_Confirm_Delete_After_Commit
130 [Documentation] Check that the element is gone.
131 Check_Test_Objects_Not_Present_In_Config get-config-delete-after-commit
133 Commit_No_Transaction
134 [Documentation] Attempt to perform "commit" when there are no changes in the candidate configuration and check that it returns OK status.
135 Perform_Test commit-no-transaction
136 [Teardown] Utils.Report_Failure_Due_To_Bug 4455
138 Edit_Config_Second_Batch_Merge
139 [Documentation] Create an element to be discarded and check the reply.
142 Get_And_Check_Config_Candidate_For_Discard
143 [Documentation] Check that the element to be discarded is present in the candidate configuration.
144 ${reply}= Load_And_Send_Message get-config-candidate
145 Check_First_Batch_Data_Not_Present ${reply}
146 Check_Second_Batch_Data_Present ${reply}
148 Discard_Changes_Using_Discard_Request
149 [Documentation] Ask the server to discard the candidate and check the reply.
150 Perform_Test commit-discard
152 Get_And_Check_Config_Candidate_To_Confirm_Discard
153 [Documentation] Check that the element was really discarded.
154 Check_Test_Objects_Not_Present_In_Config get-config-candidate-discard
156 Edit_Config_Multiple_Batch_Merge_Create
157 [Documentation] Use a create request with the third batch to create the infrastructure.
158 Perform_Test merge-multiple-create
160 Edit_Config_Multiple_Batch_Merge_Third
161 [Documentation] Use a create request with the third batch to create the infrastructure.
162 Perform_Test merge-multiple-1
164 Edit_Config_Multiple_Batch_Merge_Fourth
165 [Documentation] Use a merge request with the third batch to create the infrastructure.
166 Perform_Test merge-multiple-2
168 Edit_Config_Multiple_Batch_Merge_Fifth
169 [Documentation] Add a "name4" subelement to the element and check the reply.
170 Perform_Test merge-multiple-3
172 Commit_Multiple_Merge
173 [Documentation] Commit the changes and check the reply.
174 Perform_Test merge-multiple-commit
176 Multiple_Batch_Data_In_Running_Config
177 [Documentation] Check that the 3 subelements are now present in the running configuration.
178 ${reply}= Load_And_Send_Message merge-multiple-check
179 Check_Multiple_Batch_Data_Present ${reply}
181 Abort_Connection_To_Simulate_Session_Failure
182 [Documentation] Simulate session failure by disconnecting without terminating the session.
183 Abort_ODL_Netconf_Connection
185 Reconnect_To_ODL_Netconf_After_Session_Failure
186 [Documentation] Reconnect to ODL Netconf and fail if that is not possible.
187 Open_ODL_Netconf_Connection
189 Multiple_Batch_Data_In_Running_Config_After_Session_Failure
190 [Documentation] Check that the 3 subelements are now present in the running configuration.
191 ${reply}= Load_And_Send_Message merge-multiple-check
192 Check_Multiple_Batch_Data_Present ${reply}
194 Edit_Multiple_Merge_Data
195 [Documentation] Add another subelement named "test" to the element and check the reply.
196 Perform_Test merge-multiple-edit
198 Commit_Multiple_Modules_Merge_Edit
199 [Documentation] Commit the addition of the "test" subelement and check the reply.
200 Perform_Test merge-multiple-edit-commit
202 Check_Multiple_Modules_Merge_Edit
203 [Documentation] Check that the "test" subelement exists and has correct value for "port" subelement.
204 ${reply}= Load_And_Send_Message merge-multiple-edit-check
205 BuiltIn.Should_Contain ${reply} <id>test</id>
206 BuiltIn.Should_Contain ${reply} <model>Dixi</model>
207 BuiltIn.Should_Contain ${reply} <manufacturer>BMW</manufacturer>
208 BuiltIn.Should_Contain ${reply} <year>1928</year>
210 Update_Multiple_Modules_Merge
211 [Documentation] Update the value of the "port" subelement of the "test" subelement and check the reply.
212 Perform_Test merge-multiple-update
214 Commit_Multiple_Modules_Merge_Update
215 [Documentation] Commit the update and check the reply.
216 Perform_Test merge-multiple-update-commit
218 Check_Multiple_Modules_Merge_Update
219 [Documentation] Check that the value of the "port" was really updated.
220 ${reply}= Load_And_Send_Message merge-multiple-update-check
221 BuiltIn.Should_Contain ${reply} <id>test</id>
222 BuiltIn.Should_Contain ${reply} <model>Bentley Speed Six</model>
223 BuiltIn.Should_Contain ${reply} <manufacturer>Bentley</manufacturer>
224 BuiltIn.Should_Contain ${reply} <year>1930</year>
225 BuiltIn.Should_Not_Contain ${reply} <model>Dixi</model>
226 BuiltIn.Should_Not_Contain ${reply} <manufacturer>BMW</manufacturer>
227 BuiltIn.Should_Not_Contain ${reply} <year>1928</year>
229 Replace_Multiple_Modules_Merge
230 [Documentation] Replace the content of the "test" with another completely different and check the reply.
231 Perform_Test merge-multiple-replace
233 Commit_Multiple_Modules_Merge_Replace
234 [Documentation] Commit the replace and check the reply.
235 Perform_Test merge-multiple-replace-commit
237 Check_Multiple_Modules_Merge_Replace
238 [Documentation] Check that the new content is there and the old content is gone.
239 ${reply}= Load_And_Send_Message merge-multiple-replace-check
240 BuiltIn.Should_Contain ${reply} <id>REPLACE</id>
241 BuiltIn.Should_Contain ${reply} <manufacturer>FIAT</manufacturer>
242 BuiltIn.Should_Contain ${reply} <model>Panda</model>
243 BuiltIn.Should_Contain ${reply} <year>2003</year>
244 BuiltIn.Should_Contain ${reply} <car-id>REPLACE</car-id>
245 BuiltIn.Should_Not_Contain ${reply} <id>TOY001</id>
246 BuiltIn.Should_Not_Contain ${reply} <id>CUST001</id>
247 BuiltIn.Should_Not_Contain ${reply} <car-id>TOY001</car-id>
248 BuiltIn.Should_Not_Contain ${reply} <person-id>CUST001</person-id>
249 BuiltIn.Should_Not_Contain ${reply} <id>OLD001</id>
250 BuiltIn.Should_Not_Contain ${reply} <id>CUST002</id>
251 BuiltIn.Should_Not_Contain ${reply} <car-id>OLD001</car-id>
252 BuiltIn.Should_Not_Contain ${reply} <person-id>CUST002</person-id>
253 BuiltIn.Should_Not_Contain ${reply} <id>CAROLD</id>
254 BuiltIn.Should_Contain ${reply} <id>CUSTOLD</id>
255 BuiltIn.Should_Not_Contain ${reply} <car-id>CAROLD</car-id>
256 BuiltIn.Should_Not_Contain ${reply} <person-id>CUSTOLD</person-id>
257 BuiltIn.Should_Not_Contain ${reply} <id>CARYOUNG</id>
258 BuiltIn.Should_Contain ${reply} <id>CUSTYOUNG</id>
259 BuiltIn.Should_Not_Contain ${reply} <car-id>CARYOUNG</car-id>
260 BuiltIn.Should_Contain ${reply} <person-id>CUSTYOUNG</person-id>
261 BuiltIn.Should_Not_Contain ${reply} <id>CARMID</id>
262 BuiltIn.Should_Contain ${reply} <id>CUSTMID</id>
263 BuiltIn.Should_Not_Contain ${reply} <car-id>CARMID</car-id>
264 BuiltIn.Should_Not_Contain ${reply} <person-id>CUSTMID</person-id>
265 BuiltIn.Should_Not_Contain ${reply} <id>CAROLD2</id>
266 BuiltIn.Should_Contain ${reply} <id>CUSTOLD2</id>
267 BuiltIn.Should_Not_Contain ${reply} <car-id>CAROLD2</car-id>
268 BuiltIn.Should_Not_Contain ${reply} <person-id>CUSTOLD2</person-id>
269 BuiltIn.Should_Not_Contain ${reply} <id>CUSTBAD</id>
270 BuiltIn.Should_Not_Contain ${reply} <id>test</id>
273 [Documentation] Remove the testing elements and all their subelements and check the reply.
274 Perform_Test merge-multiple-remove
276 Commit_Test_Data_Removal
277 [Documentation] Commit the removal and check the reply.
278 Perform_Test merge-multiple-remove-commit
280 Connector_Simplified_Pattern
281 [Documentation] Several requests in a (simplified) pattern typical for requests from netconf-connector.
282 Perform_Test none-replace
283 Perform_Test commit-edit
285 Perform_Test commit-edit
288 [Documentation] Send (checking replies) series of netconf messages to trigger
289 ... https://bugs.opendaylight.org/show_bug.cgi?id=7791
290 Perform_Test bug7791-1
291 Perform_Test bug7791-2
292 Perform_Test commit-edit
294 Perform_Test commit-edit
295 [Teardown] Utils.Report_Failure_Due_To_Bug 7791
297 Delete_Not_Existing_Element
298 [Documentation] Attempt to delete the elements again and check that it fails with the correct error.
299 Perform_Test delete-not-existing
301 Commit_Delete_Not_Existing_Module
302 [Documentation] Attempt to commit and check the reply.
303 Perform_Test commit-no-transaction
304 [Teardown] Utils.Report_Failure_Due_To_Bug 4455
306 Remove_Not_Existing_Module
307 [Documentation] Attempt to remove the "module" element again and check that the operation is "silently ignored".
308 Perform_Test remove-not-existing
310 Commit_Remove_Not_Existing_Module
311 [Documentation] Attempt to commit and check the reply.
312 Perform_Test remove-not-existing-commit
313 [Teardown] Utils.Report_Failure_Due_To_Bug 4455
316 [Documentation] Close the session and check that it was closed properly.
317 Perform_Test close-session
322 [Documentation] Load the specified data from the data directory and return it.
323 ${data}= OperatingSystem.Get_File ${datadir}${/}${name}.${dataext}
326 Create_ODL_Netconf_Connection
327 [Arguments] ${host}=${ODL_SYSTEM_IP} ${port}=${ODL_NETCONF_MDSAL_PORT} ${user}=${ODL_NETCONF_USER} ${password}=${ODL_NETCONF_PASSWORD}
328 [Documentation] Open a netconf connecion to the given machine.
329 # The "-s netconf" flag (see the "SSHLibrary.Write" line below) is not
330 # supported by SSHLibrary, therefore we need to use this elaborate and
331 # pretty tricky way to connect to the ODL Netconf port.
332 # TODO: Extract into NetconfKeywords as there are other tests that are
333 # going to need to use this operation (Netconf Performance and Scaling
334 # comes to my mind now as one of the things tested is the performance
335 # of the direct netconf connection.
336 # TODO: Make this keyword return a dictionary object with all the
337 # data about the prepared connection neatly packaged. Make all
338 # the other keywords handling the connection accept such an
339 # object and pull the data out of it rather than relying on
340 # global variables. This will allow for tracking more Netconf
341 # connections, increasing utility.
342 ${control}= SSHLibrary.Open_Connection ${host} prompt=${ODL_SYSTEM_PROMPT} timeout=10s
343 Utils.Flexible_Controller_Login
344 BuiltIn.Set_Suite_Variable ${ssh_control} ${control}
345 ${netconf}= SSHLibrary.Open_Connection ${host} prompt=${ODL_SYSTEM_PROMPT} timeout=10s
346 Utils.Flexible_Controller_Login
347 BuiltIn.Set_Suite_Variable ${ssh_netconf} ${netconf}
348 BuiltIn.Set_Suite_Variable ${ssh_port} ${port}
349 BuiltIn.Set_Suite_Variable ${ssh_user} ${user}
350 BuiltIn.Set_Suite_Variable ${ssh_password} ${password}
352 Reopen_ODL_Netconf_Connection
353 [Documentation] Reopen a closed netconf connection.
354 SSHLibrary.Write sshpass -p ${ssh_password} ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no ${ssh_user}\@127.0.0.1 -p ${ssh_port} -s netconf
355 ${hello}= SSHLibrary.Read_Until ${ODL_NETCONF_PROMPT}
356 SSHLibrary.Switch_Connection ${ssh_control}
357 ${pid}= SSHLibrary.Execute_Command ps -A | grep sshpass | cut -b 1-6
358 BuiltIn.Set_Suite_Variable ${ssh_netconf_pid} ${pid}
359 SSHLibrary.Switch_Connection ${ssh_netconf}
362 Open_ODL_Netconf_Connection
363 [Documentation] Open a prepared netconf connecion.
364 ${hello}= Reopen_ODL_Netconf_Connection
365 ${hello_message}= Get_Data hello
366 Transmit_Message ${hello_message}
370 [Arguments] ${message}
371 [Documentation] Transmit message to Netconf connection and discard the echo of the message.
372 SSHLibrary.Write ${message}
373 SSHLibrary.Write ${ODL_NETCONF_PROMPT}
374 SSHLibrary.Read_Until ${ODL_NETCONF_PROMPT}
377 [Arguments] ${message}
378 [Documentation] Send message to Netconf connection and get the reply.
379 Transmit_Message ${message}
380 ${reply}= SSHLibrary.Read_Until ${ODL_NETCONF_PROMPT}
384 [Arguments] ${searched_string}
385 [Documentation] Prepare the specified string for searching in Netconf connection replies.
386 ... The string passed to this keyword is coming from a data
387 ... file which has different end of line conventions than
388 ... the actual Netconf reply. This keyword patches the string
389 ... to match what Netconf actually returns.
390 ${result}= BuiltIn.Evaluate "\\r\\n".join("""${searched_string}""".split("\\n"))
393 Load_And_Send_Message
395 [Documentation] Load a message from the data file set, send it to Netconf and return the reply.
396 ${request}= Get_Data ${name}-request
397 ${reply}= Send_Message ${request}
402 [Documentation] Load the expected reply from the data file set and return it.
403 ${expected_reply}= Get_Data ${name}-reply
404 ${expected}= Prepare_For_Search ${expected_reply}
407 Abort_ODL_Netconf_Connection
408 [Documentation] Correctly close the Netconf connection and make sure it is really dead.
409 BuiltIn.Return_From_Keyword_If ${ssh_netconf_pid} == -1
410 ${kill_command}= BuiltIn.Set_Variable kill ${ssh_netconf_pid}
411 BuiltIn.Set_Suite_Variable ${ssh_netconf_pid} -1
412 SSHLibrary.Switch_Connection ${ssh_control}
413 SSHLibrary.Write ${kill_command}
414 SSHLibrary.Read_Until_Prompt
415 SSHLibrary.Switch_Connection ${ssh_netconf}
416 SSHLibrary.Read_Until_Prompt
418 Close_ODL_Netconf_Connection_Gracefully
419 Perform_Test close-session
420 Abort_ODL_Netconf_Connection
423 [Documentation] Setup resources and create session for Restconf checking.
424 SetupUtils.Setup_Utils_For_Setup_And_Teardown
425 RequestsLibrary.Create_Session config http://${ODL_SYSTEM_IP}:${RESTCONFPORT}${CONFIG_API} auth=${AUTH}
428 [Documentation] Close the Netconf connection and destroy all sessions in the requests library.
429 Abort_ODL_Netconf_Connection
430 RequestsLibrary.Delete_All_Sessions
432 Check_First_Batch_Data
433 [Arguments] ${reply} ${keyword}
434 BuiltIn.RunKeyword ${keyword} ${reply} <id>TOY001</id>
435 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUST001</id>
436 BuiltIn.RunKeyword ${keyword} ${reply} <car-id>TOY001</car-id>
437 BuiltIn.RunKeyword ${keyword} ${reply} <person-id>CUST001</person-id>
439 Check_First_Batch_Data_Present
441 Check_First_Batch_Data ${reply} BuiltIn.Should_Contain
443 Check_First_Batch_Data_Not_Present
445 Check_First_Batch_Data ${reply} BuiltIn.Should_Not_Contain
447 Check_Second_Batch_Data
448 [Arguments] ${reply} ${keyword}
449 BuiltIn.RunKeyword ${keyword} ${reply} <id>OLD001</id>
450 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUST002</id>
451 BuiltIn.RunKeyword ${keyword} ${reply} <car-id>OLD001</car-id>
452 BuiltIn.RunKeyword ${keyword} ${reply} <person-id>CUST002</person-id>
454 Check_Second_Batch_Data_Present
456 Check_Second_Batch_Data ${reply} BuiltIn.Should_Contain
458 Check_Multiple_Batch_Data
459 [Arguments] ${reply} ${keyword}
460 BuiltIn.RunKeyword ${keyword} ${reply} <id>CAROLD</id>
461 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUSTOLD</id>
462 BuiltIn.RunKeyword ${keyword} ${reply} <car-id>CAROLD</car-id>
463 BuiltIn.RunKeyword ${keyword} ${reply} <person-id>CUSTOLD</person-id>
464 BuiltIn.RunKeyword ${keyword} ${reply} <id>CARYOUNG</id>
465 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUSTYOUNG</id>
466 BuiltIn.RunKeyword ${keyword} ${reply} <car-id>CARYOUNG</car-id>
467 BuiltIn.RunKeyword ${keyword} ${reply} <person-id>CUSTYOUNG</person-id>
468 BuiltIn.RunKeyword ${keyword} ${reply} <id>CARMID</id>
469 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUSTMID</id>
470 BuiltIn.RunKeyword ${keyword} ${reply} <car-id>CARMID</car-id>
471 BuiltIn.RunKeyword ${keyword} ${reply} <person-id>CUSTMID</person-id>
472 BuiltIn.RunKeyword ${keyword} ${reply} <id>CAROLD2</id>
473 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUSTOLD2</id>
474 BuiltIn.RunKeyword ${keyword} ${reply} <car-id>CAROLD2</car-id>
475 BuiltIn.RunKeyword ${keyword} ${reply} <person-id>CUSTOLD2</person-id>
477 Check_Multiple_Batch_Data_Absent
479 Check_Multiple_Batch_Data ${reply} BuiltIn.Should_not_Contain
481 Check_Multiple_Batch_Data_Present
483 Check_Multiple_Batch_Data ${reply} BuiltIn.Should_Contain
486 [Arguments] ${reply} ${keyword}
487 BuiltIn.RunKeyword ${keyword} ${reply} <id>CUSTBAD</id>
488 BuiltIn.RunKeyword ${keyword} ${reply} <id>test</id>
490 Check_Test_Objects_Absent
492 Check_First_Batch_Data_Not_Present ${reply}
493 Check_Second_Batch_Data ${reply} BuiltIn.Should_not_Contain
494 Check_Multiple_Batch_Data_Absent ${reply}
495 Check_Auxiliary_Data ${reply} BuiltIn.Should_not_Contain
496 BuiltIn.Should_not_Contain ${reply} <id>test</id>
498 Check_Test_Objects_Not_Present_In_Config
500 [Documentation] Use dataset with the specified name to get the configuration and check that none of our test objects are there.
501 ${reply}= Load_And_Send_Message ${name}
502 Check_Test_Objects_Absent ${reply}
503 BuiltIn.Should_not_Contain ${reply} <id>REPLACE</id>
508 [Documentation] Load and send the request from the dataset and compare the returned reply to the one stored in the dataset.
509 ${actual}= Load_And_Send_Message ${name}
510 ${expected}= Load_Expected_Reply ${name}
511 ${newline}= BuiltIn.Evaluate "\\r\\n"
512 BuiltIn.Should_Be_Equal ${newline}${expected}${ODL_NETCONF_PROMPT} ${actual}
516 [Arguments] ${name} ${expected}
517 ${actual}= Load_And_Send_Message ${name}
518 BuiltIn.Should_Be_Equal ${expected} ${actual}