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.
Files changed (226) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +16 -0
  3. data/bin/start_app_perf +200 -0
  4. data/bin/tdriver-devtools +3 -0
  5. data/config/sut_parameters.rb +52 -0
  6. data/config/sut_setup.rb +32 -0
  7. data/config/sut_teardown.rb +32 -0
  8. data/config/tdriver_custom_error_recovery.rb +83 -0
  9. data/ext/extconf.rb +70 -0
  10. data/ext/native_extensions.c +315 -0
  11. data/lib/matti.rb +25 -0
  12. data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +120 -0
  13. data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
  14. data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
  15. data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
  16. data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
  17. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
  18. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
  19. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
  20. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
  21. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
  22. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
  23. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
  24. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
  25. data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
  26. data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
  27. data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
  28. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1945 -0
  29. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
  30. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
  31. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
  32. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
  33. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
  34. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
  35. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
  36. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
  37. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
  38. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
  39. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
  40. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
  41. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
  42. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
  43. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
  44. data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
  45. data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
  46. data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
  47. data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
  48. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
  49. data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
  50. data/lib/tdriver-devtools/doc/generate.rb +917 -0
  51. data/lib/tdriver-devtools/doc/update +1 -0
  52. data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
  53. data/lib/tdriver-devtools/doc/xslt/template.xsl +2170 -0
  54. data/lib/tdriver-devtools/doc/xslt/update +3 -0
  55. data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
  56. data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
  57. data/lib/tdriver-devtools/tests/feature_tests/example/behaviour_example.rb +100 -0
  58. data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
  59. data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
  60. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
  61. data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
  62. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
  63. data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
  64. data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
  65. data/lib/tdriver.rb +23 -0
  66. data/lib/tdriver/base/behaviour/abstract.rb +29 -0
  67. data/lib/tdriver/base/behaviour/behaviours/object_abstract.rb +107 -0
  68. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +99 -0
  69. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +278 -0
  70. data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +119 -0
  71. data/lib/tdriver/base/behaviour/factory.rb +495 -0
  72. data/lib/tdriver/base/behaviour/loader.rb +46 -0
  73. data/lib/tdriver/base/command_data/command_data.rb +51 -0
  74. data/lib/tdriver/base/command_data/loader.rb +29 -0
  75. data/lib/tdriver/base/controller/abstraction.rb +56 -0
  76. data/lib/tdriver/base/controller/loader.rb +21 -0
  77. data/lib/tdriver/base/errors.rb +134 -0
  78. data/lib/tdriver/base/loader.rb +47 -0
  79. data/lib/tdriver/base/state_object.rb +373 -0
  80. data/lib/tdriver/base/sut/adapter.rb +54 -0
  81. data/lib/tdriver/base/sut/controller.rb +151 -0
  82. data/lib/tdriver/base/sut/factory.rb +339 -0
  83. data/lib/tdriver/base/sut/generic/behaviours/agent.rb +77 -0
  84. data/lib/tdriver/base/sut/generic/behaviours/application.rb +427 -0
  85. data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
  86. data/lib/tdriver/base/sut/generic/behaviours/find.rb +107 -0
  87. data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +337 -0
  88. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1888 -0
  89. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +210 -0
  90. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +222 -0
  91. data/lib/tdriver/base/sut/generic/commands/agent.rb +43 -0
  92. data/lib/tdriver/base/sut/generic/commands/application.rb +274 -0
  93. data/lib/tdriver/base/sut/generic/commands/fixture.rb +47 -0
  94. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +94 -0
  95. data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +64 -0
  96. data/lib/tdriver/base/sut/generic/plugin.rb +97 -0
  97. data/lib/tdriver/base/sut/loader.rb +35 -0
  98. data/lib/tdriver/base/sut/sut.rb +98 -0
  99. data/lib/tdriver/base/test_object/abstract.rb +208 -0
  100. data/lib/tdriver/base/test_object/adapter.rb +740 -0
  101. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +144 -0
  102. data/lib/tdriver/base/test_object/behaviours/test_object.rb +1047 -0
  103. data/lib/tdriver/base/test_object/cache.rb +134 -0
  104. data/lib/tdriver/base/test_object/factory.rb +684 -0
  105. data/lib/tdriver/base/test_object/loader.rb +51 -0
  106. data/lib/tdriver/base/test_object/verification.rb +178 -0
  107. data/lib/tdriver/base/test_object/xml/abstraction.rb +63 -0
  108. data/lib/tdriver/base/test_object/xml/adapter.rb +773 -0
  109. data/lib/tdriver/env.rb +21 -0
  110. data/lib/tdriver/loader.rb +57 -0
  111. data/lib/tdriver/matti.rb +35 -0
  112. data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
  113. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +168 -0
  114. data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +106 -0
  115. data/lib/tdriver/report/report.rb +61 -0
  116. data/lib/tdriver/report/report_api.rb +348 -0
  117. data/lib/tdriver/report/report_combine.rb +86 -0
  118. data/lib/tdriver/report/report_crash_file_capture.rb +178 -0
  119. data/lib/tdriver/report/report_creator.rb +665 -0
  120. data/lib/tdriver/report/report_cucumber.rb +158 -0
  121. data/lib/tdriver/report/report_cucumber_listener.rb +184 -0
  122. data/lib/tdriver/report/report_cucumber_reporter.rb +181 -0
  123. data/lib/tdriver/report/report_data_presentation.rb +156 -0
  124. data/lib/tdriver/report/report_data_table.rb +64 -0
  125. data/lib/tdriver/report/report_execution_statistics.rb +400 -0
  126. data/lib/tdriver/report/report_file_capture.rb +159 -0
  127. data/lib/tdriver/report/report_graph_generator.rb +59 -0
  128. data/lib/tdriver/report/report_grouping.rb +541 -0
  129. data/lib/tdriver/report/report_javascript.rb +199 -0
  130. data/lib/tdriver/report/report_junit_xml.rb +147 -0
  131. data/lib/tdriver/report/report_rspec.rb +108 -0
  132. data/lib/tdriver/report/report_test_case_run.rb +725 -0
  133. data/lib/tdriver/report/report_test_run.rb +1476 -0
  134. data/lib/tdriver/report/report_test_unit.rb +223 -0
  135. data/lib/tdriver/report/report_writer.rb +1621 -0
  136. data/lib/tdriver/tdriver.rb +209 -0
  137. data/lib/tdriver/util/agent/loader.rb +22 -0
  138. data/lib/tdriver/util/agent/service.rb +107 -0
  139. data/lib/tdriver/util/common/array.rb +39 -0
  140. data/lib/tdriver/util/common/boolean.rb +48 -0
  141. data/lib/tdriver/util/common/crc16.rb +149 -0
  142. data/lib/tdriver/util/common/environment.rb +154 -0
  143. data/lib/tdriver/util/common/error.rb +40 -0
  144. data/lib/tdriver/util/common/exception.rb +53 -0
  145. data/lib/tdriver/util/common/exceptions.rb +12 -0
  146. data/lib/tdriver/util/common/file.rb +328 -0
  147. data/lib/tdriver/util/common/gem.rb +109 -0
  148. data/lib/tdriver/util/common/hash.rb +288 -0
  149. data/lib/tdriver/util/common/kernel.rb +253 -0
  150. data/lib/tdriver/util/common/loader.rb +47 -0
  151. data/lib/tdriver/util/common/numeric.rb +159 -0
  152. data/lib/tdriver/util/common/object.rb +159 -0
  153. data/lib/tdriver/util/common/retryable.rb +179 -0
  154. data/lib/tdriver/util/common/stackable.rb +185 -0
  155. data/lib/tdriver/util/common/string.rb +174 -0
  156. data/lib/tdriver/util/database/access.rb +240 -0
  157. data/lib/tdriver/util/database/connection.rb +44 -0
  158. data/lib/tdriver/util/database/error.rb +34 -0
  159. data/lib/tdriver/util/database/loader.rb +28 -0
  160. data/lib/tdriver/util/filters/attribute_filter.rb +121 -0
  161. data/lib/tdriver/util/filters/loader.rb +29 -0
  162. data/lib/tdriver/util/fixture/loader.rb +22 -0
  163. data/lib/tdriver/util/fixture/service.rb +211 -0
  164. data/lib/tdriver/util/hooking/hooking.rb +477 -0
  165. data/lib/tdriver/util/keymap/keymap.rb +81 -0
  166. data/lib/tdriver/util/loader.rb +80 -0
  167. data/lib/tdriver/util/localisation/error.rb +31 -0
  168. data/lib/tdriver/util/localisation/loader.rb +25 -0
  169. data/lib/tdriver/util/localisation/localisation.rb +762 -0
  170. data/lib/tdriver/util/logger/loader.rb +22 -0
  171. data/lib/tdriver/util/logger/logger.rb +591 -0
  172. data/lib/tdriver/util/operator_data/error.rb +29 -0
  173. data/lib/tdriver/util/operator_data/loader.rb +27 -0
  174. data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
  175. data/lib/tdriver/util/other/config.rb +221 -0
  176. data/lib/tdriver/util/parameter/error.rb +48 -0
  177. data/lib/tdriver/util/parameter/loader.rb +25 -0
  178. data/lib/tdriver/util/parameter/parameter.rb +1161 -0
  179. data/lib/tdriver/util/plugin/abstract.rb +61 -0
  180. data/lib/tdriver/util/plugin/error.rb +0 -0
  181. data/lib/tdriver/util/plugin/loader.rb +28 -0
  182. data/lib/tdriver/util/plugin/service.rb +319 -0
  183. data/lib/tdriver/util/recorder/loader.rb +25 -0
  184. data/lib/tdriver/util/recorder/recorder.rb +72 -0
  185. data/lib/tdriver/util/recorder/scripter.rb +294 -0
  186. data/lib/tdriver/util/statistics/statistics.rb +89 -0
  187. data/lib/tdriver/util/user_data/error.rb +28 -0
  188. data/lib/tdriver/util/user_data/loader.rb +25 -0
  189. data/lib/tdriver/util/user_data/user_data.rb +104 -0
  190. data/lib/tdriver/util/video/camera.rb +67 -0
  191. data/lib/tdriver/util/video/camera_linux.rb +153 -0
  192. data/lib/tdriver/util/video/camera_windows.rb +174 -0
  193. data/lib/tdriver/util/video/loader.rb +31 -0
  194. data/lib/tdriver/util/video/video_utils.rb +139 -0
  195. data/lib/tdriver/util/xml/abstraction.rb +117 -0
  196. data/lib/tdriver/util/xml/attribute.rb +32 -0
  197. data/lib/tdriver/util/xml/builder.rb +53 -0
  198. data/lib/tdriver/util/xml/comment.rb +32 -0
  199. data/lib/tdriver/util/xml/document.rb +32 -0
  200. data/lib/tdriver/util/xml/element.rb +32 -0
  201. data/lib/tdriver/util/xml/error.rb +46 -0
  202. data/lib/tdriver/util/xml/loader.rb +62 -0
  203. data/lib/tdriver/util/xml/nil_node.rb +95 -0
  204. data/lib/tdriver/util/xml/nodeset.rb +32 -0
  205. data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
  206. data/lib/tdriver/util/xml/parsers/loader.rb +21 -0
  207. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +167 -0
  208. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +66 -0
  209. data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +64 -0
  210. data/lib/tdriver/util/xml/parsers/nokogiri/comment.rb +39 -0
  211. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +66 -0
  212. data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +39 -0
  213. data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +58 -0
  214. data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +212 -0
  215. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +237 -0
  216. data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +39 -0
  217. data/lib/tdriver/util/xml/text.rb +32 -0
  218. data/lib/tdriver/util/xml/xml.rb +332 -0
  219. data/lib/tdriver/verify/verify.rb +2398 -0
  220. data/lib/tdriver/version.rb +21 -0
  221. data/xml/behaviours/generic.xml +530 -0
  222. data/xml/defaults/generic.xml +11 -0
  223. data/xml/defaults/sut_generic.xml +8 -0
  224. data/xml/parameters/tdriver_parameters.xml +23 -0
  225. data/xml/templates/generic.xml +292 -0
  226. metadata +324 -0
@@ -0,0 +1,77 @@
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 MobyBehaviour
21
+
22
+ # == description
23
+ # Agent specific commands
24
+ #
25
+ # == behaviour
26
+ # AgentCommands
27
+ #
28
+ # == requires
29
+ # *
30
+ #
31
+ # == input_type
32
+ # *
33
+ #
34
+ # == sut_type
35
+ # *
36
+ #
37
+ # == sut_version
38
+ # *
39
+ #
40
+ # == objects
41
+ # AgentCommandService
42
+ module AgentCommands
43
+
44
+ include MobyBehaviour::Behaviour
45
+
46
+ # == nodoc
47
+ # == description
48
+ # Queries version of used agent
49
+ #
50
+ # == arguments
51
+ # == returns
52
+ # String
53
+ # description: version number in String format
54
+ # example: "1.3"
55
+ #
56
+ # == exceptions
57
+ #
58
+ # == info
59
+ # See SUT#agent method
60
+ def version
61
+
62
+ # execute command/model by using sut controller
63
+ execute_command(
64
+
65
+ # model
66
+ MobyCommand::AgentCommand.new( :command => :version )
67
+
68
+ )
69
+
70
+ end
71
+
72
+ # enable hooking for performance measurement & debug logging
73
+ TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
74
+
75
+ end # AgentCommands
76
+
77
+ end # MobyBehaviour
@@ -0,0 +1,427 @@
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 MobyBehaviour
21
+
22
+ # == description
23
+ # Describes the behaviour of application and its associated methods
24
+ #
25
+ # == behaviour
26
+ # GenericApplication
27
+ #
28
+ # == requires
29
+ # *
30
+ #
31
+ # == input_type
32
+ # *
33
+ #
34
+ # == sut_type
35
+ # *
36
+ #
37
+ # == sut_version
38
+ # *
39
+ #
40
+ # == objects
41
+ # application
42
+ #
43
+ module Application
44
+
45
+ include MobyBehaviour::Behaviour
46
+
47
+ # == description
48
+ # Closes application and optionally verifies that it is closed. A Hash argument can be used to set any of the optional parameters. Keys not set in the hash will use default values. Close can be set to force kill the application process if close fails. It can also be set to not check if the application process is terminated, in which case close is considered to be successful if the application is no longer in the foreground.\n
49
+ # \n
50
+ # [b]NOTE:[/b] this will currently always try to close applications, also privilegied applications. \n
51
+ # \n
52
+ # [b]For backwards compatibility:[/b] Instead of using a Hash as argument, the value can also be true, false or nil which will be taken as the value of :force_kill
53
+ #
54
+ # == arguments
55
+ # options_hash
56
+ # Hash
57
+ # description: See supported hash keys from [link="#close_hash_keys"]close application options hash keys table[/link]
58
+ # example: {:force_kill => true, :check_process => false}
59
+ # TrueClass
60
+ # description: For backwards compatibility: same as :force_kill => true
61
+ # example: true
62
+ # FalseClass
63
+ # description: For backwards compatibility: same as :force_kill => false
64
+ # example: false
65
+ # NilClass
66
+ # description: For backwards compatibility: same as :force_kill => nil (uses 'application_close_kill' from TDriver parameters file)
67
+ # example: nil
68
+ #
69
+ # == tables
70
+ # close_hash_keys
71
+ # title: Close application options hash keys
72
+ # |Key|Type|Description|Default|Required|
73
+ # |:force_kill|TrueClass, FalseClass|If this options is set to true, the application process is killed if close fails. Setting this option to nil (default value), will cause close to use the value defined in the 'application_close_kill' parameter as defined in the TDriver parameter file.|nil|No|
74
+ # |:check_process|TrueClass, FalseClass|If this options is set to true, success of the close method is verified by checking if the process is still active. If it is set to false, TDriver will only check that the application is no longer in the foreground.|true|No|
75
+ #
76
+ # == returns
77
+ # NilClass
78
+ # description: -
79
+ # example: -
80
+ #
81
+ # == exceptions
82
+ # TestObjectNotFoundError
83
+ # description: If this application is not the foreground application on the device under test.
84
+ #
85
+ # VerificationError
86
+ # description: If no application test object is found after close or if this application is still in the foreground after the close.
87
+ #
88
+ # TypeError
89
+ # description: Wrong argument type <class> for options_hash (expected a Hash, TrueClass or FalseClass)
90
+ #
91
+ # TypeError
92
+ # description: Wrong argument type <class> for :force_kill (expected NilClass, TrueClass or FalseClass)
93
+ #
94
+ # TypeError
95
+ # description: Wrong argument type <class> for :check_process (expected TrueClass or FalseClass)
96
+ #
97
+ def close( options_hash = {} )
98
+
99
+ begin
100
+
101
+ # check if closable
102
+ raise RuntimeError, 'The application is of a type that cannot be closed.' unless closable?
103
+
104
+ # default options
105
+ default_options = { :force_kill => nil, :check_process => true }
106
+
107
+ # for backwards compatibility
108
+ if options_hash.kind_of?( Hash )
109
+
110
+ # merge user defined options with default options
111
+ close_options = default_options.merge( options_hash )
112
+
113
+ else
114
+
115
+ # support legacy option of defining only force_kill as argument
116
+ close_options = default_options
117
+
118
+ # if options defined
119
+ if options_hash != nil
120
+
121
+ # workaround/backwards compatibility: allow string as hash key value
122
+ options_hash = options_hash.to_boolean if options_hash.kind_of?( String )
123
+
124
+ # verify options_hash value
125
+ options_hash.check_type( [ FalseClass, TrueClass ], "Wrong argument type $1 for options hash (expected $2)" )
126
+
127
+ # store force_kill value
128
+ close_options[ :force_kill ] = options_hash
129
+
130
+ end
131
+
132
+ end
133
+
134
+ # workaround/backwards compatibility: allow string as hash key value
135
+ close_options[ :force_kill ] = close_options[ :force_kill ].to_boolean if close_options[ :force_kill ].kind_of?( String )
136
+
137
+ # verify :force_kill value type
138
+ close_options[ :force_kill ].check_type( [ NilClass, TrueClass, FalseClass ], 'Wrong argument type $1 for :force_kill (expected $2)' )
139
+
140
+ # workaround/backwards compatibility: allow string as hash key value
141
+ close_options[ :check_process ] = close_options[ :check_process ].to_boolean if close_options[ :check_process ].kind_of?( String )
142
+
143
+ # verify :check_process value type
144
+ close_options[ :check_process ].check_type( [ TrueClass, FalseClass ], 'Wrong argument type $1 for :check_process (expected $2)' )
145
+
146
+ if close_options[ :force_kill ] != nil
147
+
148
+ @sut.execute_command(
149
+ MobyCommand::Application.new(
150
+ :Close,
151
+ {
152
+ :application_name => @name,
153
+ :application_uid => @id,
154
+ :sut => @sut,
155
+ :flags => { :force_kill => close_options[ :force_kill ] }
156
+ }
157
+ )
158
+ )
159
+
160
+ else
161
+
162
+ @sut.execute_command(
163
+ MobyCommand::Application.new(
164
+ :Close,
165
+ {
166
+ :application_name => @name,
167
+ :application_uid => @id,
168
+ :sut => @sut
169
+ }
170
+ )
171
+ )
172
+
173
+ end
174
+
175
+ # store start time
176
+ start_time = Time.now
177
+
178
+ # store original logger state
179
+ original_logger_state = $logger.enabled
180
+
181
+ # disable logging
182
+ $logger.enabled = false
183
+
184
+ # retrieve application synchronization timeout value
185
+ timeout_time = sut_parameters[ :application_synchronization_timeout, '60' ].to_f
186
+
187
+ # retrieve application synchronization timeout retry interval value
188
+ refresh_interval = sut_parameters[ :application_synchronization_retry_interval, '0.25' ].to_f
189
+
190
+ # create application identification hash
191
+ application_identification_hash = { :type => 'application', :id => @id }
192
+
193
+ begin
194
+
195
+ # verify close results
196
+ MobyUtil::Retryable.until(
197
+ :timeout => timeout_time,
198
+ :interval => refresh_interval,
199
+ :exception => MobyBase::VerificationError,
200
+ :unless => [ MobyBase::TestObjectNotFoundError, MobyBase::ApplicationNotAvailableError ]
201
+ ){
202
+
203
+ # raises MobyBase::ApplicationNotAvailableError if application was not found
204
+ @sut.refresh( application_identification_hash, [ {:className => 'application', :tasId => @id } ] )
205
+
206
+ # retrieve application object from sut.xml_data
207
+ matches, unused_rule = @test_object_adapter.get_objects( @sut.xml_data, application_identification_hash, true )
208
+
209
+ # check if the application is still found or not
210
+ if ( close_options[ :check_process ] == true )
211
+
212
+ # the application did not close
213
+ raise MobyBase::VerificationError, "Verification of close failed. The application that was to be closed is still running." if matches.count > 0 && (Time.now - start_time) >= timeout_time
214
+
215
+ elsif ( close_options[ :check_process ] == false )
216
+
217
+ if matches.count > 0
218
+
219
+ if @test_object_adapter.test_object_element_attribute( matches.first, 'id' ) == @id
220
+
221
+ # the application was still in the foreground
222
+ raise MobyBase::VerificationError, "Verification of close failed. The application that was to be closed was still in the foreground."
223
+
224
+ else
225
+
226
+ # The foreground application was not the one being closed.
227
+ raise MobyBase::TestObjectNotFoundError, "The foreground application was not the one being closed (id: #{ @id })."
228
+
229
+ end
230
+
231
+ end
232
+
233
+ end
234
+
235
+ # The application could not be found, break
236
+ break
237
+
238
+ } # MobyUtil::Retryable.until
239
+
240
+ rescue MobyBase::TestObjectNotFoundError
241
+
242
+ # everything ok: application not running anymore
243
+
244
+ rescue MobyBase::ApplicationNotAvailableError
245
+
246
+ # everything ok: application not running anymore
247
+
248
+ rescue RuntimeError
249
+
250
+ # something unexpected happened during the close, let exception through
251
+ raise unless $!.message =~ /The application with Id \d+ is no longer available/
252
+
253
+ ensure
254
+
255
+ # restore original state
256
+ $logger.enabled = original_logger_state
257
+
258
+ end
259
+
260
+ rescue Exception
261
+
262
+ $logger.behaviour "FAIL;Failed when closing.;#{ identity };close;"
263
+
264
+ # let exception through
265
+ raise
266
+
267
+ end
268
+
269
+ $logger.behaviour "PASS;Closed successfully.;#{ identity };close;"
270
+
271
+ #@sut.application
272
+
273
+ nil
274
+
275
+ end
276
+
277
+ # == description
278
+ # Returns executable name (exe) of foreground application
279
+ # == returns
280
+ # String
281
+ # description: Application's executable name
282
+ # example: "calculator"
283
+ # == exceptions
284
+ # RuntimeError
285
+ # description: No executable name has been defined for this application.
286
+ # == example
287
+ # puts @sut.application.executable_name #prints foreground executable name to console
288
+ def executable_name
289
+
290
+ begin
291
+
292
+ name = attribute('FullName')
293
+
294
+ rescue MobyBase::AttributeNotFoundError
295
+
296
+ begin
297
+
298
+ name = attribute('exepath')
299
+
300
+ rescue MobyBase::AttributeNotFoundError
301
+
302
+ name = ''
303
+
304
+ end
305
+
306
+ end
307
+
308
+ name.not_empty 'Application does not have "FullName" or "exepath" attribute', RuntimeError
309
+
310
+ File.basename( name.gsub( /\\/, '/' ) )
311
+
312
+ end
313
+
314
+ # == description
315
+ # Returns uid of foreground application
316
+ # == returns
317
+ # String
318
+ # description: Unique ID of the application.
319
+ # example: "2197"
320
+ # == example
321
+ # puts @sut.application.uid #prints foreground executable uid to console
322
+ def uid
323
+
324
+ @id
325
+
326
+ end
327
+
328
+ # == nodoc
329
+ # TODO: document all the possible values and then make public
330
+ def environment
331
+
332
+ @environment
333
+
334
+ end
335
+
336
+ # == nodoc
337
+ # TODO: to be removed?
338
+ # == description
339
+ # Indicates whether this application can be closed with the ApplicationBehaviour::close method. Note: at the moment
340
+ # it always returns true!
341
+ # === returns
342
+ # Boolean:: True if closing is possible with the ApplicationBehaviour::close method
343
+ # === example
344
+ # puts @sut.application.closable #prints foreground application closable status to console (at the moment always true)
345
+ def closable?
346
+
347
+ true
348
+
349
+ end
350
+
351
+ # == description
352
+ # Bring the application to foreground.\n
353
+ # \n
354
+ # [b]NOTE:[/b] Currently this works only for Symbian OS target!
355
+ #
356
+ # == returns
357
+ # NilClass
358
+ # description: -
359
+ # example: -
360
+ #
361
+ #
362
+ def bring_to_foreground
363
+
364
+ @sut.execute_command(
365
+ MobyCommand::Application.new(
366
+ :BringToForeground,
367
+ {
368
+ :application_uid => @id,
369
+ :sut => @sut
370
+ }
371
+ )
372
+ )
373
+
374
+ end
375
+
376
+ # == description
377
+ # Kills the application process
378
+ #
379
+ # == returns
380
+ # NilClass
381
+ # description: -
382
+ # example: -
383
+ #
384
+ def kill
385
+
386
+ @sut.execute_command(
387
+ MobyCommand::Application.new(
388
+ :Kill,
389
+ {
390
+ :application_name => executable_name,
391
+ :application_uid => @id,
392
+ :sut => @sut
393
+ }
394
+ )
395
+ )
396
+
397
+ end
398
+
399
+ # == description
400
+ # Returns the mem usage of the application if the information is available.
401
+ # Will return -1 if the information is not available.
402
+ #
403
+ # == returns
404
+ # Integer
405
+ # description: Current memory usage
406
+ # example: 124354
407
+ #
408
+ def mem_usage
409
+
410
+ begin
411
+
412
+ attribute('memUsage').to_i
413
+
414
+ rescue
415
+
416
+ -1
417
+
418
+ end
419
+
420
+ end
421
+
422
+ # enable hooking for performance measurement & debug logging
423
+ TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
424
+
425
+ end # ApplicationBehaviour
426
+
427
+ end # MobyBehaviour