oats 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (181) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +15 -0
  3. data/README.txt +165 -0
  4. data/Rakefile +2 -0
  5. data/bin/agent +204 -0
  6. data/bin/oats +10 -0
  7. data/bin/occ +29 -0
  8. data/bin/results_cleanup +6 -0
  9. data/doc/COPYING +55 -0
  10. data/doc/LICENSE +55 -0
  11. data/doc/OATS_Framework.doc +0 -0
  12. data/doc/classes/ApplicationLogs.html +239 -0
  13. data/doc/classes/Campaign.html +843 -0
  14. data/doc/classes/CommandlineOptions.html +131 -0
  15. data/doc/classes/Driver.html +182 -0
  16. data/doc/classes/Hash.html +137 -0
  17. data/doc/classes/Ide.html +194 -0
  18. data/doc/classes/MapSelenium.html +197 -0
  19. data/doc/classes/Net.html +107 -0
  20. data/doc/classes/Oats/OatsFilterError.html +119 -0
  21. data/doc/classes/Oats.html +998 -0
  22. data/doc/classes/OatsAssertError.html +119 -0
  23. data/doc/classes/OatsBadInput.html +119 -0
  24. data/doc/classes/OatsData.html +290 -0
  25. data/doc/classes/OatsError.html +117 -0
  26. data/doc/classes/OatsExit.html +117 -0
  27. data/doc/classes/OatsLock.html +254 -0
  28. data/doc/classes/OatsMain.html +182 -0
  29. data/doc/classes/OatsMysqlError.html +113 -0
  30. data/doc/classes/OatsMysqlMissingInput.html +113 -0
  31. data/doc/classes/OatsReportError.html +113 -0
  32. data/doc/classes/OatsSetupError.html +119 -0
  33. data/doc/classes/OatsTestError.html +119 -0
  34. data/doc/classes/OatsTestExit.html +119 -0
  35. data/doc/classes/OatsTestLocateError.html +120 -0
  36. data/doc/classes/OatsVerifyError.html +119 -0
  37. data/doc/classes/Ragent.html +397 -0
  38. data/doc/classes/Rclient.html +236 -0
  39. data/doc/classes/Report.html +368 -0
  40. data/doc/classes/Reports.html +244 -0
  41. data/doc/classes/RestApi.html +333 -0
  42. data/doc/classes/RhttpClient.html +236 -0
  43. data/doc/classes/Rimap.html +170 -0
  44. data/doc/classes/Rmysql.html +176 -0
  45. data/doc/classes/Roptions.html +131 -0
  46. data/doc/classes/Rselenium.html +233 -0
  47. data/doc/classes/Rssh.html +138 -0
  48. data/doc/classes/Runnable.html +174 -0
  49. data/doc/classes/SFTriggers.html +206 -0
  50. data/doc/classes/Selenium/Client/Driver.html +211 -0
  51. data/doc/classes/Selenium/Client.html +107 -0
  52. data/doc/classes/Selenium.html +107 -0
  53. data/doc/classes/SystemCapture.html +304 -0
  54. data/doc/classes/TestCase.html +418 -0
  55. data/doc/classes/TestData.html +235 -0
  56. data/doc/classes/TestList.html +264 -0
  57. data/doc/classes/Tools.html +244 -0
  58. data/doc/classes/Util.html +201 -0
  59. data/doc/classes/Variation.html +206 -0
  60. data/doc/fr_class_index.html +92 -0
  61. data/doc/fr_method_index.html +465 -0
  62. data/doc/index.html +23 -0
  63. data/doc/oats_httpd.conf +32 -0
  64. data/doc/oats_user.yml +25 -0
  65. data/doc/rdoc-style.css +208 -0
  66. data/lib/deep_merge/.gitignore +2 -0
  67. data/lib/deep_merge/core.rb +195 -0
  68. data/lib/deep_merge/deep_merge.rb +1 -0
  69. data/lib/deep_merge/deep_merge_hash.rb +28 -0
  70. data/lib/deep_merge/rails_compat.rb +27 -0
  71. data/lib/oats/application_logs.rb +163 -0
  72. data/lib/oats/build_id.rb +58 -0
  73. data/lib/oats/commandline_options.rb +128 -0
  74. data/lib/oats/diff.rb +278 -0
  75. data/lib/oats/driver.rb +492 -0
  76. data/lib/oats/ide.rb +227 -0
  77. data/lib/oats/keywords.rb +67 -0
  78. data/lib/oats/log4r_init.rb +14 -0
  79. data/lib/oats/mysql.rb +97 -0
  80. data/lib/oats/oats.rb +637 -0
  81. data/lib/oats/oats_data.rb +400 -0
  82. data/lib/oats/oats_exceptions.rb +25 -0
  83. data/lib/oats/oats_lock.rb +261 -0
  84. data/lib/oats/oats_selenium_api.rb +639 -0
  85. data/lib/oats/oselenium.rb +189 -0
  86. data/lib/oats/ossh.rb +36 -0
  87. data/lib/oats/patches_for_eventmachine_12.10.rb +66 -0
  88. data/lib/oats/ragent.rb +321 -0
  89. data/lib/oats/rclient.rb +42 -0
  90. data/lib/oats/report.rb +207 -0
  91. data/lib/oats/roptions.rb +88 -0
  92. data/lib/oats/test_case.rb +510 -0
  93. data/lib/oats/test_data.rb +98 -0
  94. data/lib/oats/test_list.rb +141 -0
  95. data/lib/oats/unixdiff.rb +75 -0
  96. data/lib/oats/util.rb +125 -0
  97. data/lib/oats/version.rb +3 -0
  98. data/lib/oats.rb +36 -0
  99. data/nbproject/configs/agent.properties +0 -0
  100. data/nbproject/configs/gr.properties +0 -0
  101. data/nbproject/project.properties +10 -0
  102. data/nbproject/project.xml +17 -0
  103. data/oats.gemspec +42 -0
  104. data/oats_ini.yml +258 -0
  105. data/oats_tests/Gemfile +18 -0
  106. data/oats_tests/aut_ini.yml +30 -0
  107. data/oats_tests/bin/oats +8 -0
  108. data/oats_tests/environments/qa.yml +4 -0
  109. data/oats_tests/environments/qa_chrome.yml +4 -0
  110. data/oats_tests/examples/core/coreExamples.yml +8 -0
  111. data/oats_tests/examples/core/expectedException.rb +39 -0
  112. data/oats_tests/examples/core/ok_verify.rb +2 -0
  113. data/oats_tests/examples/core/ok_verify.rb_ok/out/myfile.txt +1 -0
  114. data/oats_tests/examples/core/ok_verify.rb_ok/out/myfile2.txt +1 -0
  115. data/oats_tests/examples/core/ok_verify.rb_ok/rats_test.log +2 -0
  116. data/oats_tests/examples/core/unexpectedException.rb +30 -0
  117. data/oats_tests/examples/examples.yml +13 -0
  118. data/oats_tests/examples/gui/guiExamples.yml +7 -0
  119. data/oats_tests/examples/gui/seleniumGoogle.rb +10 -0
  120. data/oats_tests/examples/gui/webdriverGoogle.rb +9 -0
  121. data/oats_tests/examples/keywords/SampleXlList-1.xls +0 -0
  122. data/oats_tests/examples/keywords/SampleXlList-2.xls +0 -0
  123. data/oats_tests/examples/keywords/SampleXlLists.xls +0 -0
  124. data/oats_tests/examples/keywords/keywordsDriver.rb +1 -0
  125. data/oats_tests/examples/keywords/keywordsExamples.yml +8 -0
  126. data/oats_tests/examples/keywords/keywordsTC1.yml +5 -0
  127. data/oats_tests/examples/keywords/keywordsTestlist.yml +16 -0
  128. data/oats_tests/examples/needsWork/addTestDynamically.rb +4 -0
  129. data/oats_tests/examples/needsWork/emailVerify.rb +34 -0
  130. data/oats_tests/examples/needsWork/testSql/rtest.sql +6 -0
  131. data/oats_tests/examples/needsWork/testSql/rtest.yml +11 -0
  132. data/oats_tests/examples/occTest/occTest.rb +13 -0
  133. data/oats_tests/examples/occTest/occTest_1.rb +1 -0
  134. data/oats_tests/examples/occTest/occTest_1_1.rb +1 -0
  135. data/oats_tests/examples/occTest/occTest_1_2.rb +1 -0
  136. data/oats_tests/examples/occTest/occTest_1_3.rb +1 -0
  137. data/oats_tests/examples/occTest/occTest_1_4.rb +1 -0
  138. data/oats_tests/examples/occTest/occTest_2.rb +1 -0
  139. data/oats_tests/examples/occTest/occTest_2_1.rb +1 -0
  140. data/oats_tests/examples/occTest/occTest_2_2.rb +1 -0
  141. data/oats_tests/examples/occTest/occTest_2_3.rb +1 -0
  142. data/oats_tests/examples/occTest/occTest_2_4.rb +1 -0
  143. data/oats_tests/examples/occTest/occTest_3.rb +1 -0
  144. data/oats_tests/examples/occTest/occTest_3_1.rb +1 -0
  145. data/oats_tests/examples/occTest/occTest_3_2.rb +1 -0
  146. data/oats_tests/examples/occTest/occTest_3_3.rb +1 -0
  147. data/oats_tests/examples/occTest/occTest_3_4.rb +1 -0
  148. data/oats_tests/examples/occTest/occTest_4.rb +1 -0
  149. data/oats_tests/examples/occTest/occTestlist.yml +9 -0
  150. data/oats_tests/examples/occTest/occTestlist_1.yml +9 -0
  151. data/oats_tests/examples/occTest/occTestlist_2.yml +9 -0
  152. data/oats_tests/examples/occTest/occTestlist_3.yml +9 -0
  153. data/oats_tests/examples/occTest/variation1.yml +4 -0
  154. data/oats_tests/examples/occTest/variation2.yml +4 -0
  155. data/oats_tests/examples/testFileLocationUnitTests/extn_driver.rb +4 -0
  156. data/oats_tests/examples/testFileLocationUnitTests/folder/oats.yml +3 -0
  157. data/oats_tests/examples/testFileLocationUnitTests/folder/t1.rb +2 -0
  158. data/oats_tests/examples/testFileLocationUnitTests/folder1/t1.yml +2 -0
  159. data/oats_tests/examples/testFileLocationUnitTests/folder1/t1_1.yml +3 -0
  160. data/oats_tests/examples/testFileLocationUnitTests/folder2/oats.yml +3 -0
  161. data/oats_tests/examples/testFileLocationUnitTests/folder2/t1.rb +2 -0
  162. data/oats_tests/examples/testFileLocationUnitTests/folder2/t1.yml +2 -0
  163. data/oats_tests/examples/testFileLocationUnitTests/no_yaml.rb +3 -0
  164. data/oats_tests/examples/testFileLocationUnitTests/post_yaml.rb +1 -0
  165. data/oats_tests/examples/testFileLocationUnitTests/t1.rb +4 -0
  166. data/oats_tests/examples/testFileLocationUnitTests/t1.yml +2 -0
  167. data/oats_tests/examples/testFileLocationUnitTests/t1_1.yml +3 -0
  168. data/oats_tests/examples/testFileLocationUnitTests/testDir/oats.yml +3 -0
  169. data/oats_tests/examples/testFileLocationUnitTests/testDir/t1.rb +2 -0
  170. data/oats_tests/examples/testFileLocationUnitTests/testDir/t1.yml +2 -0
  171. data/oats_tests/examples/testFileLocationUnitTests/testDir2/t1.rb +2 -0
  172. data/oats_tests/examples/testFileLocationUnitTests/testDir2/t1.yml +2 -0
  173. data/oats_tests/examples/testFileLocationUnitTests/unitTestList.yml +36 -0
  174. data/oats_tests/examples/testFileLocationUnitTests/yml_driver.rb +2 -0
  175. data/oats_tests/lib/business.rb +28 -0
  176. data/oats_tests/lib/sample_xl_lists.rb +37 -0
  177. data/test/common_test_unit_setup.rb +21 -0
  178. data/test/test_basic.rb +16 -0
  179. data/test/test_selenium.rb +16 -0
  180. data/test/test_xl_lists.rb +16 -0
  181. metadata +291 -0
@@ -0,0 +1,998 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+
6
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
7
+ <head>
8
+ <title>Module: Oats</title>
9
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
10
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
11
+ <link rel="stylesheet" href=".././rdoc-style.css" type="text/css" media="screen" />
12
+ <script type="text/javascript">
13
+ // <![CDATA[
14
+
15
+ function popupCode( url ) {
16
+ window.open(url, "Code", "resizable=yes,scrollbars=yes,toolbar=no,status=no,height=150,width=400")
17
+ }
18
+
19
+ function toggleCode( id ) {
20
+ if ( document.getElementById )
21
+ elem = document.getElementById( id );
22
+ else if ( document.all )
23
+ elem = eval( "document.all." + id );
24
+ else
25
+ return false;
26
+
27
+ elemStyle = elem.style;
28
+
29
+ if ( elemStyle.display != "block" ) {
30
+ elemStyle.display = "block"
31
+ } else {
32
+ elemStyle.display = "none"
33
+ }
34
+
35
+ return true;
36
+ }
37
+
38
+ // Make codeblocks hidden by default
39
+ document.writeln( "<style type=\"text/css\">div.method-source-code { display: none }</style>" )
40
+
41
+ // ]]>
42
+ </script>
43
+
44
+ </head>
45
+ <body>
46
+
47
+
48
+
49
+ <div id="classHeader">
50
+ <table class="header-table">
51
+ <tr class="top-aligned-row">
52
+ <td><strong>Module</strong></td>
53
+ <td class="class-name-in-header">Oats</td>
54
+ </tr>
55
+ <tr class="top-aligned-row">
56
+ <td><strong>In:</strong></td>
57
+ <td>
58
+ <a href="../files/lib/oats_rb.html">
59
+ lib/oats.rb
60
+ </a>
61
+ <br />
62
+ <a href="../files/lib/oats_data_rb.html">
63
+ lib/oats_data.rb
64
+ </a>
65
+ <br />
66
+ </td>
67
+ </tr>
68
+
69
+ </table>
70
+ </div>
71
+ <!-- banner header -->
72
+
73
+ <div id="bodyContent">
74
+
75
+
76
+
77
+ <div id="contextContent">
78
+
79
+ <div id="description">
80
+ <p>
81
+ Return oats.yml entry for given string or the whole hash
82
+ </p>
83
+ <pre>
84
+ Oats.data['selenium']['browser'] == 'firefox'
85
+ </pre>
86
+
87
+ </div>
88
+
89
+
90
+ </div>
91
+
92
+ <div id="method-list">
93
+ <h3 class="section-bar">Methods</h3>
94
+
95
+ <div class="name-list">
96
+ <a href="#M000144">assert</a>&nbsp;&nbsp;
97
+ <a href="#M000142">assert_equal</a>&nbsp;&nbsp;
98
+ <a href="#M000143">assert_not_equal</a>&nbsp;&nbsp;
99
+ <a href="#M000145">browser</a>&nbsp;&nbsp;
100
+ <a href="#M000168">click</a>&nbsp;&nbsp;
101
+ <a href="#M000149">context</a>&nbsp;&nbsp;
102
+ <a href="#M000148">data</a>&nbsp;&nbsp;
103
+ <a href="#M000169">data</a>&nbsp;&nbsp;
104
+ <a href="#M000150">debug</a>&nbsp;&nbsp;
105
+ <a href="#M000151">error</a>&nbsp;&nbsp;
106
+ <a href="#M000152">exit</a>&nbsp;&nbsp;
107
+ <a href="#M000154">file</a>&nbsp;&nbsp;
108
+ <a href="#M000155">filter</a>&nbsp;&nbsp;
109
+ <a href="#M000157">global</a>&nbsp;&nbsp;
110
+ <a href="#M000156">ide</a>&nbsp;&nbsp;
111
+ <a href="#M000158">info</a>&nbsp;&nbsp;
112
+ <a href="#M000160">mysql</a>&nbsp;&nbsp;
113
+ <a href="#M000147">oload</a>&nbsp;&nbsp;
114
+ <a href="#M000159">out_file</a>&nbsp;&nbsp;
115
+ <a href="#M000162">rput</a>&nbsp;&nbsp;
116
+ <a href="#M000161">rssh</a>&nbsp;&nbsp;
117
+ <a href="#M000164">selenium</a>&nbsp;&nbsp;
118
+ <a href="#M000153">skip_unless_previous_test_is_ok</a>&nbsp;&nbsp;
119
+ <a href="#M000146">system_capture</a>&nbsp;&nbsp;
120
+ <a href="#M000163">test</a>&nbsp;&nbsp;
121
+ <a href="#M000166">unique</a>&nbsp;&nbsp;
122
+ <a href="#M000165">wait_until</a>&nbsp;&nbsp;
123
+ <a href="#M000167">warn</a>&nbsp;&nbsp;
124
+ </div>
125
+ </div>
126
+
127
+ </div>
128
+
129
+
130
+ <!-- if includes -->
131
+
132
+ <div id="section">
133
+
134
+ <div id="class-list">
135
+ <h3 class="section-bar">Classes and Modules</h3>
136
+
137
+ Class <a href="Oats/OatsFilterError.html" class="link">Oats::OatsFilterError</a><br />
138
+
139
+ </div>
140
+
141
+
142
+
143
+
144
+
145
+
146
+
147
+ <!-- if method_list -->
148
+ <div id="methods">
149
+ <h3 class="section-bar">Public Class methods</h3>
150
+
151
+ <div id="method-M000144" class="method-detail">
152
+ <a name="M000144"></a>
153
+
154
+ <div class="method-heading">
155
+ <a href="Oats.src/M000144.html" target="Code" class="method-signature"
156
+ onclick="popupCode('Oats.src/M000144.html');return false;">
157
+ <span class="method-name">assert</span><span class="method-args">(test, message = nil)</span>
158
+ </a>
159
+ </div>
160
+
161
+ <div class="method-description">
162
+ <p>
163
+ Raises <a href="OatsTestError.html">OatsTestError</a> unless <a
164
+ href="Oats.html#M000163">test</a> is true
165
+ </p>
166
+ </div>
167
+ </div>
168
+
169
+ <div id="method-M000142" class="method-detail">
170
+ <a name="M000142"></a>
171
+
172
+ <div class="method-heading">
173
+ <a href="Oats.src/M000142.html" target="Code" class="method-signature"
174
+ onclick="popupCode('Oats.src/M000142.html');return false;">
175
+ <span class="method-name">assert_equal</span><span class="method-args">(expected, actual, pre_message = nil)</span>
176
+ </a>
177
+ </div>
178
+
179
+ <div class="method-description">
180
+ <p>
181
+ Raises <a href="OatsAssertError.html">OatsAssertError</a> unless two
182
+ parameters are &#8217;==&#8217; If given pre_message preceeds the standard
183
+ message showing expected and actuals. Example: <a
184
+ href="Oats.html#M000142">Oats.assert_equal</a>(old_count, new_count,
185
+ &quot;After deletion, creative counts did not decrease.&quot;)
186
+ </p>
187
+ </div>
188
+ </div>
189
+
190
+ <div id="method-M000143" class="method-detail">
191
+ <a name="M000143"></a>
192
+
193
+ <div class="method-heading">
194
+ <a href="Oats.src/M000143.html" target="Code" class="method-signature"
195
+ onclick="popupCode('Oats.src/M000143.html');return false;">
196
+ <span class="method-name">assert_not_equal</span><span class="method-args">(expected, actual, pre_message = nil)</span>
197
+ </a>
198
+ </div>
199
+
200
+ <div class="method-description">
201
+ </div>
202
+ </div>
203
+
204
+ <div id="method-M000145" class="method-detail">
205
+ <a name="M000145"></a>
206
+
207
+ <div class="method-heading">
208
+ <a href="Oats.src/M000145.html" target="Code" class="method-signature"
209
+ onclick="popupCode('Oats.src/M000145.html');return false;">
210
+ <span class="method-name">browser</span><span class="method-args">(url_or_site = nil, new_browser = nil)</span>
211
+ </a>
212
+ </div>
213
+
214
+ <div class="method-description">
215
+ <p>
216
+ Returns a <a href="Oats.html#M000145">browser</a> (<a
217
+ href="Oats.html#M000164">selenium</a> driver), logging into RL site or
218
+ opening URL. The <a href="Oats.html#M000145">browser</a> is retrieved and
219
+ reused in the subsequent rtest.*rb executions, but it is automatically
220
+ closed at the end of each <a href="Oats.html">Oats</a> <a
221
+ href="Oats.html#M000163">test</a>. If exists, the <a
222
+ href="Oats.html#M000145">browser</a> is also accessable via the <a
223
+ href="Oats.html#M000157">global</a> $<a
224
+ href="Oats.html#M000164">selenium</a>.
225
+ </p>
226
+ <p>
227
+ Parameters:
228
+ </p>
229
+ <table>
230
+ <tr><td valign="top">url_or_site:</td><td>A URL, or site:
231
+
232
+ <pre>
233
+ [Campaign, Admin, Vendor, VendorApprover,
234
+ Solutions, SolutionsApprover ]
235
+ </pre>
236
+ <p>
237
+ Required parameter for the first invocation, can be omitted in subsequent
238
+ invocations to get the current <a href="Oats.html#M000145">browser</a>.
239
+ Re-issueing it w/o logging out of the same site will reopen the landing
240
+ page. A different site will cause logout of the old site and login to the
241
+ new site. User will be created if it does not already exists.
242
+ </p>
243
+ </td></tr>
244
+ <tr><td valign="top">new_browser:</td><td>If true, will create a new <a href="Oats.html#M000145">browser</a> while
245
+ keeping the old one.
246
+
247
+ </td></tr>
248
+ </table>
249
+ <p>
250
+ Methods in addition to the <a href="Oats.html#M000164">selenium</a> driver
251
+ methods are:
252
+ </p>
253
+ <table>
254
+ <tr><td valign="top">login(site):</td><td>Same as <a href="Oats.html#M000145">Oats.browser(url_or_site)</a>, for a
255
+ site. Returns nil if site is not recognized.
256
+
257
+ </td></tr>
258
+ <tr><td valign="top">logout:</td><td>Logs out of the last logged in sites if any and returns <a
259
+ href="Oats.html#M000145">browser</a>. Logout may not succeed if logout
260
+ button is unavailable.
261
+
262
+ </td></tr>
263
+ </table>
264
+ <p>
265
+ Examples:
266
+ </p>
267
+ <pre>
268
+ browser = Oats.browser('Campaign')
269
+ browser.click(&quot;link=View Advertisers&quot;)
270
+ browser.login('Admin')
271
+ browser.logout
272
+ </pre>
273
+ </div>
274
+ </div>
275
+
276
+ <div id="method-M000168" class="method-detail">
277
+ <a name="M000168"></a>
278
+
279
+ <div class="method-heading">
280
+ <a href="Oats.src/M000168.html" target="Code" class="method-signature"
281
+ onclick="popupCode('Oats.src/M000168.html');return false;">
282
+ <span class="method-name">click</span><span class="method-args">(locator)</span>
283
+ </a>
284
+ </div>
285
+
286
+ <div class="method-description">
287
+ <p>
288
+ Simulate a user hover mouver over a object, <a
289
+ href="Oats.html#M000168">click</a> it using left key and release it Use
290
+ this when a standard <a href="Oats.html#M000164">selenium</a> <a
291
+ href="Oats.html#M000168">click</a> command doesn&#8216;t work
292
+ </p>
293
+ </div>
294
+ </div>
295
+
296
+ <div id="method-M000149" class="method-detail">
297
+ <a name="M000149"></a>
298
+
299
+ <div class="method-heading">
300
+ <a href="Oats.src/M000149.html" target="Code" class="method-signature"
301
+ onclick="popupCode('Oats.src/M000149.html');return false;">
302
+ <span class="method-name">context</span><span class="method-args">()</span>
303
+ </a>
304
+ </div>
305
+
306
+ <div class="method-description">
307
+ <p>
308
+ Returns hash object containing <a href="Oats.html#M000158">info</a> about
309
+ persistent oats internal variables for the complete oats execution.
310
+ Contents of <a href="Oats.html#M000149">Oats.context</a> are also persisted
311
+ into the results.dump in the results directory.
312
+ </p>
313
+ <p>
314
+ Examples:
315
+ </p>
316
+ <pre>
317
+ Oats.context['stop_oats'] == true # Request stopping oats after current test
318
+ </pre>
319
+ </div>
320
+ </div>
321
+
322
+ <div id="method-M000148" class="method-detail">
323
+ <a name="M000148"></a>
324
+
325
+ <div class="method-heading">
326
+ <a href="Oats.src/M000148.html" target="Code" class="method-signature"
327
+ onclick="popupCode('Oats.src/M000148.html');return false;">
328
+ <span class="method-name">data</span><span class="method-args">(map_string = nil)</span>
329
+ </a>
330
+ </div>
331
+
332
+ <div class="method-description">
333
+ <p>
334
+ <a href="Hash.html">Hash</a> object providing access to the oats.yml state
335
+ entries at the time of <a href="Oats.html#M000163">test</a> execution. Note
336
+ that <a href="Oats.html#M000148">Oats.data</a> contents are isolated from
337
+ modification across tests.
338
+ </p>
339
+ <pre>
340
+ map_string:: Period seperated YAML path into the current Oats.data
341
+ If not specified, returns the full hash.
342
+ </pre>
343
+ <p>
344
+ Examples:
345
+ </p>
346
+ <pre>
347
+ Oats.data 'selenium.browser' == 'firefox
348
+ Oats.data['selenium']['browser'] == 'firefox'
349
+ </pre>
350
+ </div>
351
+ </div>
352
+
353
+ <div id="method-M000169" class="method-detail">
354
+ <a name="M000169"></a>
355
+
356
+ <div class="method-heading">
357
+ <a href="Oats.src/M000169.html" target="Code" class="method-signature"
358
+ onclick="popupCode('Oats.src/M000169.html');return false;">
359
+ <span class="method-name">data</span><span class="method-args">(map_str = nil)</span>
360
+ </a>
361
+ </div>
362
+
363
+ <div class="method-description">
364
+ </div>
365
+ </div>
366
+
367
+ <div id="method-M000150" class="method-detail">
368
+ <a name="M000150"></a>
369
+
370
+ <div class="method-heading">
371
+ <a href="Oats.src/M000150.html" target="Code" class="method-signature"
372
+ onclick="popupCode('Oats.src/M000150.html');return false;">
373
+ <span class="method-name">debug</span><span class="method-args">(arg)</span>
374
+ </a>
375
+ </div>
376
+
377
+ <div class="method-description">
378
+ <p>
379
+ Output <a href="Oats.html#M000150">debug</a> level log entries.
380
+ </p>
381
+ </div>
382
+ </div>
383
+
384
+ <div id="method-M000151" class="method-detail">
385
+ <a name="M000151"></a>
386
+
387
+ <div class="method-heading">
388
+ <a href="Oats.src/M000151.html" target="Code" class="method-signature"
389
+ onclick="popupCode('Oats.src/M000151.html');return false;">
390
+ <span class="method-name">error</span><span class="method-args">(arg)</span>
391
+ </a>
392
+ </div>
393
+
394
+ <div class="method-description">
395
+ <p>
396
+ Output <a href="Oats.html#M000151">error</a> level log entries.
397
+ </p>
398
+ </div>
399
+ </div>
400
+
401
+ <div id="method-M000152" class="method-detail">
402
+ <a name="M000152"></a>
403
+
404
+ <div class="method-heading">
405
+ <a href="Oats.src/M000152.html" target="Code" class="method-signature"
406
+ onclick="popupCode('Oats.src/M000152.html');return false;">
407
+ <span class="method-name">exit</span><span class="method-args">(message=nil)</span>
408
+ </a>
409
+ </div>
410
+
411
+ <div class="method-description">
412
+ <p>
413
+ Exit a OATS Test from the middle without throwing an <a
414
+ href="Oats.html#M000151">error</a>.
415
+ </p>
416
+ </div>
417
+ </div>
418
+
419
+ <div id="method-M000154" class="method-detail">
420
+ <a name="M000154"></a>
421
+
422
+ <div class="method-heading">
423
+ <a href="Oats.src/M000154.html" target="Code" class="method-signature"
424
+ onclick="popupCode('Oats.src/M000154.html');return false;">
425
+ <span class="method-name">file</span><span class="method-args">(name)</span>
426
+ </a>
427
+ </div>
428
+
429
+ <div class="method-description">
430
+ <p>
431
+ Returns Windows <a href="Oats.html#M000154">file</a> path of a <a
432
+ href="Oats.html#M000154">file</a> name to be used with <a
433
+ href="Oats.html#M000154">file</a> uploads.
434
+ </p>
435
+ <table>
436
+ <tr><td valign="top">name:</td><td>globbed <a href="Oats.html#M000154">file</a> name inside the <a
437
+ href="Oats.html#M000163">test</a> directory or under test/data folder.
438
+
439
+ </td></tr>
440
+ </table>
441
+ <p>
442
+ Examples: image = <a href="Oats.html#M000154">Oats.file</a>
443
+ &quot;125x125_GIF_4K.gif&quot;
444
+ </p>
445
+ </div>
446
+ </div>
447
+
448
+ <div id="method-M000155" class="method-detail">
449
+ <a name="M000155"></a>
450
+
451
+ <div class="method-heading">
452
+ <a href="Oats.src/M000155.html" target="Code" class="method-signature"
453
+ onclick="popupCode('Oats.src/M000155.html');return false;">
454
+ <span class="method-name">filter</span><span class="method-args">(in_file, *param) {|line| ...}</span>
455
+ </a>
456
+ </div>
457
+
458
+ <div class="method-description">
459
+ <p>
460
+ Removes the variabilities from files in &#8216;<a
461
+ href="Oats.html#M000163">Oats.test</a>.result&#8217; by applying prescribed
462
+ <a href="Oats.html#M000155">filter</a> to each line of <a
463
+ href="Oats.html#M000154">file</a> and replaces it. The return value is the
464
+ filtered contents of the <a href="Oats.html#M000154">file</a>. The filtered
465
+ contents are also placed in test.out to be compared as expected results.
466
+ Errors will raise <a href="Oats/OatsFilterError.html">OatsFilterError</a>.
467
+ </p>
468
+ <ul>
469
+ <li>With a block replaces each line with result of the block.
470
+
471
+ </li>
472
+ <li>Without block, uses a pattern and replacement parameters for filtering.
473
+
474
+ </li>
475
+ <li>If pattern and replacement is missing it copies the whole input <a
476
+ href="Oats.html#M000154">file</a>.
477
+
478
+ </li>
479
+ <li>If in_file is a string, no output <a href="Oats.html#M000154">file</a> is
480
+ generated unless <a href="Oats.html#M000159">out_file</a> is given.
481
+
482
+ </li>
483
+ </ul>
484
+ <p>
485
+ Parameters:
486
+ </p>
487
+ <table>
488
+ <tr><td valign="top">in_file:</td><td>Name or path of <a href="Oats.html#M000154">file</a> that is to be filtered
489
+ and moved to <a href="Oats.html#M000163">Oats.test</a>.out. It can also be
490
+ String Array or String containing the actual contents. If the <a
491
+ href="Oats.html#M000154">file</a> contains a space, it is assumed to be
492
+ contents. Missing input or <a href="Oats.html#M000154">file</a> raises <a
493
+ href="Oats/OatsFilterError.html">OatsFilterError</a>.
494
+
495
+ </td></tr>
496
+ <tr><td valign="top"><a href="Oats.html#M000159">out_file</a>:</td><td>File name to use for the output <a href="Oats.html#M000154">file</a>. This
497
+ is an optional parameter which can be skipped. If skipped, basename of the
498
+ infile is used.
499
+
500
+ </td></tr>
501
+ <tr><td valign="top">pattern:</td><td>A regexp pattern to pass on to a gsub or grep method. Grep is used if
502
+ replacement parameter is unspecified, in other words
503
+ file_contents.grep(/pattern_string/)
504
+
505
+ </td></tr>
506
+ <tr><td valign="top">replacement:</td><td>Fixed string to replace the pattern by calling
507
+ file_contents.gsub(pattern,replacement)
508
+
509
+ </td></tr>
510
+ </table>
511
+ <p>
512
+ Examples:
513
+ </p>
514
+ <pre>
515
+ Oats.filter('input.txt') # Moves input.txt to test.out for auto-verification.
516
+ Oats.filter('input.txt','output.txt,/this/) # Considers only lines containing 'this'
517
+ Oats.filter('input.txt',/this.*that/,'thisAndThat') # Replaces indicated content
518
+ Oats.filter('input.txt') { |line| line unless line == 'this\n' } # Omits 'this\n' line
519
+ </pre>
520
+ </div>
521
+ </div>
522
+
523
+ <div id="method-M000157" class="method-detail">
524
+ <a name="M000157"></a>
525
+
526
+ <div class="method-heading">
527
+ <a href="Oats.src/M000157.html" target="Code" class="method-signature"
528
+ onclick="popupCode('Oats.src/M000157.html');return false;">
529
+ <span class="method-name">global</span><span class="method-args">()</span>
530
+ </a>
531
+ </div>
532
+
533
+ <div class="method-description">
534
+ <p>
535
+ Obsolete. Create classes and use class variables to carry over <a
536
+ href="Oats.html#M000157">global</a> <a href="Oats.html#M000158">info</a>.
537
+ </p>
538
+ </div>
539
+ </div>
540
+
541
+ <div id="method-M000156" class="method-detail">
542
+ <a name="M000156"></a>
543
+
544
+ <div class="method-heading">
545
+ <a href="Oats.src/M000156.html" target="Code" class="method-signature"
546
+ onclick="popupCode('Oats.src/M000156.html');return false;">
547
+ <span class="method-name">ide</span><span class="method-args">(input_suite_path, hash = nil )</span>
548
+ </a>
549
+ </div>
550
+
551
+ <div class="method-description">
552
+ <p>
553
+ Runs the input_suite_path from a particular <a
554
+ href="Oats.html#M000163">Oats.test</a>. Assumes <a
555
+ href="Oats.html#M000148">Oats.data</a> is initialized for <a
556
+ href="Oats.html#M000163">Oats.test</a>
557
+ </p>
558
+ <p>
559
+ Parameters:
560
+ </p>
561
+ <table>
562
+ <tr><td valign="top">input_suite_path:</td><td>path to the IDE suite HTML
563
+
564
+ </td></tr>
565
+ <tr><td valign="top">hash:</td><td>list from =&gt; to values to use for regeneration of the included <a
566
+ href="Oats.html#M000163">test</a>
567
+
568
+ </td></tr>
569
+ </table>
570
+ <p>
571
+ cases.
572
+ </p>
573
+ <p>
574
+ Examples:
575
+ </p>
576
+ <pre>
577
+ Oats.ide.run('../campaign/rtest.html', 'this_token&quot; =&gt; 'that_value')
578
+ </pre>
579
+ </div>
580
+ </div>
581
+
582
+ <div id="method-M000158" class="method-detail">
583
+ <a name="M000158"></a>
584
+
585
+ <div class="method-heading">
586
+ <a href="Oats.src/M000158.html" target="Code" class="method-signature"
587
+ onclick="popupCode('Oats.src/M000158.html');return false;">
588
+ <span class="method-name">info</span><span class="method-args">(arg)</span>
589
+ </a>
590
+ </div>
591
+
592
+ <div class="method-description">
593
+ <p>
594
+ Output <a href="Oats.html#M000158">info</a> level log entries.
595
+ </p>
596
+ </div>
597
+ </div>
598
+
599
+ <div id="method-M000160" class="method-detail">
600
+ <a name="M000160"></a>
601
+
602
+ <div class="method-heading">
603
+ <a href="Oats.src/M000160.html" target="Code" class="method-signature"
604
+ onclick="popupCode('Oats.src/M000160.html');return false;">
605
+ <span class="method-name">mysql</span><span class="method-args">(*sql_input)</span>
606
+ </a>
607
+ </div>
608
+
609
+ <div class="method-description">
610
+ <p>
611
+ Examples
612
+ </p>
613
+ <pre>
614
+ Oats.mysql('input.sql') =&gt; produces input.txt and returns its contents
615
+ Oats.mysql('input.sql', 'output.txt) =&gt; produces output.txt and returns its contents
616
+ mysql_results = Oats.mysql &quot;SELECT bu_lastname, FROM BusinessUser where bu_email='levent.atasoy@oats.org;XYZ'&quot;
617
+ result = Oats.mysql(my_sql_statement)
618
+ result.is_empty? # true if SQL returns nothing
619
+ result.last # string value for the last row of a single select statement
620
+ result[1][2] # second column for the first return result row
621
+ </pre>
622
+ </div>
623
+ </div>
624
+
625
+ <div id="method-M000147" class="method-detail">
626
+ <a name="M000147"></a>
627
+
628
+ <div class="method-heading">
629
+ <a href="Oats.src/M000147.html" target="Code" class="method-signature"
630
+ onclick="popupCode('Oats.src/M000147.html');return false;">
631
+ <span class="method-name">oload</span><span class="method-args">(ruby_file_name)</span>
632
+ </a>
633
+ </div>
634
+
635
+ <div class="method-description">
636
+ <p>
637
+ Loads the indicated ruby <a href="Oats.html#M000154">file</a> <a
638
+ href="Oats.html#M000154">file</a> after locating it in the tests directory.
639
+ </p>
640
+ <p>
641
+ Parameters: ruby_file_name: Name or path snippet of a the ruby <a
642
+ href="Oats.html#M000154">file</a>. Could be a glob.
643
+ </p>
644
+ <p>
645
+ Examples:
646
+ </p>
647
+ <pre>
648
+ Oats.oload 'rtest_AddCreatives'
649
+ Oats.oload 'verifyAddCreatives/rtest_Add*'
650
+ </pre>
651
+ </div>
652
+ </div>
653
+
654
+ <div id="method-M000159" class="method-detail">
655
+ <a name="M000159"></a>
656
+
657
+ <div class="method-heading">
658
+ <a href="Oats.src/M000159.html" target="Code" class="method-signature"
659
+ onclick="popupCode('Oats.src/M000159.html');return false;">
660
+ <span class="method-name">out_file</span><span class="method-args">(file_name, output = nil, is_assert = nil) {|f| ...}</span>
661
+ </a>
662
+ </div>
663
+
664
+ <div class="method-description">
665
+ <p>
666
+ Creates a <a href="Oats.html#M000154">file</a> handle to output into the
667
+ out directory with given name Returns the comparison with any previous ok
668
+ <a href="Oats.html#M000154">file</a> if exists.
669
+ </p>
670
+ <p>
671
+ Parameters:
672
+ </p>
673
+ <pre>
674
+ file_name: Appends '_&lt;count&gt;' to the this name if the file already exists.
675
+ output: String to output, must supply only if a block is not given.
676
+ is_assert: If set to true to assert failure when ok file exists and differs.
677
+ Examples:
678
+ </pre>
679
+ <p>
680
+ <a href="Oats.html#M000159">Oats.out_file</a>(&#8216;my_file.txt&#8217;,
681
+ &quot;Check this string&quot; } <a
682
+ href="Oats.html#M000159">Oats.out_file</a>(&#8216;my_file.txt&#8217;) { |f|
683
+ f.puts &quot;Check this string&quot; }
684
+ </p>
685
+ </div>
686
+ </div>
687
+
688
+ <div id="method-M000162" class="method-detail">
689
+ <a name="M000162"></a>
690
+
691
+ <div class="method-heading">
692
+ <a href="Oats.src/M000162.html" target="Code" class="method-signature"
693
+ onclick="popupCode('Oats.src/M000162.html');return false;">
694
+ <span class="method-name">rput</span><span class="method-args">(content_file, target_file_path = nil, host = nil, username = nil)</span>
695
+ </a>
696
+ </div>
697
+
698
+ <div class="method-description">
699
+ <pre>
700
+ Copies a file to the server via ssh using PuTTy/plink
701
+ Assumes pageant with keys for the username is up and running.
702
+ Returns the result of the standard output and standard error, which is
703
+ typically empty.
704
+ </pre>
705
+ <p>
706
+ Parameters:
707
+ </p>
708
+ <table>
709
+ <tr><td valign="top">content_file:</td><td>Path of the content <a href="Oats.html#M000154">file</a>, or the content
710
+ string if <a href="Oats.html#M000154">file</a>
711
+
712
+ </td></tr>
713
+ </table>
714
+ <pre>
715
+ does not exist.
716
+ </pre>
717
+ <table>
718
+ <tr><td valign="top">target_file_path:</td><td>Path of the <a href="Oats.html#M000154">file</a> on the server
719
+
720
+ </td></tr>
721
+ </table>
722
+ <p>
723
+ host/session: Same parameter as in <a
724
+ href="Oats.html#M000161">Oats.rssh</a>
725
+ </p>
726
+ <table>
727
+ <tr><td valign="top">username:</td><td>Same parameter as in <a href="Oats.html#M000161">Oats.rssh</a>
728
+
729
+ </td></tr>
730
+ </table>
731
+ <p>
732
+ Examples
733
+ </p>
734
+ <pre>
735
+ Oats.rput 'xxx xxxxxxx', '/tmp/myfile.txt' , 'qapp001.dyn.wh.oats.org'
736
+ Oats.rput 'c:/qa/oats-user.yml', '/tmp/myfile.txt' , 'qapp001.dyn.wh.oats.org'
737
+ </pre>
738
+ </div>
739
+ </div>
740
+
741
+ <div id="method-M000161" class="method-detail">
742
+ <a name="M000161"></a>
743
+
744
+ <div class="method-heading">
745
+ <a href="Oats.src/M000161.html" target="Code" class="method-signature"
746
+ onclick="popupCode('Oats.src/M000161.html');return false;">
747
+ <span class="method-name">rssh</span><span class="method-args">(cmd_file, dir = nil , host = nil, username = nil)</span>
748
+ </a>
749
+ </div>
750
+
751
+ <div class="method-description">
752
+ <pre>
753
+ Executes a script on an server via ssh using PuTTy/plink
754
+ Assumes pageant with keys for the username is up and running.
755
+ Returns the result of the standard output and standard error.
756
+ </pre>
757
+ <p>
758
+ Parameters:
759
+ </p>
760
+ <table>
761
+ <tr><td valign="top">cmd_file:</td><td>Path of the executable relative to dir
762
+
763
+ </td></tr>
764
+ <tr><td valign="top">dir:</td><td>Directory to cd prior to executing cmd_file. Home of user if omitted.
765
+
766
+ </td></tr>
767
+ </table>
768
+ <p>
769
+ host/session: Name for putty on which to execute cmd_file. Defaults via <a
770
+ href="Oats.html#M000148">Oats.data</a>
771
+ </p>
772
+ <table>
773
+ <tr><td valign="top">username:</td><td>Putty connection <a href="Oats.html#M000148">data</a> Login username.
774
+ Defaults via <a href="Oats.html#M000148">Oats.data</a>.
775
+
776
+ </td></tr>
777
+ </table>
778
+ <pre>
779
+ If username is 'root', executes the cmd_file as sudo root with
780
+ Oats.data[ssh.root_sudo_username].
781
+ root_sudo_username must be able to
782
+ - access host via Plink/Pageant
783
+ - sudo -s on the host
784
+ - cd to dir without being root.
785
+ </pre>
786
+ <p>
787
+ Examples
788
+ </p>
789
+ <pre>
790
+ out = Oats.rssh('/rl/www/vhosts/baselevel/automation/run_qr_transfer.pl')
791
+ Oats.rssh('./run_qr_transfer.pl', /rl/www/vhosts/baselevel/automation')
792
+ Oats.rssh('cat .config.yaml','/var/www/vhosts/baselevel')
793
+ Oats.rssh('ls httpd', '/var/log', nil, 'root')
794
+ </pre>
795
+ </div>
796
+ </div>
797
+
798
+ <div id="method-M000164" class="method-detail">
799
+ <a name="M000164"></a>
800
+
801
+ <div class="method-heading">
802
+ <a href="Oats.src/M000164.html" target="Code" class="method-signature"
803
+ onclick="popupCode('Oats.src/M000164.html');return false;">
804
+ <span class="method-name">selenium</span><span class="method-args">(mapping, method = :type)</span>
805
+ </a>
806
+ </div>
807
+
808
+ <div class="method-description">
809
+ <p>
810
+ Returns an intermediary object that invokes <a
811
+ href="Oats.html#M000164">selenium</a> with fields optionally mapped based
812
+ on YAML entries. Subsequent invocations (with optional method override)
813
+ </p>
814
+ <pre>
815
+ object.invoke(field,value, method)
816
+ </pre>
817
+ <p>
818
+ will invoke &#8217;$selenium.method field, value&#8216;
819
+ </p>
820
+ <p>
821
+ Parameters:
822
+ </p>
823
+ <pre>
824
+ mapping: A string in which YAML nodes are separated by '.' and pointing to
825
+ the final hash node in Oats.data that containing the field mappings.
826
+ method: Default method invoked by selenium. Default is ':type'
827
+ Methods for 'type' and 'select' can also be called directly
828
+ </pre>
829
+ <p>
830
+ Examples:
831
+ </p>
832
+ <pre>
833
+ sel = Oats.selenium &quot;SolutionsVendor.create_vendor&quot;
834
+ sel.invoke &quot;address1&quot;, &quot;21700 Oxnard Street&quot;
835
+ Will replace address1 with contents of SolutionsVendor:create_vendor:address1
836
+ in Oats.data
837
+ sel.type &quot;address1&quot;, &quot;21700 Oxnard Street&quot;
838
+ sel.select &quot;state&quot;, &quot;label=CALIFORNIA&quot;
839
+ </pre>
840
+ </div>
841
+ </div>
842
+
843
+ <div id="method-M000153" class="method-detail">
844
+ <a name="M000153"></a>
845
+
846
+ <div class="method-heading">
847
+ <a href="Oats.src/M000153.html" target="Code" class="method-signature"
848
+ onclick="popupCode('Oats.src/M000153.html');return false;">
849
+ <span class="method-name">skip_unless_previous_test_is_ok</span><span class="method-args">(or_if_true = false)</span>
850
+ </a>
851
+ </div>
852
+
853
+ <div class="method-description">
854
+ <p>
855
+ Raise <a href="OatsTestExit.html">OatsTestExit</a> and SKIP current <a
856
+ href="Oats.html#M000163">test</a> if there was a previous <a
857
+ href="Oats.html#M000163">test</a> and if previous <a
858
+ href="Oats.html#M000163">test</a> dif not pass or or_if_true is true
859
+ </p>
860
+ </div>
861
+ </div>
862
+
863
+ <div id="method-M000146" class="method-detail">
864
+ <a name="M000146"></a>
865
+
866
+ <div class="method-heading">
867
+ <a href="Oats.src/M000146.html" target="Code" class="method-signature"
868
+ onclick="popupCode('Oats.src/M000146.html');return false;">
869
+ <span class="method-name">system_capture</span><span class="method-args">()</span>
870
+ </a>
871
+ </div>
872
+
873
+ <div class="method-description">
874
+ <p>
875
+ Capture system screenshot and logs
876
+ </p>
877
+ </div>
878
+ </div>
879
+
880
+ <div id="method-M000163" class="method-detail">
881
+ <a name="M000163"></a>
882
+
883
+ <div class="method-heading">
884
+ <a href="Oats.src/M000163.html" target="Code" class="method-signature"
885
+ onclick="popupCode('Oats.src/M000163.html');return false;">
886
+ <span class="method-name">test</span><span class="method-args">()</span>
887
+ </a>
888
+ </div>
889
+
890
+ <div class="method-description">
891
+ <p>
892
+ Returns the current <a href="TestData.html">TestData</a> object. You can
893
+ use the public instance methods of <a href="TestData.html">TestData</a> to
894
+ access to <a href="Oats.html#M000163">test</a> path components or other <a
895
+ href="Oats.html#M000163">test</a> information.
896
+ </p>
897
+ </div>
898
+ </div>
899
+
900
+ <div id="method-M000166" class="method-detail">
901
+ <a name="M000166"></a>
902
+
903
+ <div class="method-heading">
904
+ <a href="Oats.src/M000166.html" target="Code" class="method-signature"
905
+ onclick="popupCode('Oats.src/M000166.html');return false;">
906
+ <span class="method-name">unique</span><span class="method-args">(prefix = nil)</span>
907
+ </a>
908
+ </div>
909
+
910
+ <div class="method-description">
911
+ <p>
912
+ Returns a <a href="Oats.html#M000166">unique</a> (within a second) string
913
+ for each host and input name. Same id will be returned if called from the
914
+ same <a href="Oats.html#M000163">test</a> of the host with the same prefix.
915
+ </p>
916
+ <p>
917
+ Parameters:
918
+ </p>
919
+ <table>
920
+ <tr><td valign="top">prefix:</td><td>Prefix string to use.
921
+
922
+ </td></tr>
923
+ </table>
924
+ <p>
925
+ Examples:
926
+ </p>
927
+ <pre>
928
+ Oats.unique =&gt; &quot;LATASOYHP_22220703&quot;
929
+ Oats.unique('test') =&gt; &quot;test_22220732&quot;
930
+ </pre>
931
+ </div>
932
+ </div>
933
+
934
+ <div id="method-M000165" class="method-detail">
935
+ <a name="M000165"></a>
936
+
937
+ <div class="method-heading">
938
+ <a href="Oats.src/M000165.html" target="Code" class="method-signature"
939
+ onclick="popupCode('Oats.src/M000165.html');return false;">
940
+ <span class="method-name">wait_until</span><span class="method-args">(*args) {|| ...}</span>
941
+ </a>
942
+ </div>
943
+
944
+ <div class="method-description">
945
+ <p>
946
+ Samples the given block each second until it returns true or times out.
947
+ Raises <a href="OatsTestError.html">OatsTestError</a> if times out or
948
+ returns true.
949
+ </p>
950
+ <p>
951
+ Parameters (also allowed as <a href="Hash.html">Hash</a>):
952
+ </p>
953
+ <pre>
954
+ message: Exception message to issue upon timeout.
955
+ seconds: For timeout, defaults from Oats.data selenium.command_timeout
956
+ is_return: Returns false if times out instead of raising OatsTestError.
957
+ </pre>
958
+ <p>
959
+ Example:
960
+ </p>
961
+ <pre>
962
+ Oats.wait_until(&quot;SolutionsVendor.create_vendor&quot;, 100) do
963
+ count = count + 1; count == 10
964
+ end
965
+ </pre>
966
+ </div>
967
+ </div>
968
+
969
+ <div id="method-M000167" class="method-detail">
970
+ <a name="M000167"></a>
971
+
972
+ <div class="method-heading">
973
+ <a href="Oats.src/M000167.html" target="Code" class="method-signature"
974
+ onclick="popupCode('Oats.src/M000167.html');return false;">
975
+ <span class="method-name">warn</span><span class="method-args">(arg)</span>
976
+ </a>
977
+ </div>
978
+
979
+ <div class="method-description">
980
+ <p>
981
+ Output warning level log entries.
982
+ </p>
983
+ </div>
984
+ </div>
985
+
986
+
987
+ </div>
988
+
989
+
990
+ </div>
991
+
992
+
993
+ <div id="validator-badges">
994
+ <p><small><a href="http://validator.w3.org/check/referer">[Validate]</a></small></p>
995
+ </div>
996
+
997
+ </body>
998
+ </html>