oats 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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'
|