testability-driver-qt-sut-plugin 0.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (61) hide show
  1. data/env.rb +26 -0
  2. data/installer/extconf.rb +62 -0
  3. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin.rb +23 -0
  4. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/action.rb +156 -0
  5. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/application.rb +318 -0
  6. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/attribute.rb +227 -0
  7. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/behaviour.rb +140 -0
  8. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/configure_behaviour.rb +317 -0
  9. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/events.rb +165 -0
  10. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/file_transfer.rb +333 -0
  11. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/find.rb +80 -0
  12. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/fixture.rb +178 -0
  13. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/gesture.rb +906 -0
  14. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/infologger.rb +604 -0
  15. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/key_press.rb +152 -0
  16. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/locale_db.rb +151 -0
  17. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/method.rb +85 -0
  18. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/multitouch.rb +455 -0
  19. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/os.rb +100 -0
  20. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/qt_api_method.rb +148 -0
  21. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/record.rb +124 -0
  22. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb +283 -0
  23. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/sut.rb +492 -0
  24. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/synchronization.rb +113 -0
  25. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/treewidgetitemcolumn.rb +93 -0
  26. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/type_text.rb +97 -0
  27. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/view_item.rb +97 -0
  28. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/webkit.rb +230 -0
  29. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/widget.rb +663 -0
  30. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/action.rb +30 -0
  31. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/configure_command.rb +38 -0
  32. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/drag.rb +44 -0
  33. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/find_object.rb +50 -0
  34. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/fixture.rb +45 -0
  35. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/group.rb +48 -0
  36. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/infologger_command.rb +38 -0
  37. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/qt.rb +170 -0
  38. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/tap.rb +54 -0
  39. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/commands/widget.rb +226 -0
  40. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/application.rb +264 -0
  41. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/configure_command.rb +60 -0
  42. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/find_object.rb +114 -0
  43. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/fixture.rb +67 -0
  44. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/group.rb +52 -0
  45. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/infologger_command.rb +62 -0
  46. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/key_sequence.rb +99 -0
  47. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/screen_capture.rb +54 -0
  48. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/tap.rb +51 -0
  49. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/controllers/widget.rb +72 -0
  50. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/plugin.rb +119 -0
  51. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/adapter.rb +225 -0
  52. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/communication.rb +154 -0
  53. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/controller.rb +58 -0
  54. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/fixture_parameter.rb +77 -0
  55. data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/widget.rb +82 -0
  56. data/lib/testability-driver-qt-sut-plugin.rb +24 -0
  57. data/xml/behaviour/qt.xml +717 -0
  58. data/xml/defaults/sut_qt.xml +9 -0
  59. data/xml/keymap/qt.xml +321 -0
  60. data/xml/template/qt.xml +124 -0
  61. metadata +141 -0
@@ -0,0 +1,227 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyBehaviour
21
+
22
+ module QT
23
+
24
+ # == description
25
+ # Behaviours for handling attributes
26
+ #
27
+ # == behaviour
28
+ # QtAttribute
29
+ #
30
+ # == requires
31
+ # testability-driver-qt-sut-plugin
32
+ #
33
+ # == input_type
34
+ # *
35
+ #
36
+ # == sut_type
37
+ # qt
38
+ #
39
+ # == sut_version
40
+ # *
41
+ #
42
+ # == objects
43
+ # *
44
+ #
45
+ module Attribute
46
+
47
+ include MobyBehaviour::QT::Behaviour
48
+
49
+ # == description
50
+ # Sets an attribute of the target object.
51
+ #
52
+ # == arguments
53
+ # attribute
54
+ # String
55
+ # description: Name of the attribute to be set
56
+ # example: "text"
57
+ #
58
+ # value
59
+ # String
60
+ # description: New value of the attribute.
61
+ # example: "Menu"
62
+ #
63
+ # Integer
64
+ # description: New value of the attribute.
65
+ # example: 200
66
+ #
67
+ # Boolean
68
+ # description: New value of the attribute.
69
+ # example: true
70
+ #
71
+ # type
72
+ # String
73
+ # description: Type of the value. If this argument is not given, the type will be detected based on the class of the value argument.
74
+ # example: "QPoint"
75
+ # default: nil
76
+ #
77
+ # == tables
78
+ # attribute_types_table
79
+ # title: Valid type argument values
80
+ # |Type|Example|
81
+ # |QRect|'10,10,150,150'|
82
+ # |QPoint|'100,200'|
83
+ # |QSize|'50,80'|
84
+ # |QDate|'15.08.2009'|
85
+ # |QDateTime|'1373352400'|
86
+ #
87
+ # == returns
88
+ # NilClass
89
+ # description: Always returns nil
90
+ # example: nil
91
+ #
92
+ # == exceptions
93
+ # ArgumentError
94
+ # description: One of the arguments is not valid
95
+ # RuntimeError
96
+ # description: Setting of the attribute failed
97
+ def set_attribute(attribute, value, type = nil)
98
+
99
+ Kernel::raise ArgumentError.new( "Attribute-name was empty" ) if attribute.empty?
100
+ Kernel::raise ArgumentError.new( "Argument type must be nil or a non empty String." ) unless type.nil? || ( type.kind_of?( String ) && !type.empty? )
101
+
102
+ command = command_params #in qt_behaviour
103
+ command.transitions_off
104
+ command.command_name( 'SetAttribute' )
105
+
106
+ case type
107
+
108
+ when nil
109
+
110
+ # Implicit typing
111
+
112
+ # by class
113
+ if value.kind_of? Integer
114
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s.strip, 'attribute_type' => 'int'}
115
+
116
+ elsif value.kind_of? Date
117
+ temp_date = value.day.to_s << '.' << value.month.to_s << '.' << value.year.to_s
118
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => temp_date, 'attribute_type' => 'QDate' }
119
+
120
+ elsif value.kind_of? Time
121
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_i.to_s, 'attribute_type' => 'QDateTime' }
122
+
123
+ elsif value.kind_of? DateTime
124
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => Time.parse(value.to_s).to_i.to_s, 'attribute_type' => 'QDateTime' }
125
+
126
+ elsif value.kind_of? TrueClass
127
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s.downcase, 'attribute_type' => 'bool'}
128
+
129
+ elsif value.kind_of? FalseClass
130
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s.downcase, 'attribute_type' => 'bool'}
131
+
132
+ else
133
+ # by format
134
+ # if ( value.kind_of?( Integer ) || ( value.kind_of?( String ) && value.strip == value.strip.to_i.to_s ) )
135
+ if value.kind_of?( String ) && value.strip == value.strip.to_i.to_s
136
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s.strip, 'attribute_type' => 'int'}
137
+
138
+ elsif (value == true || value == false || (value.kind_of?(String) && (value.strip.downcase == "true" || value.strip.downcase == "false")))
139
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s.downcase, 'attribute_type' => 'bool'}
140
+
141
+ else
142
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s, 'attribute_type' => 'string'}
143
+
144
+ end
145
+
146
+ end
147
+
148
+ when "QRect"
149
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s, 'attribute_type' => 'QRect'}
150
+
151
+ when "QPoint"
152
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s, 'attribute_type' => 'QPoint'}
153
+
154
+ when "QSize"
155
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s, 'attribute_type' => 'QSize'}
156
+
157
+ when "QDateTime"
158
+
159
+ params = { 'attribute_name' => attribute.to_s, 'attribute_type' => 'QDateTime' }
160
+
161
+ if value.kind_of? String
162
+ params[ 'attribute_value' ] = value.to_s
163
+
164
+ elsif value.kind_of? Integer
165
+ params[ 'attribute_value' ] = value.to_s
166
+
167
+ elsif value.kind_of? Time
168
+ params[ 'attribute_value' ] = value.to_i.to_s
169
+
170
+ elsif value.kind_of? DateTime
171
+ params[ 'attribute_value' ] = Time.parse( value.to_s ).to_i.to_s
172
+
173
+ else
174
+ Kernel::raise ArgumentError.new( "The value for QDateTime type attributes must be of type String, Integer, Time or DateTime, it was #{value.class.to_s}." )
175
+
176
+ end
177
+
178
+ when "QDate"
179
+
180
+ params = { 'attribute_name' => attribute.to_s, 'attribute_type' => 'QDate' }
181
+
182
+ if value.kind_of? String
183
+ params[ 'attribute_value' ] = value.to_s
184
+
185
+ elsif value.kind_of? Date
186
+ temp_date = value.day.to_s << '.' << value.month.to_s << '.' << value.year.to_s
187
+ params[ 'attribute_value' ] = temp_date
188
+
189
+ else
190
+ Kernel::raise ArgumentError.new( "The value for QDate type attributes must be of type String or Date, it was #{value.class.to_s}." )
191
+
192
+ end
193
+
194
+ else
195
+
196
+ #puts "Unidentified.\nName: " << attribute.to_s << "\nValue: " << value.to_s << "\nType: " << type.to_s
197
+ params = { 'attribute_name' => attribute.to_s, 'attribute_value' => value.to_s, 'attribute_type' => type.to_s }
198
+
199
+ end
200
+
201
+ command.command_params( params )
202
+ command.service( 'objectManipulation' )
203
+ returnValue = @sut.execute_command( command )
204
+
205
+ returnValue = "OK"
206
+ begin
207
+ returnValue = @sut.execute_command( command )
208
+ rescue
209
+ MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed when calling method set_attribute with values attribute:#{attribute.to_s} value:#{value.to_s}.;#{identity};set_attribute;"
210
+ Kernel::raise RuntimeError.new("Setting attribute '%s' to value '%s' failed with error: %s" % [attribute, value, returnValue])
211
+ end
212
+
213
+ MobyUtil::Logger.instance.log "behaviour" , "PASS;The method set_attribute was executed successfully with with values attribute:#{attribute.to_s} value:#{value.to_s}.;#{identity};set_attribute;"
214
+
215
+ nil
216
+
217
+
218
+ end
219
+
220
+ # enable hooking for performance measurement & debug logging
221
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
222
+
223
+
224
+ end
225
+
226
+ end
227
+ end
@@ -0,0 +1,140 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyBehaviour
21
+
22
+ module QT
23
+
24
+ # == description
25
+ # Base behaviour
26
+ #
27
+ # == behaviour
28
+ # QtBehaviour
29
+ #
30
+ # == requires
31
+ # sut_qt
32
+ #
33
+ # == sut_type
34
+ # qt
35
+ #
36
+ # == input_type
37
+ # All
38
+ #
39
+ # == sut_version
40
+ # *
41
+ #
42
+ # == objects
43
+ # sut;application
44
+ #
45
+ module Behaviour
46
+
47
+ include MobyBehaviour::Behaviour
48
+
49
+ @@_valid_buttons = [ :NoButton, :Left, :Right, :Middle ]
50
+ @@_buttons_map = { :NoButton => '0', :Left => '1', :Right => '2', :Middle => '4' }
51
+ @@_valid_directions = [ :Up, :Down, :Left, :Right ]
52
+ @@_direction_map = { :Up => '0', :Down => '180', :Left => '270', :Right => '90' }
53
+ @@_pinch_directions = { :Horizontal => '90', :Vertical => '0'}
54
+ @@_rotate_direction = [ :Clockwise, :CounterClockwise ]
55
+
56
+ # == nodoc
57
+ # should this method be private?
58
+ def command_params( command = MobyCommand::WidgetCommand.new )
59
+
60
+ if self.attribute( 'objectType' ) == 'Graphics' and self.attribute( 'visibleOnScreen' ) == 'false' and self.creation_attributes[:visibleOnScreen] != 'false'
61
+ begin
62
+ self.creation_attributes.merge!({'visibleOnScreen' => 'true'})
63
+ self.parent.child(self.creation_attributes)
64
+ rescue
65
+ Kernel::raise MobyBase::TestObjectNotVisibleError
66
+ end
67
+ end
68
+
69
+ command.set_event_type(MobyUtil::Parameter[ @sut.id ][ :event_type, "0" ])
70
+
71
+ #for components with object visible on screen but not actual widgets or graphicsitems
72
+ if self.attribute( 'objectType' ) == 'Embedded'
73
+ command.application_id( get_application_id )
74
+ command.object_id( parent.id )
75
+ command.object_type( parent.attribute( 'objectType' ).intern )
76
+ else
77
+ command.application_id( get_application_id )
78
+ command.object_id( self.id )
79
+ command.object_type( self.attribute( 'objectType' ).intern )
80
+ end
81
+
82
+ command
83
+
84
+ end
85
+
86
+ # == nodoc
87
+ # should this method be private?
88
+ def plugin_command( require_response = false, command = MobyCommand::WidgetCommand.new )
89
+ command.set_event_type(MobyUtil::Parameter[ @sut.id ][ :event_type, "0" ])
90
+ command.application_id( get_application_id )
91
+ command.object_id( self.id )
92
+ command.object_type( self.attribute('objectType' ).intern)
93
+ command.transitions_off
94
+ command
95
+ end
96
+
97
+ private
98
+
99
+ def do_sleep(time)
100
+
101
+ time = time.to_f
102
+ time = time * 1.3
103
+ #for flicks the duration of the gesture is short but animation (scroll etc..) may not
104
+ #so wait at least one second
105
+ time = 1 if time < 1
106
+ sleep time
107
+
108
+ end
109
+
110
+ def center_x
111
+
112
+ #x = self.attribute( 'x_absolute' ).to_i
113
+ #width = self.attribute( 'width' ).to_i
114
+ #x = x + ( width/2 )
115
+ #x.to_s
116
+
117
+ ( ( self.attribute( 'x_absolute' ).to_i ) + ( self.attribute( 'width' ).to_i / 2 ) ).to_s
118
+
119
+ end
120
+
121
+ def center_y
122
+
123
+ #y = self.attribute( 'y_absolute' ).to_i
124
+ #height = self.attribute( 'height' ).to_i
125
+ #y = y + ( height/2 )
126
+ #y.to_s
127
+
128
+ ( ( self.attribute( 'y_absolute' ).to_i ) + ( self.attribute( 'height' ).to_i / 2 ) ).to_s
129
+
130
+ end
131
+
132
+ # enable hooking for performance measurement & debug logging
133
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
134
+
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+
@@ -0,0 +1,317 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of TDriver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+ module MobyBehaviour
21
+
22
+ module QT
23
+
24
+ # == description
25
+ # Behaviours for configuring the logging services on the target.
26
+ #
27
+ # == behaviour
28
+ # QtConfigureBehaviour
29
+ #
30
+ # == requires
31
+ # testability-driver-qt-sut-plugin
32
+ #
33
+ # == sut_type
34
+ # qt
35
+ #
36
+ # == input_type
37
+ # All
38
+ #
39
+ # == sut_version
40
+ # *
41
+ #
42
+ # == objects
43
+ # sut;application
44
+ #
45
+ module ConfigureBehaviour
46
+
47
+ include MobyBehaviour::QT::Behaviour
48
+
49
+ @@_valid_levels = [ :FATAL, :ERROR, :INFO, :WARNING, :DEBUG ]
50
+
51
+ # == description
52
+ # Enabled the logging on the target for the given application or sut (qttasserver).
53
+ # Logs are written to the target in (\logs\testability)
54
+ #
55
+ # == returns
56
+ # NilClass
57
+ # description: -
58
+ # example: -
59
+ #
60
+ # == exceptions
61
+ # ArgumentError
62
+ # description: In case the given parameters are not valid.
63
+ def enable_logger
64
+ configure_logger( {:logEnabled => true} )
65
+ end
66
+
67
+ # == description
68
+ # Disable the logging on the target for the given application or sut (qttasserver).
69
+ # Logs are left as they are.
70
+ #
71
+ # == returns
72
+ # NilClass
73
+ # description: -
74
+ # example: -
75
+ #
76
+ # == exceptions
77
+ # ArgumentError
78
+ # description: In case the given parameters are not valid.
79
+ def disable_logger
80
+ configure_logger( {:logEnabled => false} )
81
+ end
82
+
83
+ # == description
84
+ # Set the log level for the application or sut (qttasserver). Affects only the running process.
85
+ # Will not be stored as permanent setting.
86
+ #
87
+ # == arguments
88
+ # level
89
+ # Symbol
90
+ # description:
91
+ # The log level.
92
+ # See [link="#log_levels_table"]Valid log levels table[/link] for valid keys.
93
+ # example: :INFO
94
+ #
95
+ # == tables
96
+ # log_levels_table
97
+ # title: Valid log levels
98
+ # |Level|Type|Description|
99
+ # |:FATAL|Symbol|Log fatal level message|
100
+ # |:ERROR|Symbol|Log fatal and error level messages|
101
+ # |:INFO|Symbol|Log fatal, error and info level messages|
102
+ # |:WARNING|Symbol|Log fatal, error, info and warning level messages|
103
+ # |:DEBUG|Symbol|Log all messages|
104
+ #
105
+ # == returns
106
+ # NilClass
107
+ # description: -
108
+ # example: -
109
+ #
110
+ # == exceptions
111
+ # ArgumentError
112
+ # description: In case the given level is not valid.
113
+ def set_log_level(level)
114
+ configure_logger( {:logLevel => level} )
115
+ end
116
+
117
+ # == description
118
+ # Change the folder to where the logs are written to for the application or sut (qttasserver).
119
+ #
120
+ # == arguments
121
+ # folder
122
+ # String
123
+ # description:
124
+ # New location for the logs.
125
+ # example: '/tmp/logs'
126
+ #
127
+ # == returns
128
+ # NilClass
129
+ # description: -
130
+ # example: -
131
+ def set_log_folder(folder)
132
+ configure_logger( {:logFolder => folder} )
133
+ end
134
+
135
+ # == description
136
+ # Can be used to set logging to be done to qDebug. All tdriver target logging
137
+ # will go to qDebug not the log file.
138
+ #
139
+ # == arguments
140
+ # to_qdebug
141
+ # boolean
142
+ # description:
143
+ # True to logs message to qDebug instead of a file.
144
+ # example: true
145
+ #
146
+ # == returns
147
+ # NilClass
148
+ # description: -
149
+ # example: -
150
+ def log_to_qdebug(to_qdebug = true)
151
+ configure_logger( {:logToQDebug => to_qdebug} )
152
+ end
153
+
154
+ # == description
155
+ # Set the qDebug message to be append to the logs or not.
156
+ # By default qDebug messages are not written to the logs.
157
+ #
158
+ # == arguments
159
+ # include
160
+ # boolean
161
+ # description:
162
+ # True to log qDebug messages and false to not
163
+ # example: true
164
+ #
165
+ # == returns
166
+ # NilClass
167
+ # description: -
168
+ # example: -
169
+ def log_qdebug(include = true)
170
+ configure_logger( {:logQDebug => include} )
171
+ end
172
+
173
+ # == description
174
+ # Set max size for the log file. When the level is reached the log file is renamed
175
+ # as old_"name of log file".log and a new file is started. By default the size is
176
+ # 100000.
177
+ #
178
+ # == arguments
179
+ # size
180
+ # integer
181
+ # description:
182
+ # The new log file size
183
+ # example: 500000
184
+ #
185
+ # == returns
186
+ # NilClass
187
+ # description: -
188
+ # example: -
189
+ def set_log_size(size)
190
+ configure_logger( {:logSize => size} )
191
+ end
192
+
193
+ # == description
194
+ # Clears the log file.
195
+ #
196
+ # == returns
197
+ # NilClass
198
+ # description: -
199
+ # example: -
200
+ def clear_log
201
+ configure_logger( {:clearLog => true} )
202
+ end
203
+
204
+ # == description
205
+ # Set the logger to log listed events. Events have to be separated by comma.
206
+ # e.g MouseEvent, Paint
207
+ # The event name does not have to be complete. e.g Mouse will log all events with the
208
+ # word Mouse.
209
+ #
210
+ # == arguments
211
+ # event_list
212
+ # String
213
+ # description:
214
+ # Comma separated list of events
215
+ # example: 'Mouse','Touch'
216
+ #
217
+ # == returns
218
+ # NilClass
219
+ # description: -
220
+ # example: -
221
+ #
222
+ def log_events( event_list = '')
223
+ begin
224
+
225
+ params = {:logEvents => 'true'}
226
+ perform_command( MobyCommand::ConfigureCommand.new( "configureEventLogging", params, event_list ) )
227
+
228
+ rescue Exception => e
229
+
230
+ MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed to enable event logging. With event_list \"#{event_list};log_events"
231
+ Kernel::raise e
232
+
233
+ end
234
+
235
+ MobyUtil::Logger.instance.log "behaviour" , "PASS;Event logging enabled. With event_list \"#{event_list};log_events"
236
+
237
+ end
238
+
239
+ # == description
240
+ # Stop logging events.
241
+ #
242
+ # == returns
243
+ # NilClass
244
+ # description: -
245
+ # example: -
246
+ #
247
+ def stop_event_logging
248
+ begin
249
+
250
+ params = {:logEvents => 'false'}
251
+ perform_command( MobyCommand::ConfigureCommand.new( "configureEventLogging", params) )
252
+
253
+ rescue Exception => e
254
+
255
+ MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed to stop event logging.;stop_event_logging"
256
+ Kernel::raise e
257
+
258
+ end
259
+
260
+ MobyUtil::Logger.instance.log "behaviour" , "PASS;Event logging stopped.;stop_event_logging"
261
+
262
+ end
263
+
264
+ private
265
+
266
+ # Configure the logger for qttasserver and plugins
267
+ # Parameters are to be passed as a hash with one or more
268
+ # of the following values:
269
+ # :logLevel => :DEBUG (or :FATAL, :ERROR, :INFO or :WARNING. DEBUG will log the most)
270
+ # :logToQDebug => true/false
271
+ # :logFolder => '/tmp/logs/'
272
+ # :logQDebug => true/false
273
+ # :logSize => 10000
274
+ # :logEnabled => true/false
275
+ def configure_logger( params_hash = nil)
276
+
277
+ begin
278
+ raise ArgumentError.new( "No parameters given." ) unless params_hash
279
+
280
+ log_level = params_hash[:logLevel]
281
+
282
+ if log_level
283
+ raise ArgumentError.new( "Invalid log level." ) unless @@_valid_levels.include?(log_level)
284
+ end
285
+
286
+ perform_command(MobyCommand::ConfigureCommand.new( "configureLogger", params_hash ))
287
+
288
+ rescue Exception => e
289
+
290
+ MobyUtil::Logger.instance.log "behaviour" , "FAIL;Failed to configure logger. With params \"#{params_hash.to_s};configure_logger"
291
+ Kernel::raise e
292
+
293
+ end
294
+
295
+ MobyUtil::Logger.instance.log "behaviour" , "PASS;Succesfully configured logger. With params \"#{params_hash.to_s};configure_logger"
296
+
297
+ end
298
+
299
+ def perform_command(command)
300
+
301
+ if self.class == MobyBase::SUT
302
+ execute_command( command )
303
+ else
304
+ command.application_id = get_application_id
305
+ @sut.execute_command( command )
306
+ end
307
+
308
+ end
309
+
310
+ # enable hooking for performance measurement & debug logging
311
+ MobyUtil::Hooking.instance.hook_methods( self ) if defined?( MobyUtil::Hooking )
312
+
313
+ end # ConfigureBehaviour
314
+
315
+ end # QT
316
+
317
+ end # MobyBehaviour