cutedriver-driver 2.0.0.20210120164037
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/README.md +16 -0
- data/bin/start_app_perf +200 -0
- data/bin/tdriver-devtools +3 -0
- data/config/sut_parameters.rb +52 -0
- data/config/sut_setup.rb +32 -0
- data/config/sut_teardown.rb +32 -0
- data/config/tdriver_custom_error_recovery.rb +83 -0
- data/ext/extconf.rb +70 -0
- data/ext/native_extensions.c +315 -0
- data/lib/matti.rb +25 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +120 -0
- data/lib/tdriver-devtools/behaviour/old/xml/example/impl.rb_invalid +194 -0
- data/lib/tdriver-devtools/behaviour/old/xml/generate_behaviour_xml.rb +95 -0
- data/lib/tdriver-devtools/behaviour/old/xml/lib/tdriver_generator.rb +722 -0
- data/lib/tdriver-devtools/behaviour/old/xml/qdoc_generator.rb +321 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.method.template +43 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.module.template +54 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.argument_type.template +7 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.exception.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.line.template +2 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.howto.template +5 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.method.template +23 -0
- data/lib/tdriver-devtools/behaviour/old/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/behaviour/old/xml/update +3 -0
- data/lib/tdriver-devtools/behaviour/xml/generate.rb +88 -0
- data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +1945 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.default.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.argument_type.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.exception.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.arguments.template +4 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.deprecated.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.exceptions.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.info.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.returns.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.tables.template +3 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.method.template +12 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.returns.template +5 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.item.template +1 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.row.template +2 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.table.template +8 -0
- data/lib/tdriver-devtools/behaviour/xml/templates/behaviour.xml.template +14 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/QtExampleGestureBehaviour.xml +138 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/created.rid +1 -0
- data/lib/tdriver-devtools/doc/behaviour_xml/tdriver.hash +1 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_hold.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/feature_xml/qt_widget_tap.feature.xml +9 -0
- data/lib/tdriver-devtools/doc/generate.rb +917 -0
- data/lib/tdriver-devtools/doc/update +1 -0
- data/lib/tdriver-devtools/doc/xslt/html.rb +7 -0
- data/lib/tdriver-devtools/doc/xslt/template.xsl +2170 -0
- data/lib/tdriver-devtools/doc/xslt/update +3 -0
- data/lib/tdriver-devtools/plugin/placeholder.txt +1 -0
- data/lib/tdriver-devtools/tdriver-devtools.rb +404 -0
- data/lib/tdriver-devtools/tests/feature_tests/example/behaviour_example.rb +100 -0
- data/lib/tdriver-devtools/tests/feature_tests/generate.rb +82 -0
- data/lib/tdriver-devtools/tests/feature_tests/lib/custom_rdoc_generator.rb +468 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/feature_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_attribute.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/templates/scenario_method.template +5 -0
- data/lib/tdriver-devtools/tests/feature_tests/update +3 -0
- data/lib/tdriver.rb +23 -0
- data/lib/tdriver/base/behaviour/abstract.rb +29 -0
- data/lib/tdriver/base/behaviour/behaviours/object_abstract.rb +107 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_composition.rb +99 -0
- data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +278 -0
- data/lib/tdriver/base/behaviour/behaviours/object_composition.rb +119 -0
- data/lib/tdriver/base/behaviour/factory.rb +495 -0
- data/lib/tdriver/base/behaviour/loader.rb +46 -0
- data/lib/tdriver/base/command_data/command_data.rb +51 -0
- data/lib/tdriver/base/command_data/loader.rb +29 -0
- data/lib/tdriver/base/controller/abstraction.rb +56 -0
- data/lib/tdriver/base/controller/loader.rb +21 -0
- data/lib/tdriver/base/errors.rb +134 -0
- data/lib/tdriver/base/loader.rb +47 -0
- data/lib/tdriver/base/state_object.rb +373 -0
- data/lib/tdriver/base/sut/adapter.rb +54 -0
- data/lib/tdriver/base/sut/controller.rb +151 -0
- data/lib/tdriver/base/sut/factory.rb +339 -0
- data/lib/tdriver/base/sut/generic/behaviours/agent.rb +77 -0
- data/lib/tdriver/base/sut/generic/behaviours/application.rb +427 -0
- data/lib/tdriver/base/sut/generic/behaviours/controller.rb +67 -0
- data/lib/tdriver/base/sut/generic/behaviours/find.rb +107 -0
- data/lib/tdriver/base/sut/generic/behaviours/flash_behaviour.rb +337 -0
- data/lib/tdriver/base/sut/generic/behaviours/sut.rb +1888 -0
- data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +210 -0
- data/lib/tdriver/base/sut/generic/behaviours/verification.rb +222 -0
- data/lib/tdriver/base/sut/generic/commands/agent.rb +43 -0
- data/lib/tdriver/base/sut/generic/commands/application.rb +274 -0
- data/lib/tdriver/base/sut/generic/commands/fixture.rb +47 -0
- data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +94 -0
- data/lib/tdriver/base/sut/generic/commands/screen_capture.rb +64 -0
- data/lib/tdriver/base/sut/generic/plugin.rb +97 -0
- data/lib/tdriver/base/sut/loader.rb +35 -0
- data/lib/tdriver/base/sut/sut.rb +98 -0
- data/lib/tdriver/base/test_object/abstract.rb +208 -0
- data/lib/tdriver/base/test_object/adapter.rb +740 -0
- data/lib/tdriver/base/test_object/behaviours/syncronization.rb +144 -0
- data/lib/tdriver/base/test_object/behaviours/test_object.rb +1047 -0
- data/lib/tdriver/base/test_object/cache.rb +134 -0
- data/lib/tdriver/base/test_object/factory.rb +684 -0
- data/lib/tdriver/base/test_object/loader.rb +51 -0
- data/lib/tdriver/base/test_object/verification.rb +178 -0
- data/lib/tdriver/base/test_object/xml/abstraction.rb +63 -0
- data/lib/tdriver/base/test_object/xml/adapter.rb +773 -0
- data/lib/tdriver/env.rb +21 -0
- data/lib/tdriver/loader.rb +57 -0
- data/lib/tdriver/matti.rb +35 -0
- data/lib/tdriver/report/error_recovery/tdriver_custom_error_recovery.rb +83 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +168 -0
- data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +106 -0
- data/lib/tdriver/report/report.rb +61 -0
- data/lib/tdriver/report/report_api.rb +348 -0
- data/lib/tdriver/report/report_combine.rb +86 -0
- data/lib/tdriver/report/report_crash_file_capture.rb +178 -0
- data/lib/tdriver/report/report_creator.rb +665 -0
- data/lib/tdriver/report/report_cucumber.rb +158 -0
- data/lib/tdriver/report/report_cucumber_listener.rb +184 -0
- data/lib/tdriver/report/report_cucumber_reporter.rb +181 -0
- data/lib/tdriver/report/report_data_presentation.rb +156 -0
- data/lib/tdriver/report/report_data_table.rb +64 -0
- data/lib/tdriver/report/report_execution_statistics.rb +400 -0
- data/lib/tdriver/report/report_file_capture.rb +159 -0
- data/lib/tdriver/report/report_graph_generator.rb +59 -0
- data/lib/tdriver/report/report_grouping.rb +541 -0
- data/lib/tdriver/report/report_javascript.rb +199 -0
- data/lib/tdriver/report/report_junit_xml.rb +147 -0
- data/lib/tdriver/report/report_rspec.rb +108 -0
- data/lib/tdriver/report/report_test_case_run.rb +725 -0
- data/lib/tdriver/report/report_test_run.rb +1476 -0
- data/lib/tdriver/report/report_test_unit.rb +223 -0
- data/lib/tdriver/report/report_writer.rb +1621 -0
- data/lib/tdriver/tdriver.rb +209 -0
- data/lib/tdriver/util/agent/loader.rb +22 -0
- data/lib/tdriver/util/agent/service.rb +107 -0
- data/lib/tdriver/util/common/array.rb +39 -0
- data/lib/tdriver/util/common/boolean.rb +48 -0
- data/lib/tdriver/util/common/crc16.rb +149 -0
- data/lib/tdriver/util/common/environment.rb +154 -0
- data/lib/tdriver/util/common/error.rb +40 -0
- data/lib/tdriver/util/common/exception.rb +53 -0
- data/lib/tdriver/util/common/exceptions.rb +12 -0
- data/lib/tdriver/util/common/file.rb +328 -0
- data/lib/tdriver/util/common/gem.rb +109 -0
- data/lib/tdriver/util/common/hash.rb +288 -0
- data/lib/tdriver/util/common/kernel.rb +253 -0
- data/lib/tdriver/util/common/loader.rb +47 -0
- data/lib/tdriver/util/common/numeric.rb +159 -0
- data/lib/tdriver/util/common/object.rb +159 -0
- data/lib/tdriver/util/common/retryable.rb +179 -0
- data/lib/tdriver/util/common/stackable.rb +185 -0
- data/lib/tdriver/util/common/string.rb +174 -0
- data/lib/tdriver/util/database/access.rb +240 -0
- data/lib/tdriver/util/database/connection.rb +44 -0
- data/lib/tdriver/util/database/error.rb +34 -0
- data/lib/tdriver/util/database/loader.rb +28 -0
- data/lib/tdriver/util/filters/attribute_filter.rb +121 -0
- data/lib/tdriver/util/filters/loader.rb +29 -0
- data/lib/tdriver/util/fixture/loader.rb +22 -0
- data/lib/tdriver/util/fixture/service.rb +211 -0
- data/lib/tdriver/util/hooking/hooking.rb +477 -0
- data/lib/tdriver/util/keymap/keymap.rb +81 -0
- data/lib/tdriver/util/loader.rb +80 -0
- data/lib/tdriver/util/localisation/error.rb +31 -0
- data/lib/tdriver/util/localisation/loader.rb +25 -0
- data/lib/tdriver/util/localisation/localisation.rb +762 -0
- data/lib/tdriver/util/logger/loader.rb +22 -0
- data/lib/tdriver/util/logger/logger.rb +591 -0
- data/lib/tdriver/util/operator_data/error.rb +29 -0
- data/lib/tdriver/util/operator_data/loader.rb +27 -0
- data/lib/tdriver/util/operator_data/operator_data.rb +93 -0
- data/lib/tdriver/util/other/config.rb +221 -0
- data/lib/tdriver/util/parameter/error.rb +48 -0
- data/lib/tdriver/util/parameter/loader.rb +25 -0
- data/lib/tdriver/util/parameter/parameter.rb +1161 -0
- data/lib/tdriver/util/plugin/abstract.rb +61 -0
- data/lib/tdriver/util/plugin/error.rb +0 -0
- data/lib/tdriver/util/plugin/loader.rb +28 -0
- data/lib/tdriver/util/plugin/service.rb +319 -0
- data/lib/tdriver/util/recorder/loader.rb +25 -0
- data/lib/tdriver/util/recorder/recorder.rb +72 -0
- data/lib/tdriver/util/recorder/scripter.rb +294 -0
- data/lib/tdriver/util/statistics/statistics.rb +89 -0
- data/lib/tdriver/util/user_data/error.rb +28 -0
- data/lib/tdriver/util/user_data/loader.rb +25 -0
- data/lib/tdriver/util/user_data/user_data.rb +104 -0
- data/lib/tdriver/util/video/camera.rb +67 -0
- data/lib/tdriver/util/video/camera_linux.rb +153 -0
- data/lib/tdriver/util/video/camera_windows.rb +174 -0
- data/lib/tdriver/util/video/loader.rb +31 -0
- data/lib/tdriver/util/video/video_utils.rb +139 -0
- data/lib/tdriver/util/xml/abstraction.rb +117 -0
- data/lib/tdriver/util/xml/attribute.rb +32 -0
- data/lib/tdriver/util/xml/builder.rb +53 -0
- data/lib/tdriver/util/xml/comment.rb +32 -0
- data/lib/tdriver/util/xml/document.rb +32 -0
- data/lib/tdriver/util/xml/element.rb +32 -0
- data/lib/tdriver/util/xml/error.rb +46 -0
- data/lib/tdriver/util/xml/loader.rb +62 -0
- data/lib/tdriver/util/xml/nil_node.rb +95 -0
- data/lib/tdriver/util/xml/nodeset.rb +32 -0
- data/lib/tdriver/util/xml/parsers/libxml/libxml.rb +140 -0
- data/lib/tdriver/util/xml/parsers/loader.rb +21 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +167 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +66 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/builder.rb +64 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/comment.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +66 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/element.rb +39 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/loader.rb +58 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +212 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +237 -0
- data/lib/tdriver/util/xml/parsers/nokogiri/text.rb +39 -0
- data/lib/tdriver/util/xml/text.rb +32 -0
- data/lib/tdriver/util/xml/xml.rb +332 -0
- data/lib/tdriver/verify/verify.rb +2398 -0
- data/lib/tdriver/version.rb +21 -0
- data/xml/behaviours/generic.xml +530 -0
- data/xml/defaults/generic.xml +11 -0
- data/xml/defaults/sut_generic.xml +8 -0
- data/xml/parameters/tdriver_parameters.xml +23 -0
- data/xml/templates/generic.xml +292 -0
- metadata +324 -0
@@ -0,0 +1,725 @@
|
|
1
|
+
############################################################################
|
2
|
+
##
|
3
|
+
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
4
|
+
## All rights reserved.
|
5
|
+
## Contact: Nokia Corporation (testabilitydriver@nokia.com)
|
6
|
+
##
|
7
|
+
## This file is part of Testability Driver.
|
8
|
+
##
|
9
|
+
## If you have questions regarding the use of this file, please contact
|
10
|
+
## Nokia at testabilitydriver@nokia.com .
|
11
|
+
##
|
12
|
+
## This library is free software; you can redistribute it and/or
|
13
|
+
## modify it under the terms of the GNU Lesser General Public
|
14
|
+
## License version 2.1 as published by the Free Software Foundation
|
15
|
+
## and appearing in the file LICENSE.LGPL included in the packaging
|
16
|
+
## of this file.
|
17
|
+
##
|
18
|
+
############################################################################
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
module TDriverReportCreator
|
24
|
+
#Test case class for new test case run
|
25
|
+
class TestCaseRun < TDriverReportCrashFileCapture
|
26
|
+
include TDriverReportWriter
|
27
|
+
attr_accessor(
|
28
|
+
:test_case_folder,
|
29
|
+
:test_cases_folder,
|
30
|
+
:test_case_name,
|
31
|
+
:test_case_ended,
|
32
|
+
:test_case_name_full,
|
33
|
+
:test_case_index,
|
34
|
+
:test_case_start_time,
|
35
|
+
:test_case_end_time,
|
36
|
+
:test_case_run_time,
|
37
|
+
:test_case_status,
|
38
|
+
:test_case_execution_log,
|
39
|
+
:test_case_user_data,
|
40
|
+
:test_case_user_data_columns,
|
41
|
+
:test_case_chronological_view_data,
|
42
|
+
:test_case_total_dump_count,
|
43
|
+
:test_case_total_data_sent,
|
44
|
+
:test_case_total_data_received,
|
45
|
+
:test_case_dump_count_at_start,
|
46
|
+
:test_case_dump_count_at_end,
|
47
|
+
:test_case_data_sent_at_start,
|
48
|
+
:test_case_data_sent_at_end,
|
49
|
+
:test_case_data_received_at_start,
|
50
|
+
:test_case_data_received_at_end,
|
51
|
+
:capture_screen_error,
|
52
|
+
:failed_dump_error,
|
53
|
+
:test_case_reboots,
|
54
|
+
:test_case_crash_files,
|
55
|
+
:test_case_behaviour_log,
|
56
|
+
:failed_screenshot,
|
57
|
+
:test_case_group,
|
58
|
+
:tc_video_recording,
|
59
|
+
:tc_video_filename,
|
60
|
+
:tc_previous_video_filename,
|
61
|
+
:tc_video_recorders,
|
62
|
+
:tc_memory_amount_start,
|
63
|
+
:tc_memory_amount_end,
|
64
|
+
:tc_memory_amount_start,
|
65
|
+
:tc_memory_amount_total,
|
66
|
+
:pass_statuses,
|
67
|
+
:fail_statuses,
|
68
|
+
:not_run_statuses,
|
69
|
+
:test_case_logging_level,
|
70
|
+
:trace_directory,
|
71
|
+
:connection_errors,
|
72
|
+
:report_short_folders
|
73
|
+
)
|
74
|
+
def initialize()
|
75
|
+
@test_case_folder=nil
|
76
|
+
@test_cases_folder=nil
|
77
|
+
@test_case_name=nil
|
78
|
+
@test_case_ended=false
|
79
|
+
@test_case_name_full=nil
|
80
|
+
@test_case_index=nil
|
81
|
+
@test_case_start_time=nil
|
82
|
+
@test_case_end_time=nil
|
83
|
+
@test_case_run_time=nil
|
84
|
+
@test_case_status=nil
|
85
|
+
@test_case_execution_log=nil
|
86
|
+
@test_case_user_data=nil
|
87
|
+
@test_case_user_data_columns=nil
|
88
|
+
@test_case_chronological_view_data=nil
|
89
|
+
@capture_screen_error=nil
|
90
|
+
@failed_dump_error=nil
|
91
|
+
@test_case_reboots=0
|
92
|
+
@test_case_crash_files=0
|
93
|
+
@connection_errors=0
|
94
|
+
@test_case_behaviour_log = Array.new
|
95
|
+
@failed_screenshot=nil
|
96
|
+
@test_case_group=nil
|
97
|
+
@tc_video_recording=false
|
98
|
+
@tc_video_filename=nil
|
99
|
+
@tc_previous_video_filename=nil
|
100
|
+
@tc_video_recorders=[]
|
101
|
+
@tc_memory_amount_start='-'
|
102
|
+
@tc_memory_amount_end='-'
|
103
|
+
@tc_memory_amount_total='-'
|
104
|
+
@test_case_total_dump_count=Hash.new
|
105
|
+
@test_case_total_data_sent=Hash.new
|
106
|
+
@test_case_total_data_received=Hash.new
|
107
|
+
@test_case_dump_count_at_start=Hash.new
|
108
|
+
@test_case_dump_count_at_end=Hash.new
|
109
|
+
@test_case_data_sent_at_start=Hash.new
|
110
|
+
@test_case_data_sent_at_end=Hash.new
|
111
|
+
@test_case_data_received_at_start=Hash.new
|
112
|
+
@test_case_data_received_at_end=Hash.new
|
113
|
+
@pass_statuses= $parameters[ :report_passed_statuses, "passed" ].split('|')
|
114
|
+
@fail_statuses= $parameters[ :report_failed_statuses, "failed" ].split('|')
|
115
|
+
@not_run_statuses= $parameters[ :report_not_run_statuses, "not run" ].split('|')
|
116
|
+
@test_case_logging_level = $parameters[ :logging_level, nil ]
|
117
|
+
@trace_directory= $parameters[ :report_trace_folder, nil]
|
118
|
+
@report_short_folders= $parameters[ :report_short_folders, 'false']
|
119
|
+
$tdriver_report_log_output = StringIO.new ""
|
120
|
+
begin
|
121
|
+
if $parameters[:behaviour_logging] == 'true'
|
122
|
+
if @test_case_logging_level.to_i > 0
|
123
|
+
logger_instance = MobyUtil::Logger.instance.get_logger( 'TDriver' )
|
124
|
+
begin
|
125
|
+
MobyUtil::Logger.instance.remove_outputter(logger_instance, 'io' )
|
126
|
+
rescue
|
127
|
+
end
|
128
|
+
o = Log4r::IOOutputter.new("io",$tdriver_report_log_output)
|
129
|
+
MobyUtil::Logger.instance.set_outputter_pattern(o, $parameters[ :logging_outputter_pattern, '%d [%c] [%l] %M' ])
|
130
|
+
MobyUtil::Logger.instance.add_outputter(logger_instance, o)
|
131
|
+
end
|
132
|
+
end
|
133
|
+
rescue
|
134
|
+
end
|
135
|
+
end
|
136
|
+
#This method sets the test case group
|
137
|
+
#
|
138
|
+
# === params
|
139
|
+
# value: test case report folder
|
140
|
+
# === returns
|
141
|
+
# nil
|
142
|
+
# === raises
|
143
|
+
def set_test_case_group(value)
|
144
|
+
@test_case_group=value
|
145
|
+
end
|
146
|
+
#This method sets the test case reboots
|
147
|
+
#
|
148
|
+
# === params
|
149
|
+
# value: amount
|
150
|
+
# === returns
|
151
|
+
# nil
|
152
|
+
# === raises
|
153
|
+
def set_test_case_reboots(value)
|
154
|
+
@test_case_reboots=@test_case_reboots.to_i+value.to_i
|
155
|
+
end
|
156
|
+
#This method sets the test case crash files
|
157
|
+
#
|
158
|
+
# === params
|
159
|
+
# value: amount
|
160
|
+
# === returns
|
161
|
+
# nil
|
162
|
+
# === raises
|
163
|
+
def set_test_case_crash_files(value)
|
164
|
+
@test_case_crash_files=@test_case_crash_files.to_i+value.to_i
|
165
|
+
end
|
166
|
+
#This method sets the tdriver test cases report folder
|
167
|
+
#
|
168
|
+
# === params
|
169
|
+
# value: test cases report folder
|
170
|
+
# === returns
|
171
|
+
# nil
|
172
|
+
# === raises
|
173
|
+
def set_test_cases_folder(value)
|
174
|
+
@test_cases_folder=value
|
175
|
+
end
|
176
|
+
#This method sets the tdriver test case has ended
|
177
|
+
#
|
178
|
+
# === params
|
179
|
+
# value: test cases report folder
|
180
|
+
# === returns
|
181
|
+
# nil
|
182
|
+
# === raises
|
183
|
+
def set_test_case_ended(value)
|
184
|
+
@test_case_ended=value
|
185
|
+
end
|
186
|
+
#This method sets the tdriver test case report folder
|
187
|
+
#
|
188
|
+
# === params
|
189
|
+
# value: test case report folder
|
190
|
+
# === returns
|
191
|
+
# nil
|
192
|
+
# === raises
|
193
|
+
def set_test_case_folder(value)
|
194
|
+
@test_case_folder=value
|
195
|
+
end
|
196
|
+
#This method sets the tdriver test case name
|
197
|
+
#
|
198
|
+
# === params
|
199
|
+
# value: test case name
|
200
|
+
# === returns
|
201
|
+
# nil
|
202
|
+
# === raises
|
203
|
+
def set_test_case_name_full(value)
|
204
|
+
@test_case_name_full=value
|
205
|
+
end
|
206
|
+
#This method sets the tdriver test case name
|
207
|
+
#
|
208
|
+
# === params
|
209
|
+
# value: test case name
|
210
|
+
# === returns
|
211
|
+
# nil
|
212
|
+
# === raises
|
213
|
+
def set_test_case_name(value)
|
214
|
+
@test_case_name_full=value
|
215
|
+
#Clean the test case name for unwanted chars
|
216
|
+
stripped=value.gsub(/[<\/?*>!)(}{\\\#{@%"'.,:;~-]/,'').squeeze(" ")
|
217
|
+
if stripped==nil then
|
218
|
+
stripped=value.squeeze(" ")
|
219
|
+
end
|
220
|
+
stripped1 = stripped.to_s.gsub(' ','_')
|
221
|
+
if stripped1==nil
|
222
|
+
stripped1=stripped
|
223
|
+
end
|
224
|
+
str = stripped1.slice(0, 100)
|
225
|
+
if str == nil
|
226
|
+
str=stripped1
|
227
|
+
end
|
228
|
+
stripped1=str
|
229
|
+
@test_case_name=stripped1.to_s
|
230
|
+
end
|
231
|
+
#This method sets the test case index
|
232
|
+
#
|
233
|
+
# === params
|
234
|
+
# value: test case index
|
235
|
+
# === returns
|
236
|
+
# nil
|
237
|
+
# === raises
|
238
|
+
def set_test_case_index(value)
|
239
|
+
@test_case_index=value
|
240
|
+
end
|
241
|
+
#This method sets the test case start time
|
242
|
+
#
|
243
|
+
# === params
|
244
|
+
# value: test case start time
|
245
|
+
# === returns
|
246
|
+
# nil
|
247
|
+
# === raises
|
248
|
+
def set_test_case_start_time(value)
|
249
|
+
@test_case_start_time=value
|
250
|
+
end
|
251
|
+
#This method sets the test case end time
|
252
|
+
#
|
253
|
+
# === params
|
254
|
+
# value: test case end time
|
255
|
+
# === returns
|
256
|
+
# nil
|
257
|
+
# === raises
|
258
|
+
def set_test_case_end_time(value)
|
259
|
+
@test_case_end_time=value
|
260
|
+
end
|
261
|
+
#This method sets the test case run time
|
262
|
+
#
|
263
|
+
# === params
|
264
|
+
# value: test case run time
|
265
|
+
# === returns
|
266
|
+
# nil
|
267
|
+
# === raises
|
268
|
+
def set_test_case_run_time(value)
|
269
|
+
@test_case_run_time=value
|
270
|
+
end
|
271
|
+
#This method sets the test case status
|
272
|
+
#
|
273
|
+
# === params
|
274
|
+
# value: test case status
|
275
|
+
# === returns
|
276
|
+
# nil
|
277
|
+
# === raises
|
278
|
+
def set_test_case_status(value)
|
279
|
+
@test_case_status=value
|
280
|
+
end
|
281
|
+
#This method sets the test case execution log
|
282
|
+
#
|
283
|
+
# === params
|
284
|
+
# value: test case execution log entry
|
285
|
+
# === returns
|
286
|
+
# nil
|
287
|
+
# === raises
|
288
|
+
def repalce_chars_to_html_format(value)
|
289
|
+
|
290
|
+
formatted_line=value.to_s.gsub('<','<')
|
291
|
+
formatted_line=formatted_line.gsub('>','>')
|
292
|
+
|
293
|
+
formatted_line
|
294
|
+
end
|
295
|
+
|
296
|
+
def set_test_case_execution_log(value,format=false)
|
297
|
+
value=repalce_chars_to_html_format(value) if format==true
|
298
|
+
@test_case_execution_log=@test_case_execution_log.to_s + '<br />' + value.to_s.gsub(/\n/,'<br />')
|
299
|
+
end
|
300
|
+
#This method sets the test case user data
|
301
|
+
#
|
302
|
+
# === params
|
303
|
+
# value: test case user data
|
304
|
+
# === returns
|
305
|
+
# nil
|
306
|
+
# === raises
|
307
|
+
def set_test_case_user_data(data,columns)
|
308
|
+
@test_case_user_data=data
|
309
|
+
@test_case_user_data_columns=columns
|
310
|
+
end
|
311
|
+
#This method sets the users data to display in chronological table
|
312
|
+
#
|
313
|
+
# === params
|
314
|
+
# value: test case user data
|
315
|
+
# === returns
|
316
|
+
# nil
|
317
|
+
# === raises
|
318
|
+
def set_test_case_chronological_view_data(data)
|
319
|
+
@test_case_chronological_view_data=data
|
320
|
+
end
|
321
|
+
#This method sets the test case behaviour log
|
322
|
+
#
|
323
|
+
# === params
|
324
|
+
# value: test case execution log entry
|
325
|
+
# === returns
|
326
|
+
# nil
|
327
|
+
# === raises
|
328
|
+
def set_test_case_behaviour_log(value,test_case)
|
329
|
+
@test_case_behaviour_log << [value.to_s,test_case]
|
330
|
+
end
|
331
|
+
|
332
|
+
#This methods checks the available video devices
|
333
|
+
#
|
334
|
+
# === params
|
335
|
+
#
|
336
|
+
# === returns
|
337
|
+
# nil
|
338
|
+
def each_video_device
|
339
|
+
|
340
|
+
if $parameters[:report_video, nil] != nil
|
341
|
+
|
342
|
+
device_index = 0
|
343
|
+
$parameters[:report_video].split("|").each do | video_device |
|
344
|
+
if !video_device.strip.empty?
|
345
|
+
yield video_device.strip, device_index.to_s
|
346
|
+
device_index += 1
|
347
|
+
end
|
348
|
+
end
|
349
|
+
|
350
|
+
end
|
351
|
+
|
352
|
+
end
|
353
|
+
|
354
|
+
|
355
|
+
#This methods sets video recording of the test case
|
356
|
+
#
|
357
|
+
# === params
|
358
|
+
# rec_name: String, name of video file to create
|
359
|
+
# previous_name: String, name of video file of previous test case
|
360
|
+
# === returns
|
361
|
+
# nil
|
362
|
+
def start_video_recording( rec_name, previous_name )
|
363
|
+
|
364
|
+
@tc_video_filename = rec_name
|
365
|
+
@tc_previous_video_filename = previous_name
|
366
|
+
tc_video_width = 640
|
367
|
+
tc_video_height = 480
|
368
|
+
tc_video_fps = 30
|
369
|
+
tc_max_time = '99:00:00'
|
370
|
+
|
371
|
+
begin
|
372
|
+
tc_video_width = $parameters[ :report_video_width ].to_i
|
373
|
+
rescue
|
374
|
+
# parameter not loaded, do nothing
|
375
|
+
end
|
376
|
+
begin
|
377
|
+
tc_video_height = $parameters[ :report_video_height ].to_i
|
378
|
+
rescue
|
379
|
+
# parameter not loaded, do nothing
|
380
|
+
end
|
381
|
+
begin
|
382
|
+
tc_video_fps = $parameters[ :report_video_fps ].to_i
|
383
|
+
rescue
|
384
|
+
# parameter not loaded, do nothing
|
385
|
+
end
|
386
|
+
begin
|
387
|
+
tc_max_time = $parameters[ :report_video_max_time ].to_i
|
388
|
+
rescue
|
389
|
+
# parameter not loaded, do nothing
|
390
|
+
end
|
391
|
+
|
392
|
+
|
393
|
+
@tc_video_recorders = []
|
394
|
+
|
395
|
+
begin
|
396
|
+
each_video_device do | video_device, device_index |
|
397
|
+
|
398
|
+
rec_options = { :width => tc_video_width, :height => tc_video_height, :fps => tc_video_fps }
|
399
|
+
rec_options[ :device ] = video_device unless video_device == "true" # use default device if "true"
|
400
|
+
video_recorder = MobyUtil::TDriverCam.new_cam( tdriver_report_folder() + "/cam_" + device_index + "_" + @tc_video_filename, rec_options )
|
401
|
+
video_recorder.start_recording
|
402
|
+
@tc_video_recorders << video_recorder
|
403
|
+
@tc_video_recording = true
|
404
|
+
|
405
|
+
end
|
406
|
+
rescue Exception => e
|
407
|
+
|
408
|
+
# make sure to stop any started cams if startup fails
|
409
|
+
stop_video_recording
|
410
|
+
raise e
|
411
|
+
|
412
|
+
end
|
413
|
+
|
414
|
+
nil
|
415
|
+
|
416
|
+
end
|
417
|
+
|
418
|
+
def target_video_alive
|
419
|
+
|
420
|
+
ret = ""
|
421
|
+
each_video_device do | video_device, device_index |
|
422
|
+
|
423
|
+
check_fps = $parameters[:report_activity_fps, '3']
|
424
|
+
check_frame_min = $parameters[:report_activity_frame_treshold, '8']
|
425
|
+
check_video_min = $parameters[:report_activity_video_treshold, '29']
|
426
|
+
|
427
|
+
ret_n = MobyUtil.video_alive? tdriver_report_folder() + "/cam_" + device_index + "_" + @tc_video_filename, check_fps.to_f, check_frame_min.to_f, check_video_min.to_f, false
|
428
|
+
|
429
|
+
if !ret_n
|
430
|
+
ret += ", " if !ret.empty?
|
431
|
+
ret += tdriver_report_folder() + "/cam_" + device_index + "_" + @tc_video_filename
|
432
|
+
end
|
433
|
+
|
434
|
+
end
|
435
|
+
|
436
|
+
return ret
|
437
|
+
|
438
|
+
end
|
439
|
+
|
440
|
+
def stop_video_recording()
|
441
|
+
|
442
|
+
|
443
|
+
@tc_video_recorders.each do | video_recorder |
|
444
|
+
video_recorder.stop_recording
|
445
|
+
end
|
446
|
+
|
447
|
+
@tc_video_recording = false
|
448
|
+
|
449
|
+
end
|
450
|
+
#This method sets the tdriver test case memory at start
|
451
|
+
#
|
452
|
+
# === params
|
453
|
+
# value: memory
|
454
|
+
# === returns
|
455
|
+
# nil
|
456
|
+
# === raises
|
457
|
+
def set_tc_memory_amount_start(value)
|
458
|
+
@tc_memory_amount_start=value
|
459
|
+
end
|
460
|
+
#This method sets the tdriver test case memory at end
|
461
|
+
#
|
462
|
+
# === params
|
463
|
+
# value: memory
|
464
|
+
# === returns
|
465
|
+
# nil
|
466
|
+
# === raises
|
467
|
+
def set_tc_memory_amount_end(value)
|
468
|
+
@tc_memory_amount_end=value
|
469
|
+
end
|
470
|
+
#This method sets the tdriver test case total memory
|
471
|
+
#
|
472
|
+
# === params
|
473
|
+
# value: memory
|
474
|
+
# === returns
|
475
|
+
# nil
|
476
|
+
# === raises
|
477
|
+
def set_tc_memory_amount_total(value)
|
478
|
+
@tc_memory_amount_total=value
|
479
|
+
end
|
480
|
+
|
481
|
+
#This method updates the tdrivertest case details page
|
482
|
+
#
|
483
|
+
# === params
|
484
|
+
# nil
|
485
|
+
# === returns
|
486
|
+
# nil
|
487
|
+
# === raises
|
488
|
+
def update_test_case_page(rewrite=false)
|
489
|
+
begin
|
490
|
+
#Calculate run time
|
491
|
+
@test_case_run_time=Time.now-@test_case_start_time
|
492
|
+
|
493
|
+
#make sure that test case folder exists:
|
494
|
+
if File::directory?(@test_case_folder)==false
|
495
|
+
FileUtils.mkdir_p @test_case_folder
|
496
|
+
end
|
497
|
+
|
498
|
+
write_page_start(@test_case_folder+'/index.html',@test_case_name)
|
499
|
+
write_test_case_body(@test_case_folder+'/index.html',
|
500
|
+
@test_case_name_full,
|
501
|
+
@test_case_start_time,
|
502
|
+
@test_case_end_time,
|
503
|
+
@test_case_run_time,
|
504
|
+
@test_case_status,
|
505
|
+
@test_case_index,
|
506
|
+
@test_case_folder,
|
507
|
+
@capture_screen_error,
|
508
|
+
@failed_dump_error,
|
509
|
+
@test_case_reboots,
|
510
|
+
@test_case_total_dump_count,
|
511
|
+
@test_case_total_data_sent,
|
512
|
+
@test_case_total_data_received
|
513
|
+
)
|
514
|
+
write_page_end(@test_case_folder+'/index.html')
|
515
|
+
|
516
|
+
rescue Exception => e
|
517
|
+
raise e
|
518
|
+
end
|
519
|
+
return nil
|
520
|
+
end
|
521
|
+
|
522
|
+
#This method makes a copy of the video recording of this test case
|
523
|
+
def copy_video_capture()
|
524
|
+
|
525
|
+
stop_video_recording
|
526
|
+
|
527
|
+
logging_enabled = MobyUtil::Logger.instance.enabled
|
528
|
+
MobyUtil::Logger.instance.enabled=false
|
529
|
+
begin
|
530
|
+
|
531
|
+
|
532
|
+
video_folder=@test_case_folder+'/video'
|
533
|
+
if File::directory?(video_folder)==false
|
534
|
+
FileUtils.mkdir_p video_folder
|
535
|
+
end
|
536
|
+
|
537
|
+
|
538
|
+
each_video_device do | video_device, device_index |
|
539
|
+
|
540
|
+
begin
|
541
|
+
FileUtils.copy(tdriver_report_folder() + "/cam_" + device_index + "_" + @tc_video_filename, video_folder)
|
542
|
+
rescue
|
543
|
+
# Copy failed, do nothing
|
544
|
+
end
|
545
|
+
|
546
|
+
begin
|
547
|
+
FileUtils.copy(tdriver_report_folder() + "/cam_" + device_index + "_" + @tc_previous_video_filename, video_folder)
|
548
|
+
rescue
|
549
|
+
|
550
|
+
# Copy failed, do nothing
|
551
|
+
end
|
552
|
+
|
553
|
+
end
|
554
|
+
|
555
|
+
|
556
|
+
|
557
|
+
rescue Exception => e
|
558
|
+
@test_case_execution_log=@test_case_execution_log.to_s + '<br />' + "Unable to store video file: " + e.message
|
559
|
+
end
|
560
|
+
|
561
|
+
MobyUtil::Logger.instance.enabled=logging_enabled
|
562
|
+
return nil
|
563
|
+
end
|
564
|
+
#This method captures the failed xml dump and image
|
565
|
+
#
|
566
|
+
# === params
|
567
|
+
# nil
|
568
|
+
# === returns
|
569
|
+
# nil
|
570
|
+
# === raises
|
571
|
+
def capture_dump(take_screenshot=true,arguments=Hash.new)
|
572
|
+
MobyUtil::Logger.instance.enabled=false
|
573
|
+
image_html=Array.new
|
574
|
+
state_html=Array.new
|
575
|
+
self.set_test_case_execution_log('<hr />')
|
576
|
+
begin
|
577
|
+
dump_folder=@test_case_folder+'/state_xml'
|
578
|
+
if File::directory?(dump_folder)==false
|
579
|
+
FileUtils.mkdir_p dump_folder
|
580
|
+
end
|
581
|
+
TDriver::SUTFactory.connected_suts.each do |sut_id, sut_attributes|
|
582
|
+
|
583
|
+
t = Time.now
|
584
|
+
time_stamp=t.strftime( "%Y%m%d%H%M%S" )
|
585
|
+
if take_screenshot==true
|
586
|
+
begin
|
587
|
+
sut_attributes[:sut].capture_screen( :Filename => dump_folder+'/'+time_stamp+'_'+sut_id.to_s+'_state.png', :Redraw => true ) if sut_attributes[:is_connected]
|
588
|
+
if arguments[:file]
|
589
|
+
base_name=File.basename(arguments[:file])
|
590
|
+
base_folder=File.dirname(arguments[:file])
|
591
|
+
sut_attributes[:sut].capture_screen( :Filename => "#{base_folder}/#{sut_id.to_s}_#{base_name}", :Redraw => true ) if sut_attributes[:is_connected]
|
592
|
+
end
|
593
|
+
image_html='<div class="img"><a href="state_xml/'<<
|
594
|
+
time_stamp+'_'+sut_id.to_s+'_state.png'<<
|
595
|
+
'" target="_blank"><img alt="" src="state_xml/'<<
|
596
|
+
time_stamp+'_'+sut_id.to_s+'_state.png'<<
|
597
|
+
'" width="10%" height="10%" /></a>'
|
598
|
+
if arguments[:text]
|
599
|
+
image_html << "<div class=\"desc\">#{arguments[:text]}</div>"
|
600
|
+
end
|
601
|
+
image_html << '</div>'
|
602
|
+
self.set_test_case_execution_log(image_html.to_s)
|
603
|
+
rescue Exception=>e
|
604
|
+
@capture_screen_error="Unable to capture sceen image #{sut_id}: " + e.message
|
605
|
+
self.set_test_case_execution_log(@capture_screen_error.to_s)
|
606
|
+
end
|
607
|
+
end
|
608
|
+
|
609
|
+
begin
|
610
|
+
if sut_attributes[:is_connected]
|
611
|
+
original_filter=sut_attributes[:sut].parameter[ :filter_type]
|
612
|
+
original_find=sut_attributes[:sut].parameter[ :use_find_object]
|
613
|
+
sut_attributes[:sut].parameter[ :filter_type] = 'none'
|
614
|
+
sut_attributes[:sut].parameter[ :use_find_object] = 'false'
|
615
|
+
sut_attributes[:sut].refresh
|
616
|
+
failed_xml_state=sut_attributes[:sut].xml_data()
|
617
|
+
File.open(dump_folder+'/'+time_stamp+'_'+sut_id.to_s+'_state.xml', 'w') { |file| file.write(failed_xml_state) }
|
618
|
+
state_html='<a href="state_xml/'<<
|
619
|
+
time_stamp+'_'+sut_id.to_s+'_state.xml'<<
|
620
|
+
'">'+time_stamp+'_'+sut_id.to_s+'_state.xml'+'</a>'
|
621
|
+
self.set_test_case_execution_log(state_html.to_s)
|
622
|
+
end
|
623
|
+
rescue Exception=>e
|
624
|
+
@failed_dump_error="Unable to capture state xml #{sut_id}: " + e.message
|
625
|
+
self.set_test_case_execution_log(@failed_dump_error.to_s)
|
626
|
+
ensure
|
627
|
+
sut_attributes[:sut].parameter[ :filter_type]=original_filter
|
628
|
+
sut_attributes[:sut].parameter[ :use_find_object]=original_find
|
629
|
+
end
|
630
|
+
end
|
631
|
+
rescue Exception => e
|
632
|
+
@capture_screen_error="Unable to capture state: " + e.message
|
633
|
+
self.set_test_case_execution_log(@capture_screen_error.to_s)
|
634
|
+
ensure
|
635
|
+
if $parameters[ :logging_level, 0 ].to_i > 0
|
636
|
+
MobyUtil::Logger.instance.enabled=true
|
637
|
+
else
|
638
|
+
MobyUtil::Logger.instance.enabled=false
|
639
|
+
end
|
640
|
+
self.set_test_case_execution_log('<hr />')
|
641
|
+
end
|
642
|
+
end
|
643
|
+
#This method captures the trace files
|
644
|
+
#
|
645
|
+
# === params
|
646
|
+
# nil
|
647
|
+
# === returns
|
648
|
+
# nil
|
649
|
+
# === raises
|
650
|
+
def capture_trace_files()
|
651
|
+
if $parameters[ :report_trace_capture, false]=="true"
|
652
|
+
begin
|
653
|
+
trace_folder= $parameters[ :report_trace_folder, nil]
|
654
|
+
if trace_folder!=nil
|
655
|
+
if File::directory?(trace_folder)==true
|
656
|
+
dump_folder=@test_case_folder+'/trace_files'
|
657
|
+
if File::directory?(dump_folder)==false
|
658
|
+
FileUtils.mkdir_p dump_folder
|
659
|
+
end
|
660
|
+
FileUtils.cp_r trace_folder, @test_case_folder+'/trace_files'
|
661
|
+
end
|
662
|
+
end
|
663
|
+
rescue Exception => ex
|
664
|
+
self.set_test_case_execution_log(ex.message)
|
665
|
+
self.set_test_case_execution_log(ex.backtrace)
|
666
|
+
end
|
667
|
+
end
|
668
|
+
end
|
669
|
+
#This method creates a new TDriver test case folder when testing is ended
|
670
|
+
#
|
671
|
+
# === params
|
672
|
+
# nil
|
673
|
+
# === returns
|
674
|
+
# nil
|
675
|
+
# === raises
|
676
|
+
def create_test_case_folder(status)
|
677
|
+
begin
|
678
|
+
#check if report directory exists
|
679
|
+
if @report_short_folders == 'true'
|
680
|
+
@test_case_folder=@test_cases_folder+'/'+status+'_'+@test_case_index.to_s
|
681
|
+
else
|
682
|
+
@test_case_folder=@test_cases_folder+'/'+status+'_'+@test_case_index.to_s+'_'+@test_case_name
|
683
|
+
end
|
684
|
+
|
685
|
+
if File::directory?(@test_case_folder)==false
|
686
|
+
FileUtils.mkdir_p @test_case_folder
|
687
|
+
end
|
688
|
+
rescue Exception => e
|
689
|
+
raise e
|
690
|
+
end
|
691
|
+
return nil
|
692
|
+
end
|
693
|
+
|
694
|
+
#This method renames a new TDriver test case folder when testing is ended
|
695
|
+
#
|
696
|
+
# === params
|
697
|
+
# nil
|
698
|
+
# === returns
|
699
|
+
# nil
|
700
|
+
# === raises
|
701
|
+
def rename_test_case_folder(status)
|
702
|
+
begin
|
703
|
+
#check if report directory exists
|
704
|
+
old_test_case_folder=@test_case_folder
|
705
|
+
if @report_short_folders == 'true'
|
706
|
+
new_test_case_folder=@test_case_folder.sub('result'+'_'+@test_case_index.to_s,status+'_'+@test_case_index.to_s)
|
707
|
+
else
|
708
|
+
new_test_case_folder=@test_case_folder.sub('result'+'_'+@test_case_index.to_s+'_'+@test_case_name,status+'_'+@test_case_index.to_s+'_'+@test_case_name)
|
709
|
+
end
|
710
|
+
|
711
|
+
if File::directory?(new_test_case_folder)==false
|
712
|
+
FileUtils.mv old_test_case_folder, new_test_case_folder , :force => true # no error
|
713
|
+
@test_case_folder=new_test_case_folder
|
714
|
+
end
|
715
|
+
rescue Exception => e
|
716
|
+
raise e
|
717
|
+
end
|
718
|
+
return nil
|
719
|
+
end
|
720
|
+
|
721
|
+
def video_recording?
|
722
|
+
@tc_video_recording
|
723
|
+
end
|
724
|
+
end
|
725
|
+
end
|