testability-driver 1.0.4 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/tdriver-devtools +0 -0
- data/config/sut_setup.rb +32 -0
- data/config/sut_teardown.rb +32 -0
- data/ext/extconf.rb +3 -1
- data/lib/tdriver-devtools/behaviour/old/xml/update +0 -0
- data/lib/tdriver-devtools/behaviour/xml/generate.rb +0 -0
- data/lib/tdriver-devtools/doc/update +0 -0
- data/lib/tdriver-devtools/doc/xslt/update +0 -0
- data/lib/tdriver-devtools/tdriver-devtools.rb +0 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/application_closable_0x3f.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/application_close.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/application_environment.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/application_executable_name.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/application_uid.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/created.rid +1 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/find_find.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash_images.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_application.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_capture_screen.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_child.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_clear_verify_blocks.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_connect.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order_0x3d.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_current_application_id.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_disconnect.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_dump_count.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_freeze.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_frozen.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_application_id.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_object.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_operator_data.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_ui_dump.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_user_information.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_input.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_parameter.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_press_key.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_received_data.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh.feature +20 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_timeout.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_tries.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_ui_dump.feature +20 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_run.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_sent_data.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_state.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_translate.feature +30 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_type.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_version.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_unfreeze.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_update.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_always.feature +20 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_blocks.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_x_path.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_0x3d.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_crc.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_down.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_status.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_up.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_reset.feature +10 -0
- data/lib/tdriver-devtools/tests/feature_tests/output/verification_test_object_exists_0x3f.feature +15 -0
- data/lib/tdriver-devtools/tests/feature_tests/update +0 -0
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +4 -4
- data/lib/tdriver/base/behaviour/factory.rb +8 -0
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +24 -3
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +465 -354
- data/lib/tdriver/base/test_object/adapter.rb +2 -2
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +22 -5
- data/lib/tdriver/base/test_object/cache.rb +1 -1
- data/lib/tdriver/base/test_object/factory.rb +23 -3
- data/lib/tdriver/env.rb +0 -0
- data/lib/tdriver/loader.rb +0 -0
- data/lib/tdriver/matti.rb +0 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +22 -24
- data/lib/tdriver/report/report.rb +8 -1
- data/lib/tdriver/report/report_api.rb +18 -0
- data/lib/tdriver/report/report_combine.rb +1 -1
- data/lib/tdriver/report/report_creator.rb +5 -1
- data/lib/tdriver/report/report_execution_statistics.rb +105 -78
- data/lib/tdriver/report/report_test_case_run.rb +2 -1
- data/lib/tdriver/report/report_test_run.rb +187 -116
- data/lib/tdriver/report/report_writer.rb +49 -29
- data/lib/tdriver/tdriver.rb +14 -3
- data/lib/tdriver/util/common/exception.rb +53 -0
- data/lib/tdriver/util/common/hash.rb +79 -23
- data/lib/tdriver/util/common/numeric.rb +26 -5
- data/lib/tdriver/util/common/object.rb +44 -15
- data/lib/tdriver/util/common/string.rb +4 -1
- data/lib/tdriver/util/filters/dynamic_attributes.rb +2 -1
- data/lib/tdriver/util/keymap/keymap.rb +81 -0
- data/lib/tdriver/util/loader.rb +4 -1
- data/lib/tdriver/util/logger/logger.rb +17 -9
- data/lib/tdriver/util/other/config.rb +0 -0
- data/lib/tdriver/util/parameter/error.rb +3 -0
- data/lib/tdriver/util/parameter/loader.rb +6 -1
- data/lib/tdriver/util/parameter/parameter.rb +87 -14
- data/lib/tdriver/util/parameter/parameter_new.rb +869 -0
- data/lib/tdriver/util/parameter/parameter_template.rb +2 -2
- data/lib/tdriver/util/parameter/parameter_user_api.rb +27 -3
- data/lib/tdriver/util/parameter/parameter_xml.rb +36 -38
- data/lib/tdriver/version.rb +1 -1
- data/xml/templates/generic.xml +4 -10
- metadata +196 -138
@@ -44,12 +44,12 @@ module TDriver
|
|
44
44
|
if @@partial_match_allowed.include?( [ object_type, key ] )
|
45
45
|
|
46
46
|
prefix_value = "[contains(.,#{ value })]"
|
47
|
-
attribute_value = "contains(value
|
47
|
+
attribute_value = "contains(value/.,#{ value })"
|
48
48
|
|
49
49
|
else
|
50
50
|
|
51
51
|
prefix_value = "=#{ value }"
|
52
|
-
attribute_value = "value
|
52
|
+
attribute_value = "value/.=#{ value }"
|
53
53
|
|
54
54
|
end
|
55
55
|
|
@@ -178,7 +178,7 @@ module MobyBehaviour
|
|
178
178
|
# TODO: add behaviour logging?
|
179
179
|
|
180
180
|
# raise exception if attribute name variable type is other than string
|
181
|
-
name.check_type( [ String, Symbol ], "
|
181
|
+
name.check_type( [ String, Symbol ], "wrong argument type $1 for attribute (expected $2)" )
|
182
182
|
|
183
183
|
# convert name to string if variable type is symbol
|
184
184
|
name = name.to_s if name.kind_of?( Symbol )
|
@@ -384,7 +384,7 @@ module MobyBehaviour
|
|
384
384
|
def child( attributes )
|
385
385
|
|
386
386
|
# verify attributes argument format
|
387
|
-
attributes.check_type( Hash, "
|
387
|
+
attributes.check_type( Hash, "wrong argument type $1 for attributes (expected $2)" )
|
388
388
|
|
389
389
|
get_child_objects( attributes )
|
390
390
|
|
@@ -424,10 +424,10 @@ module MobyBehaviour
|
|
424
424
|
def children( attributes, find_all_children = true )
|
425
425
|
|
426
426
|
# verify attributes argument format
|
427
|
-
attributes.check_type( Hash, "
|
427
|
+
attributes.check_type( Hash, "wrong argument type $1 for attributes (expected $2)" )
|
428
428
|
|
429
429
|
# verify find_all_children argument format
|
430
|
-
find_all_children.check_type( [ TrueClass, FalseClass ], "
|
430
|
+
find_all_children.check_type( [ TrueClass, FalseClass ], "wrong argument type $1 for find_all_children (expected $2)" )
|
431
431
|
|
432
432
|
# If empty or only special attributes then add :type => '*' to search all
|
433
433
|
attributes[ :type ] = '*' if attributes.select{ | key, value | key.to_s !~ /^__/ ? true : false }.empty?
|
@@ -485,6 +485,9 @@ module MobyBehaviour
|
|
485
485
|
# compare new environment value with previous
|
486
486
|
if @env != previous_environment
|
487
487
|
|
488
|
+
# remove cached behaviour module
|
489
|
+
MobyBase::BehaviourFactory.instance.reset_modules_cache
|
490
|
+
|
488
491
|
# reapply behaviours to test object if environment value has changed
|
489
492
|
MobyBase::BehaviourFactory.instance.apply_behaviour!(
|
490
493
|
|
@@ -603,6 +606,20 @@ module MobyBehaviour
|
|
603
606
|
# NOTICE: Please do not add anything unnessecery to this method, it might cause a major performance impact
|
604
607
|
#
|
605
608
|
|
609
|
+
# for backwards compatibility
|
610
|
+
if attributes.has_key?( :__logging )
|
611
|
+
|
612
|
+
# for backward compatibility
|
613
|
+
if attributes[ :__logging ].kind_of?( String )
|
614
|
+
|
615
|
+
warn "warning: deprecated variable type String for :__logging test object creation directive (expected TrueClass or FalseClass)"
|
616
|
+
|
617
|
+
attributes[ :__logging ] = attributes[ :__logging ].to_boolean
|
618
|
+
|
619
|
+
end
|
620
|
+
|
621
|
+
end
|
622
|
+
|
606
623
|
# store original hash
|
607
624
|
creation_hash = attributes.clone
|
608
625
|
|
@@ -613,7 +630,7 @@ module MobyBehaviour
|
|
613
630
|
|
614
631
|
[ TrueClass, FalseClass ],
|
615
632
|
|
616
|
-
"
|
633
|
+
"wrong value type $1 for :__logging test object creation directive (expected $2)"
|
617
634
|
|
618
635
|
) if dynamic_attributes.has_key?( :__logging )
|
619
636
|
|
@@ -95,7 +95,7 @@ module TDriver
|
|
95
95
|
test_object_hash = test_object.hash
|
96
96
|
|
97
97
|
if @objects.has_key?( test_object_hash )
|
98
|
-
warn( "
|
98
|
+
warn( "warning: Test object (#{ test_object_hash }) already exists in cache" )
|
99
99
|
end
|
100
100
|
|
101
101
|
@objects[ test_object_hash ] = test_object
|
@@ -178,17 +178,37 @@ module MobyBase
|
|
178
178
|
|
179
179
|
# Fixnum
|
180
180
|
when :__index, :__timeout
|
181
|
+
|
182
|
+
# for backward compatibility
|
183
|
+
if value.kind_of?( String )
|
184
|
+
|
185
|
+
warn "warning: deprecated variable type String for #{ key.inspect } test object identification directive (expected TrueClass or FalseClass)"
|
186
|
+
|
187
|
+
raise ArgumentError, "deprecated and wrong variable content format for #{ key.inspect } test object identification directive (expected Numeric string)" unless value.numeric?
|
188
|
+
|
189
|
+
value = value.to_i
|
190
|
+
|
191
|
+
end
|
181
192
|
|
182
193
|
type = Fixnum
|
183
194
|
|
184
195
|
when :__logging, :__xy_sorting
|
196
|
+
|
197
|
+
# for backward compatibility
|
198
|
+
if value.kind_of?( String )
|
199
|
+
|
200
|
+
warn "warning: deprecated variable type String for #{ key.inspect } test object identification directive (expected TrueClass or FalseClass)"
|
201
|
+
|
202
|
+
value = value.to_boolean
|
203
|
+
|
204
|
+
end
|
185
205
|
|
186
206
|
type = [ TrueClass, FalseClass ]
|
187
207
|
|
188
208
|
end
|
189
209
|
|
190
210
|
# verify hash value if type defined
|
191
|
-
value.check_type( type, "
|
211
|
+
value.check_type( type, "wrong variable type $1 for #{ key.inspect } test object identification directive (expected $2)" ) unless type.nil?
|
192
212
|
|
193
213
|
}
|
194
214
|
|
@@ -499,7 +519,7 @@ module MobyBase
|
|
499
519
|
|
500
520
|
def set_timeout( new_timeout )
|
501
521
|
|
502
|
-
warn
|
522
|
+
warn "warning: deprecated method TestObjectFactory#set_timeout( value ); please use TestObjectFactory#timeout=( value ) instead"
|
503
523
|
|
504
524
|
self.timeout = new_timeout
|
505
525
|
|
@@ -511,7 +531,7 @@ module MobyBase
|
|
511
531
|
# Numeric:: Timeout
|
512
532
|
def get_timeout
|
513
533
|
|
514
|
-
warn
|
534
|
+
warn "warning: deprecated method TestObjectFactory#get_timeout; please use TestObjectFactory#timeout instead"
|
515
535
|
|
516
536
|
@timeout
|
517
537
|
|
data/lib/tdriver/env.rb
CHANGED
File without changes
|
data/lib/tdriver/loader.rb
CHANGED
File without changes
|
data/lib/tdriver/matti.rb
CHANGED
File without changes
|
@@ -1,20 +1,20 @@
|
|
1
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
|
-
##
|
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
18
|
############################################################################
|
19
19
|
|
20
20
|
|
@@ -88,7 +88,7 @@ module TDriverErrorRecovery
|
|
88
88
|
current_reconnect_attempt+=1
|
89
89
|
end
|
90
90
|
end
|
91
|
-
Kernel::raise BehaviourError.new("Error Recovery", "Error recovery failed after #{attempt_reconnects}
|
91
|
+
Kernel::raise BehaviourError.new("Error Recovery", "Error recovery failed after #{attempt_reconnects} recovery attempts") if b_error_recovery_succesful==false
|
92
92
|
end
|
93
93
|
|
94
94
|
# Reconnects the devices without ping
|
@@ -96,7 +96,7 @@ module TDriverErrorRecovery
|
|
96
96
|
# === returns
|
97
97
|
# === raises
|
98
98
|
def reconnect_devices()
|
99
|
-
|
99
|
+
|
100
100
|
MobyBase::SUTFactory.instance.connected_suts.each do |sut_id, sut_attributes|
|
101
101
|
suts=@recovery_settings.get_monitored_sut
|
102
102
|
suts.each do |monitored_sut|
|
@@ -105,8 +105,7 @@ module TDriverErrorRecovery
|
|
105
105
|
end
|
106
106
|
end
|
107
107
|
end
|
108
|
-
|
109
|
-
end
|
108
|
+
|
110
109
|
end
|
111
110
|
|
112
111
|
# Ping the current SUT by querying xml state
|
@@ -119,7 +118,7 @@ module TDriverErrorRecovery
|
|
119
118
|
def ping_device(current_sut)
|
120
119
|
begin
|
121
120
|
xml_state=current_sut.get_ui_dump()
|
122
|
-
if xml_state==
|
121
|
+
if xml_state.to_s.include?("tasMessage")==false
|
123
122
|
MobyUtil::Logger.instance.log "behaviour" , "WARNING;Device ping failed"
|
124
123
|
false
|
125
124
|
else
|
@@ -127,6 +126,8 @@ module TDriverErrorRecovery
|
|
127
126
|
true
|
128
127
|
end
|
129
128
|
rescue Exception => e
|
129
|
+
puts e.message
|
130
|
+
puts e.backtrace
|
130
131
|
MobyUtil::Logger.instance.log "behaviour" , "WARNING;Device ping failed"
|
131
132
|
false
|
132
133
|
end
|
@@ -139,7 +140,6 @@ module TDriverErrorRecovery
|
|
139
140
|
def ping_devices_and_reconnect()
|
140
141
|
resetted=false
|
141
142
|
MobyBase::SUTFactory.instance.connected_suts.each do |sut_id, sut_attributes|
|
142
|
-
begin
|
143
143
|
suts=@recovery_settings.get_monitored_sut
|
144
144
|
suts.each do |monitored_sut|
|
145
145
|
if sut_id.to_s==monitored_sut.to_s
|
@@ -149,8 +149,6 @@ module TDriverErrorRecovery
|
|
149
149
|
end
|
150
150
|
end
|
151
151
|
end
|
152
|
-
rescue
|
153
|
-
end
|
154
152
|
end
|
155
153
|
resetted
|
156
154
|
end
|
@@ -17,6 +17,8 @@
|
|
17
17
|
##
|
18
18
|
############################################################################
|
19
19
|
|
20
|
+
require 'fileutils'
|
21
|
+
require 'date'
|
20
22
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'error_recovery/tdriver_error_recovery_settings' ) )
|
21
23
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'error_recovery/tdriver_error_recovery' ) )
|
22
24
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'error_recovery/tdriver_custom_error_recovery' ) )
|
@@ -24,7 +26,12 @@ require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_file_capt
|
|
24
26
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_crash_file_capture' ) )
|
25
27
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_javascript' ) )
|
26
28
|
|
27
|
-
|
29
|
+
begin
|
30
|
+
#Gem for formatting execution duration time
|
31
|
+
require 'chronic_duration'
|
32
|
+
rescue LoadError
|
33
|
+
#Gem not available do nothing
|
34
|
+
end
|
28
35
|
|
29
36
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_writer' ) )
|
30
37
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_combine' ) )
|
@@ -20,6 +20,24 @@
|
|
20
20
|
|
21
21
|
module TDriverReportAPI
|
22
22
|
|
23
|
+
def tdriver_get_current_by_status( status_type )
|
24
|
+
Kernel::raise TypeError.new("Argument to method cannot be nil.") if status_type.nil?
|
25
|
+
ret = []
|
26
|
+
if $tdriver_reporter!=nil
|
27
|
+
ret = $tdriver_reporter.parse_results_for_current_test(status_type)
|
28
|
+
end
|
29
|
+
return ret
|
30
|
+
end
|
31
|
+
|
32
|
+
def tdriver_get_status(status_type)
|
33
|
+
Kernel::raise TypeError.new("Argument to method cannot be nil.") if status_type.nil?
|
34
|
+
ret = []
|
35
|
+
if $tdriver_reporter!=nil
|
36
|
+
ret = $tdriver_reporter.read_result_storage(status_type)
|
37
|
+
end
|
38
|
+
return ret
|
39
|
+
end
|
40
|
+
|
23
41
|
def tdriver_log_data(data)
|
24
42
|
Kernel::raise TypeError.new("Argument to method cannot be nil.") if data.nil?
|
25
43
|
if $tdriver_reporter!=nil
|
@@ -44,7 +44,7 @@ class ReportCombine
|
|
44
44
|
|
45
45
|
@total_passed=read_result_storage('passed').count
|
46
46
|
@total_failed=read_result_storage('failed').count
|
47
|
-
@total_not_run=read_result_storage('
|
47
|
+
@total_not_run=read_result_storage('not_run').count
|
48
48
|
@total_run=read_result_storage('all').count
|
49
49
|
|
50
50
|
$test_case_run_index+=executed_tests.count.to_i
|
@@ -65,6 +65,7 @@ module TDriverReportCreator
|
|
65
65
|
$tdriver_reporter.update_test_case_summary_pages('failed')
|
66
66
|
$tdriver_reporter.update_test_case_summary_pages('not run')
|
67
67
|
$tdriver_reporter.update_test_case_summary_pages('statistics')
|
68
|
+
$tdriver_reporter.group_results_by_test_case()
|
68
69
|
$tdriver_reporter.create_csv if MobyUtil::Parameter[ :create_run_table_csv, false ]=='true'
|
69
70
|
$new_junit_xml_results.create_junit_xml()
|
70
71
|
#$tdriver_reporter.delete_result_storage()
|
@@ -159,7 +160,8 @@ module TDriverReportCreator
|
|
159
160
|
$new_test_case.test_case_total_data_sent,
|
160
161
|
$new_test_case.test_case_total_data_received
|
161
162
|
)
|
162
|
-
|
163
|
+
|
164
|
+
|
163
165
|
$tdriver_reporter.set_end_time(Time.now)
|
164
166
|
$tdriver_reporter.set_total_run(1)
|
165
167
|
$tdriver_reporter.update_summary_page('inprogress')
|
@@ -169,11 +171,13 @@ module TDriverReportCreator
|
|
169
171
|
$run_status_thread_active=true
|
170
172
|
Thread.new do
|
171
173
|
begin
|
174
|
+
#Update test case summary pages
|
172
175
|
$tdriver_reporter.update_test_case_summary_pages('all')
|
173
176
|
$tdriver_reporter.update_test_case_summary_pages('passed')
|
174
177
|
$tdriver_reporter.update_test_case_summary_pages('failed')
|
175
178
|
$tdriver_reporter.update_test_case_summary_pages('not run')
|
176
179
|
$tdriver_reporter.update_test_case_summary_pages('statistics')
|
180
|
+
$tdriver_reporter.group_results_by_test_case()
|
177
181
|
$new_junit_xml_results.create_junit_xml()
|
178
182
|
#tdriver_log_page $tdriver_reporter.update_tdriver_log_page()
|
179
183
|
#ML: Update summary every 10 seconds improves performance during execution
|
@@ -25,7 +25,7 @@ class ReportingStatistics
|
|
25
25
|
@pass_statuses=MobyUtil::Parameter[ :report_passed_statuses, "passed" ].split('|')
|
26
26
|
@fail_statuses=MobyUtil::Parameter[ :report_failed_statuses, "failed" ].split('|')
|
27
27
|
@not_run_statuses=MobyUtil::Parameter[ :report_not_run_statuses, "not run" ].split('|')
|
28
|
-
@test_results_per_page=MobyUtil::Parameter[ :report_results_per_page,
|
28
|
+
@test_results_per_page=MobyUtil::Parameter[ :report_results_per_page, 50]
|
29
29
|
@statistics_arr=Array.new
|
30
30
|
@total_statistics_arr=Array.new
|
31
31
|
@summary=summary
|
@@ -52,8 +52,9 @@ class ReportingStatistics
|
|
52
52
|
@total_statistics_arr << ["dump count",0]
|
53
53
|
@total_statistics_arr << ["sent bytes",0]
|
54
54
|
@total_statistics_arr << ["received bytes",0]
|
55
|
-
@total_statistics_arr << ["used mem
|
56
|
-
@
|
55
|
+
@total_statistics_arr << ["used mem",0]
|
56
|
+
@total_statistics_arr << ["pass rate",0]
|
57
|
+
@all_statuses << "reboots" << "crashes" << "duration" << "dump count" << "sent bytes" << "received bytes" << "used mem" << "pass rate"
|
57
58
|
end
|
58
59
|
|
59
60
|
def generate_statistics_headers()
|
@@ -74,86 +75,102 @@ class ReportingStatistics
|
|
74
75
|
status_heads << "<th abbr=\"link_column\"><b>Sent bytes</b></th>"
|
75
76
|
status_heads << "<th abbr=\"link_column\"><b>Received bytes</b></th>"
|
76
77
|
status_heads << "<th abbr=\"link_column\"><b>Used mem</b></th>"
|
78
|
+
status_heads << "<th abbr=\"link_column\"><b>Pass %</b></th>"
|
77
79
|
status_heads
|
78
80
|
end
|
79
81
|
|
80
82
|
def update_total_execution_statistics(tc_status,reboots,crashes,dump_count,sent_bytes,received_bytes,memory_usage)
|
81
83
|
current_index=0
|
82
84
|
@total_statistics_arr.each do |total_status|
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
end
|
89
|
-
if total_status[0]=="crashes"
|
90
|
-
@total_statistics_arr[current_index]=["crashes",total_status[1].to_i+crashes.to_i]
|
91
|
-
end
|
92
|
-
if total_status[0]=="total"
|
93
|
-
@total_statistics_arr[current_index]=["total",total_status[1].to_i+1]
|
94
|
-
end
|
95
|
-
if total_status[0]=="duration"
|
96
|
-
@total_statistics_arr[current_index]=["duration",""]
|
97
|
-
end
|
98
|
-
if total_status[0]=="dump count"
|
99
|
-
@total_statistics_arr[current_index]=["dump count",total_status[1].to_i+dump_count.to_i]
|
100
|
-
end
|
101
|
-
if total_status[0]=="sent bytes"
|
102
|
-
@total_statistics_arr[current_index]=["sent bytes",total_status[1].to_i+sent_bytes.to_i]
|
103
|
-
end
|
104
|
-
if total_status[0]=="received bytes"
|
105
|
-
@total_statistics_arr[current_index]=["received bytes",total_status[1].to_i+received_bytes.to_i]
|
106
|
-
end
|
107
|
-
if total_status[0]=="used mem difference"
|
108
|
-
@total_statistics_arr[current_index]=["used mem difference",""]
|
109
|
-
end
|
110
|
-
current_index+=1
|
85
|
+
if tc_status==total_status[0]
|
86
|
+
@total_statistics_arr[current_index]=[tc_status,total_status[1].to_i+1]
|
87
|
+
end
|
88
|
+
if total_status[0]=="reboots"
|
89
|
+
@total_statistics_arr[current_index]=["reboots",total_status[1].to_i+reboots.to_i]
|
111
90
|
end
|
91
|
+
if total_status[0]=="crashes"
|
92
|
+
@total_statistics_arr[current_index]=["crashes",total_status[1].to_i+crashes.to_i]
|
93
|
+
end
|
94
|
+
if total_status[0]=="total"
|
95
|
+
@total_statistics_arr[current_index]=["total",total_status[1].to_i+1]
|
96
|
+
end
|
97
|
+
if total_status[0]=="duration"
|
98
|
+
@total_statistics_arr[current_index]=["duration",""]
|
99
|
+
end
|
100
|
+
if total_status[0]=="dump count"
|
101
|
+
@total_statistics_arr[current_index]=["dump count",total_status[1].to_i+dump_count.to_i]
|
102
|
+
end
|
103
|
+
if total_status[0]=="sent bytes"
|
104
|
+
@total_statistics_arr[current_index]=["sent bytes",total_status[1].to_i+sent_bytes.to_i]
|
105
|
+
end
|
106
|
+
if total_status[0]=="received bytes"
|
107
|
+
@total_statistics_arr[current_index]=["received bytes",total_status[1].to_i+received_bytes.to_i]
|
108
|
+
end
|
109
|
+
if total_status[0]=="used mem"
|
110
|
+
@total_statistics_arr[current_index]=["used mem",""]
|
111
|
+
end
|
112
|
+
if total_status[0]=="pass rate"
|
113
|
+
@total_statistics_arr[current_index]=["pass rate",""]
|
114
|
+
end
|
115
|
+
current_index+=1
|
116
|
+
end
|
112
117
|
end
|
113
118
|
|
114
119
|
def update_test_case_execution_statistics(tc_name,tc_status,tc_execution,duration,tc_link,reboots,crashes,dump_count,sent_bytes,received_bytes,memory_usage)
|
115
120
|
b_test_in_statistics=false
|
116
121
|
current_index=0
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
if total_status[1]=="total" && total_status[0]==tc_name
|
131
|
-
b_test_in_statistics=true
|
132
|
-
@statistics_arr[current_index]=[tc_name,"total",total_status[2].to_i+1,tc_execution,tc_link]
|
133
|
-
end
|
134
|
-
if total_status[1]=="duration" && total_status[0]==tc_name
|
135
|
-
b_test_in_statistics=true
|
136
|
-
@statistics_arr[current_index]=[tc_name,"duration",duration,tc_execution,tc_link]
|
137
|
-
end
|
138
|
-
if total_status[1]=="dump count" && total_status[0]==tc_name
|
139
|
-
b_test_in_statistics=true
|
140
|
-
@statistics_arr[current_index]=[tc_name,"dump count",total_status[2].to_i+dump_count.to_i,tc_execution,tc_link]
|
141
|
-
end
|
142
|
-
if total_status[1]=="sent bytes" && total_status[0]==tc_name
|
143
|
-
b_test_in_statistics=true
|
144
|
-
@statistics_arr[current_index]=[tc_name,"sent bytes",total_status[2].to_i+sent_bytes.to_i,tc_execution,tc_link]
|
145
|
-
end
|
146
|
-
if total_status[1]=="received bytes" && total_status[0]==tc_name
|
147
|
-
b_test_in_statistics=true
|
148
|
-
@statistics_arr[current_index]=[tc_name,"received bytes",total_status[2].to_i+received_bytes.to_i,tc_execution,tc_link]
|
149
|
-
end
|
150
|
-
if total_status[1]=="used mem difference" && total_status[0]==tc_name
|
151
|
-
b_test_in_statistics=true
|
152
|
-
@statistics_arr[current_index]=[tc_name,"used mem difference",total_status[2].to_i,tc_execution,tc_link]
|
153
|
-
end
|
154
|
-
current_index+=1
|
122
|
+
total_run=0
|
123
|
+
total_not_run=0
|
124
|
+
total_passed=0
|
125
|
+
@statistics_arr.each do |total_status|
|
126
|
+
if total_status[1]==tc_status && total_status[0]==tc_name
|
127
|
+
b_test_in_statistics=true
|
128
|
+
@statistics_arr[current_index]=[tc_name,tc_status,total_status[2].to_i+1,tc_execution,tc_link]
|
129
|
+
total_passed=total_status[2].to_i+1 if @pass_statuses.include?(total_status[1])
|
130
|
+
total_not_run=total_status[2].to_i+1 if @not_run_statuses.include?(total_status[1])
|
131
|
+
end
|
132
|
+
if total_status[1]=="reboots" && total_status[0]==tc_name
|
133
|
+
b_test_in_statistics=true
|
134
|
+
@statistics_arr[current_index]=[tc_name,"reboots",total_status[2].to_i+reboots.to_i,tc_execution,tc_link]
|
155
135
|
end
|
156
|
-
|
136
|
+
if total_status[1]=="crashes" && total_status[0]==tc_name
|
137
|
+
b_test_in_statistics=true
|
138
|
+
@statistics_arr[current_index]=[tc_name,"crashes",total_status[2].to_i+crashes.to_i,tc_execution,tc_link]
|
139
|
+
end
|
140
|
+
if total_status[1]=="total" && total_status[0]==tc_name
|
141
|
+
b_test_in_statistics=true
|
142
|
+
@statistics_arr[current_index]=[tc_name,"total",total_status[2].to_i+1,tc_execution,tc_link]
|
143
|
+
total_run=total_status[2].to_i+1
|
144
|
+
end
|
145
|
+
if total_status[1]=="duration" && total_status[0]==tc_name
|
146
|
+
b_test_in_statistics=true
|
147
|
+
@statistics_arr[current_index]=[tc_name,"duration",duration,tc_execution,tc_link]
|
148
|
+
end
|
149
|
+
if total_status[1]=="dump count" && total_status[0]==tc_name
|
150
|
+
b_test_in_statistics=true
|
151
|
+
@statistics_arr[current_index]=[tc_name,"dump count",total_status[2].to_i+dump_count.to_i,tc_execution,tc_link]
|
152
|
+
end
|
153
|
+
if total_status[1]=="sent bytes" && total_status[0]==tc_name
|
154
|
+
b_test_in_statistics=true
|
155
|
+
@statistics_arr[current_index]=[tc_name,"sent bytes",total_status[2].to_i+sent_bytes.to_i,tc_execution,tc_link]
|
156
|
+
end
|
157
|
+
if total_status[1]=="received bytes" && total_status[0]==tc_name
|
158
|
+
b_test_in_statistics=true
|
159
|
+
@statistics_arr[current_index]=[tc_name,"received bytes",total_status[2].to_i+received_bytes.to_i,tc_execution,tc_link]
|
160
|
+
end
|
161
|
+
if total_status[1]=="used mem" && total_status[0]==tc_name
|
162
|
+
b_test_in_statistics=true
|
163
|
+
@statistics_arr[current_index]=[tc_name,"used mem",total_status[2].to_i,tc_execution,tc_link]
|
164
|
+
end
|
165
|
+
if total_status[1]=="pass rate" && total_status[0]==tc_name
|
166
|
+
b_test_in_statistics=true
|
167
|
+
pass_rate=(total_passed.to_f/(total_run.to_f-total_not_run.to_f))*100
|
168
|
+
pass_rate="%0.2f" % pass_rate
|
169
|
+
@statistics_arr[current_index]=[tc_name,"pass rate",pass_rate,tc_execution,tc_link]
|
170
|
+
end
|
171
|
+
current_index+=1
|
172
|
+
end
|
173
|
+
b_test_in_statistics
|
157
174
|
end
|
158
175
|
|
159
176
|
def collect_test_case_statistics()
|
@@ -181,14 +198,20 @@ class ReportingStatistics
|
|
181
198
|
b_test_in_statistics=update_test_case_execution_statistics(tc_name,tc_status,tc_execution,duration,tc_link,reboots,crashes,dump_count,sent_bytes,received_bytes,memory_usage)
|
182
199
|
|
183
200
|
if b_test_in_statistics==false
|
201
|
+
total_run=0
|
202
|
+
total_not_run=0
|
203
|
+
total_passed=0
|
184
204
|
@all_statuses.each do |status|
|
185
205
|
if status==tc_status
|
186
206
|
@statistics_arr << [tc_name,tc_status,1,tc_execution,tc_link]
|
207
|
+
total_passed=1 if @pass_statuses.include?(tc_status)
|
208
|
+
total_not_run=1 if @not_run_statuses.include?(tc_status)
|
187
209
|
elsif status=="reboots"
|
188
210
|
@statistics_arr << [tc_name,"reboots",reboots.to_i,tc_execution,tc_link]
|
189
211
|
elsif status=="crashes"
|
190
212
|
@statistics_arr << [tc_name,"crashes",crashes.to_i,tc_execution,tc_link]
|
191
213
|
elsif status=="total"
|
214
|
+
total_run=1
|
192
215
|
@statistics_arr << [tc_name,"total",1,tc_execution,tc_link]
|
193
216
|
elsif status=="duration"
|
194
217
|
@statistics_arr << [tc_name,"duration",duration,tc_execution,tc_link]
|
@@ -198,8 +221,12 @@ class ReportingStatistics
|
|
198
221
|
@statistics_arr << [tc_name,"sent bytes",sent_bytes,tc_execution,tc_link]
|
199
222
|
elsif status=="received bytes"
|
200
223
|
@statistics_arr << [tc_name,"received bytes",received_bytes,tc_execution,tc_link]
|
201
|
-
elsif status=="used mem
|
202
|
-
@statistics_arr << [tc_name,"used mem
|
224
|
+
elsif status=="used mem"
|
225
|
+
@statistics_arr << [tc_name,"used mem",memory_usage,tc_execution,tc_link]
|
226
|
+
elsif status=="pass rate"
|
227
|
+
pass_rate=(total_passed.to_f/(total_run.to_f-total_not_run.to_f))*100
|
228
|
+
pass_rate="%0.2f" % pass_rate
|
229
|
+
@statistics_arr << [tc_name,"pass rate",pass_rate,tc_execution,tc_link]
|
203
230
|
else
|
204
231
|
@statistics_arr << [tc_name,status,0,tc_execution,tc_link]
|
205
232
|
end
|
@@ -231,16 +258,16 @@ class ReportingStatistics
|
|
231
258
|
tc_link='<a href="cases/'+result_page.to_i.to_s+'_chronological_total_run_index.html">'
|
232
259
|
tc_link='<a href="cases/1_reboot_index.html">' if status=="reboots" && total>0
|
233
260
|
tc_link='<a href="cases/1_crash_index.html">' if status=="crashes" && total>0
|
234
|
-
tc_link='<a href="cases/'
|
235
|
-
tc_link='<a href="cases/'
|
236
|
-
tc_link='<a href="cases/'
|
261
|
+
tc_link='<a href="cases/1_'+@pass_statuses.first.gsub(' ','_')+'_'+test_case.gsub(' ','_')+'_index.html">' if @pass_statuses.include?(status) && total>0
|
262
|
+
tc_link='<a href="cases/1_'+@fail_statuses.first.gsub(' ','_')+'_'+test_case.gsub(' ','_')+'_index.html">' if @fail_statuses.include?(status) && total>0
|
263
|
+
tc_link='<a href="cases/1_'+@not_run_statuses.first.gsub(' ','_')+'_'+test_case.gsub(' ','_')+'_index.html">' if @not_run_statuses.include?(status) && total>0
|
237
264
|
else
|
238
265
|
tc_link='<a href="'+result_page.to_i.to_s+'_chronological_total_run_index.html">'
|
239
266
|
tc_link='<a href="1_reboot_index.html">' if status=="reboots" && total>0
|
240
267
|
tc_link='<a href="1_crash_index.html">' if status=="crashes" && total>0
|
241
|
-
tc_link='<a href="'
|
242
|
-
tc_link='<a href="'
|
243
|
-
tc_link='<a href="'
|
268
|
+
tc_link='<a href="1_'+@pass_statuses.first.gsub(' ','_')+'_'+test_case.gsub(' ','_')+'_index.html">' if @pass_statuses.include?(status) && total>0
|
269
|
+
tc_link='<a href="1_'+@fail_statuses.first.gsub(' ','_')+'_'+test_case.gsub(' ','_')+'_index.html">' if @fail_statuses.include?(status) && total>0
|
270
|
+
tc_link='<a href="1_'+@not_run_statuses.first.gsub(' ','_')+'_'+test_case.gsub(' ','_')+'_index.html">' if @not_run_statuses.include?(status) && total>0
|
244
271
|
end
|
245
272
|
tc_link
|
246
273
|
|