oats 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/Gemfile +15 -0
- data/README.txt +165 -0
- data/Rakefile +2 -0
- data/bin/agent +204 -0
- data/bin/oats +10 -0
- data/bin/occ +29 -0
- data/bin/results_cleanup +6 -0
- data/doc/COPYING +55 -0
- data/doc/LICENSE +55 -0
- data/doc/OATS_Framework.doc +0 -0
- data/doc/classes/ApplicationLogs.html +239 -0
- data/doc/classes/Campaign.html +843 -0
- data/doc/classes/CommandlineOptions.html +131 -0
- data/doc/classes/Driver.html +182 -0
- data/doc/classes/Hash.html +137 -0
- data/doc/classes/Ide.html +194 -0
- data/doc/classes/MapSelenium.html +197 -0
- data/doc/classes/Net.html +107 -0
- data/doc/classes/Oats/OatsFilterError.html +119 -0
- data/doc/classes/Oats.html +998 -0
- data/doc/classes/OatsAssertError.html +119 -0
- data/doc/classes/OatsBadInput.html +119 -0
- data/doc/classes/OatsData.html +290 -0
- data/doc/classes/OatsError.html +117 -0
- data/doc/classes/OatsExit.html +117 -0
- data/doc/classes/OatsLock.html +254 -0
- data/doc/classes/OatsMain.html +182 -0
- data/doc/classes/OatsMysqlError.html +113 -0
- data/doc/classes/OatsMysqlMissingInput.html +113 -0
- data/doc/classes/OatsReportError.html +113 -0
- data/doc/classes/OatsSetupError.html +119 -0
- data/doc/classes/OatsTestError.html +119 -0
- data/doc/classes/OatsTestExit.html +119 -0
- data/doc/classes/OatsTestLocateError.html +120 -0
- data/doc/classes/OatsVerifyError.html +119 -0
- data/doc/classes/Ragent.html +397 -0
- data/doc/classes/Rclient.html +236 -0
- data/doc/classes/Report.html +368 -0
- data/doc/classes/Reports.html +244 -0
- data/doc/classes/RestApi.html +333 -0
- data/doc/classes/RhttpClient.html +236 -0
- data/doc/classes/Rimap.html +170 -0
- data/doc/classes/Rmysql.html +176 -0
- data/doc/classes/Roptions.html +131 -0
- data/doc/classes/Rselenium.html +233 -0
- data/doc/classes/Rssh.html +138 -0
- data/doc/classes/Runnable.html +174 -0
- data/doc/classes/SFTriggers.html +206 -0
- data/doc/classes/Selenium/Client/Driver.html +211 -0
- data/doc/classes/Selenium/Client.html +107 -0
- data/doc/classes/Selenium.html +107 -0
- data/doc/classes/SystemCapture.html +304 -0
- data/doc/classes/TestCase.html +418 -0
- data/doc/classes/TestData.html +235 -0
- data/doc/classes/TestList.html +264 -0
- data/doc/classes/Tools.html +244 -0
- data/doc/classes/Util.html +201 -0
- data/doc/classes/Variation.html +206 -0
- data/doc/fr_class_index.html +92 -0
- data/doc/fr_method_index.html +465 -0
- data/doc/index.html +23 -0
- data/doc/oats_httpd.conf +32 -0
- data/doc/oats_user.yml +25 -0
- data/doc/rdoc-style.css +208 -0
- data/lib/deep_merge/.gitignore +2 -0
- data/lib/deep_merge/core.rb +195 -0
- data/lib/deep_merge/deep_merge.rb +1 -0
- data/lib/deep_merge/deep_merge_hash.rb +28 -0
- data/lib/deep_merge/rails_compat.rb +27 -0
- data/lib/oats/application_logs.rb +163 -0
- data/lib/oats/build_id.rb +58 -0
- data/lib/oats/commandline_options.rb +128 -0
- data/lib/oats/diff.rb +278 -0
- data/lib/oats/driver.rb +492 -0
- data/lib/oats/ide.rb +227 -0
- data/lib/oats/keywords.rb +67 -0
- data/lib/oats/log4r_init.rb +14 -0
- data/lib/oats/mysql.rb +97 -0
- data/lib/oats/oats.rb +637 -0
- data/lib/oats/oats_data.rb +400 -0
- data/lib/oats/oats_exceptions.rb +25 -0
- data/lib/oats/oats_lock.rb +261 -0
- data/lib/oats/oats_selenium_api.rb +639 -0
- data/lib/oats/oselenium.rb +189 -0
- data/lib/oats/ossh.rb +36 -0
- data/lib/oats/patches_for_eventmachine_12.10.rb +66 -0
- data/lib/oats/ragent.rb +321 -0
- data/lib/oats/rclient.rb +42 -0
- data/lib/oats/report.rb +207 -0
- data/lib/oats/roptions.rb +88 -0
- data/lib/oats/test_case.rb +510 -0
- data/lib/oats/test_data.rb +98 -0
- data/lib/oats/test_list.rb +141 -0
- data/lib/oats/unixdiff.rb +75 -0
- data/lib/oats/util.rb +125 -0
- data/lib/oats/version.rb +3 -0
- data/lib/oats.rb +36 -0
- data/nbproject/configs/agent.properties +0 -0
- data/nbproject/configs/gr.properties +0 -0
- data/nbproject/project.properties +10 -0
- data/nbproject/project.xml +17 -0
- data/oats.gemspec +42 -0
- data/oats_ini.yml +258 -0
- data/oats_tests/Gemfile +18 -0
- data/oats_tests/aut_ini.yml +30 -0
- data/oats_tests/bin/oats +8 -0
- data/oats_tests/environments/qa.yml +4 -0
- data/oats_tests/environments/qa_chrome.yml +4 -0
- data/oats_tests/examples/core/coreExamples.yml +8 -0
- data/oats_tests/examples/core/expectedException.rb +39 -0
- data/oats_tests/examples/core/ok_verify.rb +2 -0
- data/oats_tests/examples/core/ok_verify.rb_ok/out/myfile.txt +1 -0
- data/oats_tests/examples/core/ok_verify.rb_ok/out/myfile2.txt +1 -0
- data/oats_tests/examples/core/ok_verify.rb_ok/rats_test.log +2 -0
- data/oats_tests/examples/core/unexpectedException.rb +30 -0
- data/oats_tests/examples/examples.yml +13 -0
- data/oats_tests/examples/gui/guiExamples.yml +7 -0
- data/oats_tests/examples/gui/seleniumGoogle.rb +10 -0
- data/oats_tests/examples/gui/webdriverGoogle.rb +9 -0
- data/oats_tests/examples/keywords/SampleXlList-1.xls +0 -0
- data/oats_tests/examples/keywords/SampleXlList-2.xls +0 -0
- data/oats_tests/examples/keywords/SampleXlLists.xls +0 -0
- data/oats_tests/examples/keywords/keywordsDriver.rb +1 -0
- data/oats_tests/examples/keywords/keywordsExamples.yml +8 -0
- data/oats_tests/examples/keywords/keywordsTC1.yml +5 -0
- data/oats_tests/examples/keywords/keywordsTestlist.yml +16 -0
- data/oats_tests/examples/needsWork/addTestDynamically.rb +4 -0
- data/oats_tests/examples/needsWork/emailVerify.rb +34 -0
- data/oats_tests/examples/needsWork/testSql/rtest.sql +6 -0
- data/oats_tests/examples/needsWork/testSql/rtest.yml +11 -0
- data/oats_tests/examples/occTest/occTest.rb +13 -0
- data/oats_tests/examples/occTest/occTest_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_1_4.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_2_4.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_1.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_2.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_3.rb +1 -0
- data/oats_tests/examples/occTest/occTest_3_4.rb +1 -0
- data/oats_tests/examples/occTest/occTest_4.rb +1 -0
- data/oats_tests/examples/occTest/occTestlist.yml +9 -0
- data/oats_tests/examples/occTest/occTestlist_1.yml +9 -0
- data/oats_tests/examples/occTest/occTestlist_2.yml +9 -0
- data/oats_tests/examples/occTest/occTestlist_3.yml +9 -0
- data/oats_tests/examples/occTest/variation1.yml +4 -0
- data/oats_tests/examples/occTest/variation2.yml +4 -0
- data/oats_tests/examples/testFileLocationUnitTests/extn_driver.rb +4 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder/oats.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder1/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder1/t1_1.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder2/oats.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder2/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/folder2/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/no_yaml.rb +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/post_yaml.rb +1 -0
- data/oats_tests/examples/testFileLocationUnitTests/t1.rb +4 -0
- data/oats_tests/examples/testFileLocationUnitTests/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/t1_1.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir/oats.yml +3 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir2/t1.rb +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/testDir2/t1.yml +2 -0
- data/oats_tests/examples/testFileLocationUnitTests/unitTestList.yml +36 -0
- data/oats_tests/examples/testFileLocationUnitTests/yml_driver.rb +2 -0
- data/oats_tests/lib/business.rb +28 -0
- data/oats_tests/lib/sample_xl_lists.rb +37 -0
- data/test/common_test_unit_setup.rb +21 -0
- data/test/test_basic.rb +16 -0
- data/test/test_selenium.rb +16 -0
- data/test/test_xl_lists.rb +16 -0
- metadata +291 -0
data/oats_ini.yml
ADDED
@@ -0,0 +1,258 @@
|
|
1
|
+
# OATS Initialization File
|
2
|
+
---
|
3
|
+
# To keep maintenance to a minimum, uncomment only the parameters you need in
|
4
|
+
# your oats_user.yml or an environment.yml file. When you uncomment a parameter
|
5
|
+
# do not forget to uncomment all the parents of the parameters also in order to
|
6
|
+
# keep the YAML file valid.
|
7
|
+
# Parameters designated as:
|
8
|
+
# * R-U:rec are recommended for use in oats_user.yml
|
9
|
+
# * R-U:opt are for occasional use in oats_user.yml
|
10
|
+
# * C-L can also be over-ridden via command-line
|
11
|
+
# * E-V:recl are recommended for use in environment environment files.
|
12
|
+
# * none: are best to leave to system defaults unless required
|
13
|
+
|
14
|
+
# String values containing 'Oats.' and 'ENV[' are evaluated as Ruby
|
15
|
+
# expressions referring to the previously loaded YAML Oats.data and environment
|
16
|
+
# variables. If after an evaluation resulting value is 'previous_old_value', then
|
17
|
+
# previous value is restored.
|
18
|
+
# Examples of boolean expressions which can be used in tests:
|
19
|
+
# Oats.data['env']['type'] == 'qa'
|
20
|
+
# Oats.global['agent'] ? "oatsuserapi@gmail.com":'previous_oats_value'
|
21
|
+
|
22
|
+
# OATS recognizes the following key modifiers
|
23
|
+
# (define) # used by oats_user and environments, adds new keys w/o issuing error messages
|
24
|
+
# (default) # used by test.yml, defines default values
|
25
|
+
# Advertiser (define): Name
|
26
|
+
# Setting this at any level will prevent (define) errors, at least in all keys below
|
27
|
+
# and possibly in other branches of Oats.data. Reset it under other branches if needed.
|
28
|
+
# define_always: TRUE
|
29
|
+
|
30
|
+
# This section contains parameters controlling oats execution. All
|
31
|
+
# parameters in this section plus a few from other sections can be overridden
|
32
|
+
# from the commandline (For details, see 'oats.rb \--help'.)
|
33
|
+
# * If an input is a YAML file, it may include other test_files which are
|
34
|
+
# executed after merging in the YAML contents.
|
35
|
+
# * environments included in the any test YAML are applied to the tests listed in
|
36
|
+
# the YAML, multiplexing the test cases.
|
37
|
+
|
38
|
+
# YAML to overlay into the current YAML. Keys in the the included YAMLs are
|
39
|
+
# not verified against oats_ini.yml
|
40
|
+
# For performance and unambiguity, path should be given relative to the folder
|
41
|
+
# of the test for test yamls, or relative to test_dir.
|
42
|
+
# Otherwise it will be searched in test_dir.
|
43
|
+
# Over-rides used in user, environment, or list YAMLs are checked for consistency
|
44
|
+
# with this oats_ini.yml definitions (keys included files are not checked.)
|
45
|
+
# Any value specified in this file can be later reset to nil by setting it to NO.
|
46
|
+
# The oats_ini.yml will be supplemented by contents of <dir_tests>/aut_ini.yml, if present
|
47
|
+
include_yaml:
|
48
|
+
# Use if the included YAML entries should override the current YAML entries
|
49
|
+
include_yaml_later:
|
50
|
+
|
51
|
+
execution:
|
52
|
+
|
53
|
+
# A YAML array containing test names to be executed by OATS. Each name must
|
54
|
+
# either be a test directory, or another YAML file, file.rb, or file.txt.
|
55
|
+
# If the input is a YAML file it is treated as a test suite unless yml_handler is
|
56
|
+
# set.
|
57
|
+
# Test_files in test suite yml files will be executed after merging in their
|
58
|
+
# YAML contents.
|
59
|
+
# In test file is file.rb, it will be executed in a test directory named 'file'
|
60
|
+
# If it is file.txt, each row of the file will be included as an element of the
|
61
|
+
# test_files array, after stripping comments starting with '#'.
|
62
|
+
# Before each test is processed, testName.yml or oats.yml will be read if found
|
63
|
+
# at the same level as the test executable path.
|
64
|
+
# Any other file.extension will be handled by <extension>_handler if set as below
|
65
|
+
yml_handler: # yml_processor.rb
|
66
|
+
test_files: [ examples/occTest/occTestlist.yml ] # C-L,R-U:rec
|
67
|
+
|
68
|
+
|
69
|
+
# A YAML array listing YAML files describing environments to be executed for
|
70
|
+
# each test. This is a way of multiplexing the test cases. OATS will repeat
|
71
|
+
# the execution of each test files after merging in the oats_data from the
|
72
|
+
# each YAML. Typical use of environments is to repeat the tests for different
|
73
|
+
# environments or different parameters. You may also want to make a copy of
|
74
|
+
# the environment YAML file in dir_tests/environments into your own
|
75
|
+
# dir_environments directory and customize the E-V:rec entries for yourself.
|
76
|
+
environments: [ qa.yml ] # C-L,R-U:rec
|
77
|
+
|
78
|
+
# User's directory containing overrides for system supplied environments.
|
79
|
+
dir_environments: ENV['HOME'] + '/environments' # R-U:opt
|
80
|
+
|
81
|
+
# Execution of a test is skipped if this evaluates to true.
|
82
|
+
no_run: # C-L,R-U:opt
|
83
|
+
|
84
|
+
# List of component hosts in the env from which to pick build version and display in OCC
|
85
|
+
build_versions: (Oats.global and Oats.global['agent']) ? Array.new(1,'web'):Array.new # Avoid wasting time for dev
|
86
|
+
|
87
|
+
# Controls the amount of logs output to the log files.
|
88
|
+
log_level: DEBUG # INFO, WARN, ERROR, FATAL # R-U:opt
|
89
|
+
|
90
|
+
# Root directory for the output results
|
91
|
+
dir_results: ENV['HOME'] + '/results' # C-L,R-U:opt
|
92
|
+
|
93
|
+
# Set this to yes or the IP of the browser host to tail the application error
|
94
|
+
# logs. Typcially used from commandline.
|
95
|
+
tail_logs_ip: # {10.10.20.51 | yes} # C-L:opt
|
96
|
+
|
97
|
+
# Used to switch the root directory to search for test files. The system
|
98
|
+
# searches dir_tests for test_files or environments if they are specified as
|
99
|
+
# relative paths. If a file pattern is given, the first match is used, with
|
100
|
+
# names matching directories are given priority over matches for YAML
|
101
|
+
# files.
|
102
|
+
dir_tests: ENV['OATS_TESTS'] || ENV['OATS_HOME'] + '/oats_tests'
|
103
|
+
|
104
|
+
# Set to copy the test contents to the dir_results before executing the test
|
105
|
+
run_in_dir_results: YES
|
106
|
+
|
107
|
+
# Set to see full stacktrace on ruby tests.
|
108
|
+
full_stacktrace:
|
109
|
+
|
110
|
+
# Ruby Class methods, file names, or paths in test_dir to be executed before and after a oats test.
|
111
|
+
oload_pre: # String or array of rb file names or paths to be executed
|
112
|
+
oload_post: # in the given order
|
113
|
+
|
114
|
+
# Ruby file names or paths in test_dir to be executed before and after a test yaml.
|
115
|
+
handler_pre_test_list: # path to handler.rb be executed
|
116
|
+
handler_post_test_list: # path to handler.rb be executed
|
117
|
+
|
118
|
+
# When the test has an error and this is set, no further rtest_* files are executed
|
119
|
+
quit_on_error:
|
120
|
+
|
121
|
+
# Skip the current test if there was a previous test and that it did not pass
|
122
|
+
skip_unless_previous_test_is_ok:
|
123
|
+
|
124
|
+
# To use during initial test development. YES: Skips the comparison of ok folder contents.
|
125
|
+
# UPDATE Synchs the contents of ok with out by adding or removing files to/from ok
|
126
|
+
ok_verify: # UPDATE | YES
|
127
|
+
# out directory existence is not checked unless this is set
|
128
|
+
out_verify:
|
129
|
+
|
130
|
+
# Default time for Oats.wait_until
|
131
|
+
wait_until_timeout: 90
|
132
|
+
|
133
|
+
|
134
|
+
# Parameters used in agent mode to communicate with OCC
|
135
|
+
occ:
|
136
|
+
# For agent to contact occ. Also what occ host sees itself as, via ENV['HOSTNAME'].downcase
|
137
|
+
server_host: ENV['OATS_OCC_HOST'] || ENV['HOSTNAME'].downcase
|
138
|
+
# OCC server port for OCC to request agent to contact
|
139
|
+
server_port: ENV['OATS_OCC_PORT'] || 3000
|
140
|
+
# Agent-server host name to relay to OCC, defaults to downcased hostname if nil
|
141
|
+
agent_host: ENV['HOSTNAME'].downcase
|
142
|
+
# Oats agent/server name to display in OCC. Defaults to agent_host
|
143
|
+
agent_nickname: # mymach1
|
144
|
+
# Oats agent/server to listen and OCC to contact
|
145
|
+
agent_port: 3010
|
146
|
+
# Timeout for OCC to respond, may take a while if OCC is listing all jobs
|
147
|
+
timeout_waiting_for_occ: 15
|
148
|
+
|
149
|
+
|
150
|
+
##############################
|
151
|
+
# Controls the behavior of selenium related execution.
|
152
|
+
selenium:
|
153
|
+
|
154
|
+
# Decides which browser to use for IDE tests. Only this selenium parameter can
|
155
|
+
# be overridden from the commandline.
|
156
|
+
browser_type: firefox # C-L,R-U:opt
|
157
|
+
|
158
|
+
#Set this to download collection on chrome and IE and make sure to empty the default download directory.
|
159
|
+
default_downloads:
|
160
|
+
# Hosts for each browser type to use webdriver in remote mode.
|
161
|
+
remote_webdriver:
|
162
|
+
oats_dir: c:/users/qatest/oats
|
163
|
+
os: Windows_NT
|
164
|
+
ie: 10.0.11.32:4445 # qa-testing # Remove the value from this entry in order to run ie locally
|
165
|
+
chrome: # Put in remote driver host to run remotely
|
166
|
+
firefox: #10.0.11.32:4445
|
167
|
+
|
168
|
+
# Additional options to pass webdriver
|
169
|
+
options:
|
170
|
+
chrome:
|
171
|
+
switches: [--start-maximized]
|
172
|
+
|
173
|
+
# For webdriver, this is a non-default profile name is defined via -profilemanager
|
174
|
+
# A non-default executable firefox_path is specified by defining an environment
|
175
|
+
# variable matching this profile name. Will use default if this profile is undefined.
|
176
|
+
firefox_profile: selenium
|
177
|
+
|
178
|
+
# Sets the firefox profile properties indicated.
|
179
|
+
firefox_profile_set:
|
180
|
+
native_events: YES
|
181
|
+
# assume_untrusted_certificate_issuer: NO
|
182
|
+
|
183
|
+
# Conditionally pause and do not close browser at the of oats test involving
|
184
|
+
# selenium. OATS execution will continue after the user presses ENTER (for rb)
|
185
|
+
# or when the user closes the IDE results page.
|
186
|
+
# Default (NIL) implies 0 if the first test is a list, 1 otherwise
|
187
|
+
pause_on_exit: # -N: always, 0:never, 1:only on failure, N: seconds to pause
|
188
|
+
|
189
|
+
# Set to YES to skip the selenium screen capture
|
190
|
+
skip_capture:
|
191
|
+
|
192
|
+
# Timeout in seconds for capture requests.
|
193
|
+
capture_timeout: 10
|
194
|
+
|
195
|
+
# Set to close the browser session only if an error is raised during execution (not verify)
|
196
|
+
keep_alive: YES
|
197
|
+
|
198
|
+
ide:
|
199
|
+
# Use this port for IDE executions.
|
200
|
+
port: 4445
|
201
|
+
# Minutes to limi tthe full IDE suite execution.
|
202
|
+
# For individual action timeout, need to use "setTimeout millisecs" in test html
|
203
|
+
suite_timeout: 5 # 30 # Default
|
204
|
+
# Applicable only to IDE tests, setting this will skip the GUI execution and
|
205
|
+
# will only regenerate the test HTML files based on the environments so that
|
206
|
+
# they can be manually debugged or executed via the IDE.
|
207
|
+
generate: # C-L,R-U:opt
|
208
|
+
|
209
|
+
# Set NO to remove *.gen* files after a test passes.
|
210
|
+
keep_generated_files: YES
|
211
|
+
|
212
|
+
# Browser to use to show IDE test results. Default inherits from firefox_executable
|
213
|
+
result_browser: explorer # iexplore
|
214
|
+
|
215
|
+
show_result:
|
216
|
+
|
217
|
+
#####################################################################
|
218
|
+
##### PARAMETERS BELOW TYPICALLY VARIES ACROSS ENVIRONMENTS #####
|
219
|
+
#####################################################################
|
220
|
+
|
221
|
+
|
222
|
+
# Application environment information
|
223
|
+
env:
|
224
|
+
type: qa # production
|
225
|
+
web:
|
226
|
+
host: # Fully qualified host name for web host
|
227
|
+
logs: # ["/var/log/messages", "/var/log/httpd/error_log"] # E-V:opt Array of logs to search for errors
|
228
|
+
sql:
|
229
|
+
# Choose the DB to connect. When nil, Omysql will raise OatsMysqlNoConnect
|
230
|
+
# causing such tests to be classified as SKIPPED unless the callser rescues it.
|
231
|
+
connect: main
|
232
|
+
main:
|
233
|
+
host:
|
234
|
+
user:
|
235
|
+
password:
|
236
|
+
database:
|
237
|
+
|
238
|
+
# Oats::Keywords.process Processes values based on the
|
239
|
+
# <class>:
|
240
|
+
# <list>:
|
241
|
+
# keywords:
|
242
|
+
# <oats_data>
|
243
|
+
#<class>:
|
244
|
+
keywords:
|
245
|
+
class: # Class file containing methods for each keyword
|
246
|
+
list: # Optional list name under which to find the keywords and data in Oats.data
|
247
|
+
|
248
|
+
|
249
|
+
###############
|
250
|
+
|
251
|
+
## Used to ssh to servers via PuTTy/plink and execute scripts or access log files
|
252
|
+
## See Oats.rssh documentation for more details
|
253
|
+
#ssh:
|
254
|
+
# # Putty connection data Login username
|
255
|
+
# username: loguser
|
256
|
+
# # Name for env host or putty session on which to execute cmd_file
|
257
|
+
# # Plink must be setup to auto-login as root_sudo_username into the host
|
258
|
+
# root_sudo_username: # LDAP username to sudo if username is 'root'.
|
data/oats_tests/Gemfile
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
#source "http://rubygems.org"
|
2
|
+
|
3
|
+
# OATS Framework
|
4
|
+
gem 'oats' unless defined?(OATS_GEM_IS_ALREADY_INCLUDED)
|
5
|
+
# OATS_GEM_IS_ALREADY_INCLUDED
|
6
|
+
|
7
|
+
## List GEMs needed by the AUT goes here
|
8
|
+
##
|
9
|
+
## To run XL based tests
|
10
|
+
gem 'spreadsheet'
|
11
|
+
#require 'sample_xl_lists' # Include XL based classes to be used.
|
12
|
+
#
|
13
|
+
gem 'selenium-webdriver' # To run WebDriver tests
|
14
|
+
gem 'json' # To run WebDriver tests w/o ok_json to improve performance
|
15
|
+
#
|
16
|
+
#gem 'nokogiri' # http://nokogiri.org/tutorials
|
17
|
+
#gem 'rest-client'
|
18
|
+
#gem 'watir-webdriver'
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# For full documentation on OATS, please refer to https://github.com/latasoy/oats
|
2
|
+
|
3
|
+
keywords:
|
4
|
+
class: # Class file containing methods for each keyword
|
5
|
+
list: # List name under which to find the keywords and data in Oats.data
|
6
|
+
|
7
|
+
SampleXlLists:
|
8
|
+
SampleXlList-1:
|
9
|
+
data1: init-value1
|
10
|
+
data2: init-value2
|
11
|
+
data3: init-value3
|
12
|
+
|
13
|
+
env:
|
14
|
+
type: qa # production
|
15
|
+
web:
|
16
|
+
host:
|
17
|
+
|
18
|
+
sql:
|
19
|
+
# Choose the DB to connect. When nil, Oats.mysql will raise OatsMysqlNoConnect
|
20
|
+
# causing such tests to be classified as SKIPPED unless the callser rescues it.
|
21
|
+
connect: main
|
22
|
+
main:
|
23
|
+
host: mysql.your-network.com
|
24
|
+
user: qauser
|
25
|
+
password: dbPasswd
|
26
|
+
database: dbName
|
27
|
+
|
28
|
+
imap:
|
29
|
+
username: testid@gmail.com
|
30
|
+
password: testpasswd
|
data/oats_tests/bin/oats
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
# Tests to demo and verify various OATS framework features.
|
2
|
+
---
|
3
|
+
execution:
|
4
|
+
test_files:
|
5
|
+
|
6
|
+
- examples/core/expectedException # Exception usage in OATS
|
7
|
+
- examples/core/unexpectedException # Exception usage in OATS
|
8
|
+
- examples/core/ok_verify # Demonstrate automatic file output comparison features
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# Raising any exceptions will quit processing the test BY designating it as FAIL.
|
2
|
+
# * OatsTestError: Use for any generic test execution exception
|
3
|
+
# * OatsVerifyError: Use for to quit processing during output verification. See
|
4
|
+
# * OatsTestExit: Use instead of exit to quit processing without error.
|
5
|
+
# DO NOT USE 'exit'.
|
6
|
+
# * Use Oats.error to register failures during execution.
|
7
|
+
# * See example/code for how to use Oats.error
|
8
|
+
|
9
|
+
#
|
10
|
+
# Demonstrate retrieving data stored by aoother test, eg. code
|
11
|
+
#
|
12
|
+
t = Oats.global['examples/code:start_time']
|
13
|
+
if t # ie not nil because previously stored
|
14
|
+
Oats.info "Test [code] was started at #{t} and #{t.usec} microseconds."
|
15
|
+
else
|
16
|
+
Oats.info "Test [code] was not previously run in this OATS session."
|
17
|
+
end
|
18
|
+
|
19
|
+
begin # Exceptions raised within this block will
|
20
|
+
# be caught by the following rescue clauses
|
21
|
+
Oats.info "Try to create ./nonexistent/subdirectory"
|
22
|
+
FileUtils.mkdir "./nonexistent/subdirectory"
|
23
|
+
|
24
|
+
rescue Errno::ENOENT # Handled here, no problem
|
25
|
+
Oats.warn "Rescued exception's message: " + $!
|
26
|
+
Oats.warn "This was expected. Here is the full stack trace:"
|
27
|
+
Oats.warn $! # Print stack strace only if warranted
|
28
|
+
|
29
|
+
rescue # All other types of exceptions
|
30
|
+
Oats.warn "Got it: " + $!
|
31
|
+
Oats.warn "If you don't know how to handle it fully, push it up the chain."
|
32
|
+
Oats.info "OATS will catch it automatically and mark the test as failed."
|
33
|
+
raise $!
|
34
|
+
|
35
|
+
ensure # If you need something that always gets executed, even after exceptions
|
36
|
+
Oats.info "Do some test cleanup right here."
|
37
|
+
end
|
38
|
+
|
39
|
+
Oats.info "We are done with the test."
|
@@ -0,0 +1 @@
|
|
1
|
+
check string
|
@@ -0,0 +1 @@
|
|
1
|
+
check string2
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# Raising any exceptions will quit processing the test BY designating it as FAIL.
|
2
|
+
# * OatsTestError: Use for any generic test execution exception
|
3
|
+
# * OatsVerifyError: Use for to quit processing during output verification. See
|
4
|
+
# example/verifyException
|
5
|
+
# DO NOT USE 'exit'.
|
6
|
+
# * Use Oats.error to register failures during execution.
|
7
|
+
# * See example/basic for how to use Oats.error
|
8
|
+
|
9
|
+
begin # Exceptions raised within this block will
|
10
|
+
# be caught by the following rescue clauses
|
11
|
+
Oats.info "If something unexpected happens here, like division by zero,"
|
12
|
+
Oats.info "the second catch-all rescue will get it."
|
13
|
+
1/0
|
14
|
+
|
15
|
+
rescue Errno::ENOENT # Handled here, no problem
|
16
|
+
Oats.warn "Rescued exception's message: " + $!
|
17
|
+
Oats.warn "This was expected. Here is the full stack trace:"
|
18
|
+
Oats.warn $! # Print stack strace only if warranted
|
19
|
+
|
20
|
+
rescue # All other types of exceptions
|
21
|
+
Oats.warn "Got it: " + $!
|
22
|
+
Oats.warn "If you don't know how to handle it fully, push it up the chain."
|
23
|
+
Oats.info "OATS will catch it automatically and mark the test as failed."
|
24
|
+
raise $!
|
25
|
+
|
26
|
+
ensure # If you need something that always gets executed, even after exceptions
|
27
|
+
Oats.info "Do some test cleanup right here."
|
28
|
+
end
|
29
|
+
|
30
|
+
Oats.info "Due to raised exception above, this will not get executed."
|
@@ -0,0 +1,13 @@
|
|
1
|
+
|
2
|
+
# Tests to demo and verify various OATS framework features.
|
3
|
+
---
|
4
|
+
execution:
|
5
|
+
test_files:
|
6
|
+
|
7
|
+
- examples/occTest/occTestlist.yml # Basic execution
|
8
|
+
|
9
|
+
- examples/core/coreExamples.yml
|
10
|
+
|
11
|
+
- examples/gui/guiExamples.yml
|
12
|
+
|
13
|
+
- examples/gui/keywordExamples.yml
|
@@ -0,0 +1,10 @@
|
|
1
|
+
require 'selenium-webdriver'
|
2
|
+
selenium = Oats.browser('http://google.com')
|
3
|
+
#loc = selenium.type("id=gbqfq", 'xxxx')
|
4
|
+
#selenium.click("id=gbqf")
|
5
|
+
el = selenium.find_element(:id, "gbqfq")
|
6
|
+
el.clear
|
7
|
+
el.send_keys "xxxx"
|
8
|
+
selenium.find_element(:id, "gbqfb").click
|
9
|
+
|
10
|
+
|
@@ -0,0 +1,9 @@
|
|
1
|
+
# Selenium 2Original webdriver, using original webdriver api.
|
2
|
+
|
3
|
+
Oats.data("selenium")["webdriver"] = true
|
4
|
+
Oats.browser "http://google.com"
|
5
|
+
Oats.assert_equal 'Google', selenium.title
|
6
|
+
element = selenium.find_element(:name, 'q')
|
7
|
+
element.send_keys "Hello selenium!"
|
8
|
+
|
9
|
+
selenium.quit
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats::Keywords.process
|
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
execution:
|
3
|
+
yml_handler: xl/keywordsDriver.rb
|
4
|
+
|
5
|
+
test_files:
|
6
|
+
- xl/keywordsTC1.yml
|
7
|
+
|
8
|
+
keywords:
|
9
|
+
class: SampleXlLists # Class file containing methods for each keyword
|
10
|
+
list: SampleXlList-1 # List name under which to find the keywords and data in Oats.data
|
11
|
+
|
12
|
+
|
13
|
+
SampleXlLists:
|
14
|
+
SampleXlList-1:
|
15
|
+
data1: list-value1
|
16
|
+
data2: list-value2
|
@@ -0,0 +1,34 @@
|
|
1
|
+
#messages = imap.search(["BEFORE", "1-Apr-2003", "SINCE", "1-Apr-2003"])
|
2
|
+
#messages = imap.search(["TO", "axx@oats.org"])
|
3
|
+
#messages = imap.search(["BODY", "hello"])
|
4
|
+
#messages = imap.search(["RECENT"])
|
5
|
+
#messages = imap.search(["SUBJECT",subj, "SINCE", "5-Jan-2010"])
|
6
|
+
#message_id = messages.last
|
7
|
+
#envelope = imap.fetch(message_id, "ENVELOPE")[0].attr["ENVELOPE"]
|
8
|
+
#puts "#{envelope.from[0].name}: \t#{envelope.date} \t#{envelope.subject}"
|
9
|
+
|
10
|
+
# Email with string on subject
|
11
|
+
def imap_fetch_gmail(subject_string, dont_wait=nil)
|
12
|
+
Oats.assert((subject_string and subject_string != ''), 'Imap can not search for empty string')
|
13
|
+
imap_data = Oats.data['imap']
|
14
|
+
Oats.assert imap_data['username'] && imap_data['password'] ,
|
15
|
+
"Missing Oats.data imap.username or imap.password"
|
16
|
+
msg = "emails with subject containing string: " + subject_string
|
17
|
+
Oats.info "Waiting for #{msg}"
|
18
|
+
body = nil
|
19
|
+
Oats.wait_until(error_msg = "Can not find #{msg}", 300) do
|
20
|
+
imap = Net::IMAP.new('imap.gmail.com', 993, true)
|
21
|
+
imap.login(imap_data['username'], imap_data['password'] )
|
22
|
+
imap.select('INBOX')
|
23
|
+
found = imap.uid_search(["SUBJECT", subject_string])
|
24
|
+
if found.empty?
|
25
|
+
Oats.assert !dont_wait, error_msg
|
26
|
+
imap.logout
|
27
|
+
sleep 5
|
28
|
+
else
|
29
|
+
Oats.assert found.size == 1, "Too many #{msg}"
|
30
|
+
body = imap.uid_fetch(found, "BODY[TEXT]").first.attr["BODY[TEXT]"]
|
31
|
+
end
|
32
|
+
body
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,6 @@
|
|
1
|
+
-- Campaign:
|
2
|
+
update BusinessUser set bu_password=password('TestCampaignPassword') where bu_email='TestCampaignUser' order by bu_email ;
|
3
|
+
|
4
|
+
|
5
|
+
-- Admin
|
6
|
+
update BusinessUser set bu_password=password('TestAdminPassword') where bu_email='TestAdminUser' order by bu_email ;
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Oats.info "Running #{Oats.test.name}"
|
2
|
+
file = "#{ENV['HOME']}/#{Oats.test.name}"
|
3
|
+
total = Oats.data['count'] || 1
|
4
|
+
interval = Oats.data['interval'] || 1
|
5
|
+
total.times do |i|
|
6
|
+
Oats.info "Count is #{i}, no file #{file}"
|
7
|
+
if File.exists? file
|
8
|
+
Oats.info "Found file #{file}"
|
9
|
+
File.mv file, file+'.x'
|
10
|
+
break
|
11
|
+
end
|
12
|
+
sleep interval
|
13
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|
@@ -0,0 +1 @@
|
|
1
|
+
Oats.oload 'occTest.rb'
|