cutedriver-driver 2.0.0.20210120164037
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +16 -0
- data/bin/start_app_perf +200 -0
- data/bin/tdriver-devtools +3 -0
- data/config/sut_parameters.rb +52 -0
- data/config/sut_setup.rb +32 -0
- data/config/sut_teardown.rb +32 -0
- data/config/tdriver_custom_error_recovery.rb +83 -0
- data/ext/extconf.rb +70 -0
- data/ext/native_extensions.c +315 -0
- data/lib/matti.rb +25 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +120 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
- data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
- data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
- data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
- data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
- data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1945 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/generate.rb +917 -0
- data/lib/tdriver-devtools/doc/update +1 -0
- data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
- data/lib/tdriver-devtools/doc/xslt/template.xsl +2170 -0
- data/lib/tdriver-devtools/doc/xslt/update +3 -0
- data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
- data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
- data/lib/tdriver-devtools/tests/feature_tests/example/behaviour_example.rb +100 -0
- data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
- data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
- data/lib/tdriver.rb +23 -0
- data/lib/tdriver/base/behaviour/abstract.rb +29 -0
- data/lib/tdriver/base/behaviour/behaviours/object_abstract.rb +107 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +99 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +278 -0
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +119 -0
- data/lib/tdriver/base/behaviour/factory.rb +495 -0
- data/lib/tdriver/base/behaviour/loader.rb +46 -0
- data/lib/tdriver/base/command_data/command_data.rb +51 -0
- data/lib/tdriver/base/command_data/loader.rb +29 -0
- data/lib/tdriver/base/controller/abstraction.rb +56 -0
- data/lib/tdriver/base/controller/loader.rb +21 -0
- data/lib/tdriver/base/errors.rb +134 -0
- data/lib/tdriver/base/loader.rb +47 -0
- data/lib/tdriver/base/state_object.rb +373 -0
- data/lib/tdriver/base/sut/adapter.rb +54 -0
- data/lib/tdriver/base/sut/controller.rb +151 -0
- data/lib/tdriver/base/sut/factory.rb +339 -0
- data/lib/tdriver/base/sut/generic/behaviours/agent.rb +77 -0
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +427 -0
- data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
- data/lib/tdriver/base/sut/generic/behaviours/find.rb +107 -0
- data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +337 -0
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1888 -0
- data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +210 -0
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +222 -0
- data/lib/tdriver/base/sut/generic/commands/agent.rb +43 -0
- data/lib/tdriver/base/sut/generic/commands/application.rb +274 -0
- data/lib/tdriver/base/sut/generic/commands/fixture.rb +47 -0
- data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +94 -0
- data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +64 -0
- data/lib/tdriver/base/sut/generic/plugin.rb +97 -0
- data/lib/tdriver/base/sut/loader.rb +35 -0
- data/lib/tdriver/base/sut/sut.rb +98 -0
- data/lib/tdriver/base/test_object/abstract.rb +208 -0
- data/lib/tdriver/base/test_object/adapter.rb +740 -0
- data/lib/tdriver/base/test_object/behaviours/syncronization.rb +144 -0
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +1047 -0
- data/lib/tdriver/base/test_object/cache.rb +134 -0
- data/lib/tdriver/base/test_object/factory.rb +684 -0
- data/lib/tdriver/base/test_object/loader.rb +51 -0
- data/lib/tdriver/base/test_object/verification.rb +178 -0
- data/lib/tdriver/base/test_object/xml/abstraction.rb +63 -0
- data/lib/tdriver/base/test_object/xml/adapter.rb +773 -0
- data/lib/tdriver/env.rb +21 -0
- data/lib/tdriver/loader.rb +57 -0
- data/lib/tdriver/matti.rb +35 -0
- data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +168 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +106 -0
- data/lib/tdriver/report/report.rb +61 -0
- data/lib/tdriver/report/report_api.rb +348 -0
- data/lib/tdriver/report/report_combine.rb +86 -0
- data/lib/tdriver/report/report_crash_file_capture.rb +178 -0
- data/lib/tdriver/report/report_creator.rb +665 -0
- data/lib/tdriver/report/report_cucumber.rb +158 -0
- data/lib/tdriver/report/report_cucumber_listener.rb +184 -0
- data/lib/tdriver/report/report_cucumber_reporter.rb +181 -0
- data/lib/tdriver/report/report_data_presentation.rb +156 -0
- data/lib/tdriver/report/report_data_table.rb +64 -0
- data/lib/tdriver/report/report_execution_statistics.rb +400 -0
- data/lib/tdriver/report/report_file_capture.rb +159 -0
- data/lib/tdriver/report/report_graph_generator.rb +59 -0
- data/lib/tdriver/report/report_grouping.rb +541 -0
- data/lib/tdriver/report/report_javascript.rb +199 -0
- data/lib/tdriver/report/report_junit_xml.rb +147 -0
- data/lib/tdriver/report/report_rspec.rb +108 -0
- data/lib/tdriver/report/report_test_case_run.rb +725 -0
- data/lib/tdriver/report/report_test_run.rb +1476 -0
- data/lib/tdriver/report/report_test_unit.rb +223 -0
- data/lib/tdriver/report/report_writer.rb +1621 -0
- data/lib/tdriver/tdriver.rb +209 -0
- data/lib/tdriver/util/agent/loader.rb +22 -0
- data/lib/tdriver/util/agent/service.rb +107 -0
- data/lib/tdriver/util/common/array.rb +39 -0
- data/lib/tdriver/util/common/boolean.rb +48 -0
- data/lib/tdriver/util/common/crc16.rb +149 -0
- data/lib/tdriver/util/common/environment.rb +154 -0
- data/lib/tdriver/util/common/error.rb +40 -0
- data/lib/tdriver/util/common/exception.rb +53 -0
- data/lib/tdriver/util/common/exceptions.rb +12 -0
- data/lib/tdriver/util/common/file.rb +328 -0
- data/lib/tdriver/util/common/gem.rb +109 -0
- data/lib/tdriver/util/common/hash.rb +288 -0
- data/lib/tdriver/util/common/kernel.rb +253 -0
- data/lib/tdriver/util/common/loader.rb +47 -0
- data/lib/tdriver/util/common/numeric.rb +159 -0
- data/lib/tdriver/util/common/object.rb +159 -0
- data/lib/tdriver/util/common/retryable.rb +179 -0
- data/lib/tdriver/util/common/stackable.rb +185 -0
- data/lib/tdriver/util/common/string.rb +174 -0
- data/lib/tdriver/util/database/access.rb +240 -0
- data/lib/tdriver/util/database/connection.rb +44 -0
- data/lib/tdriver/util/database/error.rb +34 -0
- data/lib/tdriver/util/database/loader.rb +28 -0
- data/lib/tdriver/util/filters/attribute_filter.rb +121 -0
- data/lib/tdriver/util/filters/loader.rb +29 -0
- data/lib/tdriver/util/fixture/loader.rb +22 -0
- data/lib/tdriver/util/fixture/service.rb +211 -0
- data/lib/tdriver/util/hooking/hooking.rb +477 -0
- data/lib/tdriver/util/keymap/keymap.rb +81 -0
- data/lib/tdriver/util/loader.rb +80 -0
- data/lib/tdriver/util/localisation/error.rb +31 -0
- data/lib/tdriver/util/localisation/loader.rb +25 -0
- data/lib/tdriver/util/localisation/localisation.rb +762 -0
- data/lib/tdriver/util/logger/loader.rb +22 -0
- data/lib/tdriver/util/logger/logger.rb +591 -0
- data/lib/tdriver/util/operator_data/error.rb +29 -0
- data/lib/tdriver/util/operator_data/loader.rb +27 -0
- data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
- data/lib/tdriver/util/other/config.rb +221 -0
- data/lib/tdriver/util/parameter/error.rb +48 -0
- data/lib/tdriver/util/parameter/loader.rb +25 -0
- data/lib/tdriver/util/parameter/parameter.rb +1161 -0
- data/lib/tdriver/util/plugin/abstract.rb +61 -0
- data/lib/tdriver/util/plugin/error.rb +0 -0
- data/lib/tdriver/util/plugin/loader.rb +28 -0
- data/lib/tdriver/util/plugin/service.rb +319 -0
- data/lib/tdriver/util/recorder/loader.rb +25 -0
- data/lib/tdriver/util/recorder/recorder.rb +72 -0
- data/lib/tdriver/util/recorder/scripter.rb +294 -0
- data/lib/tdriver/util/statistics/statistics.rb +89 -0
- data/lib/tdriver/util/user_data/error.rb +28 -0
- data/lib/tdriver/util/user_data/loader.rb +25 -0
- data/lib/tdriver/util/user_data/user_data.rb +104 -0
- data/lib/tdriver/util/video/camera.rb +67 -0
- data/lib/tdriver/util/video/camera_linux.rb +153 -0
- data/lib/tdriver/util/video/camera_windows.rb +174 -0
- data/lib/tdriver/util/video/loader.rb +31 -0
- data/lib/tdriver/util/video/video_utils.rb +139 -0
- data/lib/tdriver/util/xml/abstraction.rb +117 -0
- data/lib/tdriver/util/xml/attribute.rb +32 -0
- data/lib/tdriver/util/xml/builder.rb +53 -0
- data/lib/tdriver/util/xml/comment.rb +32 -0
- data/lib/tdriver/util/xml/document.rb +32 -0
- data/lib/tdriver/util/xml/element.rb +32 -0
- data/lib/tdriver/util/xml/error.rb +46 -0
- data/lib/tdriver/util/xml/loader.rb +62 -0
- data/lib/tdriver/util/xml/nil_node.rb +95 -0
- data/lib/tdriver/util/xml/nodeset.rb +32 -0
- data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
- data/lib/tdriver/util/xml/parsers/loader.rb +21 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +167 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +66 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +64 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/comment.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +66 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +212 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +237 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +39 -0
- data/lib/tdriver/util/xml/text.rb +32 -0
- data/lib/tdriver/util/xml/xml.rb +332 -0
- data/lib/tdriver/verify/verify.rb +2398 -0
- data/lib/tdriver/version.rb +21 -0
- data/xml/behaviours/generic.xml +530 -0
- data/xml/defaults/generic.xml +11 -0
- data/xml/defaults/sut_generic.xml +8 -0
- data/xml/parameters/tdriver_parameters.xml +23 -0
- data/xml/templates/generic.xml +292 -0
- metadata +324 -0
@@ -0,0 +1,1476 @@
|
|
1
|
+
############################################################################
|
2
|
+
##
|
3
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
4
|
+
## All rights reserved.
|
5
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
6
|
+
##
|
7
|
+
## This file is part of TDriver.
|
8
|
+
##
|
9
|
+
## If you have questions regarding the use of this file, please contact
|
10
|
+
## Nokia at testabilitydriver@nokia.com .
|
11
|
+
##
|
12
|
+
## This library is free software; you can redistribute it and/or
|
13
|
+
## modify it under the terms of the GNU Lesser General Public
|
14
|
+
## License version 2.1 as published by the Free Software Foundation
|
15
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
16
|
+
## of this file.
|
17
|
+
##
|
18
|
+
############################################################################
|
19
|
+
|
20
|
+
module TDriverReportCreator
|
21
|
+
|
22
|
+
#Test run class for new test run
|
23
|
+
class TestRun < ReportCombine
|
24
|
+
include TDriverReportWriter
|
25
|
+
include ReportDataTable
|
26
|
+
attr_accessor(
|
27
|
+
:report_folder,
|
28
|
+
:reporting_groups,
|
29
|
+
:generic_reporting_groups,
|
30
|
+
:start_time,
|
31
|
+
:end_time,
|
32
|
+
:run_time,
|
33
|
+
:total_run,
|
34
|
+
:total_passed,
|
35
|
+
:total_failed,
|
36
|
+
:total_not_run,
|
37
|
+
:total_crash_files,
|
38
|
+
:total_device_resets,
|
39
|
+
:test_case_user_defined_status,
|
40
|
+
:test_run_behaviour_log,
|
41
|
+
:test_run_user_log,
|
42
|
+
:test_case_user_data,
|
43
|
+
:test_case_user_xml_data,
|
44
|
+
:test_case_user_data_columns,
|
45
|
+
:test_case_user_chronological_table_data,
|
46
|
+
:attached_test_reports,
|
47
|
+
:report_pages_ready,
|
48
|
+
:memory_amount_start,
|
49
|
+
:memory_amount_end,
|
50
|
+
:memory_amount_total,
|
51
|
+
:total_dump_count,
|
52
|
+
:total_received_data,
|
53
|
+
:total_sent_data,
|
54
|
+
:result_storage_in_use,
|
55
|
+
:pages,
|
56
|
+
:duration_graph,
|
57
|
+
:pass_statuses,
|
58
|
+
:fail_statuses,
|
59
|
+
:not_run_statuses,
|
60
|
+
:report_editable,
|
61
|
+
:test_fails,
|
62
|
+
:report_exclude_passed_cases,
|
63
|
+
:connection_errors
|
64
|
+
|
65
|
+
)
|
66
|
+
#class variables for summary report
|
67
|
+
def initialize()
|
68
|
+
@report_folder=nil
|
69
|
+
@reporting_groups=nil
|
70
|
+
@generic_reporting_groups=''
|
71
|
+
@start_time=nil
|
72
|
+
@end_time=nil
|
73
|
+
@run_time=nil
|
74
|
+
@total_run=0
|
75
|
+
@total_passed=0
|
76
|
+
@total_failed=0
|
77
|
+
@total_not_run=0
|
78
|
+
@total_crash_files=0
|
79
|
+
@total_device_resets=0
|
80
|
+
@connection_errors=0
|
81
|
+
@test_case_user_defined_status=nil
|
82
|
+
@test_run_behaviour_log = Array.new
|
83
|
+
@test_run_user_log = Array.new
|
84
|
+
@test_case_user_data=Array.new
|
85
|
+
@test_case_user_data_columns = Array.new
|
86
|
+
@test_case_user_chronological_table_data = Hash.new
|
87
|
+
@test_case_user_xml_data = Hash.new
|
88
|
+
@attached_test_reports = Array.new
|
89
|
+
@report_pages_ready=Array.new
|
90
|
+
@memory_amount_start='-'
|
91
|
+
@memory_amount_end='-'
|
92
|
+
@memory_amount_total='-'
|
93
|
+
@total_dump_count=Hash.new
|
94
|
+
@total_received_data=Hash.new
|
95
|
+
@total_sent_data=Hash.new
|
96
|
+
$result_storage_in_use=false
|
97
|
+
@pages=$parameters[ :report_results_per_page, 50]
|
98
|
+
@duration_graph=$parameters[ :report_generate_duration_graph, false]
|
99
|
+
@pass_statuses=$parameters[ :report_passed_statuses, "passed" ].split('|')
|
100
|
+
@fail_statuses=$parameters[ :report_failed_statuses, "failed" ].split('|')
|
101
|
+
@not_run_statuses=$parameters[ :report_not_run_statuses, "not run" ].split('|')
|
102
|
+
@report_editable=$parameters[ :report_editable, "false" ]
|
103
|
+
@report_short_folders=$parameters[ :report_short_folders, 'false']
|
104
|
+
@report_exclude_passed_cases=$parameters[ :report_exclude_passed_cases, 'false' ]
|
105
|
+
@test_fails=Hash.new(0) # return 0 by default if key not found
|
106
|
+
|
107
|
+
|
108
|
+
end
|
109
|
+
|
110
|
+
def get_sequential_fails
|
111
|
+
test_identifier = $new_test_case.test_case_group + "::" + $new_test_case.test_case_name
|
112
|
+
return @test_fails[ test_identifier ] # return 0 by default if key not found
|
113
|
+
end
|
114
|
+
|
115
|
+
def update_sequential_fails( status )
|
116
|
+
|
117
|
+
test_identifier = $new_test_case.test_case_group + "::" + $new_test_case.test_case_name
|
118
|
+
|
119
|
+
if @pass_statuses.include?(status)
|
120
|
+
@test_fails[ test_identifier ] = 0 unless @test_fails[ test_identifier ] == 0
|
121
|
+
elsif @fail_statuses.include?(status)
|
122
|
+
tempnum = @test_fails[ test_identifier ]
|
123
|
+
tempnum = tempnum + 1
|
124
|
+
@test_fails[ test_identifier ] = tempnum
|
125
|
+
end
|
126
|
+
|
127
|
+
|
128
|
+
end
|
129
|
+
|
130
|
+
#This method sets the test case user defined status
|
131
|
+
#
|
132
|
+
# === params
|
133
|
+
# value: test case status
|
134
|
+
# === returns
|
135
|
+
# nil
|
136
|
+
# === raises
|
137
|
+
def set_test_case_user_defined_status(value)
|
138
|
+
@test_case_user_defined_status=value
|
139
|
+
end
|
140
|
+
#This method sets user created log
|
141
|
+
#
|
142
|
+
# === params
|
143
|
+
# value: test run execution log entry
|
144
|
+
# === returns
|
145
|
+
# nil
|
146
|
+
# === raises
|
147
|
+
def set_log(value)
|
148
|
+
if value==nil
|
149
|
+
@test_run_user_log=nil
|
150
|
+
@test_run_user_log=Array.new
|
151
|
+
else
|
152
|
+
@test_run_user_log << ["USER LOG: #{value.to_s}"]
|
153
|
+
end
|
154
|
+
end
|
155
|
+
#This method adds user data
|
156
|
+
#
|
157
|
+
# === params
|
158
|
+
# value: the data to be added an array or hash
|
159
|
+
# === returns
|
160
|
+
# nil
|
161
|
+
# === raises
|
162
|
+
# TypeError exception
|
163
|
+
def set_user_data(value)
|
164
|
+
if value==nil
|
165
|
+
@test_case_user_data = Array.new
|
166
|
+
@test_case_user_data_columns = Array.new
|
167
|
+
else
|
168
|
+
raise TypeError.new( 'Input parameter not of Type: Hash or Array.\nIt is: ' + value.class.to_s ) unless value.kind_of?( Hash ) || value.kind_of?( Array )
|
169
|
+
if value.kind_of?( Hash )
|
170
|
+
add_data_from_hash(value,@test_case_user_data,@test_case_user_data_columns)
|
171
|
+
end
|
172
|
+
if value.kind_of?( Array )
|
173
|
+
add_data_from_array(value,@test_case_user_data,@test_case_user_data_columns)
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
#This method adds user table data
|
178
|
+
#
|
179
|
+
# === params
|
180
|
+
# column_name: the column name in chronological table
|
181
|
+
# value: the data
|
182
|
+
# === returns
|
183
|
+
# nil
|
184
|
+
# === raises
|
185
|
+
def set_user_table_data(column_name,value)
|
186
|
+
if (!column_name.empty? && column_name!=nil)
|
187
|
+
@test_case_user_chronological_table_data[column_name.to_s]=value.to_s
|
188
|
+
end
|
189
|
+
end
|
190
|
+
|
191
|
+
#This method adds user xml data
|
192
|
+
#
|
193
|
+
# === params
|
194
|
+
# column_name: the column name in xml
|
195
|
+
# value: the data
|
196
|
+
# === returns
|
197
|
+
# nil
|
198
|
+
# === raises
|
199
|
+
def set_user_xml_data(column_name,value)
|
200
|
+
if (!column_name.empty? && column_name!=nil)
|
201
|
+
@test_case_user_xml_data[column_name.to_s]=value.to_s
|
202
|
+
end
|
203
|
+
end
|
204
|
+
|
205
|
+
#This method sets the test run behaviour log
|
206
|
+
#
|
207
|
+
# === params
|
208
|
+
# value: test run execution log entry
|
209
|
+
# === returns
|
210
|
+
# nil
|
211
|
+
# === raises
|
212
|
+
def set_test_run_behaviour_log(value,test_case)
|
213
|
+
@test_run_behaviour_log << [value.to_s,test_case]
|
214
|
+
end
|
215
|
+
#This method sets generic reporting groups
|
216
|
+
#
|
217
|
+
# === params
|
218
|
+
#
|
219
|
+
# === returns
|
220
|
+
# nil
|
221
|
+
# === raises
|
222
|
+
def set_generic_reporting_groups(value)
|
223
|
+
if check_if_group_exists_groups(@generic_reporting_groups,value)==false
|
224
|
+
@generic_reporting_groups=@generic_reporting_groups+value
|
225
|
+
end
|
226
|
+
get_reporting_groups()
|
227
|
+
end
|
228
|
+
#This method sets the report folder value
|
229
|
+
#
|
230
|
+
# === params
|
231
|
+
# value: test set report folder
|
232
|
+
# === returns
|
233
|
+
# nil
|
234
|
+
# === raises
|
235
|
+
def set_report_folder(value)
|
236
|
+
@report_folder=value
|
237
|
+
end
|
238
|
+
#This method sets the test run start time
|
239
|
+
#
|
240
|
+
# === params
|
241
|
+
# value: test set start time
|
242
|
+
# === returns
|
243
|
+
# nil
|
244
|
+
# === raises
|
245
|
+
def set_start_time(value)
|
246
|
+
@start_time=value
|
247
|
+
end
|
248
|
+
#This method sets the test run end time
|
249
|
+
#
|
250
|
+
# === params
|
251
|
+
# value: test set end time
|
252
|
+
# === returns
|
253
|
+
# nil
|
254
|
+
# === raises
|
255
|
+
def set_end_time(value)
|
256
|
+
@end_time=value
|
257
|
+
end
|
258
|
+
#This method sets the test run run time
|
259
|
+
#
|
260
|
+
# === params
|
261
|
+
# value: test set run time
|
262
|
+
# === returns
|
263
|
+
# nil
|
264
|
+
# === raises
|
265
|
+
def set_run_time(value)
|
266
|
+
@run_time=value
|
267
|
+
end
|
268
|
+
#This method sets the total tests run
|
269
|
+
#
|
270
|
+
# === params
|
271
|
+
# value: total run value
|
272
|
+
# === returns
|
273
|
+
# nil
|
274
|
+
# === raises
|
275
|
+
def set_total_run(value)
|
276
|
+
if value==1
|
277
|
+
@total_run=@total_run.to_i+1
|
278
|
+
else
|
279
|
+
@total_run=value
|
280
|
+
end
|
281
|
+
end
|
282
|
+
#This method sets the total passed tests run
|
283
|
+
#
|
284
|
+
# === params
|
285
|
+
# value: total passed value
|
286
|
+
# === returns
|
287
|
+
# nil
|
288
|
+
# === raises
|
289
|
+
def set_total_passed(value)
|
290
|
+
if value==1
|
291
|
+
@total_passed=@total_passed.to_i+1
|
292
|
+
else
|
293
|
+
@total_passed=value
|
294
|
+
end
|
295
|
+
end
|
296
|
+
#This method sets the total failed tests run
|
297
|
+
#
|
298
|
+
# === params
|
299
|
+
# value: total failed value
|
300
|
+
# === returns
|
301
|
+
# nil
|
302
|
+
# === raises
|
303
|
+
def set_total_failed(value)
|
304
|
+
if value==1
|
305
|
+
@total_failed=@total_failed.to_i+1
|
306
|
+
else
|
307
|
+
@total_failed=value
|
308
|
+
end
|
309
|
+
end
|
310
|
+
#This method sets the total amount of not run cases
|
311
|
+
#
|
312
|
+
# === params
|
313
|
+
# value: total not run value
|
314
|
+
# === returns
|
315
|
+
# nil
|
316
|
+
# === raises
|
317
|
+
def set_total_not_run(value)
|
318
|
+
if value==1
|
319
|
+
@total_not_run=@total_not_run.to_i+1
|
320
|
+
else
|
321
|
+
@total_not_run=value
|
322
|
+
end
|
323
|
+
end
|
324
|
+
#This method sets the total amount of found crash files
|
325
|
+
#
|
326
|
+
# === params
|
327
|
+
# value: total not run value
|
328
|
+
# === returns
|
329
|
+
# nil
|
330
|
+
# === raises
|
331
|
+
def set_total_crash_files(value)
|
332
|
+
@total_crash_files=@total_crash_files.to_i+value.to_i
|
333
|
+
end
|
334
|
+
#This method sets the total amount of device resets
|
335
|
+
#
|
336
|
+
# === params
|
337
|
+
# value: total not run value
|
338
|
+
# === returns
|
339
|
+
# nil
|
340
|
+
# === raises
|
341
|
+
def set_total_device_resets(value)
|
342
|
+
@total_device_resets=@total_device_resets.to_i+value.to_i
|
343
|
+
end
|
344
|
+
|
345
|
+
#This method sets the memory amount end
|
346
|
+
#
|
347
|
+
# === params
|
348
|
+
#
|
349
|
+
# === returns
|
350
|
+
# nil
|
351
|
+
# === raises
|
352
|
+
def set_memory_amount_end(value)
|
353
|
+
@memory_amount_end=value
|
354
|
+
end
|
355
|
+
#This method sets the memory amount start
|
356
|
+
#
|
357
|
+
# === params
|
358
|
+
#
|
359
|
+
# === returns
|
360
|
+
# nil
|
361
|
+
# === raises
|
362
|
+
def set_memory_amount_start(value)
|
363
|
+
@memory_amount_start=value
|
364
|
+
end
|
365
|
+
#This method sets the memory amount total
|
366
|
+
#
|
367
|
+
# === params
|
368
|
+
#
|
369
|
+
# === returns
|
370
|
+
# nil
|
371
|
+
# === raises
|
372
|
+
def set_memory_amount_total(value)
|
373
|
+
@memory_amount_total=value
|
374
|
+
end
|
375
|
+
|
376
|
+
#This method gets the not run cases name array
|
377
|
+
#
|
378
|
+
# === params
|
379
|
+
#
|
380
|
+
# === returns
|
381
|
+
# nil
|
382
|
+
# === raises
|
383
|
+
def get_not_run_cases_arr()
|
384
|
+
#@not_run_cases_arr
|
385
|
+
read_result_storage('not_run')
|
386
|
+
end
|
387
|
+
#This method gets the passed cases name array
|
388
|
+
#
|
389
|
+
# === params
|
390
|
+
#
|
391
|
+
# === returns
|
392
|
+
# nil
|
393
|
+
# === raises
|
394
|
+
def get_passed_cases_arr()
|
395
|
+
#@passed_cases_arr
|
396
|
+
read_result_storage('passed')
|
397
|
+
end
|
398
|
+
#This method gets the failed cases name array
|
399
|
+
#
|
400
|
+
# === params
|
401
|
+
#
|
402
|
+
# === returns
|
403
|
+
# nil
|
404
|
+
# === raises
|
405
|
+
def get_failed_cases_arr()
|
406
|
+
#@failed_cases_arr
|
407
|
+
read_result_storage('failed')
|
408
|
+
end
|
409
|
+
#This method gets the failed cases name array
|
410
|
+
#
|
411
|
+
# === params
|
412
|
+
#
|
413
|
+
# === returns
|
414
|
+
# nil
|
415
|
+
# === raises
|
416
|
+
def get_all_cases_arr()
|
417
|
+
#@all_cases_arr
|
418
|
+
read_result_storage('all')
|
419
|
+
end
|
420
|
+
|
421
|
+
#This method gets reporting groups
|
422
|
+
#
|
423
|
+
# === params
|
424
|
+
#
|
425
|
+
# === returns
|
426
|
+
# nil
|
427
|
+
# === raises
|
428
|
+
def get_reporting_groups()
|
429
|
+
@reporting_groups=$parameters[ :report_groups, nil ]
|
430
|
+
if @reporting_groups==nil
|
431
|
+
@reporting_groups=@generic_reporting_groups
|
432
|
+
end
|
433
|
+
@reporting_groups
|
434
|
+
end
|
435
|
+
|
436
|
+
#This method gets user created data
|
437
|
+
#
|
438
|
+
# === params
|
439
|
+
# nil
|
440
|
+
# === returns
|
441
|
+
# the testcase data and column objects
|
442
|
+
# === raises
|
443
|
+
def get_user_data()
|
444
|
+
return @test_case_user_data,@test_case_user_data_columns
|
445
|
+
end
|
446
|
+
|
447
|
+
#This method sets user data to display in chronological table
|
448
|
+
#
|
449
|
+
# === params
|
450
|
+
# nil
|
451
|
+
# === returns
|
452
|
+
# the testcase data and column objects
|
453
|
+
# === raises
|
454
|
+
def set_user_chronological_table_data(value)
|
455
|
+
if (value==nil)
|
456
|
+
@test_case_user_chronological_table_data=Hash.new
|
457
|
+
else
|
458
|
+
@test_case_user_chronological_table_data=value
|
459
|
+
end
|
460
|
+
end
|
461
|
+
#This method will parse duplicate groups out
|
462
|
+
#
|
463
|
+
# === params
|
464
|
+
#
|
465
|
+
# === returns
|
466
|
+
# nil
|
467
|
+
# === raises
|
468
|
+
def check_if_group_exists_groups(groups,new_group_item)
|
469
|
+
if groups.include? new_group_item
|
470
|
+
true
|
471
|
+
else
|
472
|
+
false
|
473
|
+
end
|
474
|
+
end
|
475
|
+
#This method creates a new TDriver test report folder when testing is started
|
476
|
+
#
|
477
|
+
# === params
|
478
|
+
# nil
|
479
|
+
# === returns
|
480
|
+
# nil
|
481
|
+
# === raises
|
482
|
+
def initialize_tdriver_report_folder()
|
483
|
+
t = Time.now
|
484
|
+
b_fixed_report_folder=false
|
485
|
+
@start_time=t
|
486
|
+
@reporter_base_folder = $parameters[ :report_outputter_path, 'tdriver_reports/' ]
|
487
|
+
if $parameters[ :report_outputter_folder, nil ] != nil
|
488
|
+
@report_folder=@reporter_base_folder+$parameters[ :report_outputter_folder, nil ]
|
489
|
+
b_fixed_report_folder=true
|
490
|
+
else
|
491
|
+
@report_folder=@reporter_base_folder+"test_run_"+t.strftime( "%Y%m%d%H%M%S" )
|
492
|
+
end
|
493
|
+
|
494
|
+
begin
|
495
|
+
#check if report directory exists
|
496
|
+
if File::directory?(@report_folder)==false
|
497
|
+
FileUtils.mkdir_p @report_folder+'/environment'
|
498
|
+
FileUtils.mkdir_p @report_folder+'/cases'
|
499
|
+
FileUtils.mkdir_p @report_folder+'/junit_xml'
|
500
|
+
else
|
501
|
+
if b_fixed_report_folder==true
|
502
|
+
FileUtils::remove_entry_secure(@report_folder, :force => true)
|
503
|
+
FileUtils.mkdir_p @report_folder+'/environment'
|
504
|
+
FileUtils.mkdir_p @report_folder+'/cases'
|
505
|
+
FileUtils.mkdir_p @report_folder+'/junit_xml'
|
506
|
+
end
|
507
|
+
end
|
508
|
+
write_style_sheet(@report_folder+'/tdriver_report_style.css')
|
509
|
+
write_page_start(@report_folder+'/cases/1_passed_index.html','Passed')
|
510
|
+
write_page_end(@report_folder+'/cases/1_passed_index.html')
|
511
|
+
write_page_start(@report_folder+'/cases/1_failed_index.html','Failed')
|
512
|
+
write_page_end(@report_folder+'/cases/1_failed_index.html')
|
513
|
+
write_page_start(@report_folder+'/cases/1_not_run_index.html','Not run')
|
514
|
+
write_page_end(@report_folder+'/cases/1_not_run_index.html')
|
515
|
+
write_page_start(@report_folder+'/cases/1_total_run_index.html','Total run')
|
516
|
+
write_page_end(@report_folder+'/cases/1_total_run_index.html')
|
517
|
+
write_page_start(@report_folder+'/cases/tdriver_log_index.html','TDriver log')
|
518
|
+
write_page_end(@report_folder+'/cases/tdriver_log_index.html')
|
519
|
+
write_page_start(@report_folder+'/cases/statistics_index.html','Statistics')
|
520
|
+
write_page_end(@report_folder+'/cases/statistics_index.html')
|
521
|
+
if $parameters[ :report_generate_rdoc, 'false' ]=='true'
|
522
|
+
if $parameters[ :ats4_error_recovery_enabled, 'false' ]=='true'
|
523
|
+
ats4_drop_folder_arr=@report_folder.split('ats4-results')
|
524
|
+
system("rdoc --include #{ats4_drop_folder_arr[0]}/* --exclude test_run --op #{@report_folder}/doc")
|
525
|
+
puts "RDoc generated from test folder: #{ats4_drop_folder_arr[0]}/*"
|
526
|
+
else
|
527
|
+
system("rdoc --exclude test_run --op #{@report_folder}/doc")
|
528
|
+
puts "RDoc generated from test folder: #{Dir.pwd}"
|
529
|
+
end
|
530
|
+
|
531
|
+
|
532
|
+
end
|
533
|
+
rescue Exception => e
|
534
|
+
raise e, "Unable to create report folder: #{@report_folder}", caller
|
535
|
+
end
|
536
|
+
return nil
|
537
|
+
end
|
538
|
+
|
539
|
+
#This method generates the tdriver test run summary page grouped by test case
|
540
|
+
#
|
541
|
+
# === params
|
542
|
+
# nil
|
543
|
+
# === returns
|
544
|
+
# nil
|
545
|
+
# === raises
|
546
|
+
def group_results_by_test_case()
|
547
|
+
@all_cases_arr=read_result_storage('all')
|
548
|
+
created_grouped_test_result=[]
|
549
|
+
|
550
|
+
@all_cases_arr.each do |test_case|
|
551
|
+
#name, status
|
552
|
+
tc=[test_case[7],test_case[0]]
|
553
|
+
if !created_grouped_test_result.include?(tc)
|
554
|
+
update_test_case_summary_page(test_case[7],false,"Test: #{test_case[0]} Result: #{test_case[7]}",test_case[0])
|
555
|
+
created_grouped_test_result << tc
|
556
|
+
end
|
557
|
+
end
|
558
|
+
|
559
|
+
end
|
560
|
+
|
561
|
+
#This method updates the tdriver test run summary page
|
562
|
+
#
|
563
|
+
# === params
|
564
|
+
# nil
|
565
|
+
# === returns
|
566
|
+
# nil
|
567
|
+
# === raises
|
568
|
+
def update_summary_page(status,exit_trace=nil)
|
569
|
+
begin
|
570
|
+
#Calculate run time
|
571
|
+
@run_time=Time.now-@start_time
|
572
|
+
if status=='inprogress'
|
573
|
+
write_page_start(@report_folder+'/index.html','TDriver test results')
|
574
|
+
write_summary_body(@report_folder+'/index.html',@start_time,'Tests Ongoing...',@run_time,@total_run,@total_passed,@total_failed,@total_not_run,@total_crash_files,@total_device_resets,@connection_errors)
|
575
|
+
write_page_end(@report_folder+'/index.html')
|
576
|
+
else
|
577
|
+
all_cases_arr=read_result_storage('all')
|
578
|
+
write_page_start(@report_folder+'/index.html','TDriver test results')
|
579
|
+
write_summary_body(@report_folder+'/index.html',@start_time,@end_time,@run_time,@total_run,@total_passed,@total_failed,@total_not_run,@total_crash_files,@total_device_resets,@connection_errors,all_cases_arr)
|
580
|
+
write_page_end(@report_folder+'/index.html')
|
581
|
+
end
|
582
|
+
if exit_trace
|
583
|
+
write_page_start(@report_folder+'/exit.html','TDriver test results')
|
584
|
+
write_exit_body(@report_folder+'/exit.html',exit_trace,@report_folder)
|
585
|
+
write_page_end(@report_folder+'/exit.html')
|
586
|
+
end
|
587
|
+
rescue Exception => e
|
588
|
+
raise e, "Unable to update summary page", e.backtrace
|
589
|
+
end
|
590
|
+
return nil
|
591
|
+
end
|
592
|
+
#This method updates the tdriver test run enviroment page
|
593
|
+
#
|
594
|
+
# === params
|
595
|
+
# nil
|
596
|
+
# === returns
|
597
|
+
# nil
|
598
|
+
# === raises
|
599
|
+
def update_environment_page()
|
600
|
+
begin
|
601
|
+
sw_version='-'
|
602
|
+
variant='-'
|
603
|
+
product='-'
|
604
|
+
language='-'
|
605
|
+
loc='-'
|
606
|
+
#Copy behaviour and parameter xml files in to the report folder
|
607
|
+
if /win/ =~ MobyUtil::EnvironmentHelper.ruby_platform || /mingw32/ =~ MobyUtil::EnvironmentHelper.ruby_platform
|
608
|
+
FileUtils.cp_r 'C:/tdriver/behaviours', @report_folder+'/environment' if File.directory?('C:/tdriver/behaviours')
|
609
|
+
FileUtils.cp_r 'C:/tdriver/templates', @report_folder+'/environment' if File.directory?('C:/tdriver/templates')
|
610
|
+
FileUtils.cp_r 'C:/tdriver/defaults', @report_folder+'/environment' if File.directory?('C:/tdriver/defaults')
|
611
|
+
FileUtils.copy('C:/tdriver/tdriver_parameters.xml',@report_folder+'/environment/tdriver_parameters.xml') if File.file?('C:/tdriver/tdriver_parameters.xml')
|
612
|
+
else
|
613
|
+
FileUtils.cp_r '/etc/tdriver/behaviours', @report_folder+'/environment' if File.directory?('/etc/tdriver/behaviours')
|
614
|
+
FileUtils.cp_r '/etc/tdriver/templates', @report_folder+'/environment' if File.directory?('/etc/tdriver/templates')
|
615
|
+
FileUtils.cp_r '/etc/tdriver/defaults', @report_folder+'/environment' if File.directory?('/etc/tdriver/defaults')
|
616
|
+
FileUtils.copy('/etc/tdriver/tdriver_parameters.xml',@report_folder+'/environment/tdriver_parameters.xml') if File.file?('/etc/tdriver/tdriver_parameters.xml')
|
617
|
+
end
|
618
|
+
if $parameters[ :report_monitor_memory, 'false']=='true'
|
619
|
+
TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
|
620
|
+
if sut_attributes[:is_connected]
|
621
|
+
@memory_amount_start=get_sut_used_memory(sut_id, sut_attributes) if @memory_amount_start==nil || @memory_amount_start=='-'
|
622
|
+
@memory_amount_end=get_sut_used_memory(sut_id, sut_attributes)
|
623
|
+
@memory_amount_total=get_sut_total_memory(sut_id, sut_attributes)
|
624
|
+
@memory_amount_start='-' if @memory_amount_start==nil
|
625
|
+
@memory_amount_end='-' if @memory_amount_end==nil
|
626
|
+
@memory_amount_total='-' if @memory_amount_total==nil
|
627
|
+
end
|
628
|
+
end
|
629
|
+
end
|
630
|
+
if $parameters[ :report_collect_environment_data_from_sut, 'true']=='true'
|
631
|
+
TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
|
632
|
+
begin
|
633
|
+
if sut_attributes[:is_connected]
|
634
|
+
sw_version=get_sut_sw_version(sut_id, sut_attributes)
|
635
|
+
variant=get_sut_lang_version(sut_id, sut_attributes)
|
636
|
+
@memory_amount_start=get_sut_used_memory(sut_id, sut_attributes) if @memory_amount_start==nil || @memory_amount_start=='-'
|
637
|
+
@memory_amount_end=get_sut_used_memory(sut_id, sut_attributes)
|
638
|
+
@memory_amount_total=get_sut_total_memory(sut_id, sut_attributes)
|
639
|
+
product=$parameters[sut_id][:product]
|
640
|
+
language=$parameters[sut_id][:language]
|
641
|
+
loc=$parameters[sut_id][:localisation_server_database_tablename]
|
642
|
+
end
|
643
|
+
@memory_amount_start='-' if @memory_amount_start==nil
|
644
|
+
@memory_amount_end='-' if @memory_amount_end==nil
|
645
|
+
@memory_amount_total='-' if @memory_amount_total==nil
|
646
|
+
|
647
|
+
sw_version='-' if sw_version==nil
|
648
|
+
variant='-' if variant==nil
|
649
|
+
product='-' if product==nil
|
650
|
+
language='-' if language==nil
|
651
|
+
loc='-' if loc==nil
|
652
|
+
rescue
|
653
|
+
end
|
654
|
+
end
|
655
|
+
end
|
656
|
+
|
657
|
+
write_page_start(@report_folder+'/environment/index.html','TDriver test environment')
|
658
|
+
write_environment_body(@report_folder+'/environment/index.html',RUBY_PLATFORM,sw_version,variant,product,language,loc)
|
659
|
+
write_page_end(@report_folder+'/environment/index.html')
|
660
|
+
$new_junit_xml_results.test_suite_properties(RUBY_PLATFORM,sw_version,variant,product,language,loc,@memory_amount_total,@memory_amount_start,@memory_amount_end)
|
661
|
+
rescue Exception => e
|
662
|
+
p e.message
|
663
|
+
p e.backtrace
|
664
|
+
raise e, "Unable to update environment page"
|
665
|
+
end
|
666
|
+
return nil
|
667
|
+
end
|
668
|
+
#This method updates the tdriver log page
|
669
|
+
#
|
670
|
+
# === params
|
671
|
+
# nil
|
672
|
+
# === returns
|
673
|
+
# nil
|
674
|
+
# === raises
|
675
|
+
def update_tdriver_log_page()
|
676
|
+
begin
|
677
|
+
write_page_start(@report_folder+'/cases/tdriver_log_index.html','TDriver log')
|
678
|
+
write_tdriver_log_body(@report_folder+'/cases/tdriver_log_index.html',@test_run_behaviour_log)
|
679
|
+
write_page_end(@report_folder+'/cases/tdriver_log_index.html')
|
680
|
+
rescue Exception => e
|
681
|
+
raise e
|
682
|
+
end
|
683
|
+
return nil
|
684
|
+
end
|
685
|
+
#This method gets the sut langugage version
|
686
|
+
#
|
687
|
+
# === params
|
688
|
+
# sut_id: sut id
|
689
|
+
# === returns
|
690
|
+
# nil
|
691
|
+
# === raises
|
692
|
+
def get_sut_lang_version(sut_id, sut_attributes)
|
693
|
+
MobyUtil::Logger.instance.enabled=false
|
694
|
+
lang_version='-'
|
695
|
+
begin
|
696
|
+
if $parameters[sut_id][:type]=='S60' || $parameters[sut_id][:type]=='Symbian'
|
697
|
+
lang_version=sut_attributes[:sut].sysinfo( :Lang_version )
|
698
|
+
end
|
699
|
+
if $parameters[sut_id][:type]=='QT'
|
700
|
+
if /win/ =~ MobyUtil::EnvironmentHelper.ruby_platform
|
701
|
+
lang_version=0
|
702
|
+
else
|
703
|
+
lang_version=0
|
704
|
+
end
|
705
|
+
end
|
706
|
+
rescue
|
707
|
+
ensure
|
708
|
+
if $parameters[ :logging_level, 0 ].to_i > 0
|
709
|
+
MobyUtil::Logger.instance.enabled=true
|
710
|
+
else
|
711
|
+
MobyUtil::Logger.instance.enabled=false
|
712
|
+
end
|
713
|
+
return lang_version
|
714
|
+
end
|
715
|
+
end
|
716
|
+
#This method gets the sut sw version
|
717
|
+
#
|
718
|
+
# === params
|
719
|
+
# sut_id: sut id
|
720
|
+
# === returns
|
721
|
+
# nil
|
722
|
+
# === raises
|
723
|
+
def get_sut_sw_version(sut_id, sut_attributes)
|
724
|
+
MobyUtil::Logger.instance.enabled=false
|
725
|
+
sw_version='-'
|
726
|
+
begin
|
727
|
+
if $parameters[sut_id][:type]=='S60' || $parameters[sut_id][:type]=='Symbian'
|
728
|
+
sw_version=sut_attributes[:sut].sysinfo( :Sw_version )
|
729
|
+
end
|
730
|
+
if $parameters[sut_id][:type]=='QT'
|
731
|
+
if /win/ =~ MobyUtil::EnvironmentHelper.ruby_platform
|
732
|
+
sw_version=0
|
733
|
+
else
|
734
|
+
sw_version=0
|
735
|
+
end
|
736
|
+
end
|
737
|
+
rescue
|
738
|
+
ensure
|
739
|
+
if $parameters[ :logging_level, 0 ].to_i > 0
|
740
|
+
MobyUtil::Logger.instance.enabled=true
|
741
|
+
else
|
742
|
+
MobyUtil::Logger.instance.enabled=false
|
743
|
+
end
|
744
|
+
return sw_version
|
745
|
+
end
|
746
|
+
end
|
747
|
+
#This method gets the sut used memory amount
|
748
|
+
#
|
749
|
+
# === params
|
750
|
+
# sut_id: sut id
|
751
|
+
# === returns
|
752
|
+
# nil
|
753
|
+
# === raises
|
754
|
+
def get_sut_used_memory(sut_id, sut_attributes)
|
755
|
+
MobyUtil::Logger.instance.enabled=false
|
756
|
+
memory=0
|
757
|
+
begin
|
758
|
+
if $parameters[sut_id][:type]=='S60' || $parameters[sut_id][:type]=='Symbian'
|
759
|
+
memory=sut_attributes[:sut].sysinfo( :Get_used_ram )
|
760
|
+
end
|
761
|
+
if $parameters[sut_id][:type]=='QT'
|
762
|
+
if /win/ =~ MobyUtil::EnvironmentHelper.ruby_platform
|
763
|
+
memory=0
|
764
|
+
else
|
765
|
+
memory=0
|
766
|
+
end
|
767
|
+
end
|
768
|
+
rescue
|
769
|
+
ensure
|
770
|
+
if $parameters[ :logging_level, 0 ].to_i > 0
|
771
|
+
MobyUtil::Logger.instance.enabled=true
|
772
|
+
else
|
773
|
+
MobyUtil::Logger.instance.enabled=false
|
774
|
+
end
|
775
|
+
return memory
|
776
|
+
end
|
777
|
+
|
778
|
+
end
|
779
|
+
#This method gets the sut total memory amount
|
780
|
+
#
|
781
|
+
# === params
|
782
|
+
# sut_id: sut id
|
783
|
+
# === returns
|
784
|
+
# nil
|
785
|
+
# === raises
|
786
|
+
def get_sut_total_memory(sut_id, sut_attributes)
|
787
|
+
MobyUtil::Logger.instance.enabled=false
|
788
|
+
memory=0
|
789
|
+
begin
|
790
|
+
if $parameters[sut_id][:type]=='S60' || $parameters[sut_id][:type]=='Symbian'
|
791
|
+
memory=sut_attributes[:sut].sysinfo( :Get_total_ram )
|
792
|
+
end
|
793
|
+
if $parameters[sut_id][:type]=='QT'
|
794
|
+
if /win/ =~ MobyUtil::EnvironmentHelper.ruby_platform
|
795
|
+
memory=0
|
796
|
+
else
|
797
|
+
memory=0
|
798
|
+
end
|
799
|
+
end
|
800
|
+
rescue
|
801
|
+
ensure
|
802
|
+
if $parameters[ :logging_level, 0 ].to_i > 0
|
803
|
+
MobyUtil::Logger.instance.enabled=true
|
804
|
+
else
|
805
|
+
MobyUtil::Logger.instance.enabled=false
|
806
|
+
end
|
807
|
+
return memory
|
808
|
+
end
|
809
|
+
end
|
810
|
+
#This method gets the sut total dump count
|
811
|
+
#
|
812
|
+
# === params
|
813
|
+
# sut_id: sut id
|
814
|
+
# === returns
|
815
|
+
# nil
|
816
|
+
# === raises
|
817
|
+
def get_sut_total_dump_count(sut_id, sut_attributes)
|
818
|
+
|
819
|
+
dump_count=sut_attributes[:sut].dump_count
|
820
|
+
@total_dump_count[sut_id.to_sym]=dump_count
|
821
|
+
@total_dump_count
|
822
|
+
|
823
|
+
end
|
824
|
+
|
825
|
+
#This method gets the sut total received data
|
826
|
+
#
|
827
|
+
# === params
|
828
|
+
# sut_id: sut id
|
829
|
+
# === returns
|
830
|
+
# nil
|
831
|
+
# === raises
|
832
|
+
def get_sut_total_received_data(sut_id, sut_attributes)
|
833
|
+
data=sut_attributes[:sut].received_data
|
834
|
+
@total_received_data[sut_id.to_sym]=data
|
835
|
+
@total_received_data
|
836
|
+
end
|
837
|
+
|
838
|
+
#This method gets the sut total sent data
|
839
|
+
#
|
840
|
+
# === params
|
841
|
+
# sut_id: sut id
|
842
|
+
# === returns
|
843
|
+
# nil
|
844
|
+
# === raises
|
845
|
+
def get_sut_total_sent_data(sut_id, sut_attributes)
|
846
|
+
data=sut_attributes[:sut].sent_data
|
847
|
+
@total_sent_data[sut_id.to_sym]=data
|
848
|
+
@total_sent_data
|
849
|
+
end
|
850
|
+
|
851
|
+
def calculate_total_values_from_hash(values)
|
852
|
+
total=0
|
853
|
+
values.each_value do |val|
|
854
|
+
total+=val
|
855
|
+
end
|
856
|
+
total
|
857
|
+
end
|
858
|
+
|
859
|
+
def write_to_result_storage(status,
|
860
|
+
testcase,
|
861
|
+
group,
|
862
|
+
reboots=0,
|
863
|
+
crashes=0,
|
864
|
+
start_time=nil,
|
865
|
+
user_data=nil,
|
866
|
+
duration=0,
|
867
|
+
memory_usage=0,
|
868
|
+
index=0,
|
869
|
+
log='',
|
870
|
+
comment='',
|
871
|
+
link='',
|
872
|
+
total_dump=0,
|
873
|
+
total_sent=0,
|
874
|
+
total_received=0,
|
875
|
+
user_data_rows=nil,
|
876
|
+
user_data_columns=nil,
|
877
|
+
connection_errors=0)
|
878
|
+
|
879
|
+
while $result_storage_in_use==true
|
880
|
+
sleep 1
|
881
|
+
end
|
882
|
+
$result_storage_in_use=true
|
883
|
+
begin
|
884
|
+
storage_file=nil
|
885
|
+
|
886
|
+
if @report_short_folders=='true'
|
887
|
+
html_link=status+'_'+index.to_s+'/index.html' if link==''
|
888
|
+
else
|
889
|
+
html_link=status+'_'+index.to_s+'_'+testcase+'/index.html' if link==''
|
890
|
+
end
|
891
|
+
|
892
|
+
|
893
|
+
storage_file='all_cases.xml'
|
894
|
+
|
895
|
+
file=@report_folder+'/'+storage_file
|
896
|
+
|
897
|
+
if File.exist?(file)
|
898
|
+
io = File.open(file, 'r')
|
899
|
+
xml_data = Nokogiri::XML(io){ |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
|
900
|
+
io.close
|
901
|
+
test = Nokogiri::XML::Node.new("test",xml_data)
|
902
|
+
test_name = Nokogiri::XML::Node.new("name",test)
|
903
|
+
test_name.content = testcase
|
904
|
+
test_group = Nokogiri::XML::Node.new("group",test)
|
905
|
+
test_group.content = group
|
906
|
+
test_reboots = Nokogiri::XML::Node.new("reboots",test)
|
907
|
+
test_reboots.content = reboots
|
908
|
+
test_crashes = Nokogiri::XML::Node.new("crashes",test)
|
909
|
+
test_crashes.content = crashes
|
910
|
+
test_start_time = Nokogiri::XML::Node.new("start_time",test)
|
911
|
+
test_start_time.content = start_time.strftime("%d.%m.%Y %H:%M:%S")
|
912
|
+
test_duration = Nokogiri::XML::Node.new("duration",test)
|
913
|
+
test_duration.content = duration
|
914
|
+
test_memory_usage = Nokogiri::XML::Node.new("memory_usage",test)
|
915
|
+
test_memory_usage.content = memory_usage
|
916
|
+
test_status = Nokogiri::XML::Node.new("status",test)
|
917
|
+
test_status.content = status
|
918
|
+
test_index = Nokogiri::XML::Node.new("index",test)
|
919
|
+
test_index.content = index
|
920
|
+
test_log = Nokogiri::XML::Node.new("log",test)
|
921
|
+
test_log.content = log
|
922
|
+
test_comment = Nokogiri::XML::Node.new("comment",test)
|
923
|
+
test_comment.content = comment
|
924
|
+
test_link = Nokogiri::XML::Node.new("link",test)
|
925
|
+
test_link.content = html_link
|
926
|
+
test_connection_errors = Nokogiri::XML::Node.new("connection_errors",test)
|
927
|
+
test_connection_errors.content = connection_errors
|
928
|
+
test_dump_count = Nokogiri::XML::Node.new("dump_count",test)
|
929
|
+
test_dump_count.content = calculate_total_values_from_hash(total_dump)
|
930
|
+
test_sent_bytes = Nokogiri::XML::Node.new("sent_bytes",test)
|
931
|
+
test_sent_bytes.content = calculate_total_values_from_hash(total_sent)
|
932
|
+
test_received_bytes = Nokogiri::XML::Node.new("received_bytes",test)
|
933
|
+
test_received_bytes.content = calculate_total_values_from_hash(total_received)
|
934
|
+
|
935
|
+
test << test_name
|
936
|
+
test << test_group
|
937
|
+
test << test_reboots
|
938
|
+
test << test_crashes
|
939
|
+
test << test_start_time
|
940
|
+
test << test_duration
|
941
|
+
test << test_memory_usage
|
942
|
+
test << test_status
|
943
|
+
test << test_index
|
944
|
+
test << test_log
|
945
|
+
test << test_comment
|
946
|
+
test << test_link
|
947
|
+
test << test_connection_errors
|
948
|
+
test << test_dump_count
|
949
|
+
test << test_sent_bytes
|
950
|
+
test << test_received_bytes
|
951
|
+
|
952
|
+
if user_data!=nil && !user_data.empty?
|
953
|
+
test_data = Nokogiri::XML::Node.new("user_display_data",test)
|
954
|
+
user_data.each { |key,value|
|
955
|
+
data_value=Nokogiri::XML::Node.new("data",test_data)
|
956
|
+
data_value.content = value.to_s
|
957
|
+
data_value.set_attribute("id",key.to_s)
|
958
|
+
test_data << data_value
|
959
|
+
}
|
960
|
+
test<<test_data
|
961
|
+
end
|
962
|
+
|
963
|
+
|
964
|
+
if user_data_rows!=nil && !user_data_columns.empty?
|
965
|
+
|
966
|
+
test_data = Nokogiri::XML::Node.new("user_table_data",test)
|
967
|
+
#create the table rows
|
968
|
+
user_data_rows.each do |row_hash|
|
969
|
+
row_hash.sort{|a,b| a[0]<=>b[0]}.each do |value|
|
970
|
+
data_value=Nokogiri::XML::Node.new("column",test_data)
|
971
|
+
data_value.set_attribute("name",value[0].to_s)
|
972
|
+
data_value.content = value[1].to_s
|
973
|
+
test_data << data_value
|
974
|
+
end
|
975
|
+
end
|
976
|
+
test<<test_data
|
977
|
+
end
|
978
|
+
|
979
|
+
if @test_case_user_xml_data!=nil
|
980
|
+
test_data = Nokogiri::XML::Node.new("non_display_data",test)
|
981
|
+
#create the table rows
|
982
|
+
@test_case_user_xml_data.each_key do |key|
|
983
|
+
data_value=Nokogiri::XML::Node.new("data",test_data)
|
984
|
+
data_value.set_attribute("id",key.to_s)
|
985
|
+
data_value.content = @test_case_user_xml_data[key].to_s
|
986
|
+
test_data << data_value
|
987
|
+
end
|
988
|
+
test<<test_data
|
989
|
+
end
|
990
|
+
|
991
|
+
xml_data.root.add_child(test)
|
992
|
+
File.open(file, 'wb') {|f| f.write(xml_data) }
|
993
|
+
test=nil
|
994
|
+
xml_data=nil
|
995
|
+
else
|
996
|
+
counter=0
|
997
|
+
if user_data!=nil && !user_data.empty?
|
998
|
+
#to avoid odd number list for hash error!
|
999
|
+
user_data_keys = user_data.keys
|
1000
|
+
user_data_values = user_data.values
|
1001
|
+
counter = user_data_values.size-1
|
1002
|
+
end
|
1003
|
+
|
1004
|
+
builder = Nokogiri::XML::Builder.new do |xml|
|
1005
|
+
xml.tests {
|
1006
|
+
xml.test {
|
1007
|
+
xml.name testcase
|
1008
|
+
xml.group group
|
1009
|
+
xml.reboots reboots
|
1010
|
+
xml.crashes crashes
|
1011
|
+
xml.start_time start_time.strftime("%d.%m.%Y %H:%M:%S")
|
1012
|
+
xml.duration duration
|
1013
|
+
xml.memory_usage memory_usage
|
1014
|
+
xml.status status
|
1015
|
+
xml.index index
|
1016
|
+
xml.log log
|
1017
|
+
xml.comment comment
|
1018
|
+
xml.link html_link
|
1019
|
+
xml.connection_errors connection_errors
|
1020
|
+
xml.dump_count calculate_total_values_from_hash(total_dump)
|
1021
|
+
xml.sent_bytes calculate_total_values_from_hash(total_sent)
|
1022
|
+
xml.received_bytes calculate_total_values_from_hash(total_received)
|
1023
|
+
|
1024
|
+
if user_data!=nil && !user_data.empty?
|
1025
|
+
xml.user_display_data {
|
1026
|
+
(0..counter).each { |i|
|
1027
|
+
xml.data("id"=>user_data_keys.at(i).to_s){
|
1028
|
+
xml.text user_data_values.at(i).to_s{
|
1029
|
+
}
|
1030
|
+
}
|
1031
|
+
}
|
1032
|
+
}
|
1033
|
+
end
|
1034
|
+
|
1035
|
+
if user_data_rows!=nil && !user_data_columns.empty?
|
1036
|
+
|
1037
|
+
xml.user_table_data{
|
1038
|
+
#create the table rows
|
1039
|
+
user_data_rows.each do |row_hash|
|
1040
|
+
row_hash.sort{|a,b| a[0]<=>b[0]}.each do |value|
|
1041
|
+
xml.column("name"=>value[0].to_s){
|
1042
|
+
xml.text value[1].to_s
|
1043
|
+
}
|
1044
|
+
end
|
1045
|
+
end
|
1046
|
+
}
|
1047
|
+
|
1048
|
+
end
|
1049
|
+
|
1050
|
+
|
1051
|
+
if @test_case_user_xml_data!=nil
|
1052
|
+
|
1053
|
+
xml.non_display_data{
|
1054
|
+
#create the table rows
|
1055
|
+
@test_case_user_xml_data.each_key do |key|
|
1056
|
+
|
1057
|
+
xml.data("id"=>key.to_s){
|
1058
|
+
xml.text @test_case_user_xml_data[key].to_s
|
1059
|
+
}
|
1060
|
+
|
1061
|
+
end
|
1062
|
+
}
|
1063
|
+
|
1064
|
+
end
|
1065
|
+
|
1066
|
+
}
|
1067
|
+
}
|
1068
|
+
end
|
1069
|
+
File.open(file, 'w') {|f| f.write(builder.to_xml) }
|
1070
|
+
end
|
1071
|
+
$result_storage_in_use=false
|
1072
|
+
builder=nil
|
1073
|
+
rescue Nokogiri::XML::SyntaxError => e
|
1074
|
+
$result_storage_in_use=false
|
1075
|
+
$stderr.puts "caught exception when writing results: #{e}"
|
1076
|
+
end
|
1077
|
+
end
|
1078
|
+
|
1079
|
+
def parse_results_for_current_test( by_status )
|
1080
|
+
|
1081
|
+
ret_xml = nil
|
1082
|
+
while $result_storage_in_use==true
|
1083
|
+
sleep 1
|
1084
|
+
end
|
1085
|
+
$result_storage_in_use=true
|
1086
|
+
begin
|
1087
|
+
result_storage=nil
|
1088
|
+
result_storage=Array.new
|
1089
|
+
storage_file='all_cases.xml'
|
1090
|
+
|
1091
|
+
|
1092
|
+
file=@report_folder+'/'+storage_file
|
1093
|
+
if File.exist?(file)
|
1094
|
+
io = File.open(file, 'r')
|
1095
|
+
ret_xml = Nokogiri::XML(io){ |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
|
1096
|
+
|
1097
|
+
io.close
|
1098
|
+
|
1099
|
+
status_search = ""
|
1100
|
+
|
1101
|
+
case by_status
|
1102
|
+
when "all"
|
1103
|
+
status_search = ""
|
1104
|
+
when "passed"
|
1105
|
+
status_search = " and (status='"
|
1106
|
+
status_search << @pass_statuses.join("' or status='")
|
1107
|
+
status_search << "')"
|
1108
|
+
when "failed"
|
1109
|
+
status_search = " and (status='"
|
1110
|
+
status_search << @fail_statuses.join("' or status='")
|
1111
|
+
status_search << "')"
|
1112
|
+
when "not run"
|
1113
|
+
status_search = " and (status='"
|
1114
|
+
status_search << @not_run_statuses.join("' or status='")
|
1115
|
+
status_search << "')"
|
1116
|
+
else
|
1117
|
+
status_search = " and status='" + by_status + "'"
|
1118
|
+
end
|
1119
|
+
|
1120
|
+
ret_xml = ret_xml.root.xpath("//tests/test[name='#{$new_test_case.test_case_name}' and group='#{$new_test_case.test_case_group}'#{status_search}]")
|
1121
|
+
else
|
1122
|
+
#puts "No file " << storage_file
|
1123
|
+
end
|
1124
|
+
rescue Exception => e
|
1125
|
+
$result_storage_in_use=false
|
1126
|
+
raise e
|
1127
|
+
|
1128
|
+
end
|
1129
|
+
|
1130
|
+
$result_storage_in_use=false
|
1131
|
+
|
1132
|
+
ret_xml
|
1133
|
+
|
1134
|
+
end
|
1135
|
+
|
1136
|
+
def read_result_storage(results,case_name=nil)
|
1137
|
+
while $result_storage_in_use==true
|
1138
|
+
sleep 1
|
1139
|
+
end
|
1140
|
+
$result_storage_in_use=true
|
1141
|
+
begin
|
1142
|
+
result_storage=nil
|
1143
|
+
result_storage=Array.new
|
1144
|
+
storage_file='all_cases.xml'
|
1145
|
+
|
1146
|
+
nodes=Nokogiri::XML::NodeSet
|
1147
|
+
|
1148
|
+
file=@report_folder+'/'+storage_file
|
1149
|
+
if File.exist?(file)
|
1150
|
+
io = File.open(file, 'rb')
|
1151
|
+
xml_data = Nokogiri::XML(io){ |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
|
1152
|
+
io.close
|
1153
|
+
if case_name
|
1154
|
+
nodes=xml_data.root.xpath("//tests/test[name='#{case_name}' and status='#{results.gsub('_',' ')}']")
|
1155
|
+
elsif results=='crash'
|
1156
|
+
nodes=xml_data.root.xpath("//tests/test[crashes>0]")
|
1157
|
+
elsif results=='reboot'
|
1158
|
+
nodes=xml_data.root.xpath("//tests/test[reboots>0]")
|
1159
|
+
elsif results=='connection_errors'
|
1160
|
+
nodes=xml_data.root.xpath("//tests/test[connection_errors>0]")
|
1161
|
+
elsif results!='all' && results!='crash' && results!='reboot' && results!='connection_errors'
|
1162
|
+
case results
|
1163
|
+
when 'passed'
|
1164
|
+
|
1165
|
+
nodes=xml_data.root.xpath("//tests/test[status='#{@pass_statuses.first}']")
|
1166
|
+
|
1167
|
+
when 'failed'
|
1168
|
+
|
1169
|
+
nodes=xml_data.root.xpath("//tests/test[status='#{@fail_statuses.first}']")
|
1170
|
+
|
1171
|
+
when 'not_run'
|
1172
|
+
|
1173
|
+
nodes=xml_data.root.xpath("//tests/test[status='#{@not_run_statuses.first}']")
|
1174
|
+
|
1175
|
+
end
|
1176
|
+
else
|
1177
|
+
if @report_exclude_passed_cases=='true'
|
1178
|
+
nodes=xml_data.root.xpath("//tests/test[status!='passed']")
|
1179
|
+
else
|
1180
|
+
nodes=xml_data.root.xpath("//tests/test")
|
1181
|
+
end
|
1182
|
+
|
1183
|
+
end
|
1184
|
+
|
1185
|
+
nodes.each do |node|
|
1186
|
+
value=node.search("name").text #0
|
1187
|
+
group=node.search("group").text #1
|
1188
|
+
reboots=node.search("reboots").text #2
|
1189
|
+
crashes=node.search("crashes").text #3
|
1190
|
+
start_time=node.search("start_time").text #4
|
1191
|
+
duration="%0.2f" % node.search("duration").text #5
|
1192
|
+
memory_usage=node.search("memory_usage").text #6
|
1193
|
+
status=node.search("status").text #7
|
1194
|
+
index=node.search("index").text #8
|
1195
|
+
log=node.search("log").text #9
|
1196
|
+
comment=node.search("comment").text #10
|
1197
|
+
link=node.search("link").text #11
|
1198
|
+
dump_count=node.search("dump_count").text #12
|
1199
|
+
sent_bytes=node.search("sent_bytes").text #13
|
1200
|
+
received_bytes=node.search("received_bytes").text #14
|
1201
|
+
connection_errors=node.search("connection_errors").text #15
|
1202
|
+
user_data = Hash.new
|
1203
|
+
node.xpath("user_display_data/data").each do |data_node|
|
1204
|
+
value_name = data_node.get_attribute("id")
|
1205
|
+
val = data_node.text
|
1206
|
+
user_data[value_name] = val
|
1207
|
+
end
|
1208
|
+
|
1209
|
+
current_record=[value,
|
1210
|
+
group,
|
1211
|
+
reboots,
|
1212
|
+
crashes,
|
1213
|
+
start_time,
|
1214
|
+
duration,
|
1215
|
+
memory_usage,
|
1216
|
+
status,
|
1217
|
+
index,
|
1218
|
+
log,
|
1219
|
+
comment,
|
1220
|
+
link,
|
1221
|
+
user_data,
|
1222
|
+
dump_count,
|
1223
|
+
sent_bytes,
|
1224
|
+
received_bytes,
|
1225
|
+
connection_errors
|
1226
|
+
]
|
1227
|
+
|
1228
|
+
result_storage << current_record
|
1229
|
+
|
1230
|
+
end
|
1231
|
+
xml_data=nil
|
1232
|
+
$result_storage_in_use=false
|
1233
|
+
result_storage
|
1234
|
+
else
|
1235
|
+
$result_storage_in_use=false
|
1236
|
+
result_storage
|
1237
|
+
end
|
1238
|
+
rescue Nokogiri::XML::SyntaxError => e
|
1239
|
+
$result_storage_in_use=false
|
1240
|
+
$stderr.puts "caught exception when reading results: #{e}"
|
1241
|
+
result_storage
|
1242
|
+
end
|
1243
|
+
end
|
1244
|
+
|
1245
|
+
def delete_result_storage()
|
1246
|
+
storage_file='passed_cases.xml'
|
1247
|
+
file=@report_folder+'/'+storage_file
|
1248
|
+
if File.exist?(file)
|
1249
|
+
File.delete(file)
|
1250
|
+
end
|
1251
|
+
|
1252
|
+
storage_file='failed_cases.xml'
|
1253
|
+
file=@report_folder+'/'+storage_file
|
1254
|
+
if File.exist?(file)
|
1255
|
+
File.delete(file)
|
1256
|
+
end
|
1257
|
+
|
1258
|
+
storage_file='not_run_cases.xml'
|
1259
|
+
file=@report_folder+'/'+storage_file
|
1260
|
+
if File.exist?(file)
|
1261
|
+
File.delete(file)
|
1262
|
+
end
|
1263
|
+
|
1264
|
+
storage_file='all_cases.xml'
|
1265
|
+
file=@report_folder+'/'+storage_file
|
1266
|
+
if File.exist?(file)
|
1267
|
+
File.delete(file)
|
1268
|
+
end
|
1269
|
+
end
|
1270
|
+
#This method disconencts the connected devices
|
1271
|
+
#
|
1272
|
+
# === params
|
1273
|
+
# status: last run test case
|
1274
|
+
# === returns
|
1275
|
+
# nil
|
1276
|
+
# === raises
|
1277
|
+
def disconnect_connected_devices()
|
1278
|
+
if $parameters[ :report_disconnect_connected_devices, false ] == 'true'
|
1279
|
+
TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
|
1280
|
+
sut_attributes[:sut].disconnect() if sut_attributes[:is_connected]
|
1281
|
+
end
|
1282
|
+
end
|
1283
|
+
end
|
1284
|
+
|
1285
|
+
def split_array(splittable_array,chunks)
|
1286
|
+
a = []
|
1287
|
+
splittable_array.each_with_index do |x,i|
|
1288
|
+
a << [] if i % chunks == 0
|
1289
|
+
a.last << x
|
1290
|
+
end
|
1291
|
+
a
|
1292
|
+
end
|
1293
|
+
|
1294
|
+
|
1295
|
+
|
1296
|
+
#This method updates the tdriver test run enviroment page
|
1297
|
+
#
|
1298
|
+
# === params
|
1299
|
+
# status: last run test case
|
1300
|
+
# === returns
|
1301
|
+
# nil
|
1302
|
+
# === raises
|
1303
|
+
def update_test_case_summary_page(status,rewrite=false,title="",test_case_name=nil,tc_result_arr=nil)
|
1304
|
+
@cases_arr=Array.new
|
1305
|
+
search_case = nil
|
1306
|
+
if @pass_statuses.include?(status)
|
1307
|
+
search_case = "passed"
|
1308
|
+
return if @report_exclude_passed_cases=='true'
|
1309
|
+
elsif @fail_statuses.include?(status)
|
1310
|
+
search_case = "failed"
|
1311
|
+
elsif @not_run_statuses.include?(status)
|
1312
|
+
search_case = "not_run"
|
1313
|
+
else
|
1314
|
+
search_case = status
|
1315
|
+
end
|
1316
|
+
status=status.gsub(' ','_')
|
1317
|
+
if test_case_name
|
1318
|
+
@cases_arr=read_result_storage(search_case,test_case_name)
|
1319
|
+
else
|
1320
|
+
@cases_arr=read_result_storage(search_case)
|
1321
|
+
end
|
1322
|
+
splitted_arr=Array.new
|
1323
|
+
splitted_arr=split_array(@cases_arr,@pages.to_i)
|
1324
|
+
page=1
|
1325
|
+
splitted_arr.each do |case_arr|
|
1326
|
+
|
1327
|
+
if test_case_name
|
1328
|
+
if @report_pages_ready.include?("#{page}_#{status}_#{test_case_name}")==false || rewrite==true
|
1329
|
+
write_page_start(@report_folder+"/cases/#{page}_#{status}_#{test_case_name}_index.html",title,page,splitted_arr.length)
|
1330
|
+
write_test_case_summary_body(@report_folder+"/cases/#{page}_#{status}_#{test_case_name}_index.html",status,case_arr,nil)
|
1331
|
+
page_ready=write_page_end(@report_folder+"/cases/#{page}_#{status}_#{test_case_name}_index.html",page,splitted_arr.length)
|
1332
|
+
end
|
1333
|
+
else
|
1334
|
+
if @report_pages_ready.include?("#{page}_#{status}")==false || rewrite==true
|
1335
|
+
write_page_start(@report_folder+"/cases/#{page}_#{status}_index.html",title,page,splitted_arr.length)
|
1336
|
+
write_test_case_summary_body(@report_folder+"/cases/#{page}_#{status}_index.html",status,case_arr,nil)
|
1337
|
+
page_ready=write_page_end(@report_folder+"/cases/#{page}_#{status}_index.html",page,splitted_arr.length)
|
1338
|
+
end
|
1339
|
+
end
|
1340
|
+
if page_ready!=nil
|
1341
|
+
@report_pages_ready << "#{page_ready}_#{status}"
|
1342
|
+
end
|
1343
|
+
page_ready=nil
|
1344
|
+
page+=1
|
1345
|
+
end
|
1346
|
+
|
1347
|
+
end
|
1348
|
+
#This method updates the tdriver test run enviroment pages
|
1349
|
+
#
|
1350
|
+
# === params
|
1351
|
+
# status: last run test case
|
1352
|
+
# === returns
|
1353
|
+
# nil
|
1354
|
+
# === raises
|
1355
|
+
def update_test_case_summary_pages(status,rewrite=false)
|
1356
|
+
|
1357
|
+
@all_cases_arr=Array.new
|
1358
|
+
begin
|
1359
|
+
case status
|
1360
|
+
when 'passed'
|
1361
|
+
update_test_case_summary_page(status,rewrite,'Passed')
|
1362
|
+
|
1363
|
+
when 'failed'
|
1364
|
+
update_test_case_summary_page(status,rewrite,'Failed')
|
1365
|
+
|
1366
|
+
when 'not run'
|
1367
|
+
update_test_case_summary_page('not_run',rewrite,'Not run')
|
1368
|
+
|
1369
|
+
when 'statistics'
|
1370
|
+
@all_cases_arr=read_result_storage('all')
|
1371
|
+
write_page_start(@report_folder+'/cases/statistics_index.html','Statistics')
|
1372
|
+
write_test_case_summary_body(@report_folder+'/cases/statistics_index.html','statistics',@all_cases_arr)
|
1373
|
+
write_duration_graph(@report_folder+'/cases/statistics_index.html', @report_folder, 'duration_graph.png', @all_cases_arr) if @duration_graph=='true'
|
1374
|
+
write_page_end(@report_folder+'/cases/statistics_index.html')
|
1375
|
+
when 'all'
|
1376
|
+
@all_cases_arr=read_result_storage(status)
|
1377
|
+
splitted_arr=Array.new
|
1378
|
+
splitted_arr=split_array(@all_cases_arr,@pages.to_i)
|
1379
|
+
page=1
|
1380
|
+
splitted_arr.each do |case_arr|
|
1381
|
+
if File.exist?(@report_folder+"/cases/#{page+1}_total_run_index.html")==false || rewrite==true
|
1382
|
+
if @report_pages_ready.include?("#{page}_all")==false || rewrite==true
|
1383
|
+
write_page_start(@report_folder+"/cases/#{page}_total_run_index.html",'Total run',page,splitted_arr.length)
|
1384
|
+
write_page_start(@report_folder+"/cases/#{page}_chronological_total_run_index.html",'Total run',page,splitted_arr.length)
|
1385
|
+
write_test_case_summary_body(@report_folder+"/cases/#{page}_total_run_index.html",'total run',case_arr,@report_folder+"/cases/#{page}_chronological_total_run_index.html",page)
|
1386
|
+
end
|
1387
|
+
end
|
1388
|
+
write_page_end(@report_folder+"/cases/#{page}_chronological_total_run_index.html",page,splitted_arr.length) if @report_pages_ready.include?("#{page}_all")==false || rewrite==true
|
1389
|
+
page_ready=write_page_end(@report_folder+"/cases/#{page}_total_run_index.html",page,splitted_arr.length) if @report_pages_ready.include?("#{page}_all")==false || rewrite==true
|
1390
|
+
|
1391
|
+
if page_ready!=nil
|
1392
|
+
@report_pages_ready << "#{page_ready}_all"
|
1393
|
+
end
|
1394
|
+
page_ready=nil
|
1395
|
+
page+=1
|
1396
|
+
end
|
1397
|
+
end
|
1398
|
+
@all_cases_arr=nil
|
1399
|
+
update_test_case_summary_pages_for_crashes_and_reboots(rewrite)
|
1400
|
+
rescue Exception => e
|
1401
|
+
puts e.backtrace
|
1402
|
+
raise e, "Unable to update test case summary pages", caller
|
1403
|
+
end
|
1404
|
+
return nil
|
1405
|
+
end
|
1406
|
+
|
1407
|
+
def update_test_case_summary_pages_for_crashes_and_reboots(rewrite=false)
|
1408
|
+
|
1409
|
+
begin
|
1410
|
+
update_test_case_summary_page('crash',rewrite,'Crash')
|
1411
|
+
update_test_case_summary_page('reboot',rewrite,'Reboot')
|
1412
|
+
update_test_case_summary_page('connection_errors',rewrite,'Connection Errors')
|
1413
|
+
rescue Exception => e
|
1414
|
+
raise e, "Unable to update test case summary pages for crashes and reboots", caller
|
1415
|
+
end
|
1416
|
+
return nil
|
1417
|
+
end
|
1418
|
+
|
1419
|
+
def create_csv
|
1420
|
+
storage_file='all_cases.xml'
|
1421
|
+
csv_file = 'all_cases.csv'
|
1422
|
+
csv_array = Array.new
|
1423
|
+
not_added=false
|
1424
|
+
|
1425
|
+
file=@report_folder+'/'+storage_file
|
1426
|
+
csv = nil
|
1427
|
+
begin
|
1428
|
+
if File.exist?(file)
|
1429
|
+
io = File.open(file, 'r')
|
1430
|
+
csv = File.new(@report_folder+'/'+ csv_file, 'w')
|
1431
|
+
xml_data = Nokogiri::XML(io){ |config| config.options = Nokogiri::XML::ParseOptions::STRICT }
|
1432
|
+
io.close
|
1433
|
+
xml_data.root.xpath("//tests/test").each do |node|
|
1434
|
+
|
1435
|
+
line=Array.new
|
1436
|
+
first_line=Array.new
|
1437
|
+
|
1438
|
+
value=node.search("name").text
|
1439
|
+
first_line<<"name" if !not_added
|
1440
|
+
line<<value
|
1441
|
+
start_time=node.search("start_time").text
|
1442
|
+
first_line<<"start_time" if !not_added
|
1443
|
+
line<<start_time
|
1444
|
+
duration=node.search("duration").text
|
1445
|
+
first_line<<"duration" if !not_added
|
1446
|
+
line<<duration
|
1447
|
+
memory_usage=node.search("memory_usage").text
|
1448
|
+
first_line<<"memory_usage" if !not_added
|
1449
|
+
line<<memory_usage
|
1450
|
+
status=node.search("status").text
|
1451
|
+
first_line<<"status" if !not_added
|
1452
|
+
line<<status
|
1453
|
+
|
1454
|
+
node.xpath("user_display_data/data").each do |data_node|
|
1455
|
+
value_name = data_node.get_attribute("id")
|
1456
|
+
value = data_node.text
|
1457
|
+
first_line<<value_name if !not_added
|
1458
|
+
line<<value
|
1459
|
+
end
|
1460
|
+
|
1461
|
+
csv.puts(first_line.join(",")) if !not_added
|
1462
|
+
csv.puts(line.join(","))
|
1463
|
+
not_added=true
|
1464
|
+
end
|
1465
|
+
csv.close
|
1466
|
+
else
|
1467
|
+
puts "Unable to create csv file"
|
1468
|
+
end
|
1469
|
+
rescue Exception => e
|
1470
|
+
puts "Error creating csv file"
|
1471
|
+
puts e.to_s
|
1472
|
+
end
|
1473
|
+
end
|
1474
|
+
|
1475
|
+
end
|
1476
|
+
end
|