testability-driver 1.2.1 → 1.3.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/ext/native_extensions.c +165 -6
- data/lib/tdriver-devtools/behaviour/old/xml/update +0 -0
- data/lib/tdriver-devtools/behaviour/xml/generate.rb +0 -0
- data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +15 -1
- data/lib/tdriver-devtools/doc/update +0 -0
- data/lib/tdriver-devtools/doc/xslt/template.xsl +24 -14
- 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/update +0 -0
- data/lib/tdriver/base/behaviour/{behaviour.rb → abstract.rb} +3 -6
- data/lib/tdriver/base/behaviour/behaviours/object_abstract.rb +107 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +2 -2
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +47 -37
- data/lib/tdriver/base/behaviour/factory.rb +260 -382
- data/lib/tdriver/base/behaviour/loader.rb +22 -4
- data/lib/tdriver/base/controller/abstraction.rb +56 -0
- data/lib/tdriver/base/controller/loader.rb +21 -0
- data/lib/tdriver/base/loader.rb +3 -1
- data/lib/tdriver/base/sut/controller.rb +91 -74
- data/lib/tdriver/base/sut/factory.rb +8 -8
- data/lib/tdriver/base/sut/generic/behaviours/agent.rb +77 -0
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +116 -96
- data/lib/tdriver/base/sut/generic/commands/agent.rb +43 -0
- data/lib/tdriver/base/sut/sut.rb +10 -8
- data/lib/tdriver/base/test_object/abstract.rb +25 -24
- data/lib/tdriver/base/test_object/adapter.rb +67 -44
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +79 -20
- data/lib/tdriver/base/test_object/factory.rb +45 -15
- data/lib/tdriver/base/test_object/xml/adapter.rb +80 -57
- 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 +1 -0
- data/lib/tdriver/report/report.rb +2 -1
- data/lib/tdriver/report/report_crash_file_capture.rb +12 -0
- data/lib/tdriver/report/report_creator.rb +6 -2
- data/lib/tdriver/report/report_execution_statistics.rb +27 -11
- data/lib/tdriver/report/report_graph_generator.rb +59 -0
- data/lib/tdriver/report/report_test_case_run.rb +34 -2
- data/lib/tdriver/report/report_writer.rb +12 -0
- data/lib/tdriver/tdriver.rb +12 -1
- data/lib/tdriver/util/agent/loader.rb +22 -0
- data/lib/tdriver/util/agent/service.rb +107 -0
- data/lib/tdriver/util/common/crc16.rb +17 -10
- data/lib/tdriver/util/common/hash.rb +4 -1
- data/lib/tdriver/util/common/kernel.rb +11 -0
- data/lib/tdriver/util/common/numeric.rb +48 -0
- data/lib/tdriver/util/common/object.rb +5 -2
- data/lib/tdriver/util/common/string.rb +8 -1
- 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 +157 -0
- data/lib/tdriver/util/loader.rb +8 -2
- data/lib/tdriver/util/logger/logger.rb +12 -6
- data/lib/tdriver/util/other/config.rb +0 -0
- data/lib/tdriver/util/parameter/parameter.rb +221 -152
- data/lib/tdriver/util/plugin/error.rb +0 -0
- data/lib/tdriver/util/video/camera_linux.rb +36 -22
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +3 -13
- data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +13 -8
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +51 -9
- data/lib/tdriver/util/xml/xml.rb +4 -2
- data/lib/tdriver/verify/verify.rb +280 -621
- data/lib/tdriver/version.rb +1 -1
- data/xml/behaviours/generic.xml +34 -0
- data/xml/templates/generic.xml +20 -3
- metadata +168 -240
- data/lib/tdriver-devtools/tests/feature_tests/output/application_closable_0x3f.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/application_close.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/application_environment.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/application_executable_name.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/application_uid.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/created.rid +0 -1
- data/lib/tdriver-devtools/tests/feature_tests/output/find_find.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/flash_behaviour_flash_images.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_application.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_capture_screen.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_child.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_clear_verify_blocks.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_connect.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_controller_execution_order_0x3d.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_current_application_id.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_disconnect.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_dump_count.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_freeze.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_frozen.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_application_id.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_object.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_operator_data.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_ui_dump.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_get_user_information.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_input.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_parameter.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_press_key.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_received_data.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh.feature +0 -20
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_timeout.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_tries.feature +0 -15
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_refresh_ui_dump.feature +0 -20
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_run.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_sent_data.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_state.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_translate.feature +0 -30
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_type.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_ui_version.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_unfreeze.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_update.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_always.feature +0 -20
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_verify_blocks.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_x_path.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_0x3d.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/sut_xml_data_crc.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_down.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_status.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_power_up.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/switchbox_behaviour_reset.feature +0 -10
- data/lib/tdriver-devtools/tests/feature_tests/output/verification_test_object_exists_0x3f.feature +0 -15
- data/lib/tdriver/base/behaviour/factory_new.rb +0 -409
- data/lib/tdriver/base/test_object/identificator.rb +0 -518
- data/lib/tdriver/util/filters/dynamic_attributes.rb +0 -189
@@ -70,9 +70,12 @@ module MobyBase
|
|
70
70
|
# retrieve sut objects test object adapter
|
71
71
|
test_object_adapter = sut.instance_variable_get( :@test_object_adapter )
|
72
72
|
|
73
|
+
# add object identification attribute keys to dynamic attributes white list
|
74
|
+
TDriver::AttributeFilter.add_attributes( rules[ :object_attributes_hash ].keys )
|
75
|
+
|
73
76
|
# search parameters for find_objects feature
|
74
77
|
search_parameters = make_object_search_params( rules[ :parent ], rules[ :object_attributes_hash ] )
|
75
|
-
|
78
|
+
|
76
79
|
# default rules
|
77
80
|
directives.default_values(
|
78
81
|
|
@@ -100,7 +103,34 @@ module MobyBase
|
|
100
103
|
:__retriable_allowed_exceptions => [ MobyBase::TestObjectNotFoundError, MobyBase::MultipleTestObjectsIdentifiedError ]
|
101
104
|
|
102
105
|
)
|
103
|
-
|
106
|
+
|
107
|
+
# if sorting enabled; retrieve application layout direction first
|
108
|
+
if directives[ :__xy_sorting ] == true
|
109
|
+
|
110
|
+
parent_application = directives[ :__parent_application ] || rules[ :parent_application ]
|
111
|
+
|
112
|
+
unless parent_application.nil?
|
113
|
+
|
114
|
+
begin
|
115
|
+
|
116
|
+
application_layout_direction = parent_application.attribute( 'layoutDirection' ).to_s
|
117
|
+
|
118
|
+
raise if application_layout_direction.empty?
|
119
|
+
|
120
|
+
rescue
|
121
|
+
|
122
|
+
application_layout_direction = 'LeftToRight'
|
123
|
+
|
124
|
+
end
|
125
|
+
|
126
|
+
else
|
127
|
+
|
128
|
+
raise RuntimeError, 'parent application not given, unable to retrieve layoutDirection'
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
133
|
+
|
104
134
|
# identify objects until desired matches found or timeout exceeds
|
105
135
|
MobyUtil::Retryable.until(
|
106
136
|
|
@@ -169,12 +199,9 @@ module MobyBase
|
|
169
199
|
|
170
200
|
# sort matches if enabled
|
171
201
|
if directives[ :__xy_sorting ] == true
|
172
|
-
|
202
|
+
|
173
203
|
# sort elements
|
174
|
-
test_object_adapter.sort_elements(
|
175
|
-
matches,
|
176
|
-
test_object_adapter.application_layout_direction( sut )
|
177
|
-
)
|
204
|
+
test_object_adapter.sort_elements( matches, application_layout_direction )
|
178
205
|
|
179
206
|
end
|
180
207
|
|
@@ -282,7 +309,7 @@ module MobyBase
|
|
282
309
|
end
|
283
310
|
|
284
311
|
# add object identification attribute keys to dynamic attributes white list
|
285
|
-
|
312
|
+
#TDriver::AttributeFilter.add_attributes( object_attributes_hash.keys )
|
286
313
|
|
287
314
|
child_objects = identify_object( rules ).collect{ | test_object_xml |
|
288
315
|
|
@@ -443,6 +470,9 @@ module MobyBase
|
|
443
470
|
|
444
471
|
else
|
445
472
|
|
473
|
+
#trick
|
474
|
+
#rules[ :parent_application ] = parent if parent.type == 'vkb'
|
475
|
+
|
446
476
|
# create test object
|
447
477
|
test_object = MobyBase::TestObject.new(
|
448
478
|
|
@@ -467,18 +497,18 @@ module MobyBase
|
|
467
497
|
obj_type << ';*' unless obj_type == 'application'
|
468
498
|
|
469
499
|
# apply behaviours to test object
|
470
|
-
|
500
|
+
TDriver::BehaviourFactory.apply_behaviour(
|
471
501
|
|
472
|
-
:object
|
473
|
-
:object_type
|
474
|
-
:input_type
|
475
|
-
:env
|
476
|
-
:version
|
502
|
+
:object => test_object,
|
503
|
+
:object_type => [ *obj_type.split(';') ],
|
504
|
+
:input_type => [ '*', sut.input.to_s ],
|
505
|
+
:env => [ '*', *env.to_s.split(";") ],
|
506
|
+
:version => [ '*', sut.ui_version.to_s ]
|
477
507
|
|
478
508
|
)
|
479
509
|
|
480
510
|
# create child accessors
|
481
|
-
test_object_adapter.create_child_accessors!( xml_object, test_object )
|
511
|
+
#test_object_adapter.create_child_accessors!( xml_object, test_object )
|
482
512
|
|
483
513
|
# add created test object to parents child objects cache, unless explicitly disabled
|
484
514
|
parent_cache.add_object( test_object ) unless identification_directives[ :__no_caching ] == true
|
@@ -95,6 +95,38 @@ module TDriver
|
|
95
95
|
|
96
96
|
end # xpath_attributes
|
97
97
|
|
98
|
+
#merges elements from the nodeset, used in hybrid app situations
|
99
|
+
def create_merged_element(nodeset, environments, close_element=true)
|
100
|
+
merged_element_set = false
|
101
|
+
|
102
|
+
merged_xml = ""
|
103
|
+
|
104
|
+
nodeset.each{ | object |
|
105
|
+
|
106
|
+
# only one top element
|
107
|
+
unless merged_element_set
|
108
|
+
|
109
|
+
# retrieve object attributes
|
110
|
+
attributes = object.attributes
|
111
|
+
|
112
|
+
# merge env to attributes hash
|
113
|
+
attributes['env'] = environments.join(';')
|
114
|
+
|
115
|
+
# add application object xml element to new xml string
|
116
|
+
merged_xml << "<obj #{ hash_to_element_attributes( attributes ) }>"
|
117
|
+
|
118
|
+
# merged element is now set, no need to do it again
|
119
|
+
merged_element_set = true
|
120
|
+
|
121
|
+
end
|
122
|
+
|
123
|
+
# append all found elements
|
124
|
+
object.xpath('./*').each{ | object | merged_xml << object.to_s }
|
125
|
+
}
|
126
|
+
merged_xml << "</obj>" if close_element and merged_element_set
|
127
|
+
merged_xml
|
128
|
+
end
|
129
|
+
|
98
130
|
# TODO: document me
|
99
131
|
def initialize_class
|
100
132
|
|
@@ -341,11 +373,13 @@ module TDriver
|
|
341
373
|
# TODO: document me
|
342
374
|
def self.test_object_element_attributes( source_data )
|
343
375
|
|
344
|
-
Hash[
|
345
|
-
|
346
|
-
|
347
|
-
|
348
|
-
]
|
376
|
+
#Hash[
|
377
|
+
# source_data.attributes.collect{ | key, value |
|
378
|
+
# [ key.to_s, value.to_s ]
|
379
|
+
# }
|
380
|
+
#]
|
381
|
+
|
382
|
+
source_data.attributes
|
349
383
|
|
350
384
|
end
|
351
385
|
|
@@ -439,50 +473,51 @@ module TDriver
|
|
439
473
|
|
440
474
|
# TODO: document me
|
441
475
|
def self.test_object_attributes( source_data, inclusive_filter = [] )
|
442
|
-
|
476
|
+
|
443
477
|
# convert all keys to lowercase
|
444
478
|
inclusive_filter.collect!{ | key | key.to_s.downcase } unless inclusive_filter.empty?
|
445
|
-
|
479
|
+
|
446
480
|
# return hash of test object attributes
|
447
|
-
|
481
|
+
object_attributes = {}
|
448
482
|
|
449
|
-
# iterate each attribute and collect name and value
|
450
|
-
source_data.xpath( 'attr' ).collect{ | value |
|
483
|
+
# iterate each attribute and collect name and value
|
484
|
+
source_data.xpath( 'attr' ).collect{ | value |
|
451
485
|
|
452
486
|
# retrieve attribute name
|
453
487
|
name = value.attribute('name').to_s
|
454
488
|
|
455
489
|
# collect attribute elements name and content
|
456
490
|
unless inclusive_filter.empty?
|
457
|
-
|
458
|
-
[ name, value.content ] if inclusive_filter.include?( name.downcase )
|
459
|
-
|
460
|
-
else
|
461
491
|
|
492
|
+
object_attributes[name]=value.content if inclusive_filter.include?( name.downcase )
|
493
|
+
|
494
|
+
else
|
462
495
|
# pass the attribute pair - no filtering done
|
463
|
-
[
|
464
|
-
|
496
|
+
if object_attributes[name]
|
497
|
+
object_attributes[name]="#{object_attributes[name]},#{value.content}"
|
498
|
+
else
|
499
|
+
object_attributes[name]=value.content
|
500
|
+
end
|
465
501
|
end
|
466
502
|
|
467
503
|
}
|
468
504
|
|
469
|
-
|
505
|
+
object_attributes
|
470
506
|
|
471
507
|
end
|
472
508
|
|
473
509
|
# TODO: document me
|
474
510
|
def self.application_layout_direction( sut )
|
475
511
|
|
476
|
-
# temporary fix until testobject will be associated to parent application object
|
477
|
-
|
478
|
-
|
479
|
-
#
|
480
|
-
|
481
|
-
|
512
|
+
# temporary fix until testobject will be associated to parent application object; add 'layoutDirection' to dynamic attributes filtering whitelist...
|
513
|
+
TDriver::AttributeFilter.add_attribute( 'layoutDirection' ){
|
514
|
+
|
515
|
+
# this block will be executed if attribute was not in filter list
|
516
|
+
|
482
517
|
# temporary fix: ... and refresh sut to retrieve updated xml data
|
483
518
|
sut.refresh
|
484
|
-
|
485
|
-
|
519
|
+
|
520
|
+
}
|
486
521
|
|
487
522
|
# TODO: parent application test object should be passed to get_test_objects; TestObjectAdapter#test_object_attribute( @app.xml_data, 'layoutDirection')
|
488
523
|
#( sut.xml_data.at_xpath('*//obj[@type="application"]/attr[@name="layoutDirection"]/text()').content || 'LeftToRight' ).to_s
|
@@ -528,14 +563,17 @@ module TDriver
|
|
528
563
|
|
529
564
|
# TODO: document me
|
530
565
|
def self.state_object_xml( source_data, id )
|
531
|
-
|
566
|
+
|
532
567
|
# collect each object from source xml
|
533
|
-
objects = source_data.xpath( 'tasInfo/obj' ).collect{ | element | element.to_s }.join
|
534
|
-
|
568
|
+
#objects = source_data.xpath( 'tasInfo/obj' ).collect{ | element | element.to_s }.join
|
569
|
+
|
570
|
+
# return xml root element
|
571
|
+
#MobyUtil::XML.parse_string(
|
572
|
+
# "<sut name='sut' type='sut' id='#{ id }'>#{ objects }</sut>"
|
573
|
+
#).root
|
574
|
+
|
535
575
|
# return xml root element
|
536
|
-
MobyUtil::XML.parse_string(
|
537
|
-
"<sut name='sut' type='sut' id='#{ id }'>#{ objects }</sut>"
|
538
|
-
).root
|
576
|
+
MobyUtil::XML.parse_string( "<sut name='sut' type='sut' id='#{ id }'>#{ source_data.xpath('tasInfo/obj').inject(""){ | result, element | result << element.to_s; } }</sut>" ).root
|
539
577
|
|
540
578
|
end
|
541
579
|
|
@@ -660,32 +698,17 @@ module TDriver
|
|
660
698
|
# collect environment values
|
661
699
|
environments = document_root.xpath('/tasMessage/tasInfo/obj[@type="application"]/@env').collect{ | attribute | attribute.to_s }
|
662
700
|
|
663
|
-
#
|
664
|
-
nodeset
|
665
|
-
|
666
|
-
|
667
|
-
|
668
|
-
|
669
|
-
|
670
|
-
|
671
|
-
|
672
|
-
|
673
|
-
|
674
|
-
# merge env to attributes hash
|
675
|
-
attributes['env'] = environments.join(';')
|
676
|
-
|
677
|
-
# add application object xml element to new xml string
|
678
|
-
new_xml << "<obj #{ hash_to_element_attributes( attributes ) }>"
|
679
|
-
|
680
|
-
# application element is now set, no need to do it again
|
681
|
-
application_element_set = true
|
682
|
-
|
683
|
-
end
|
684
|
-
|
685
|
-
# append all found elements
|
686
|
-
object.xpath('./*').each{ | object | new_xml << object.to_s }
|
687
|
-
|
688
|
-
}
|
701
|
+
#limit to apps
|
702
|
+
nodeset = document_root.xpath('/tasMessage/tasInfo/obj[@type="application"]')
|
703
|
+
close_vkb = false
|
704
|
+
if nodeset.count > 0
|
705
|
+
new_xml << create_merged_element(nodeset, environments, false)
|
706
|
+
close_vkb = true
|
707
|
+
end
|
708
|
+
# do the same to the vkbs
|
709
|
+
environments = document_root.xpath('/tasMessage/tasInfo/obj[@type="vkb_app"]/@env').collect{ | attribute | attribute.to_s }
|
710
|
+
nodeset = document_root.xpath('/tasMessage/tasInfo/obj[@type="vkb_app"]')
|
711
|
+
new_xml << create_merged_element(nodeset, environments, close_vkb)
|
689
712
|
|
690
713
|
# multiple applications found, return merged application xml
|
691
714
|
new_xml << "</obj></tasInfo></tasMessage>"
|
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
|
@@ -45,6 +45,7 @@ module TDriverErrorRecovery
|
|
45
45
|
# === raises
|
46
46
|
def start_error_recovery()
|
47
47
|
resetted=false
|
48
|
+
initialize_error_recovery if @recovery_settings==nil
|
48
49
|
if @recovery_settings.get_error_recovery_enabled=='true'
|
49
50
|
MobyUtil::Logger.instance.log "behaviour" , "PASS;Starting error recovery"
|
50
51
|
if @recovery_settings.get_reconnect_device=='true'
|
@@ -48,6 +48,7 @@ require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_cucumber_
|
|
48
48
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_rspec' ) )
|
49
49
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_test_unit' ) )
|
50
50
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_grouping' ) )
|
51
|
+
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_graph_generator' ) )
|
51
52
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_execution_statistics' ) )
|
52
53
|
require File.expand_path( File.join( File.dirname( __FILE__ ), 'report_data_presentation' ) )
|
53
54
|
|
@@ -57,4 +58,4 @@ unless $parameters[ :custom_error_recovery_module, nil ].nil?
|
|
57
58
|
|
58
59
|
end
|
59
60
|
|
60
|
-
include TDriverReportAPI
|
61
|
+
#include TDriverReportAPI
|
@@ -64,6 +64,18 @@ class TDriverReportCrashFileCapture
|
|
64
64
|
end
|
65
65
|
end
|
66
66
|
|
67
|
+
def confirm_crash_notes
|
68
|
+
MobyBase::SUTFactory.instance.connected_suts.each do |sut_id, sut_attributes|
|
69
|
+
if sut_attributes[:is_connected]
|
70
|
+
@crash_file_suts.each do |monitored_sut|
|
71
|
+
if monitored_sut == sut_id.to_s
|
72
|
+
sut_attributes[:sut].clear_crash_notes(5)
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
67
79
|
def list_sut_crash_files(current_sut)
|
68
80
|
crash_file_arr=Array.new
|
69
81
|
@crash_file_count=0
|
@@ -286,6 +286,10 @@ module TDriverReportCreator
|
|
286
286
|
$new_test_case.clean_crash_files_from_sut()
|
287
287
|
$tdriver_reporter.set_total_crash_files(amount_of_crash_files.to_i)
|
288
288
|
$new_test_case.set_test_case_crash_files(amount_of_crash_files.to_i)
|
289
|
+
else
|
290
|
+
if $parameters[ :report_crash_file_monitor_confirm_any_crash_note, false ]=='true'
|
291
|
+
$new_test_case.confirm_crash_notes
|
292
|
+
end
|
289
293
|
end
|
290
294
|
|
291
295
|
amount_of_files=$new_test_case.check_if_files_exist()
|
@@ -316,7 +320,7 @@ module TDriverReportCreator
|
|
316
320
|
|
317
321
|
each_video_device do | video_device, device_index |
|
318
322
|
begin
|
319
|
-
FileUtils.
|
323
|
+
FileUtils.mv( "cam_" + device_index + "_" + @_video_file_name, "cam_" + device_index + "_" + @_previous_video_file_name )
|
320
324
|
rescue
|
321
325
|
# do nothing..
|
322
326
|
end
|
@@ -344,7 +348,7 @@ module TDriverReportCreator
|
|
344
348
|
# === raises
|
345
349
|
def update_test_case(details)
|
346
350
|
if $new_test_case==nil
|
347
|
-
@_stored_details<<details
|
351
|
+
@_stored_details << details
|
348
352
|
else
|
349
353
|
if @_stored_details!=[]
|
350
354
|
@_stored_details.each do |detail|
|
@@ -122,12 +122,13 @@ class ReportingStatistics
|
|
122
122
|
total_run=0
|
123
123
|
total_not_run=0
|
124
124
|
total_passed=0
|
125
|
-
|
126
|
-
|
125
|
+
total_not_run_index=0
|
126
|
+
total_passed_index=0
|
127
|
+
pass_rate_index=0
|
128
|
+
@statistics_arr.each do |total_status|
|
129
|
+
if total_status[1]==tc_status && total_status[0]==tc_name
|
127
130
|
b_test_in_statistics=true
|
128
131
|
@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
132
|
end
|
132
133
|
if total_status[1]=="reboots" && total_status[0]==tc_name
|
133
134
|
b_test_in_statistics=true
|
@@ -164,17 +165,32 @@ class ReportingStatistics
|
|
164
165
|
end
|
165
166
|
if total_status[1]=="pass rate" && total_status[0]==tc_name
|
166
167
|
b_test_in_statistics=true
|
167
|
-
|
168
|
-
|
169
|
-
|
168
|
+
pass_rate_index=current_index
|
169
|
+
end
|
170
|
+
if @pass_statuses.include?(total_status[1]) && total_status[0]==tc_name
|
171
|
+
total_passed_index=current_index
|
172
|
+
end
|
173
|
+
if @not_run_statuses.include?(total_status[1]) && total_status[0]==tc_name
|
174
|
+
total_not_run_index=current_index
|
170
175
|
end
|
171
176
|
current_index+=1
|
172
177
|
end
|
178
|
+
|
179
|
+
if b_test_in_statistics==true
|
180
|
+
total_passed_result=@statistics_arr[total_passed_index]
|
181
|
+
total_not_run_result=@statistics_arr[total_not_run_index]
|
182
|
+
total_passed=total_passed_result[2].to_i
|
183
|
+
total_not_run=total_not_run_result[2].to_i
|
184
|
+
pass_rate=(total_passed.to_f/(total_run.to_f-total_not_run.to_f))*100
|
185
|
+
pass_rate="%0.2f" % pass_rate
|
186
|
+
@statistics_arr[pass_rate_index]=[tc_name,"pass rate",pass_rate,tc_execution,tc_link]
|
187
|
+
end
|
188
|
+
|
173
189
|
b_test_in_statistics
|
174
190
|
end
|
175
191
|
|
176
192
|
def collect_test_case_statistics()
|
177
|
-
total_duration = 0.0
|
193
|
+
total_duration = 0.0
|
178
194
|
@group_test_case_arr.each do |test_case|
|
179
195
|
tc_status=test_case[7]
|
180
196
|
tc_name=test_case[0].to_s.gsub('_',' ')
|
@@ -188,7 +204,7 @@ class ReportingStatistics
|
|
188
204
|
memory_usage=test_case[6].to_i
|
189
205
|
|
190
206
|
duration=test_case[5].to_f
|
191
|
-
total_duration = total_duration + duration
|
207
|
+
total_duration = total_duration + duration
|
192
208
|
b_test_in_statistics=false
|
193
209
|
|
194
210
|
#Update total statistics
|
@@ -290,8 +306,8 @@ class ReportingStatistics
|
|
290
306
|
@statistics_arr.each do |test_case|
|
291
307
|
tc_name=test_case[0].to_s.gsub('_',' ')
|
292
308
|
if test_case_added.include?(tc_name)==false && test_case[1].to_s=="duration"
|
293
|
-
|
294
|
-
|
309
|
+
durations << test_case[2]
|
310
|
+
labels[current_index] = "#{current_index + 1}" #tc_name
|
295
311
|
current_index += 1
|
296
312
|
test_case_added << tc_name
|
297
313
|
end
|