cutedriver-driver 2.0.0.20210120164037
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.
- checksums.yaml +7 -0
- data/README.md +16 -0
- data/bin/start_app_perf +200 -0
- data/bin/tdriver-devtools +3 -0
- data/config/sut_parameters.rb +52 -0
- data/config/sut_setup.rb +32 -0
- data/config/sut_teardown.rb +32 -0
- data/config/tdriver_custom_error_recovery.rb +83 -0
- data/ext/extconf.rb +70 -0
- data/ext/native_extensions.c +315 -0
- data/lib/matti.rb +25 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +120 -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 +1945 -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/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 +917 -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 +2170 -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/behaviour_example.rb +100 -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 +23 -0
- data/lib/tdriver/base/behaviour/abstract.rb +29 -0
- data/lib/tdriver/base/behaviour/behaviours/object_abstract.rb +107 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +99 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +278 -0
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +119 -0
- data/lib/tdriver/base/behaviour/factory.rb +495 -0
- data/lib/tdriver/base/behaviour/loader.rb +46 -0
- data/lib/tdriver/base/command_data/command_data.rb +51 -0
- data/lib/tdriver/base/command_data/loader.rb +29 -0
- data/lib/tdriver/base/controller/abstraction.rb +56 -0
- data/lib/tdriver/base/controller/loader.rb +21 -0
- data/lib/tdriver/base/errors.rb +134 -0
- data/lib/tdriver/base/loader.rb +47 -0
- data/lib/tdriver/base/state_object.rb +373 -0
- data/lib/tdriver/base/sut/adapter.rb +54 -0
- data/lib/tdriver/base/sut/controller.rb +151 -0
- data/lib/tdriver/base/sut/factory.rb +339 -0
- data/lib/tdriver/base/sut/generic/behaviours/agent.rb +77 -0
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +427 -0
- data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
- data/lib/tdriver/base/sut/generic/behaviours/find.rb +107 -0
- data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +337 -0
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1888 -0
- data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +210 -0
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +222 -0
- data/lib/tdriver/base/sut/generic/commands/agent.rb +43 -0
- data/lib/tdriver/base/sut/generic/commands/application.rb +274 -0
- data/lib/tdriver/base/sut/generic/commands/fixture.rb +47 -0
- data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +94 -0
- data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +64 -0
- data/lib/tdriver/base/sut/generic/plugin.rb +97 -0
- data/lib/tdriver/base/sut/loader.rb +35 -0
- data/lib/tdriver/base/sut/sut.rb +98 -0
- data/lib/tdriver/base/test_object/abstract.rb +208 -0
- data/lib/tdriver/base/test_object/adapter.rb +740 -0
- data/lib/tdriver/base/test_object/behaviours/syncronization.rb +144 -0
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +1047 -0
- data/lib/tdriver/base/test_object/cache.rb +134 -0
- data/lib/tdriver/base/test_object/factory.rb +684 -0
- data/lib/tdriver/base/test_object/loader.rb +51 -0
- data/lib/tdriver/base/test_object/verification.rb +178 -0
- data/lib/tdriver/base/test_object/xml/abstraction.rb +63 -0
- data/lib/tdriver/base/test_object/xml/adapter.rb +773 -0
- data/lib/tdriver/env.rb +21 -0
- data/lib/tdriver/loader.rb +57 -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 +168 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +106 -0
- data/lib/tdriver/report/report.rb +61 -0
- data/lib/tdriver/report/report_api.rb +348 -0
- data/lib/tdriver/report/report_combine.rb +86 -0
- data/lib/tdriver/report/report_crash_file_capture.rb +178 -0
- data/lib/tdriver/report/report_creator.rb +665 -0
- data/lib/tdriver/report/report_cucumber.rb +158 -0
- data/lib/tdriver/report/report_cucumber_listener.rb +184 -0
- data/lib/tdriver/report/report_cucumber_reporter.rb +181 -0
- data/lib/tdriver/report/report_data_presentation.rb +156 -0
- data/lib/tdriver/report/report_data_table.rb +64 -0
- data/lib/tdriver/report/report_execution_statistics.rb +400 -0
- data/lib/tdriver/report/report_file_capture.rb +159 -0
- data/lib/tdriver/report/report_graph_generator.rb +59 -0
- data/lib/tdriver/report/report_grouping.rb +541 -0
- data/lib/tdriver/report/report_javascript.rb +199 -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 +725 -0
- data/lib/tdriver/report/report_test_run.rb +1476 -0
- data/lib/tdriver/report/report_test_unit.rb +223 -0
- data/lib/tdriver/report/report_writer.rb +1621 -0
- data/lib/tdriver/tdriver.rb +209 -0
- data/lib/tdriver/util/agent/loader.rb +22 -0
- data/lib/tdriver/util/agent/service.rb +107 -0
- data/lib/tdriver/util/common/array.rb +39 -0
- data/lib/tdriver/util/common/boolean.rb +48 -0
- data/lib/tdriver/util/common/crc16.rb +149 -0
- data/lib/tdriver/util/common/environment.rb +154 -0
- data/lib/tdriver/util/common/error.rb +40 -0
- data/lib/tdriver/util/common/exception.rb +53 -0
- data/lib/tdriver/util/common/exceptions.rb +12 -0
- data/lib/tdriver/util/common/file.rb +328 -0
- data/lib/tdriver/util/common/gem.rb +109 -0
- data/lib/tdriver/util/common/hash.rb +288 -0
- data/lib/tdriver/util/common/kernel.rb +253 -0
- data/lib/tdriver/util/common/loader.rb +47 -0
- data/lib/tdriver/util/common/numeric.rb +159 -0
- data/lib/tdriver/util/common/object.rb +159 -0
- data/lib/tdriver/util/common/retryable.rb +179 -0
- data/lib/tdriver/util/common/stackable.rb +185 -0
- data/lib/tdriver/util/common/string.rb +174 -0
- data/lib/tdriver/util/database/access.rb +240 -0
- data/lib/tdriver/util/database/connection.rb +44 -0
- data/lib/tdriver/util/database/error.rb +34 -0
- data/lib/tdriver/util/database/loader.rb +28 -0
- data/lib/tdriver/util/filters/attribute_filter.rb +121 -0
- data/lib/tdriver/util/filters/loader.rb +29 -0
- data/lib/tdriver/util/fixture/loader.rb +22 -0
- data/lib/tdriver/util/fixture/service.rb +211 -0
- data/lib/tdriver/util/hooking/hooking.rb +477 -0
- data/lib/tdriver/util/keymap/keymap.rb +81 -0
- data/lib/tdriver/util/loader.rb +80 -0
- data/lib/tdriver/util/localisation/error.rb +31 -0
- data/lib/tdriver/util/localisation/loader.rb +25 -0
- data/lib/tdriver/util/localisation/localisation.rb +762 -0
- data/lib/tdriver/util/logger/loader.rb +22 -0
- data/lib/tdriver/util/logger/logger.rb +591 -0
- data/lib/tdriver/util/operator_data/error.rb +29 -0
- data/lib/tdriver/util/operator_data/loader.rb +27 -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/error.rb +48 -0
- data/lib/tdriver/util/parameter/loader.rb +25 -0
- data/lib/tdriver/util/parameter/parameter.rb +1161 -0
- data/lib/tdriver/util/plugin/abstract.rb +61 -0
- data/lib/tdriver/util/plugin/error.rb +0 -0
- data/lib/tdriver/util/plugin/loader.rb +28 -0
- data/lib/tdriver/util/plugin/service.rb +319 -0
- data/lib/tdriver/util/recorder/loader.rb +25 -0
- data/lib/tdriver/util/recorder/recorder.rb +72 -0
- data/lib/tdriver/util/recorder/scripter.rb +294 -0
- data/lib/tdriver/util/statistics/statistics.rb +89 -0
- data/lib/tdriver/util/user_data/error.rb +28 -0
- data/lib/tdriver/util/user_data/loader.rb +25 -0
- data/lib/tdriver/util/user_data/user_data.rb +104 -0
- data/lib/tdriver/util/video/camera.rb +67 -0
- data/lib/tdriver/util/video/camera_linux.rb +153 -0
- data/lib/tdriver/util/video/camera_windows.rb +174 -0
- data/lib/tdriver/util/video/loader.rb +31 -0
- data/lib/tdriver/util/video/video_utils.rb +139 -0
- data/lib/tdriver/util/xml/abstraction.rb +117 -0
- data/lib/tdriver/util/xml/attribute.rb +32 -0
- data/lib/tdriver/util/xml/builder.rb +53 -0
- data/lib/tdriver/util/xml/comment.rb +32 -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 +62 -0
- data/lib/tdriver/util/xml/nil_node.rb +95 -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 +21 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +167 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +66 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +64 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/comment.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +66 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +212 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +237 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +39 -0
- data/lib/tdriver/util/xml/text.rb +32 -0
- data/lib/tdriver/util/xml/xml.rb +332 -0
- data/lib/tdriver/verify/verify.rb +2398 -0
- data/lib/tdriver/version.rb +21 -0
- data/xml/behaviours/generic.xml +530 -0
- data/xml/defaults/generic.xml +11 -0
- data/xml/defaults/sut_generic.xml +8 -0
- data/xml/parameters/tdriver_parameters.xml +23 -0
- data/xml/templates/generic.xml +292 -0
- metadata +324 -0
@@ -0,0 +1,54 @@
|
|
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
|
+
|
21
|
+
module MobyController
|
22
|
+
|
23
|
+
# Abstract class SutAdapter. Not supposed to be instantiated as is
|
24
|
+
class SutAdapter
|
25
|
+
|
26
|
+
def add_hook( id, &block )
|
27
|
+
|
28
|
+
raise ArgumentError, 'Unable to add hook due to no block was given' unless block_given?
|
29
|
+
@hooks = {} unless @hooks
|
30
|
+
@hooks[ id ] = block
|
31
|
+
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
# TODO: document me
|
37
|
+
def execute_hook( id, *arguments )
|
38
|
+
|
39
|
+
@hooks[ id ].call( *arguments )
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
# TODO: document me
|
44
|
+
def hooked? ( id )
|
45
|
+
@hooks = {} unless @hooks
|
46
|
+
@hooks.has_key?( id )
|
47
|
+
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
|
52
|
+
end # SutAdapter
|
53
|
+
|
54
|
+
end # MobyController
|
@@ -0,0 +1,151 @@
|
|
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
|
+
module MobyBase
|
21
|
+
|
22
|
+
class SutController
|
23
|
+
|
24
|
+
attr_accessor :sut_controllers, :execution_order #, :test_object_adapter, :test_object_factory
|
25
|
+
|
26
|
+
# Creating new SutController associates SutAdapter to the controller
|
27
|
+
# == params
|
28
|
+
# sut_adapter:: MobyController::SutAdapter descendant, e.g. MobyController::QT::SutAdapter
|
29
|
+
# == raises
|
30
|
+
# TypeError:: Wrong argument type $1 for SUT controller (expected $2)
|
31
|
+
# NameError:: No SUT controller found for <type> (<class>)
|
32
|
+
def initialize( sut_controllers, sut_adapter )
|
33
|
+
|
34
|
+
sut_controllers.check_type String, 'Wrong argument type $1 for SUT controller (expected $2)'
|
35
|
+
|
36
|
+
@sut_adapter = sut_adapter
|
37
|
+
|
38
|
+
# empty sut controllers hash
|
39
|
+
@sut_controllers = {}
|
40
|
+
|
41
|
+
# empty sut controller execution order, this will be used when multiple sut controllers given
|
42
|
+
@execution_order = []
|
43
|
+
|
44
|
+
sut_controllers.split( ';' ).each{ | sut_type |
|
45
|
+
|
46
|
+
begin
|
47
|
+
|
48
|
+
# add sut_controller to execution order list
|
49
|
+
@execution_order << sut_type
|
50
|
+
|
51
|
+
# store sut controller
|
52
|
+
@sut_controllers[ sut_type ] = "MobyController::#{ sut_type }"
|
53
|
+
|
54
|
+
# extend controller module
|
55
|
+
extend( eval( "#{ @sut_controllers[ sut_type ] }::SutController" ) )
|
56
|
+
|
57
|
+
rescue NameError
|
58
|
+
|
59
|
+
raise MobyBase::ControllerNotFoundError, "No SUT controller found for #{ sut_type } (#{ @sut_controllers[ sut_type ] }::SutController)"
|
60
|
+
|
61
|
+
end
|
62
|
+
|
63
|
+
}
|
64
|
+
|
65
|
+
end
|
66
|
+
|
67
|
+
# Function to execute a command on a SutController
|
68
|
+
# This method is not meant to be overwritten in descendants.
|
69
|
+
#
|
70
|
+
# Associates MobyCommand::CommandData implementation based on the MobyCommand class name,
|
71
|
+
# by finding implementation from the same module as the SutController instance.
|
72
|
+
#
|
73
|
+
# example: MobyController::QT::SutController instance associates MobyController::QT::Application (module)
|
74
|
+
# implementation to MobyCommand::Application command_data object
|
75
|
+
#
|
76
|
+
# == params
|
77
|
+
# command_data:: MobyCommand::CommandData descendant
|
78
|
+
# == returns
|
79
|
+
# command_data implementation specific return value
|
80
|
+
# == raises
|
81
|
+
# TypeError:: Wrong argument type $1 for command_data (expected $2)
|
82
|
+
# MobyBase::CommandNotFoundError:: if no implementation is found for the CommandData object
|
83
|
+
def execute_command( command_data )
|
84
|
+
|
85
|
+
command_data.check_type MobyCommand::CommandData, 'Wrong argument type $1 for command_data (expected $2)'
|
86
|
+
|
87
|
+
_command_class_suffix = command_data.class.name.gsub(/^MobyCommand::/, '')
|
88
|
+
|
89
|
+
_execution_order_count = @execution_order.count
|
90
|
+
|
91
|
+
# retrieve controller for command; iterate through each sut controller
|
92
|
+
@execution_order.each_with_index do | controller, index |
|
93
|
+
|
94
|
+
begin
|
95
|
+
|
96
|
+
# extend command_data with combinination of corresponding sut specific controller
|
97
|
+
command_data.extend eval( "#{ @sut_controllers[ controller ] }::#{ _command_class_suffix }" )
|
98
|
+
|
99
|
+
# controller found
|
100
|
+
break
|
101
|
+
|
102
|
+
rescue NameError
|
103
|
+
|
104
|
+
# raise exception only if none controller found
|
105
|
+
if ( index + 1 ) == _execution_order_count
|
106
|
+
|
107
|
+
raise MobyBase::ControllerNotFoundError, "No controller found for command data object #{ command_data.inspect }"
|
108
|
+
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
112
|
+
|
113
|
+
end
|
114
|
+
|
115
|
+
# pass sut_adapter for command_data
|
116
|
+
command_data.set_adapter( @sut_adapter )
|
117
|
+
|
118
|
+
retries = 0
|
119
|
+
|
120
|
+
begin
|
121
|
+
|
122
|
+
# execute the command
|
123
|
+
command_data.execute
|
124
|
+
|
125
|
+
# retry in case of IO/connection error
|
126
|
+
rescue Errno::EPIPE, IOError
|
127
|
+
|
128
|
+
raise if retries == 1
|
129
|
+
|
130
|
+
retries += 1
|
131
|
+
|
132
|
+
if TDriver::SUTFactory.connected_suts.include?( @sut_adapter.sut_id.to_sym )
|
133
|
+
|
134
|
+
@sut_adapter.disconnect
|
135
|
+
|
136
|
+
@sut_adapter.connect( @sut_adapter.sut_id )
|
137
|
+
|
138
|
+
end
|
139
|
+
|
140
|
+
retry
|
141
|
+
|
142
|
+
end
|
143
|
+
|
144
|
+
end # execute_command
|
145
|
+
|
146
|
+
# enable hooking for performance measurement & debug logging
|
147
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
148
|
+
|
149
|
+
end # SutController
|
150
|
+
|
151
|
+
end # MobyBase
|
@@ -0,0 +1,339 @@
|
|
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
|
+
module TDriver
|
21
|
+
|
22
|
+
class SUTFactory
|
23
|
+
|
24
|
+
# private methods and variables
|
25
|
+
class << self
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# TODO: document me
|
30
|
+
def initialize_class
|
31
|
+
|
32
|
+
reset
|
33
|
+
|
34
|
+
end
|
35
|
+
|
36
|
+
def mapped_sut?( sut_id )
|
37
|
+
|
38
|
+
$parameters[ :mappings, {} ].has_key?( sut_id.to_sym )
|
39
|
+
|
40
|
+
end
|
41
|
+
|
42
|
+
def get_mapped_sut( sut_id )
|
43
|
+
|
44
|
+
$parameters[ :mappings ][ sut_id.to_sym ].to_sym
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
# gets sut from sut-factorys list - if not connected tries to reconnect first
|
49
|
+
def get_sut_from_list( id )
|
50
|
+
|
51
|
+
unless @_sut_list[ id ][ :is_connected ]
|
52
|
+
|
53
|
+
@_sut_list[ id ][ :sut ].connect( id )
|
54
|
+
@_sut_list[ id ][ :is_connected ] = true
|
55
|
+
|
56
|
+
end
|
57
|
+
|
58
|
+
@_sut_list[ id ][ :sut ]
|
59
|
+
|
60
|
+
end
|
61
|
+
|
62
|
+
def sut_exists?( sut_id )
|
63
|
+
|
64
|
+
@_sut_list.has_key?( sut_id )
|
65
|
+
|
66
|
+
end
|
67
|
+
|
68
|
+
def retrieve_sut_id_from_hash( sut_attributes )
|
69
|
+
|
70
|
+
# usability improvement: threat sut_attribute as SUT id if it is type of Symbol or String
|
71
|
+
sut_attributes = { :id => sut_attributes.to_sym } if [ String, Symbol ].include?( sut_attributes.class )
|
72
|
+
|
73
|
+
# verify that sut_attributes is type of Hash
|
74
|
+
sut_attributes.check_type( [ Hash, Symbol, String ], "Wrong argument type $1 for 'sut_attributes' (expected $2)" )
|
75
|
+
|
76
|
+
# legacy support: support also :Id
|
77
|
+
sut_attributes[ :id ] = sut_attributes.delete( :Id ) if sut_attributes.has_key?( :Id )
|
78
|
+
|
79
|
+
sut_attributes.require_key( :id, "Required SUT identification key $1 not defined in 'sut_attributes'" )
|
80
|
+
|
81
|
+
sut_attributes[ :id ].to_sym
|
82
|
+
|
83
|
+
end
|
84
|
+
|
85
|
+
# Finds the sut definition matching the id, either directly or via a mapping
|
86
|
+
#
|
87
|
+
# === params
|
88
|
+
# sut_id:: Symbol defining the id of the sut to search for
|
89
|
+
# === returns
|
90
|
+
# Symbol:: Either id if it was found in the parameter file or the id of a sut mapped to this id, or nil if no direct or mapped match was found
|
91
|
+
# === raises
|
92
|
+
# ArgumentError:: The id argument was not a Symbol
|
93
|
+
def find_sut_or_mapping( sut_id )
|
94
|
+
|
95
|
+
sut_id.check_type Symbol, 'Wrong argument type $1 for SUT id (expected $2)'
|
96
|
+
|
97
|
+
begin
|
98
|
+
|
99
|
+
# check if direct match exists
|
100
|
+
return sut_id if $parameters[ sut_id ]
|
101
|
+
|
102
|
+
rescue MobyUtil::ParameterNotFoundError
|
103
|
+
|
104
|
+
# check if a mapping is defined for the id
|
105
|
+
begin
|
106
|
+
|
107
|
+
# return nil if no mapping exists
|
108
|
+
return nil if ( mapped_id = $parameters[ :mappings ][ sut_id ] ).nil?
|
109
|
+
|
110
|
+
# check if the mapped to sut id exists
|
111
|
+
return mapped_id if $parameters[ ( mapped_id = mapped_id.to_sym ) ]
|
112
|
+
|
113
|
+
rescue MobyUtil::ParameterNotFoundError
|
114
|
+
|
115
|
+
# no mappings defined in tdriver_parameters.xml or the mapped to sut was not found
|
116
|
+
return nil
|
117
|
+
|
118
|
+
end # check if mapping exists
|
119
|
+
|
120
|
+
end # check if direct match exists
|
121
|
+
|
122
|
+
end # find_sut_or_mapping
|
123
|
+
|
124
|
+
end # self
|
125
|
+
|
126
|
+
# Create/reset hash to store sut ids for all current suts
|
127
|
+
def self.reset
|
128
|
+
|
129
|
+
@_sut_list = {}
|
130
|
+
|
131
|
+
end
|
132
|
+
|
133
|
+
# TODO: document me
|
134
|
+
def self.disconnect_sut( sut_attributes )
|
135
|
+
|
136
|
+
sut_id = retrieve_sut_id_from_hash( sut_attributes )
|
137
|
+
|
138
|
+
raise RuntimeError, "Unable disconnect SUT due to #{ sut_id.to_s } is not connected" unless sut_exists?( sut_id ) && @_sut_list[ sut_id ][ :is_connected ]
|
139
|
+
|
140
|
+
@_sut_list[ sut_id ][ :sut ].disconnect
|
141
|
+
|
142
|
+
@_sut_list[ sut_id ][ :is_connected ] = false
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
def self.reboot_sut( sut_attributes )
|
147
|
+
|
148
|
+
sut_id = retrieve_sut_id_from_hash( sut_attributes )
|
149
|
+
|
150
|
+
raise RuntimeError, "Unable to reboot SUT due to #{ sut_id.to_s } is not connected" unless sut_exists?( sut_id ) && @_sut_list[ sut_id ][ :is_connected ]
|
151
|
+
|
152
|
+
@_sut_list[ sut_id ][ :sut ].reboot
|
153
|
+
|
154
|
+
disconnect_sut( sut_id )
|
155
|
+
|
156
|
+
end
|
157
|
+
|
158
|
+
# TODO: document me
|
159
|
+
def self.connected_suts
|
160
|
+
|
161
|
+
@_sut_list
|
162
|
+
|
163
|
+
end
|
164
|
+
|
165
|
+
# Function to create the actual SUT objects based on the 'sut' attribute.
|
166
|
+
# === params
|
167
|
+
# sut_type:: sut_type - sut type, supportes all types defined by SUTFactory constants
|
168
|
+
# id:: id - unique identifier for identifying particular SUT from each other. Is propagated to proper initializers.
|
169
|
+
# === returns
|
170
|
+
# return:: SUT object
|
171
|
+
# raise::
|
172
|
+
# ArgumentError:: <name> not defined in TDriver parameters XML
|
173
|
+
def self.make( sut_attributes )
|
174
|
+
|
175
|
+
sut_id = retrieve_sut_id_from_hash( sut_attributes )
|
176
|
+
|
177
|
+
sut_id = get_mapped_sut( sut_id ) if mapped_sut?( sut_id )
|
178
|
+
|
179
|
+
# if sut is already connected, return existing sut
|
180
|
+
return get_sut_from_list( sut_id ) if sut_exists?( sut_id )
|
181
|
+
|
182
|
+
# retrieve sut from parameters
|
183
|
+
sut = $parameters[ sut_id, nil ]
|
184
|
+
|
185
|
+
# raise exception if sut was not found
|
186
|
+
raise ArgumentError, "#{ sut_id.to_s } not defined in TDriver parameters XML" if sut.nil?
|
187
|
+
|
188
|
+
# retrieve sut type from parameters
|
189
|
+
sut_type = sut[ :type, nil ]
|
190
|
+
|
191
|
+
# raise exception if sut type was not found
|
192
|
+
raise RuntimeError, "SUT parameter type not defined for #{ sut_id.to_s } in TDriver parameters/templates XML" if sut_type.nil?
|
193
|
+
|
194
|
+
sut_type_symbol = sut_type.downcase.to_sym
|
195
|
+
|
196
|
+
# retrieve plugin name that implements given sut
|
197
|
+
sut_plugin = sut[ :sut_plugin, nil ]
|
198
|
+
|
199
|
+
# retrieve enviroment value from sut, use '*' as default
|
200
|
+
sut_env = sut[ :env, '*' ]
|
201
|
+
|
202
|
+
# verify that sut plugin is defined in sut configuration
|
203
|
+
raise RuntimeError, "SUT parameter 'sut_plugin' not defined for #{ sut_id.to_s } (#{ sut_type.to_s })" if sut_plugin.nil?
|
204
|
+
|
205
|
+
# flag to determine that should exception be raised; allow one retry, then set flag to true if error still occures
|
206
|
+
raise_exception = false
|
207
|
+
|
208
|
+
begin
|
209
|
+
|
210
|
+
# verify that sut plugin is registered
|
211
|
+
if TDriver::PluginService.plugin_registered?( sut_plugin, :sut )
|
212
|
+
|
213
|
+
# create sut object
|
214
|
+
created_sut = TDriver::PluginService.call_plugin_method( sut_plugin, :make_sut, sut_id )
|
215
|
+
|
216
|
+
else
|
217
|
+
|
218
|
+
# raise error if sut was not registered
|
219
|
+
raise NotImplementedError, "No plugin implementation found for SUT type: #{ sut_type }"
|
220
|
+
|
221
|
+
end
|
222
|
+
|
223
|
+
rescue Exception => exception
|
224
|
+
|
225
|
+
# if sut was not registered, try to load it
|
226
|
+
TDriver::PluginService.load_plugin( sut_plugin ) if exception.kind_of?( NotImplementedError )
|
227
|
+
|
228
|
+
if !raise_exception
|
229
|
+
|
230
|
+
raise_exception = true
|
231
|
+
|
232
|
+
retry
|
233
|
+
|
234
|
+
else
|
235
|
+
|
236
|
+
# still errors, raise original exception
|
237
|
+
raise exception
|
238
|
+
|
239
|
+
end
|
240
|
+
|
241
|
+
end
|
242
|
+
|
243
|
+
# store SUT type to sut object
|
244
|
+
created_sut.instance_variable_set( :@ui_type, sut_type )
|
245
|
+
|
246
|
+
# store SUT UI version to sut object
|
247
|
+
created_sut.instance_variable_set( :@ui_version, $parameters[ sut_id ][ :version, nil ] )
|
248
|
+
|
249
|
+
# store SUT input type to sut object
|
250
|
+
created_sut.instance_variable_set( :@input, $parameters[ sut_id ][ :input_type, nil ] )
|
251
|
+
|
252
|
+
# retrieve list of optional extension plugins
|
253
|
+
@extension_plugins = $parameters[ sut_id ][ :extension_plugins, "" ].split( ";" )
|
254
|
+
|
255
|
+
# load optional extension plugins
|
256
|
+
if @extension_plugins.count > 0
|
257
|
+
|
258
|
+
@extension_plugins.each{ | plugin_name |
|
259
|
+
|
260
|
+
raise_exception = false
|
261
|
+
|
262
|
+
begin
|
263
|
+
|
264
|
+
# verify that extension plugin is registered
|
265
|
+
unless TDriver::PluginService.plugin_registered?( plugin_name, :extension )
|
266
|
+
|
267
|
+
# raise error if sut was not registered
|
268
|
+
raise NotImplementedError, "Extension plugin not found #{ plugin_name }"
|
269
|
+
|
270
|
+
end
|
271
|
+
|
272
|
+
rescue Exception => exception
|
273
|
+
|
274
|
+
# if sut was not registered, try to load it
|
275
|
+
TDriver::PluginService.load_plugin( plugin_name ) if exception.kind_of?( NotImplementedError )
|
276
|
+
|
277
|
+
if !raise_exception
|
278
|
+
|
279
|
+
raise_exception = true
|
280
|
+
|
281
|
+
retry
|
282
|
+
|
283
|
+
else
|
284
|
+
|
285
|
+
# still errors, raise original exception
|
286
|
+
raise exception
|
287
|
+
|
288
|
+
end
|
289
|
+
|
290
|
+
end
|
291
|
+
|
292
|
+
}
|
293
|
+
|
294
|
+
end
|
295
|
+
|
296
|
+
# apply sut generic behaviours
|
297
|
+
TDriver::BehaviourFactory.apply_behaviour(
|
298
|
+
|
299
|
+
:object => created_sut,
|
300
|
+
:object_type => [ 'sut' ],
|
301
|
+
:sut_type => [ '*', created_sut.ui_type ],
|
302
|
+
:input_type => [ '*', created_sut.input.to_s ],
|
303
|
+
:env => [ '*', *sut_env.to_s.split(";") ],
|
304
|
+
:version => [ '*', created_sut.ui_version.to_s ]
|
305
|
+
|
306
|
+
)
|
307
|
+
|
308
|
+
@_sut_list[ sut_id ] = { :sut => created_sut, :is_connected => true }
|
309
|
+
|
310
|
+
created_sut
|
311
|
+
|
312
|
+
end
|
313
|
+
|
314
|
+
# enable hooking for performance measurement & debug logging
|
315
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
316
|
+
|
317
|
+
# initialize plugin service
|
318
|
+
initialize_class
|
319
|
+
|
320
|
+
end # SUTFactory
|
321
|
+
|
322
|
+
end # TDriver
|
323
|
+
|
324
|
+
# for backwards compatibility
|
325
|
+
module MobyBase
|
326
|
+
|
327
|
+
class SUTFactory
|
328
|
+
|
329
|
+
def self.instance
|
330
|
+
|
331
|
+
warn_caller '$1:$2 deprecated class MobyBase::SUTFactory, please use static class TDriver::SUTFactory instead'
|
332
|
+
|
333
|
+
TDriver::SUTFactory
|
334
|
+
|
335
|
+
end
|
336
|
+
|
337
|
+
end # SUTFactory
|
338
|
+
|
339
|
+
end # MobyBase
|