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,159 @@
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
+
22
+ module TDriverReportFileCapture
23
+ def initialize
24
+ @file_locations=Array.new
25
+ @file_suts=Array.new
26
+ @file_names=Array.new
27
+ @file_count=0
28
+ @monitor_files='false'
29
+ read_file_monitor_settings()
30
+ end
31
+
32
+ def return_settings_value_array(setting)
33
+ setting_value=setting
34
+ setting_arr=Array.new
35
+ setting_arr=setting_value.split(',')
36
+ setting_arr
37
+ end
38
+
39
+ def read_file_monitor_settings()
40
+ @file_locations=return_settings_value_array($parameters[ :report_file_locations, nil ])
41
+ @file_suts=return_settings_value_array($parameters[ :report_file_monitored_sut_ids, nil ])
42
+ @file_names=return_settings_value_array($parameters[ :report_file_names, nil ])
43
+ @clean_files=$parameters[ :report_clean_files_from_sut_after_capture, 'true' ]
44
+ @monitor_files = $parameters[ :report_file_monitor, 'false' ]
45
+ end
46
+
47
+ def clean_files_from_sut()
48
+
49
+ if @monitor_files == 'true' && @clean_files == 'true'
50
+ TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
51
+ if sut_attributes[:is_connected]
52
+ @file_suts.each do |monitored_sut|
53
+ if monitored_sut == sut_id.to_s
54
+ sut_files=Array.new
55
+ sut_files=list_sut_files(sut_attributes[:sut])
56
+ sut_files.each do |file|
57
+ delete_file(sut_attributes[:sut],file)
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
63
+ end
64
+ end
65
+
66
+ def list_sut_files(current_sut)
67
+ file_arr=Array.new
68
+ @file_count=0
69
+ #for every location:
70
+ @file_locations.each do |location|
71
+ begin
72
+ #get file names
73
+ current_location_files=Array.new
74
+ @file_names.each do |file_name|
75
+ current_location_files = current_sut.list_files_from_sut( :from => location, :file=> file_name.to_s )
76
+ #collect crash names and add paths
77
+ current_location_files.each do |sut_file|
78
+ #if file_is_file(sut_file)
79
+ file_arr << sut_file.to_s
80
+ @file_count+=1
81
+ #end
82
+ end
83
+ end
84
+ rescue => ex
85
+ #puts ex.message
86
+ end
87
+ end
88
+ file_arr
89
+ end
90
+
91
+ def download_file(current_sut,file_name,download_folder)
92
+ begin
93
+ current_sut.copy_from_sut(:file => file_name, :to => download_folder )
94
+ rescue => ex
95
+ #puts ex.message
96
+ end
97
+ end
98
+
99
+ def delete_file(current_sut,file_name)
100
+ begin
101
+ current_sut.delete_from_sut(:file => file_name )
102
+ rescue => ex
103
+ #puts ex.message
104
+ end
105
+ end
106
+
107
+ def check_if_files_exist()
108
+ sut_files=Array.new
109
+ if @monitor_files == 'true'
110
+ TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
111
+ if sut_attributes[:is_connected]
112
+ @file_suts.each do |monitored_sut|
113
+ if monitored_sut == sut_id.to_s
114
+ sut_files << list_sut_files(sut_attributes[:sut])
115
+ end
116
+ end
117
+ end
118
+ end
119
+ @file_count
120
+ else
121
+ @file_count
122
+ end
123
+ end
124
+
125
+ def download_files(download_folder)
126
+ if @monitor_files == 'true'
127
+ TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
128
+ if sut_attributes[:is_connected]
129
+ @file_suts.each do |monitored_sut|
130
+ if monitored_sut == sut_id.to_s
131
+ sut_files=Array.new
132
+ sut_files=list_sut_files(sut_attributes[:sut])
133
+ sut_files.each do |file|
134
+ download_file(sut_attributes[:sut],file,download_folder.gsub("\\",'/')+'/')
135
+ end
136
+ end
137
+ end
138
+ end
139
+ end
140
+ end
141
+ end
142
+
143
+ def capture_files()
144
+ if @monitor_files == 'true'
145
+ begin
146
+ dump_folder=@test_case_folder+'/files'
147
+ if File::directory?(dump_folder)==false
148
+ FileUtils.mkdir_p dump_folder
149
+ end
150
+ download_files(dump_folder)
151
+ rescue Exception => e
152
+ @test_case_execution_log=@test_case_execution_log.to_s + '<br />' + "Unable to capture files: " + e.message + e.backtrace.to_s
153
+ end
154
+ end
155
+ end
156
+ end
157
+
158
+
159
+
@@ -0,0 +1,59 @@
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
+ class ReportGraphGenerator
21
+ def initialize(columns,data)
22
+ @columns=columns
23
+ @data=data
24
+ end
25
+
26
+ def generate_graph(file_name)
27
+
28
+ begin
29
+ require 'gruff'
30
+ rescue LoadError
31
+ $stderr.puts "Can't load the Gruff gem. If its missing from your system please run 'gem install gruff' to install it."
32
+ end
33
+
34
+ begin
35
+ g = Gruff::Line.new()
36
+
37
+ data_rows = Hash.new #Create hash for data
38
+ @columns.each do |title|
39
+ data_rows[title] = Array.new #Create array for data
40
+ end
41
+
42
+ @data.each do |value|
43
+ value.each_key do |key|
44
+ data_rows[key].push(value[key].to_f) #Put values in the row data
45
+ end
46
+ end
47
+
48
+ data_rows.each_key do |key|
49
+ g.data(key, data_rows[key])
50
+ end
51
+
52
+ g.write(file_name)
53
+
54
+ rescue Exception => e
55
+ puts "Graph creation failed #{e.message} from data: "
56
+ p data_rows
57
+ end
58
+ end
59
+ end
@@ -0,0 +1,541 @@
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
+ class ReportingGroups
22
+ def initialize(tdriver_groups,test_cases_array,grouping=true)
23
+ #@reporting_groups='Common:Application:Close:Open|Common:Connect to|Common:Disconnect|Qt:Tap|Qt:Drag:Drag to|Qt:Type Text'
24
+ if tdriver_groups != nil
25
+ @reporting_groups=clean_reporting_groups(tdriver_groups)
26
+ else
27
+ @reporting_groups=nil
28
+ end
29
+ @main_groups=Array.new
30
+ @main_groups_sub_level_one=Array.new
31
+ @main_groups_sub_level_two=Array.new
32
+ @main_groups_sub_level_three=Array.new
33
+ @main_groups_sub_level_four=Array.new
34
+ @main_groups_sub_level_five=Array.new
35
+ #Group statistics
36
+ @main_total=0
37
+ @main_passed=0
38
+ @main_failed=0
39
+ @main_not_run=0
40
+ @group_test_case_arr=Array.new(test_cases_array)
41
+ @grouping=grouping
42
+ @pass_statuses= $parameters[ :report_passed_statuses, "passed" ].split('|')
43
+ @fail_statuses= $parameters[ :report_failed_statuses, "failed" ].split('|')
44
+ @not_run_statuses= $parameters[ :report_not_run_statuses, "not run" ].split('|')
45
+ end
46
+ def clean_reporting_groups(report_group_string)
47
+ cleaned_group_string=''
48
+ reporting_groups_arr=report_group_string.split('|')
49
+ reporting_groups_arr.each do |main|
50
+ groups_arr=main.split(':')
51
+ first=true
52
+ groups_arr.each do |sub|
53
+ if first==true
54
+ cleaned_group_string+=sub.strip
55
+ first=false
56
+ else
57
+ cleaned_group_string+=':'+sub.strip
58
+ end
59
+ end
60
+ cleaned_group_string+='|'
61
+ end
62
+ cleaned_group_string
63
+ end
64
+ def tog_list_statistics(tc_arr,group,status)
65
+ status_row=''
66
+ if status=='all'
67
+ cases_in_group=0
68
+ passed=0
69
+ failed=0
70
+ not_run=0
71
+ tc_arr.each do |x|
72
+ if x[1]==group
73
+ cases_in_group+=1
74
+ tc_status=x[7]
75
+ passed+=1 if tc_status=='passed' || @pass_statuses.include?(tc_status)
76
+ failed+=1 if tc_status=='failed' || @fail_statuses.include?(tc_status)
77
+ not_run+=1 if tc_status=='not run' || @not_run_statuses.include?(tc_status)
78
+ end
79
+ end
80
+ if cases_in_group > 0
81
+ status_row = '<b style="color: #00FF00">Passed:</b>'+passed.to_s+' <b style="color: #FF0000">Failed:</b>'+failed.to_s+' <b style="color: #808080">Not run:</b>'+not_run.to_s+' <b>Total:</b>'+cases_in_group.to_s
82
+ else
83
+ status_row=0
84
+ end
85
+ else
86
+ cases_in_group=0
87
+ tc_arr.each do |x|
88
+ if x[1]==group
89
+ cases_in_group+=1
90
+ end
91
+ end
92
+ if cases_in_group > 0
93
+ status_row = '<b>Total:</b>'+cases_in_group.to_s
94
+ else
95
+ status_row=0
96
+ end
97
+ end
98
+ status_row
99
+ end
100
+ def tog_list_begin(name,tc_arr,status,main=nil)
101
+ if main==nil
102
+ test_statistics=tog_list_statistics(tc_arr,name,status)
103
+ if test_statistics != 0
104
+ html_body='<dl class="togList">'<<
105
+ '<dt onclick="tog(this)" style="background-color: #CCCCCC;"><b><span><input id="Button1" type="button" value="Close" class="btn" /></span> '<<
106
+ name.to_s<<
107
+ '</b> '<<
108
+ '</dt>'<<
109
+ '<dt>'<<
110
+ test_statistics<<
111
+ '</dt>'<<
112
+ '<dd>'
113
+ else
114
+ html_body=0
115
+ end
116
+ else
117
+ html_body='<dl class="togList">'<<
118
+ '<dt onclick="tog(this)" style="background-color: #CCCCCC;"><b><span><input id="Button1" type="button" value="Close" class="btn" /></span> '<<
119
+ name.to_s<<
120
+ '</b> '<<
121
+ '</dt>'<<
122
+ '<dd>'
123
+ end
124
+ html_body
125
+ end
126
+ def tog_list_end(summary=nil)
127
+ if summary == 'main'
128
+ html_body='</dd>'<<
129
+ '<dt>'<<
130
+ '<b style="color: #00FF00"> Passed:</b>'<<
131
+ @main_passed.to_s<<
132
+ '<b style="color: #FF0000"> Failed:</b>'<<
133
+ @main_failed.to_s<<
134
+ '<b style="color: #808080"> Not run:</b>'<<
135
+ @main_not_run.to_s<<
136
+ '<b> Total:</b> '<<
137
+ @main_total.to_s<<
138
+ '</dt>'<<
139
+ '</dl>'<<
140
+ '<hr />'
141
+ else
142
+ html_body='</dd>'<<
143
+ '</dl>'<<
144
+ '<hr />'
145
+ end
146
+
147
+ html_body
148
+ end
149
+ def check_duplicate_groups(group_arr,group)
150
+ b_group_exists=false
151
+ group_arr.each do |existing_group|
152
+ if existing_group[0] == group
153
+ b_group_exists=true
154
+ break
155
+ end
156
+ end
157
+ b_group_exists
158
+ end
159
+ def check_duplicate_sub_groups(group_arr,main_group,sub_group)
160
+ b_group_exists=false
161
+ group_arr.each do |existing_group|
162
+ if existing_group[0].to_s == main_group.to_s && existing_group[1].to_s == sub_group.to_s
163
+ b_group_exists=true
164
+ break
165
+ end
166
+ end
167
+ b_group_exists
168
+ end
169
+ def parse_groups()
170
+ if @reporting_groups != nil
171
+ reporting_groups_arr=@reporting_groups.split('|')
172
+ reporting_groups_arr.each do |groups|
173
+ groups_arr=groups.split(':')
174
+ if check_duplicate_groups(@main_groups,groups_arr[0])==false
175
+ @main_groups << [groups_arr[0]]
176
+ end
177
+ current_level=0
178
+ groups_arr.each do |group|
179
+ if current_level==1
180
+ if check_duplicate_sub_groups(@main_groups_sub_level_one,groups_arr[0],group)==false
181
+ @main_groups_sub_level_one << [[groups_arr[0]],[group]]
182
+ end
183
+ end
184
+ if current_level==2
185
+ if check_duplicate_sub_groups(@main_groups_sub_level_two,groups_arr[0],group)==false
186
+ @main_groups_sub_level_two << [[groups_arr[0]],[group]]
187
+ end
188
+ end
189
+ if current_level==3
190
+ if check_duplicate_sub_groups(@main_groups_sub_level_three,groups_arr[0],group)==false
191
+ @main_groups_sub_level_three << [[groups_arr[0]],[group]]
192
+ end
193
+ end
194
+ if current_level==4
195
+ if check_duplicate_sub_groups(@main_groups_sub_level_four,groups_arr[0],group)==false
196
+ @main_groups_sub_level_four << [[groups_arr[0]],[group]]
197
+ end
198
+ end
199
+ if current_level==5
200
+ if check_duplicate_sub_groups(@main_groups_sub_level_five,groups_arr[0],group)==false
201
+ @main_groups_sub_level_five << [[groups_arr[0]],[group]]
202
+ end
203
+ end
204
+ current_level+=1
205
+ end
206
+ end
207
+ end
208
+ end
209
+ def status_select(selection_index, selected_status)
210
+
211
+ status_selection = "<select name=\"#{selection_index}_status_select\">"
212
+ selection_data=''
213
+ @pass_statuses.each do |status|
214
+ if status==selected_status
215
+ selection_data << "<option selected>#{status}</option>"
216
+ else
217
+ selection_data << "<option>#{status}</option>"
218
+ end
219
+ end
220
+ @fail_statuses.each do |status|
221
+ if status==selected_status
222
+ selection_data << "<option selected>#{status}</option>"
223
+ else
224
+ selection_data << "<option>#{status}</option>"
225
+ end
226
+ end
227
+ @not_run_statuses.each do |status|
228
+ if status==selected_status
229
+ selection_data << "<option selected>#{status}</option>"
230
+ else
231
+ selection_data << "<option>#{status}</option>"
232
+ end
233
+ end
234
+
235
+ status_selection << selection_data << "</select>"
236
+ status_selection
237
+ end
238
+
239
+ def get_user_cols(status,tc_arr)
240
+ cols=nil
241
+ if status=='all' && tc_arr!= nil
242
+ cols = Array.new
243
+ tc_arr.each do |x|
244
+ data_hash=x[12]
245
+ cols << data_hash.keys
246
+ end
247
+ cols=cols.flatten.uniq
248
+ end
249
+ cols
250
+ end
251
+
252
+ def pad_user_data(status,data_hash,all_cols)
253
+ if (status=='all' && all_cols!=nil && !all_cols.empty?)
254
+ keys_need_adding = all_cols - data_hash.keys
255
+ keys_need_adding.each do |new_key|
256
+ data_hash[new_key] = "-"
257
+ end
258
+ end
259
+ end
260
+
261
+ def generate_test_results_table(status,tc_arr,item)
262
+ table_body=Array.new
263
+ if item==nil
264
+ cases_in_group=0
265
+ element=0
266
+ table_body='<table align="center" style="width:100%;">'<<
267
+ '<tr>'<<
268
+ '<td>'<<
269
+ '<b>Execution</b></td>'<<
270
+ '<td>'<<
271
+ '<b>Start Time</b></td>'<<
272
+ '<td>'<<
273
+ '<b>Name</b></td>'<<
274
+ '<td>'<<
275
+ '<b>Duration</b></td>'<<
276
+ '<td>'<<
277
+ '<b>Memory</b></td>'<<
278
+ '<td>'<<
279
+ '<b>Result</b></td>'<<
280
+ '<td>'<<
281
+ '<b>Comment</b></td>'
282
+
283
+ user_cols=get_user_cols(status,tc_arr)
284
+ if (user_cols!=nil && !user_cols.empty?)
285
+ user_cols.sort.each do |col|
286
+ table_body<<'<td>'<<'<b>'<<col.to_s<<'</b></td>'
287
+ end
288
+ end
289
+
290
+ table_body<<'</tr>'
291
+
292
+ tc_arr.each do |x|
293
+ cases_in_group+=1
294
+ @main_total+=1
295
+ tc_status=x[7].to_s
296
+ tc_style_tag=' id=""'
297
+ tc_style_tag=' id="passed_case"' if tc_status=='passed' || @pass_statuses.include?(tc_status)
298
+ tc_style_tag=' id="failed_case"' if tc_status=='failed' || @fail_statuses.include?(tc_status)
299
+ tc_style_tag=' id="not_run_case"' if tc_status=='not run' || @not_run_statuses.include?(tc_status)
300
+ @main_passed+=1 if tc_status=='passed' || @pass_statuses.include?(tc_status)
301
+ @main_failed+=1 if tc_status=='failed' || @fail_statuses.include?(tc_status)
302
+ @main_not_run+=1 if tc_status=='not run' || @not_run_statuses.include?(tc_status)
303
+ tc_name=x[0].to_s.gsub('_',' ')
304
+
305
+ table_body << '<tr' <<
306
+ tc_style_tag <<
307
+ '>'<<
308
+ '<td>'<<
309
+ x[8]<< #testcase execution number
310
+ '</td>'<<
311
+ '<td>'<<
312
+ x[4]<< #testcase start time
313
+ '</td>'<<
314
+ '<td><a name="'+tc_name.gsub(' ','_')+'_'+tc_status.to_s.gsub(' ','_')+'"></a>'<<
315
+ '<a href="'<<
316
+ x[11]<<
317
+ '">'<<
318
+ tc_name<<
319
+ '</a></td>'<<
320
+ '<td>'<<
321
+ x[5]<< #testcase duration
322
+ '</td>'<<
323
+ '<td>'<<
324
+ x[6]<< #testcase memory usage
325
+ '</td>'<<
326
+ '<td>'<<
327
+ status_select(x[8],tc_status) <<
328
+ '</td>'<<
329
+ '<td>'<<
330
+ "<textarea name=\"#{x[8]}_text_area\" cols=\"23\" rows=\"2\">#{x[10]}</textarea>" <<
331
+ '</td>'
332
+
333
+ data_hash=x[12]
334
+ if (data_hash!=nil && !data_hash.empty?)
335
+ #display user data
336
+ pad_user_data(status,data_hash,user_cols)
337
+ user_cols.sort.each do |col|
338
+ row = '<td>'+data_hash[col].to_s+'</td>'
339
+ table_body<<row
340
+ end
341
+ end
342
+ table_body<<'</tr>'
343
+ end
344
+ if cases_in_group>0
345
+ table_body << '</table>'
346
+ else
347
+ table_body='<br/>'
348
+ end
349
+ else
350
+ if status=='all'
351
+ cases_in_group=0
352
+ element=0
353
+ table_body='<table align="center" style="width:100%;">'<<
354
+ '<tr>'<<
355
+ '<td>'<<
356
+ '<b>Name</b></td>'<<
357
+ '<td>'<<
358
+ '<b>Result</b></td>'<<
359
+ '<td>'<<
360
+ '<b>Comment</b></td>'<<
361
+ '</tr>'
362
+ tc_arr.each do |x|
363
+ if x[1]==item.at(1).to_s
364
+ cases_in_group+=1
365
+ @main_total+=1
366
+ tc_status=x[7].to_s
367
+ tc_style_tag=' id=""'
368
+ tc_style_tag=' id="passed_case"' if tc_status=='passed' || @pass_statuses.include?(tc_status)
369
+ tc_style_tag=' id="failed_case"' if tc_status=='failed' || @fail_statuses.include?(tc_status)
370
+ tc_style_tag=' id="not_run_case"' if tc_status=='not run' || @not_run_statuses.include?(tc_status)
371
+ @main_passed+=1 if tc_status=='passed' || @pass_statuses.include?(tc_status)
372
+ @main_failed+=1 if tc_status=='failed' || @fail_statuses.include?(tc_status)
373
+ @main_not_run+=1 if tc_status=='not run' || @not_run_statuses.include?(tc_status)
374
+ tc_name=x[0].to_s.gsub('_',' ')
375
+ table_body << '<tr' <<
376
+ tc_style_tag<<
377
+ '>'<<
378
+ '<td>'<<
379
+ '<a href="'<<
380
+ x[11]<<
381
+ '">'<<
382
+ tc_name<<
383
+ '</a></td>'<<
384
+ '<td>'<<
385
+ status_select(x[8],tc_status) <<
386
+ '</td>'<<
387
+ '<td>'<<
388
+ "<textarea name=\"#{x[8]}_text_area\" cols=\"23\" rows=\"2\">#{x[10]}</textarea>" <<
389
+ '</td>'<<
390
+ '</tr>'
391
+ @group_test_case_arr[element]=['--','--']
392
+ end
393
+ element+=1
394
+ end
395
+ if cases_in_group>0
396
+ table_body << '</table>'
397
+ else
398
+ table_body='<br/>'
399
+
400
+ end
401
+ else
402
+ tc_style_tag=' id=""'
403
+ tc_style_tag=' id="passed_case"' if status=='passed' || @pass_statuses.include?(status)
404
+ tc_style_tag=' id="failed_case"' if status=='failed' || @fail_statuses.include?(status)
405
+ tc_style_tag=' id="not_run_case"' if status=='not run' || @not_run_statuses.include?(status)
406
+ cases_in_group=0
407
+ element=0
408
+ table_body='<table align="center" style="width:100%;">'<<
409
+ '<tr>'<<
410
+ '<td>'<<
411
+ '<b>Name</b></td>'<<
412
+ '<td>'<<
413
+ '<b>Result</b></td>'<<
414
+ '<td>'<<
415
+ '<b>Comment</b></td>'<<
416
+ '</tr>'
417
+ tc_arr.each do |x|
418
+ if x[1]==item.at(1).to_s
419
+ @main_total+=1
420
+ @main_passed+=1 if status=='passed' || @pass_statuses.include?(status)
421
+ @main_failed+=1 if status=='failed' || @fail_statuses.include?(status)
422
+ @main_not_run+=1 if status=='not run' || @not_run_statuses.include?(status)
423
+ cases_in_group+=1
424
+ tc_status=x[7]
425
+ tc_name=x[0].to_s.gsub('_',' ')
426
+ table_body << '<tr' <<
427
+ tc_style_tag<<
428
+ '>'<<
429
+ '<td>'<<
430
+ '<a href="'<<
431
+ x[11]<<
432
+ '">'<<
433
+ tc_name<<
434
+ '</a></td>'<<
435
+ '<td>'<<
436
+ status_select(x[8],tc_status) <<
437
+ '</td>'<<
438
+ '<td>'<<
439
+ "<textarea name=\"#{x[8]}_text_area\" cols=\"23\" rows=\"2\">#{x[10]}</textarea>" <<
440
+ '</td>'<<
441
+ '</tr>'
442
+ @group_test_case_arr[element]=['--','--']
443
+ end
444
+ element+=1
445
+ end
446
+ if cases_in_group > 0
447
+ table_body << '</table>'
448
+ else
449
+ table_body='<br/>'
450
+ end
451
+ end
452
+ end
453
+ table_body
454
+ end
455
+ def generate_report(status)
456
+ html_body=Array.new
457
+ if @grouping==true
458
+ @main_groups.each do |group|
459
+ @main_total=0
460
+ @main_passed=0
461
+ @main_failed=0
462
+ @main_not_run=0
463
+ group_body=Array.new
464
+ group_body << tog_list_begin(group,@group_test_case_arr,status,'main')
465
+ group_body << generate_test_results_table(status,@group_test_case_arr,[group,group])
466
+ tog_list1=0
467
+ tog_list2=0
468
+ tog_list3=0
469
+ tog_list4=0
470
+ tog_list5=0
471
+ @main_groups_sub_level_one.each do |item1|
472
+
473
+ if group.to_s == item1.at(0).to_s && @reporting_groups.include?(group.to_s+':'+item1.at(1).to_s)
474
+ tog_list1=tog_list_begin(item1.at(1).to_s,@group_test_case_arr,status)
475
+ if tog_list1 != 0
476
+ group_body << tog_list1
477
+ group_body << generate_test_results_table(status,@group_test_case_arr,item1)
478
+ end
479
+ @main_groups_sub_level_two.each do |item2|
480
+ if group.to_s == item2.at(0).to_s && @reporting_groups.include?(item1.at(1).to_s+':'+item2.at(1).to_s)
481
+ tog_list2=tog_list_begin(item2.at(1).to_s,@group_test_case_arr,status)
482
+ if tog_list2 != 0
483
+ group_body << tog_list2
484
+ group_body << generate_test_results_table(status,@group_test_case_arr,item2)
485
+ end
486
+ @main_groups_sub_level_three.each do |item3|
487
+ if group.to_s == item3.at(0).to_s && @reporting_groups.include?(item2.at(1).to_s+':'+item3.at(1).to_s)
488
+ tog_list3=tog_list_begin(item3.at(1).to_s,@group_test_case_arr,status)
489
+ if tog_list3 != 0
490
+ group_body << tog_list3
491
+ group_body << generate_test_results_table(status,@group_test_case_arr,item3)
492
+ end
493
+ @main_groups_sub_level_four.each do |item4|
494
+ if group.to_s == item4.at(0).to_s && @reporting_groups.include?(item3.at(1).to_s+':'+item4.at(1).to_s)
495
+ tog_list4=tog_list_begin(item4.at(1).to_s,@group_test_case_arr,status)
496
+ if tog_list4 != 0
497
+ group_body << tog_list4
498
+ group_body << generate_test_results_table(status,@group_test_case_arr,item4)
499
+ end
500
+ @main_groups_sub_level_five.each do |item5|
501
+ if group.to_s == item5.at(0).to_s && @reporting_groups.include?(item4.at(1).to_s+':'+item5.at(1).to_s)
502
+ tog_list5=tog_list_begin(item5.at(1).to_s,@group_test_case_arr,status)
503
+ if tog_list5 != 0
504
+ group_body << tog_list5
505
+ group_body << generate_test_results_table(status,@group_test_case_arr,item5)
506
+ group_body << tog_list_end()
507
+ end
508
+ end
509
+ end
510
+ if tog_list4 != 0
511
+ group_body << tog_list_end()
512
+ end
513
+ end
514
+ end
515
+ if tog_list3 != 0
516
+ group_body << tog_list_end()
517
+ end
518
+ end
519
+ end
520
+ if tog_list2 != 0
521
+ group_body << tog_list_end()
522
+ end
523
+ end
524
+ end
525
+ if tog_list1 != 0
526
+ group_body << tog_list_end()
527
+ end
528
+ end
529
+ end
530
+ group_body << tog_list_end('main')
531
+ html_body << group_body if @main_total > 0
532
+ end
533
+ html_body << generate_test_results_table(status,@group_test_case_arr,['not_in_any_user_defined_group','not_in_any_user_defined_group'])
534
+ else
535
+ #html_body << tog_list_begin('Total run',@group_test_case_arr,status,'main')
536
+ html_body << generate_test_results_table(status,@group_test_case_arr,nil)
537
+ html_body << tog_list_end('main')
538
+ end
539
+ html_body
540
+ end
541
+ end