testability-driver 1.0.4 → 1.1.0
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.
- 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
|
|