testability-driver 0.9.2
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/README +1 -0
- data/bin/start_app_perf +199 -0
- data/bin/tdriver-devtools +3 -0
- data/config/sut_parameters.rb +39 -0
- data/ext/extconf.rb +67 -0
- data/ext/native_extensions.c +70 -0
- data/lib/matti.rb +30 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +223 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
- data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
- data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
- data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
- data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
- data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1924 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/example/flick-example.rb +245 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/example/sut.rb +964 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/generate.rb +68 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/lib/custom_rdoc_generator.rb +1865 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.default.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.argument_type.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.exception.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.arguments.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.deprecated.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.exceptions.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.info.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.returns.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.tables.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.method.template +12 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.returns.template +5 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.item.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.row.template +2 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.table.template +7 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/xml_generator/update +3 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/generate.rb +892 -0
- data/lib/tdriver-devtools/doc/update +1 -0
- data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
- data/lib/tdriver-devtools/doc/xslt/template.xsl +1861 -0
- data/lib/tdriver-devtools/doc/xslt/update +3 -0
- data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
- data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
- data/lib/tdriver-devtools/tests/feature_tests/example/flick-example.rb +233 -0
- data/lib/tdriver-devtools/tests/feature_tests/example/impl.rb +194 -0
- data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
- data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
- data/lib/tdriver.rb +26 -0
- data/lib/tdriver/base/behaviour/behaviour.rb +32 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +94 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +262 -0
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +111 -0
- data/lib/tdriver/base/behaviour/factory.rb +380 -0
- data/lib/tdriver/base/behaviour/loader.rb +28 -0
- data/lib/tdriver/base/command_data/command_data.rb +51 -0
- data/lib/tdriver/base/command_data/loader.rb +25 -0
- data/lib/tdriver/base/errors.rb +131 -0
- data/lib/tdriver/base/loader.rb +38 -0
- data/lib/tdriver/base/state_object.rb +270 -0
- data/lib/tdriver/base/sut/adapter.rb +28 -0
- data/lib/tdriver/base/sut/controller.rb +119 -0
- data/lib/tdriver/base/sut/factory.rb +287 -0
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +243 -0
- data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
- data/lib/tdriver/base/sut/generic/behaviours/find.rb +96 -0
- data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +346 -0
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1268 -0
- data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +182 -0
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +119 -0
- data/lib/tdriver/base/sut/generic/commands/application.rb +219 -0
- data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +82 -0
- data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +58 -0
- data/lib/tdriver/base/sut/generic/plugin.rb +96 -0
- data/lib/tdriver/base/sut/loader.rb +35 -0
- data/lib/tdriver/base/sut/sut.rb +67 -0
- data/lib/tdriver/base/test_object/abstract.rb +179 -0
- data/lib/tdriver/base/test_object/behaviours/syncronization.rb +94 -0
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +787 -0
- data/lib/tdriver/base/test_object/factory.rb +618 -0
- data/lib/tdriver/base/test_object/identificator.rb +511 -0
- data/lib/tdriver/base/test_object/loader.rb +37 -0
- data/lib/tdriver/env.rb +21 -0
- data/lib/tdriver/loader.rb +36 -0
- data/lib/tdriver/matti.rb +35 -0
- data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +158 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +98 -0
- data/lib/tdriver/report/report.rb +47 -0
- data/lib/tdriver/report/report_api.rb +207 -0
- data/lib/tdriver/report/report_combine.rb +86 -0
- data/lib/tdriver/report/report_crash_file_capture.rb +167 -0
- data/lib/tdriver/report/report_creator.rb +571 -0
- data/lib/tdriver/report/report_cucumber.rb +158 -0
- data/lib/tdriver/report/report_cucumber_listener.rb +337 -0
- data/lib/tdriver/report/report_cucumber_reporter.rb +335 -0
- data/lib/tdriver/report/report_data_presentation.rb +152 -0
- data/lib/tdriver/report/report_data_table.rb +64 -0
- data/lib/tdriver/report/report_execution_statistics.rb +284 -0
- data/lib/tdriver/report/report_file_capture.rb +159 -0
- data/lib/tdriver/report/report_grouping.rb +539 -0
- data/lib/tdriver/report/report_junit_xml.rb +147 -0
- data/lib/tdriver/report/report_rspec.rb +108 -0
- data/lib/tdriver/report/report_test_case_run.rb +621 -0
- data/lib/tdriver/report/report_test_run.rb +1286 -0
- data/lib/tdriver/report/report_test_unit.rb +175 -0
- data/lib/tdriver/report/report_writer.rb +1405 -0
- data/lib/tdriver/tdriver.rb +158 -0
- data/lib/tdriver/util/common.rb +24 -0
- data/lib/tdriver/util/common/array.rb +39 -0
- data/lib/tdriver/util/common/crc16.rb +100 -0
- data/lib/tdriver/util/common/environment.rb +153 -0
- data/lib/tdriver/util/common/error.rb +39 -0
- data/lib/tdriver/util/common/file.rb +315 -0
- data/lib/tdriver/util/common/gem.rb +108 -0
- data/lib/tdriver/util/common/kernel.rb +189 -0
- data/lib/tdriver/util/common/loader.rb +39 -0
- data/lib/tdriver/util/common/retryable.rb +98 -0
- data/lib/tdriver/util/common/string.rb +77 -0
- data/lib/tdriver/util/dbaccess/dbaccess.rb +188 -0
- data/lib/tdriver/util/dbaccess/dbconnection.rb +41 -0
- data/lib/tdriver/util/dbaccess/error.rb +35 -0
- data/lib/tdriver/util/dbaccess/loader.rb +29 -0
- data/lib/tdriver/util/dynamic_attribute_filter.rb +182 -0
- data/lib/tdriver/util/hooking.rb +434 -0
- data/lib/tdriver/util/loader.rb +65 -0
- data/lib/tdriver/util/localisation.rb +24 -0
- data/lib/tdriver/util/localisation/error.rb +32 -0
- data/lib/tdriver/util/localisation/loader.rb +28 -0
- data/lib/tdriver/util/localisation/localisation.rb +479 -0
- data/lib/tdriver/util/logger.rb +377 -0
- data/lib/tdriver/util/operator_data/error.rb +29 -0
- data/lib/tdriver/util/operator_data/loader.rb +26 -0
- data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
- data/lib/tdriver/util/other/config.rb +221 -0
- data/lib/tdriver/util/parameter.rb +24 -0
- data/lib/tdriver/util/parameter/error.rb +45 -0
- data/lib/tdriver/util/parameter/loader.rb +37 -0
- data/lib/tdriver/util/parameter/parameter.rb +285 -0
- data/lib/tdriver/util/parameter/parameter_hash.rb +101 -0
- data/lib/tdriver/util/parameter/parameter_template.rb +120 -0
- data/lib/tdriver/util/parameter/parameter_user_api.rb +84 -0
- data/lib/tdriver/util/parameter/parameter_xml.rb +247 -0
- data/lib/tdriver/util/plugin/abstract.rb +60 -0
- data/lib/tdriver/util/plugin/error.rb +25 -0
- data/lib/tdriver/util/plugin/loader.rb +28 -0
- data/lib/tdriver/util/plugin/service.rb +200 -0
- data/lib/tdriver/util/recorder.rb +292 -0
- data/lib/tdriver/util/stats.rb +90 -0
- data/lib/tdriver/util/user_data/error.rb +29 -0
- data/lib/tdriver/util/user_data/loader.rb +26 -0
- data/lib/tdriver/util/user_data/user_data.rb +103 -0
- data/lib/tdriver/util/video_rec.rb +264 -0
- data/lib/tdriver/util/xml/abstraction.rb +47 -0
- data/lib/tdriver/util/xml/builder.rb +54 -0
- data/lib/tdriver/util/xml/document.rb +32 -0
- data/lib/tdriver/util/xml/element.rb +32 -0
- data/lib/tdriver/util/xml/error.rb +46 -0
- data/lib/tdriver/util/xml/loader.rb +46 -0
- data/lib/tdriver/util/xml/nil_element.rb +89 -0
- data/lib/tdriver/util/xml/nodeset.rb +32 -0
- data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
- data/lib/tdriver/util/xml/parsers/loader.rb +22 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +111 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +54 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +147 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +42 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +187 -0
- data/lib/tdriver/util/xml/xml.rb +170 -0
- data/lib/tdriver/verify/verify.rb +687 -0
- data/lib/tdriver/verify/verify.rb_org +630 -0
- data/lib/tdriver/version.rb +21 -0
- data/xml/behaviours/generic.xml +495 -0
- data/xml/defaults/generic.xml +97 -0
- data/xml/defaults/sut_generic.xml +36 -0
- data/xml/parameters/tdriver_parameters.xml +23 -0
- data/xml/templates/generic.xml +227 -0
- metadata +327 -0
data/README
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
release notes
|
data/bin/start_app_perf
ADDED
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
#! /usr/bin/ruby1.8
|
|
2
|
+
# Add '.rb' to work around a bug in IronRuby's File#dirname
|
|
3
|
+
$:.unshift(File.dirname(__FILE__ + '.rb') + '/../lib') unless $:.include?(File.dirname(__FILE__ + '.rb') + '/../lib')
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
require 'tdriver' # contains the reporter!
|
|
7
|
+
require 'nokogiri'
|
|
8
|
+
require 'date'
|
|
9
|
+
require 'optparse'
|
|
10
|
+
|
|
11
|
+
include TDriverReportDataPresentation
|
|
12
|
+
|
|
13
|
+
##################################
|
|
14
|
+
## PARSE COMMAND LINE OPTIONS
|
|
15
|
+
@settings = {}
|
|
16
|
+
@settings[:iterations] = nil
|
|
17
|
+
@settings[:signals] = ["applicationReady()"]
|
|
18
|
+
@settings[:events] = ["Paint"]
|
|
19
|
+
@settings[:output_filename] = "startperf_report.html"
|
|
20
|
+
@settings[:app_name] = ""
|
|
21
|
+
@settings[:objects] = ""
|
|
22
|
+
@settings[:sut_type] = "sut_qt"
|
|
23
|
+
@data = {}
|
|
24
|
+
|
|
25
|
+
begin
|
|
26
|
+
options = OptionParser.new do |opts|
|
|
27
|
+
opts.banner = "Usage: start_app_perf [OPTIONS] <application>\nNote: 'applicationStart()' signal and 'Paint' events will be collected by default.\nOptions:\n"
|
|
28
|
+
opts.on("-n ITERATIONS", "--iterations", "Required. Number of iterations of the start test.") do |s| @settings[:iterations] = s.to_i; end
|
|
29
|
+
opts.on("-s SYGNALS", "--signals", "Comma separated list of signals to collect, don't use spaces.") do |s| @settings[:signals] << s.split(',').collect{|a| a.strip}; end
|
|
30
|
+
opts.on("-e EVENTS", "--events", "Comma separated list of events to collect, don't use spaces.") do |s| @settings[:events] << s.split(',').collect{|a| a.strip}; end
|
|
31
|
+
opts.on("-o FILENAME", "--output", "Filename for the output html report. Defaults to 'startperf_report.html'") do |s| @settings[:output_filename] = s; end
|
|
32
|
+
opts.on("-t SUTTYPE", "--suttype", "Sut type to be used. 'sut_qt' will be used as default type.") do |s| @settings[:sut_type] = s; end
|
|
33
|
+
@settings[:opts] = opts
|
|
34
|
+
end.parse!
|
|
35
|
+
raise OptionParser::MissingArgument.new("number of iterations not provided. use the -n option to provide it.") if @settings[:iterations] == nil
|
|
36
|
+
raise OptionParser::MissingArgument.new("application to run not provided.") if ARGV.length < 1
|
|
37
|
+
raise OptionParser::InvalidArgument.new("too many arguments provided." + ARGV.to_s) if ARGV.length > 1
|
|
38
|
+
@settings[:app_name] = ARGV[0].sub(/\.exe/, '')
|
|
39
|
+
rescue OptionParser::MissingArgument, OptionParser::InvalidArgument, Exception => e
|
|
40
|
+
puts e.message
|
|
41
|
+
puts
|
|
42
|
+
puts @settings[:opts]
|
|
43
|
+
exit
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
# HARDCODED => Sut type,
|
|
48
|
+
# signals to listen: 'applicationReady()'
|
|
49
|
+
# events to listen: 'Paint'
|
|
50
|
+
|
|
51
|
+
##################################
|
|
52
|
+
## METHODS
|
|
53
|
+
|
|
54
|
+
# convert string argument into integer
|
|
55
|
+
def toi(arg)
|
|
56
|
+
while(arg.length > 0 && arg[0] == '0')
|
|
57
|
+
arg = arg[1..-1]
|
|
58
|
+
end
|
|
59
|
+
arg.to_i
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
# Run Application
|
|
63
|
+
def run(iteration)
|
|
64
|
+
# start application and set events & signals to listen. SLEEP prevents other communications to affect the performance of the application while starting
|
|
65
|
+
app = @sut.run(:name => @settings[:app_name], :events_to_listen => @settings[:events].join(','), :signals_to_listen => @settings[:signals].join(','), :sleep_after_launch => 5)
|
|
66
|
+
strOut = ""
|
|
67
|
+
|
|
68
|
+
# process Events
|
|
69
|
+
if !@settings[:events].empty?
|
|
70
|
+
events = app.get_events
|
|
71
|
+
app.disable_events
|
|
72
|
+
#puts events
|
|
73
|
+
doc = Nokogiri::XML.parse(events)
|
|
74
|
+
first_time_stamp = nil
|
|
75
|
+
node_set = doc.xpath('//object[@name = "QtApplicationEvents"]/objects/object')
|
|
76
|
+
timer_counter = 0
|
|
77
|
+
index = 0
|
|
78
|
+
target_object = nil
|
|
79
|
+
while(index < node_set.size)
|
|
80
|
+
node = node_set.at(index)
|
|
81
|
+
time_str = node.xpath("#{node.path}/attributes/attribute[@name = \"timeStamp\"]/value").first.text
|
|
82
|
+
time_stamp = Time.local(toi(time_str[0..3]), toi(time_str[4..5]), toi(time_str[6..7]), toi(time_str[8..9]), toi(time_str[10..11]), toi(time_str[12..13]), toi(time_str[14..16])*1000)
|
|
83
|
+
if (first_time_stamp == nil)
|
|
84
|
+
first_time_stamp = time_stamp
|
|
85
|
+
strOut << "application started at " << first_time_stamp.to_s << "\n"
|
|
86
|
+
strOut << "events:\n"
|
|
87
|
+
else
|
|
88
|
+
event_name = node.attribute("name").text
|
|
89
|
+
delta_time_seconds = time_stamp.to_i-first_time_stamp.to_i
|
|
90
|
+
delta_time_milliseconds = (time_stamp.usec/1000) - (first_time_stamp.usec/1000)
|
|
91
|
+
delta_time = delta_time_seconds*1000
|
|
92
|
+
delta_time = delta_time + delta_time_milliseconds
|
|
93
|
+
|
|
94
|
+
strOut << (delta_time).to_s << "\t" << event_name
|
|
95
|
+
target_object = node.xpath("#{node.path}/objects/object").first
|
|
96
|
+
if(target_object)
|
|
97
|
+
target_object_name = target_object.attribute("name").text
|
|
98
|
+
target_object_type = target_object.attribute("type").text
|
|
99
|
+
strOut << "\t" << target_object_type << "(" << target_object_name << ")"
|
|
100
|
+
end
|
|
101
|
+
strOut << "\n"
|
|
102
|
+
|
|
103
|
+
#DATACOLLECTION!
|
|
104
|
+
event_method_name = target_object.nil? ? event_name : "#{event_name}:#{target_object_type}(#{target_object_name})"
|
|
105
|
+
@data[event_method_name] = Array.new if @data[event_method_name] == nil
|
|
106
|
+
@data[event_method_name][iteration] = delta_time
|
|
107
|
+
end
|
|
108
|
+
index = index + 1
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
# process signals
|
|
114
|
+
if !@settings[:signals].empty?
|
|
115
|
+
signals = app.fixture('signal', 'get_signal')
|
|
116
|
+
app.fixture('signal', 'remove_signals')
|
|
117
|
+
#puts signals
|
|
118
|
+
doc = Nokogiri::XML.parse(signals)
|
|
119
|
+
first_time_stamp = nil
|
|
120
|
+
node_set = doc.xpath('//tasInfo[@name = "QtSignals"]/object')
|
|
121
|
+
timer_counter = 0
|
|
122
|
+
index = 0
|
|
123
|
+
target_object = nil
|
|
124
|
+
while(index < node_set.size)
|
|
125
|
+
node = node_set.at(index)
|
|
126
|
+
time_str = node.xpath("#{node.path}/attributes/attribute[@name = \"timeStamp\"]/value").first.text
|
|
127
|
+
time_stamp = Time.local(toi(time_str[0..3]), toi(time_str[4..5]), toi(time_str[6..7]), toi(time_str[8..9]), toi(time_str[10..11]), toi(time_str[12..13]), toi(time_str[14..16])*1000)
|
|
128
|
+
if (first_time_stamp == nil)
|
|
129
|
+
first_time_stamp = time_stamp
|
|
130
|
+
strOut << "application started at " << first_time_stamp.to_s << "\n" if (strOut == "")
|
|
131
|
+
strOut << "signals:\n"
|
|
132
|
+
else
|
|
133
|
+
signal_name = node.attribute("name").text
|
|
134
|
+
delta_time_seconds = time_stamp.to_i-first_time_stamp.to_i
|
|
135
|
+
delta_time_milliseconds = (time_stamp.usec/1000) - (first_time_stamp.usec/1000)
|
|
136
|
+
delta_time = delta_time_seconds*1000
|
|
137
|
+
delta_time = delta_time + delta_time_milliseconds
|
|
138
|
+
|
|
139
|
+
#DATACOLLECTION!
|
|
140
|
+
@data[signal_name] = Array.new if @data[signal_name] == nil
|
|
141
|
+
@data[signal_name][iteration] = delta_time
|
|
142
|
+
|
|
143
|
+
strOut << (delta_time).to_s << "\t" << signal_name << "\n"
|
|
144
|
+
end
|
|
145
|
+
index = index + 1
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
# print out the list of events and signals
|
|
150
|
+
puts strOut
|
|
151
|
+
app.close
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
# Create HTML Graph Report
|
|
155
|
+
def gen_html_report
|
|
156
|
+
include TDriverReportWriter
|
|
157
|
+
write_style_sheet("tdriver_report_style.css")
|
|
158
|
+
html_file = File.new(@settings[:output_filename], "w+")
|
|
159
|
+
html_file << '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
|
|
160
|
+
<html xmlns="http://www.w3.org/1999/xhtml">
|
|
161
|
+
<head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"><meta http-eqiv="cache-control" content="no-cache">
|
|
162
|
+
<link rel="stylesheet" title="TDriverReportStyle" href="tdriver_report_style.css"/>
|
|
163
|
+
<title>'+ "Application Start Performance" +'</title>
|
|
164
|
+
</head><body>'
|
|
165
|
+
html_file << insert_graph_css
|
|
166
|
+
html_file << insert_html_graph( @data, nil, nil, "500")
|
|
167
|
+
html_file << insert_html_table( @data , 500)
|
|
168
|
+
html_file << '</body></html>'
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
##################################
|
|
172
|
+
## MAIN
|
|
173
|
+
# Print options summary
|
|
174
|
+
puts ">> Application: " + @settings[:app_name]
|
|
175
|
+
puts ">> Iterations: " + @settings[:iterations].to_s
|
|
176
|
+
puts ">> Signals: " + @settings[:signals].to_s
|
|
177
|
+
puts ">> Events: " + @settings[:events].to_s
|
|
178
|
+
|
|
179
|
+
# Connect to TDriver
|
|
180
|
+
@sut = TDriver.sut( :Id => @settings[:sut_type] )
|
|
181
|
+
|
|
182
|
+
# Run iterations
|
|
183
|
+
@settings[:iterations].times do |iteration|
|
|
184
|
+
puts "\nITERATION " + (iteration + 1).to_s + " OF " + @settings[:iterations].to_s
|
|
185
|
+
run(iteration)
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
# Print Summary
|
|
189
|
+
puts "\nDATA Collected"
|
|
190
|
+
@data.each_key do |key|
|
|
191
|
+
puts "Signal/Event: " + key.to_s + " Values: " + @data[key].join(',')
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
# Generate HTML report
|
|
195
|
+
gen_html_report
|
|
196
|
+
puts "\nHTML Report created at " + @settings[:output_filename]
|
|
197
|
+
|
|
198
|
+
# Disconnect from Tdriver
|
|
199
|
+
@sut.disconnect
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
4
|
+
## All rights reserved.
|
|
5
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
|
6
|
+
##
|
|
7
|
+
## This file is part of Testability Driver.
|
|
8
|
+
##
|
|
9
|
+
## If you have questions regarding the use of this file, please contact
|
|
10
|
+
## Nokia at testabilitydriver@nokia.com .
|
|
11
|
+
##
|
|
12
|
+
## This library is free software; you can redistribute it and/or
|
|
13
|
+
## modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
## License version 2.1 as published by the Free Software Foundation
|
|
15
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
|
16
|
+
## of this file.
|
|
17
|
+
##
|
|
18
|
+
############################################################################
|
|
19
|
+
# Generic configuration file for sut data.
|
|
20
|
+
# Can be used to provide ruby code for sut configurations.
|
|
21
|
+
module SutParameters
|
|
22
|
+
# Verify blocks define the verify_always blocks that are automatically added to given sut.
|
|
23
|
+
# Takes an array of VerifyBlock objects
|
|
24
|
+
# VerifyBlock parameters:
|
|
25
|
+
# - Proc block
|
|
26
|
+
# - Expected return value
|
|
27
|
+
# - Error message
|
|
28
|
+
# Configured verify_always blocks will not return the failed error block code in the error message.
|
|
29
|
+
VERIFY_BLOCKS = [
|
|
30
|
+
# Example block
|
|
31
|
+
MobyUtil::VerifyBlock.new(
|
|
32
|
+
Proc.new { |sut|
|
|
33
|
+
# Verifies that some application is always running
|
|
34
|
+
sut.application.name != "qttasserver"
|
|
35
|
+
},
|
|
36
|
+
true, "Top most application is qttas, no application is running")
|
|
37
|
+
]
|
|
38
|
+
end
|
|
39
|
+
|
data/ext/extconf.rb
ADDED
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
4
|
+
## All rights reserved.
|
|
5
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
|
6
|
+
##
|
|
7
|
+
## This file is part of Testability Driver.
|
|
8
|
+
##
|
|
9
|
+
## If you have questions regarding the use of this file, please contact
|
|
10
|
+
## Nokia at testabilitydriver@nokia.com .
|
|
11
|
+
##
|
|
12
|
+
## This library is free software; you can redistribute it and/or
|
|
13
|
+
## modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
## License version 2.1 as published by the Free Software Foundation
|
|
15
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
|
16
|
+
## of this file.
|
|
17
|
+
##
|
|
18
|
+
############################################################################
|
|
19
|
+
|
|
20
|
+
require File.join( File.dirname(__FILE__), '../lib/tdriver/util/loader' )
|
|
21
|
+
|
|
22
|
+
MobyUtil::GemHelper.install( MobyUtil::FileHelper.tdriver_home ){ | tdriver_home_folder |
|
|
23
|
+
|
|
24
|
+
[
|
|
25
|
+
# default parameters & sut configuration
|
|
26
|
+
[ "../xml/defaults/*.xml", "defaults/", true ],
|
|
27
|
+
|
|
28
|
+
# parameters
|
|
29
|
+
[ "../xml/parameters/tdriver_parameters.xml", "tdriver_parameters.xml", false ],
|
|
30
|
+
[ "../xml/parameters/tdriver_parameters.xml", "default/tdriver_parameters.xml", true ],
|
|
31
|
+
[ "../config/sut_parameters.rb", "sut_parameters.rb", true ],
|
|
32
|
+
|
|
33
|
+
# templates
|
|
34
|
+
[ "../xml/templates/*.xml", "templates/", true ],
|
|
35
|
+
[ "../xml/templates/*.xml", "default/templates/", true ],
|
|
36
|
+
|
|
37
|
+
# behaviours
|
|
38
|
+
[ "../xml/behaviours/*.xml", "behaviours/", true ],
|
|
39
|
+
[ "../xml/behaviours/*.xml", "default/behaviours/", true ],
|
|
40
|
+
|
|
41
|
+
# create logfiles fodler
|
|
42
|
+
[ nil, "logfiles/", false ]
|
|
43
|
+
|
|
44
|
+
# documentation
|
|
45
|
+
#[ "../doc/", "doc/", true ]
|
|
46
|
+
|
|
47
|
+
].each { | task |
|
|
48
|
+
|
|
49
|
+
source, destination, overwrite = task
|
|
50
|
+
|
|
51
|
+
if source.nil?
|
|
52
|
+
|
|
53
|
+
MobyUtil::FileHelper.mkdir_path( File.join( tdriver_home_folder, destination ) ) unless MobyUtil::FileHelper.folder_exist?( File.join( tdriver_home_folder, destination ) )
|
|
54
|
+
|
|
55
|
+
else
|
|
56
|
+
|
|
57
|
+
MobyUtil::FileHelper.copy_file( source, "#{ tdriver_home_folder }/#{ destination }", false, overwrite, true )
|
|
58
|
+
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
MobyUtil::Stats.report( 'install', 'Installed gem' )
|
|
66
|
+
|
|
67
|
+
sleep ( 5 ) # do not remove!!
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/*
|
|
2
|
+
############################################################################
|
|
3
|
+
##
|
|
4
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
5
|
+
## All rights reserved.
|
|
6
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
|
7
|
+
##
|
|
8
|
+
## This file is part of Testability Driver.
|
|
9
|
+
##
|
|
10
|
+
## If you have questions regarding the use of this file, please contact
|
|
11
|
+
## Nokia at testabilitydriver@nokia.com .
|
|
12
|
+
##
|
|
13
|
+
## This library is free software; you can redistribute it and/or
|
|
14
|
+
## modify it under the terms of the GNU Lesser General Public
|
|
15
|
+
## License version 2.1 as published by the Free Software Foundation
|
|
16
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
|
17
|
+
## of this file.
|
|
18
|
+
##
|
|
19
|
+
############################################################################
|
|
20
|
+
*/
|
|
21
|
+
|
|
22
|
+
#include "ruby.h"
|
|
23
|
+
|
|
24
|
+
static const CRC_16[ 16 ] = {
|
|
25
|
+
|
|
26
|
+
0x0000, 0x1081, 0x2102, 0x3183,
|
|
27
|
+
0x4204, 0x5285, 0x6306, 0x7387,
|
|
28
|
+
0x8408, 0x9489, 0xa50a, 0xb58b,
|
|
29
|
+
0xc60c, 0xd68d, 0xe70e, 0xf78f
|
|
30
|
+
|
|
31
|
+
};
|
|
32
|
+
|
|
33
|
+
static VALUE crc16_ibm( VALUE self, VALUE string ) {
|
|
34
|
+
|
|
35
|
+
// verify argument type
|
|
36
|
+
Check_Type( string, T_STRING );
|
|
37
|
+
|
|
38
|
+
const char* data = RSTRING_PTR( string );
|
|
39
|
+
|
|
40
|
+
int len = RSTRING_LEN( string );
|
|
41
|
+
|
|
42
|
+
int crc = 0xffff;
|
|
43
|
+
|
|
44
|
+
int c = 0;
|
|
45
|
+
|
|
46
|
+
while( len-- != 0 ){
|
|
47
|
+
|
|
48
|
+
c = *data++;
|
|
49
|
+
|
|
50
|
+
crc = ( ( crc >> 4 ) & 0x0fff ) ^ CRC_16[ ( ( crc ^ c ) & 15 ) ];
|
|
51
|
+
|
|
52
|
+
crc = ( ( crc >> 4 ) & 0x0fff ) ^ CRC_16[ ( ( crc ^ ( c >> 4 )) & 15 ) ];
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
return INT2FIX( ~crc & 0xffff );
|
|
57
|
+
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
void Init_native_extensions() {
|
|
61
|
+
|
|
62
|
+
VALUE mTDriver = rb_define_module( "TDriver" );
|
|
63
|
+
|
|
64
|
+
VALUE mNativeExtensions = rb_define_module_under( mTDriver, "NativeExtensions" );
|
|
65
|
+
|
|
66
|
+
VALUE mCRC = rb_define_module_under( mNativeExtensions, "CRC" );
|
|
67
|
+
|
|
68
|
+
rb_define_singleton_method( mCRC, "crc16_ibm", crc16_ibm, 1 );
|
|
69
|
+
|
|
70
|
+
}
|
data/lib/matti.rb
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
4
|
+
## All rights reserved.
|
|
5
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
|
6
|
+
##
|
|
7
|
+
## This file is part of Testability Driver.
|
|
8
|
+
##
|
|
9
|
+
## If you have questions regarding the use of this file, please contact
|
|
10
|
+
## Nokia at testabilitydriver@nokia.com .
|
|
11
|
+
##
|
|
12
|
+
## This library is free software; you can redistribute it and/or
|
|
13
|
+
## modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
## License version 2.1 as published by the Free Software Foundation
|
|
15
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
|
16
|
+
## of this file.
|
|
17
|
+
##
|
|
18
|
+
############################################################################
|
|
19
|
+
|
|
20
|
+
=begin
|
|
21
|
+
file, line = ( caller.first || "%s:%s" % [ __FILE__, __LINE__ ] ).split(":")
|
|
22
|
+
$stderr.puts "%s:%s warning: require 'matti' deprecated, use require 'tdriver' instead also 'MATTI' is deprecated, use 'TDriver' instead " % [ file, line]
|
|
23
|
+
=end
|
|
24
|
+
|
|
25
|
+
$stderr.puts "%s:%s warning: require 'matti' deprecated, use require 'tdriver' instead. Please note that class 'MATTI' is also deprecated, use 'TDriver' instead " % ( caller.first || "%s:%s" % [ __FILE__, __LINE__ ] ).split(":")[ 0..1 ]
|
|
26
|
+
|
|
27
|
+
# load matti resources and framework
|
|
28
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'tdriver/env' ) )
|
|
29
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'tdriver/version' ) )
|
|
30
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'tdriver/matti' ) )
|
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
############################################################################
|
|
2
|
+
##
|
|
3
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
|
4
|
+
## All rights reserved.
|
|
5
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
|
6
|
+
##
|
|
7
|
+
## This file is part of TDriver.
|
|
8
|
+
##
|
|
9
|
+
## If you have questions regarding the use of this file, please contact
|
|
10
|
+
## Nokia at testabilitydriver@nokia.com .
|
|
11
|
+
##
|
|
12
|
+
## This library is free software; you can redistribute it and/or
|
|
13
|
+
## modify it under the terms of the GNU Lesser General Public
|
|
14
|
+
## License version 2.1 as published by the Free Software Foundation
|
|
15
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
|
16
|
+
## of this file.
|
|
17
|
+
##
|
|
18
|
+
############################################################################
|
|
19
|
+
|
|
20
|
+
module MobyBehaviour
|
|
21
|
+
|
|
22
|
+
module QT
|
|
23
|
+
|
|
24
|
+
# == description
|
|
25
|
+
# This module contains demonstration implementation containing tags for documentation generation using gesture as an example
|
|
26
|
+
#
|
|
27
|
+
# == behaviour
|
|
28
|
+
# QtExampleGestureBehaviour
|
|
29
|
+
#
|
|
30
|
+
# == requires
|
|
31
|
+
# testability-driver-sut-qt-plugin
|
|
32
|
+
#
|
|
33
|
+
# == input_type
|
|
34
|
+
# touch
|
|
35
|
+
#
|
|
36
|
+
# == sut_type
|
|
37
|
+
# qt
|
|
38
|
+
#
|
|
39
|
+
# == sut_version
|
|
40
|
+
# *
|
|
41
|
+
#
|
|
42
|
+
# == objects
|
|
43
|
+
# *;sut
|
|
44
|
+
#
|
|
45
|
+
module Gesture
|
|
46
|
+
|
|
47
|
+
include MobyBehaviour::QT::Behaviour
|
|
48
|
+
|
|
49
|
+
# == description
|
|
50
|
+
# Cause a flick operation on the screen.
|
|
51
|
+
#
|
|
52
|
+
# == arguments
|
|
53
|
+
# argument1
|
|
54
|
+
# Integer
|
|
55
|
+
# description: Example argument1
|
|
56
|
+
# example: 10
|
|
57
|
+
# default:
|
|
58
|
+
# Hash
|
|
59
|
+
# description: Example argument 1 type 2
|
|
60
|
+
# example: { :optional_1 => "value_1", :optional_2 => "value_2" }
|
|
61
|
+
# default:
|
|
62
|
+
#
|
|
63
|
+
# argument2
|
|
64
|
+
# String
|
|
65
|
+
# description: Example argument2
|
|
66
|
+
# example: "Hello"
|
|
67
|
+
# default:
|
|
68
|
+
#
|
|
69
|
+
# == returns
|
|
70
|
+
# String
|
|
71
|
+
# description: Return value type
|
|
72
|
+
# example: "World"
|
|
73
|
+
#
|
|
74
|
+
# == exceptions
|
|
75
|
+
# RuntimeError
|
|
76
|
+
# description: example exception
|
|
77
|
+
#
|
|
78
|
+
# ArgumentError
|
|
79
|
+
# description: example exception
|
|
80
|
+
#
|
|
81
|
+
# == example
|
|
82
|
+
# flick( :Down, :Left, { :optional_1 => "value_1", :optional_2 => "value_2" } )
|
|
83
|
+
#
|
|
84
|
+
# == info
|
|
85
|
+
# See method X, table at Y
|
|
86
|
+
#
|
|
87
|
+
# == howto
|
|
88
|
+
# Example1
|
|
89
|
+
# description: Basic use
|
|
90
|
+
# code: @sut = TDriver.sut( :Id => "sut_qt" )
|
|
91
|
+
# app = @sut.application
|
|
92
|
+
# app.QPushButton( :text => "Close" ).flick :Left
|
|
93
|
+
#
|
|
94
|
+
def flick( direction, button = :Left, optional_params = {} )
|
|
95
|
+
|
|
96
|
+
begin
|
|
97
|
+
use_tap_screen = optional_params[:use_tap_screen].nil? ? MobyUtil::Parameter[ @sut.id][ :use_tap_screen, 'false'] :
|
|
98
|
+
optional_params[:use_tap_screen].to_s
|
|
99
|
+
optional_params[:useTapScreen] = use_tap_screen
|
|
100
|
+
|
|
101
|
+
speed = calculate_speed(@sut.parameter(:gesture_flick_distance), @sut.parameter(:gesture_flick_speed))
|
|
102
|
+
distance = @sut.parameter(:gesture_flick_distance).to_i
|
|
103
|
+
params = {:gesture_type => :MouseGesture, :direction => direction, :speed => speed, :distance => distance, :isDrag => false, :button => button, :useTapScreen => use_tap_screen}
|
|
104
|
+
params.merge!(optional_params)
|
|
105
|
+
|
|
106
|
+
do_gesture(params)
|
|
107
|
+
do_sleep(speed)
|
|
108
|
+
|
|
109
|
+
rescue Exception => e
|
|
110
|
+
|
|
111
|
+
MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed flick with direction \"#{direction}\", button \"#{button.to_s}\".;#{identity};flick;"
|
|
112
|
+
Kernel::raise e
|
|
113
|
+
end
|
|
114
|
+
|
|
115
|
+
MobyUtil::Logger.instance.log "behaviour" , "PASS;Operation flick executed successfully with direction \"#{direction}\", button \"#{button.to_s}\".;#{identity};flick;"
|
|
116
|
+
|
|
117
|
+
nil
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
|
|
121
|
+
private
|
|
122
|
+
|
|
123
|
+
# Performs the actual gesture operation.
|
|
124
|
+
# Verifies that the parameters are correct and send the command
|
|
125
|
+
# to the sut.
|
|
126
|
+
# gesture_type: :MouseGesture, :MouseGestureTo, :MouseGestureToCoordinates
|
|
127
|
+
# params = {:direction => :Up, duration => 2, :distance =>100, :isDrag =>false, :isMove =>false }
|
|
128
|
+
def do_gesture(params)
|
|
129
|
+
validate_gesture_params!(params)
|
|
130
|
+
|
|
131
|
+
if attribute('objectType') == 'Embedded'
|
|
132
|
+
params['x'] = center_x
|
|
133
|
+
params['y'] = center_y
|
|
134
|
+
params['useCoordinates'] = 'true'
|
|
135
|
+
end
|
|
136
|
+
|
|
137
|
+
command = command_params #in qt_behaviour
|
|
138
|
+
command.command_name(params[:gesture_type].to_s)
|
|
139
|
+
command.command_params( params )
|
|
140
|
+
@sut.execute_command( command )
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
def validate_gesture_params!(params)
|
|
144
|
+
#direction
|
|
145
|
+
if params[:gesture_type] == :MouseGesture
|
|
146
|
+
if params[:direction].kind_of?(Integer)
|
|
147
|
+
raise ArgumentError.new( "Invalid direction." ) unless 0 <= params[:direction].to_i and params[:direction].to_i <= 360
|
|
148
|
+
else
|
|
149
|
+
raise ArgumentError.new( "Invalid direction." ) unless @@_valid_directions.include?(params[:direction])
|
|
150
|
+
params[:direction] = @@_direction_map[params[:direction]]
|
|
151
|
+
end
|
|
152
|
+
#distance
|
|
153
|
+
params[:distance] = params[:distance].to_i unless params[:distance].kind_of?(Integer)
|
|
154
|
+
raise ArgumentError.new( "Distance must be an integer and greater than zero." ) unless params[:distance] > 0
|
|
155
|
+
elsif params[:gesture_type] == :MouseGestureToCoordinates
|
|
156
|
+
raise ArgumentError.new("X and Y must be integers.") unless params[:x].kind_of?(Integer) and params[:y].kind_of?(Integer)
|
|
157
|
+
elsif params[:gesture_type] == :MouseGestureTo
|
|
158
|
+
raise ArgumentError.new("targetId and targetType must be defined.") unless params[:targetId] and params[:targetType]
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
#duration/speed
|
|
162
|
+
params[:speed] = params[:speed].to_f unless params[:speed].kind_of?(Numeric)
|
|
163
|
+
raise ArgumentError.new( "Duration must be a number and greated than zero, was:" + params[:speed].to_s) unless params[:speed] > 0
|
|
164
|
+
duration_secs = params[:speed].to_f
|
|
165
|
+
duration_secs = duration_secs*1000
|
|
166
|
+
params[:speed] = duration_secs.to_i
|
|
167
|
+
|
|
168
|
+
#mouseMove true always
|
|
169
|
+
params[:mouseMove] = true
|
|
170
|
+
|
|
171
|
+
params[:button] = :Left unless params[:button]
|
|
172
|
+
raise ArgumentError.new( "Invalid button." ) unless @@_valid_buttons.include?(params[:button])
|
|
173
|
+
params[:button] = @@_buttons_map[params[:button]]
|
|
174
|
+
|
|
175
|
+
if params[:isMove] == true
|
|
176
|
+
params[:press] = 'false'
|
|
177
|
+
params[:release] = 'false'
|
|
178
|
+
end
|
|
179
|
+
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
def do_sleep(time)
|
|
184
|
+
|
|
185
|
+
if MobyUtil::Parameter[ @sut.id ][ :sleep_disabled, nil ] != 'true'
|
|
186
|
+
time = time.to_f
|
|
187
|
+
time = time * 1.3
|
|
188
|
+
#for flicks the duration of the gesture is short but animation (scroll etc..) may not
|
|
189
|
+
#so wait at least one second
|
|
190
|
+
time = 1 if time < 1
|
|
191
|
+
sleep time
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
def calculate_speed(distance, speed)
|
|
197
|
+
|
|
198
|
+
distance = distance.to_f
|
|
199
|
+
speed = speed.to_f
|
|
200
|
+
duration = distance/speed
|
|
201
|
+
duration
|
|
202
|
+
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
def distance_to_point(x, y)
|
|
206
|
+
|
|
207
|
+
x = x.to_i
|
|
208
|
+
y = y.to_i
|
|
209
|
+
dist_x = x - center_x.to_i
|
|
210
|
+
dist_y = y - center_y.to_i
|
|
211
|
+
|
|
212
|
+
return 0 if dist_y == 0 and dist_x == 0
|
|
213
|
+
distance = Math.hypot( dist_x, dist_y )
|
|
214
|
+
distance
|
|
215
|
+
|
|
216
|
+
end
|
|
217
|
+
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
end
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
MobyUtil::Logger.instance.hook_methods( MobyBehaviour::QT::Gesture )
|