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,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
+
21
+ module MobyBehaviour
22
+
23
+ # == description
24
+ # SUT controller behaviours
25
+ #
26
+ # == behaviour
27
+ # GenericSutController
28
+ #
29
+ # == requires
30
+ # *
31
+ #
32
+ # == input_type
33
+ # *
34
+ #
35
+ # == sut_type
36
+ # *
37
+ #
38
+ # == sut_version
39
+ # *
40
+ #
41
+ # == objects
42
+ # sut
43
+ #
44
+ module SutController
45
+
46
+ include MobyBehaviour::Behaviour
47
+
48
+ # == nodoc
49
+ def execution_order
50
+
51
+ @_sutController.execution_order
52
+
53
+ end
54
+
55
+ # == nodoc
56
+ def execution_order=( order )
57
+
58
+ @_sutController.execution_order = order
59
+
60
+ end
61
+
62
+ # enable hooking for performance measurement & debug logging
63
+ TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
64
+
65
+ end # SutController
66
+
67
+ end # MobyBehaviour
@@ -0,0 +1,107 @@
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
+ # Find behaviour
21
+ # Methods for finding test objects on the suttest objet state
22
+ module MobyBehaviour
23
+
24
+ # == description
25
+ # This module contains generic find behaviour
26
+ #
27
+ # == behaviour
28
+ # GenericFind
29
+ #
30
+ # == requires
31
+ # *
32
+ #
33
+ # == input_type
34
+ # *
35
+ #
36
+ # == sut_type
37
+ # *
38
+ #
39
+ # == sut_version
40
+ # *
41
+ #
42
+ # == objects
43
+ # *;sut
44
+ module Find
45
+
46
+ include MobyBehaviour::Behaviour
47
+
48
+ # == nodoc
49
+ # == description
50
+ # Finds a child test_object given its name and type and returns it as a reference
51
+ #
52
+ # == arguments
53
+ # attributes
54
+ # Hash
55
+ # description: one or more attributes defining the rules for the test object search. Must not be empty.
56
+ # example: { :name => 'oneButton' }
57
+ # default: {}
58
+ #
59
+ # == returns
60
+ # MobyBase::TestObject
61
+ # description: found test object
62
+ # example: -
63
+ #
64
+ # == exceptions
65
+ # TypeError
66
+ # description: Wrong argument type <class> for attributes (expected Hash)
67
+ #
68
+ # ArgumentError
69
+ # description: Attributes hash must not be empty
70
+ #
71
+ # == info
72
+ # Same as calling child method.
73
+ def find( attributes = {} )
74
+
75
+ begin
76
+
77
+ # verify that attributes argument type is correct
78
+ attributes.check_type Hash, 'Wrong argument type $1 for attributes (expected $2)'
79
+
80
+ # verify that attributes hash is not empty
81
+ attributes.not_empty 'Attributes hash must not be empty'
82
+
83
+ # retrieve desired object
84
+ result = child( attributes )
85
+
86
+ rescue
87
+
88
+ $logger.behaviour "FAIL;Failed to find test object.;#{ id.to_s };sut;{};find;#{ attributes.kind_of?( Hash ) ? attributes.inspect : attributes.class.to_s }"
89
+
90
+ # raise original exception
91
+ raise
92
+
93
+ end
94
+
95
+ $logger.behaviour "PASS;Test object found.;#{ id.to_s };sut;{};application;#{ attributes.inspect }"
96
+
97
+ # pass the result object
98
+ result
99
+
100
+ end
101
+
102
+ # enable hooking for performance measurement & debug logging
103
+ TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
104
+
105
+ end # Find
106
+
107
+ end # MobyBehaviour
@@ -0,0 +1,337 @@
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
+ # == description
22
+ # This module contains implementation to control device flashing
23
+ #
24
+ # == behaviour
25
+ # GenericFlashBehaviour
26
+ #
27
+ # == requires
28
+ # *
29
+ # == input_type
30
+ # *
31
+ #
32
+ # == sut_type
33
+ # *
34
+ #
35
+ # == sut_version
36
+ # *
37
+ #
38
+ # == objects
39
+ # sut
40
+ #
41
+ module FlashBehaviour
42
+
43
+ include MobyBehaviour::Behaviour
44
+
45
+ # == description
46
+ # Instructs the sut to start the flash operation with default TDriver parameters
47
+ #
48
+ #
49
+ # == arguments
50
+ # == returns
51
+ # Boolean
52
+ # description: Indicating that did flashing success
53
+ # example: true
54
+ # == exceptions
55
+ # BehaviourError
56
+ # description: If mandatory parameters are missing
57
+ # BehaviourError
58
+ # description: If flashing is failed
59
+ #
60
+ # == tables
61
+ # flash_prameters
62
+ # title: Flash parameters
63
+ # description: Flash parameters for sut
64
+ # |Parameter|Description|Example|
65
+ # |:flash_attempts|How many times TDriver will attempt to flash the device|<parameter name="flash_attempts" value="2" />|
66
+ # |:timeout_between_command_sequence|Timeout in seconds between the switchbox commands|<parameter name="timeout_between_command_sequence" value="25" />|
67
+ # |:switchbox_commands_before_flash|Commands you want to be executed before flash|<parameter name="switchbox_commands_before_flash" value="" />|
68
+ # |:commands_before_flash|Flash commands before flash|<parameter name="commands_before_flash" value="" />|
69
+ # |:flash_command|Intial flash command|<parameter name="flash_command" value="" />|
70
+ # |:timeout_before_executing_commands_during_flash|Timeout in seconds before executing the commands during flash|<parameter name="timeout_before_executing_commands_during_flash" value="20" />|
71
+ # |:switchbox_commands_during_flash|Commands you want to be executed during flash|<parameter name="switchbox_commands_during_flash" value="" />|
72
+ # |:optional_parameters_after_flashing|Optional flash parameters|<parameter name="optional_parameters_after_flashing" value="" />|
73
+ # |:flash_images|Images to flash|<parameter name="flash_images" value="" />|
74
+ # |:sleep_time_after_flash_command|Wait time for the flash process to finish|<parameter name="sleep_time_after_flash_command" value="70" />|
75
+ # |:command_after_flash|Flash command after flash|<parameter name="command_after_flash" value="" />|
76
+ # |:switchbox_commands_after_failed_flash|Commands for switchbox after failed flash|<parameter name="switchbox_commands_after_failed_flash" value="" />|
77
+ # |:commands_after_failed_flash|Commands after failed flash|<parameter name="commands_after_failed_flash" value="" />|
78
+ # |:flash_command_success_string|If no error then no string is displayed|<parameter name="flash_command_success_string" value="" />|
79
+ # |:switchbox_commands_after_flash|Commands you want to be executed after flash|<parameter name="switchbox_commands_after_flash" value="" />|
80
+
81
+ def flash()
82
+
83
+ flash_images
84
+
85
+ end
86
+
87
+ # == description
88
+ # Instructs the sut to start the flash operation with the configured flash files
89
+ #
90
+ # == arguments
91
+ # flash_files
92
+ # String
93
+ # description: The location of the software image file
94
+ # example: "C:/images/flash_image.img"
95
+ # == returns
96
+ # Boolean
97
+ # description: Indicating that did flashing success
98
+ # example: true
99
+ # == raises
100
+ # BehaviourError If mandatory parameters are missing
101
+ # BehaviourError If flashing is failed
102
+ # === examples
103
+ # @sut.flash_images("C:/path/image_file.img")
104
+ # == tables
105
+ # flash_prameters
106
+ # title: Flash parameters
107
+ # description: Flash parameters for sut
108
+ # |Parameter|Description|Example|
109
+ # |:flash_attempts|How many times TDriver will attempt to flash the device|<parameter name="flash_attempts" value="2" />|
110
+ # |:timeout_between_command_sequence|Timeout in seconds between the switchbox commands|<parameter name="timeout_between_command_sequence" value="25" />|
111
+ # |:switchbox_commands_before_flash|Commands you want to be executed before flash|<parameter name="switchbox_commands_before_flash" value="" />|
112
+ # |:commands_before_flash|Flash commands before flash|<parameter name="commands_before_flash" value="" />|
113
+ # |:flash_command|Intial flash command|<parameter name="flash_command" value="" />|
114
+ # |:timeout_before_executing_commands_during_flash|Timeout in seconds before executing the commands during flash|<parameter name="timeout_before_executing_commands_during_flash" value="20" />|
115
+ # |:switchbox_commands_during_flash|Commands you want to be executed during flash|<parameter name="switchbox_commands_during_flash" value="" />|
116
+ # |:optional_parameters_after_flashing|Optional flash parameters|<parameter name="optional_parameters_after_flashing" value="" />|
117
+ # |:flash_images|Images to flash|<parameter name="flash_images" value="" />|
118
+ # |:sleep_time_after_flash_command|Wait time for the flash process to finish|<parameter name="sleep_time_after_flash_command" value="70" />|
119
+ # |:command_after_flash|Flash command after flash|<parameter name="command_after_flash" value="" />|
120
+ # |:switchbox_commands_after_failed_flash|Commands for switchbox after failed flash|<parameter name="switchbox_commands_after_failed_flash" value="" />|
121
+ # |:commands_after_failed_flash|Commands after failed flash|<parameter name="commands_after_failed_flash" value="" />|
122
+ # |:flash_command_success_string|If no error then no string is displayed|<parameter name="flash_command_success_string" value="" />|
123
+ # |:switchbox_commands_after_flash|Commands you want to be executed after flash|<parameter name="switchbox_commands_after_flash" value="" />|
124
+ def flash_images(flash_files = nil)
125
+ file, line = caller.first.split(":")
126
+
127
+ begin
128
+ if parameter(:flaxi_flash_attempts)
129
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_flash_attempts deprecated use :flash_attempts instead"
130
+ parameter[:flash_attempts]=parameter(:flaxi_flash_attempts)
131
+ end
132
+ rescue
133
+ end
134
+
135
+ begin
136
+ if parameter(:flaxi_commands_before_flash)
137
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_commands_before_flash deprecated use :commands_before_flash instead"
138
+ parameter[:commands_before_flash]=parameter(:flaxi_commands_before_flash)
139
+ end
140
+ rescue
141
+ end
142
+
143
+ begin
144
+ if parameter(:flaxi_flash_command)
145
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_flash_command deprecated use :flash_command instead"
146
+ parameter[:flash_command]=parameter(:flaxi_flash_command)
147
+ end
148
+ rescue
149
+ end
150
+
151
+ begin
152
+ if parameter(:flaxi_optional_parameters_after_flashing)
153
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_optional_parameters_after_flashing deprecated use :optional_parameters_after_flashing instead"
154
+ parameter[:optional_parameters_after_flashing]=parameter(:flaxi_optional_parameters_after_flashing)
155
+ end
156
+ rescue
157
+ end
158
+
159
+ begin
160
+ if parameter(:flaxi_flash_images)
161
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_flash_images deprecated use :flash_images instead"
162
+ parameter[:flash_images]=parameter(:flaxi_flash_images)
163
+ end
164
+ rescue
165
+ end
166
+
167
+ begin
168
+ if parameter(:flaxi_sleep_time_after_flash_command)
169
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_sleep_time_after_flash_command deprecated use :sleep_time_after_flash_command instead"
170
+ parameter[:sleep_time_after_flash_command]=parameter(:flaxi_sleep_time_after_flash_command)
171
+ end
172
+ rescue
173
+ end
174
+
175
+ begin
176
+ if parameter(:flaxi_command_after_flash)
177
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_command_after_flash deprecated use :command_after_flash instead"
178
+ parameter[:command_after_flash]=parameter(:flaxi_command_after_flash)
179
+ end
180
+ rescue
181
+ end
182
+
183
+ begin
184
+ if parameter(:flaxi_commands_after_failed_flash)
185
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_commands_after_failed_flash deprecated use :commands_after_failed_flash instead"
186
+ parameter[:commands_after_failed_flash]=parameter(:flaxi_commands_after_failed_flash)
187
+ end
188
+ rescue
189
+ end
190
+
191
+ begin
192
+ if parameter(:flaxi_flash_command_success_string)
193
+ $stderr.puts "#{ file.to_s }:#{ line.to_s } warning: parameter :flaxi_flash_command_success_string deprecated use :flash_command_success_string instead"
194
+ parameter[:flash_command_success_string]=parameter(:flaxi_flash_command_success_string)
195
+ end
196
+ rescue
197
+ end
198
+
199
+ if flash_files==nil
200
+ flash_files=parameter(:flash_images)
201
+ raise MobyBase::BehaviourError.new("flash_images", "flash_images not defined for sut in tdriver_parameters.xml") if flash_files == nil
202
+ end
203
+
204
+ str_flash_command=parameter(:flash_command)
205
+ raise MobyBase::BehaviourError.new("flash_images", "flash_command not defined for sut in tdriver_parameters.xml") if str_flash_command == nil
206
+
207
+ str_optional_parameters=parameter(:optional_parameters_after_flashing,'')
208
+ raise MobyBase::BehaviourError.new("flash_images", "optional_parameters_after_flashing not defined for sut in tdriver_parameters.xml") if str_optional_parameters == nil
209
+
210
+ #build flash command
211
+ flash_command="#{str_flash_command} #{flash_files} #{str_optional_parameters}"
212
+
213
+ #start flashing
214
+ result = start_flashing( flash_command )
215
+
216
+ raise MobyBase::BehaviourError.new("flash_images", "Flashing failed") if result.to_s == 'false'
217
+ sleep parameter[:sleep_time_after_flash_command].to_i
218
+ end
219
+
220
+ private
221
+
222
+ def execute_command_sequence(command_sequence)
223
+
224
+ sequence_timeout=parameter(:timeout_between_command_sequence)
225
+
226
+ #command sequenc
227
+ str_command=parameter(command_sequence)
228
+
229
+ #generate the sequence
230
+ str_command_arr = str_command.split('|')
231
+
232
+ #execute command sequence
233
+ str_command_arr.each do |command|
234
+ system(command)
235
+ sleep sequence_timeout.to_i
236
+ end
237
+
238
+ end
239
+
240
+ def flash_error_recovery()
241
+
242
+ #switchbox commands after failed flash
243
+ execute_command_sequence(:switchbox_commands_after_failed_flash)
244
+
245
+ #flaxi commands after failed flash
246
+ execute_command_sequence(:commands_after_failed_flash)
247
+
248
+ end
249
+
250
+ def start_flashing(flash_command)
251
+
252
+ flash_attempts=parameter(:flash_attempts)
253
+ raise MobyBase::BehaviourError.new("start_flashing", "flash_attempts not defined for sut in tdriver_parameters.xml") if flash_attempts == nil
254
+
255
+ current_flash_attempt=0
256
+ flash_result='false'
257
+
258
+
259
+ while current_flash_attempt < flash_attempts.to_i
260
+ initialize_prommer
261
+
262
+ initialize_device
263
+ Thread.new do
264
+ #this intializes the commands that are executed during flash
265
+ wait_timeout=0
266
+ wait_timeout=parameter(:timeout_before_executing_commands_during_flash,10) if parameter(:timeout_before_executing_commands_during_flash)
267
+ sleep wait_timeout.to_i
268
+ #commands executed during flash
269
+ execute_command_sequence(:switchbox_commands_during_flash) if parameter(:switchbox_commands_during_flash)
270
+ end
271
+ flash_result=system(flash_command)
272
+ if flash_result.to_s=='true'
273
+ current_flash_attempt=flash_attempts.to_i
274
+ else
275
+ flash_error_recovery
276
+ end
277
+ current_flash_attempt+=1
278
+ end
279
+
280
+ finalize_prommer
281
+
282
+ finalize_device
283
+
284
+ flash_result
285
+ end
286
+
287
+ # Instructs the SUT to initialize prommer using foobox
288
+ # === params
289
+ # === returns
290
+ # === raises
291
+ def initialize_prommer()
292
+
293
+ #switchbox command sequence before flash
294
+ execute_command_sequence(:switchbox_commands_before_flash)
295
+
296
+ end
297
+
298
+ # Instructs the SUT to initialize device using flaxi
299
+ # === params
300
+ # === returns
301
+ # === raises
302
+ def initialize_device()
303
+
304
+ #flaxi command sequence before flash
305
+ execute_command_sequence(:commands_before_flash)
306
+
307
+ end
308
+
309
+ # Instructs the SUT to finalize prommer using foobox
310
+ # === params
311
+ # === returns
312
+ # === raises
313
+ def finalize_prommer()
314
+
315
+ #switchbox command sequence before flash
316
+ execute_command_sequence(:switchbox_commands_after_flash)
317
+
318
+ end
319
+
320
+ # Instructs the SUT to finalize device using flaxi
321
+ # === params
322
+ # === returns
323
+ # === raises
324
+ def finalize_device()
325
+
326
+ #flaxi command sequence before flash
327
+ execute_command_sequence(:command_after_flash)
328
+
329
+ end
330
+
331
+ # enable hooking for performance measurement & debug logging
332
+ TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
333
+
334
+ end
335
+
336
+ end
337
+