testability-driver-qt-sut-plugin 1.1.0 → 1.1.1
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/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/attribute.rb +40 -6
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/settings.rb +300 -0
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/sut.rb +86 -26
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/plugin.rb +34 -12
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/sut/adapter.rb +8 -4
- data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/message_composer.rb +1 -0
- data/xml/behaviour/qt.xml +26 -0
- data/xml/keymap/qt.xml +2 -2
- data/xml/template/qt.xml +2 -1
- metadata +29 -11
data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/attribute.rb
CHANGED
@@ -52,9 +52,13 @@ module MobyBehaviour
|
|
52
52
|
# == arguments
|
53
53
|
# attribute
|
54
54
|
# String
|
55
|
-
# description: Name of the attribute to be set
|
55
|
+
# description: Name of the attribute to be set as string
|
56
56
|
# example: "text"
|
57
57
|
#
|
58
|
+
# Symbol
|
59
|
+
# description: Name of the attribute to be set as symbol
|
60
|
+
# example: :text
|
61
|
+
#
|
58
62
|
# value
|
59
63
|
# String
|
60
64
|
# description: New value of the attribute.
|
@@ -64,10 +68,26 @@ module MobyBehaviour
|
|
64
68
|
# description: New value of the attribute.
|
65
69
|
# example: 200
|
66
70
|
#
|
67
|
-
#
|
71
|
+
# TrueClass
|
68
72
|
# description: New value of the attribute.
|
69
73
|
# example: true
|
70
74
|
#
|
75
|
+
# FalseClass
|
76
|
+
# description: New value of the attribute.
|
77
|
+
# example: false
|
78
|
+
#
|
79
|
+
# Date
|
80
|
+
# description: New value of the attribute.
|
81
|
+
# example: Date.today
|
82
|
+
#
|
83
|
+
# Time
|
84
|
+
# description: New value of the attribute.
|
85
|
+
# example: Time.now
|
86
|
+
#
|
87
|
+
# DateTime
|
88
|
+
# description: New value of the attribute.
|
89
|
+
# example: DateTime.now
|
90
|
+
#
|
71
91
|
# type
|
72
92
|
# String
|
73
93
|
# description: Type of the value. If this argument is not given, the type will be detected based on the class of the value argument.
|
@@ -94,13 +114,27 @@ module MobyBehaviour
|
|
94
114
|
# description: One of the arguments is not valid
|
95
115
|
# RuntimeError
|
96
116
|
# description: Setting of the attribute failed
|
97
|
-
def set_attribute(attribute, value, type = nil)
|
117
|
+
def set_attribute( attribute, value, type = nil )
|
118
|
+
|
119
|
+
# verify attribute argument variable type
|
120
|
+
attribute.check_type [ Symbol, String ], 'wrong argument type $1 for attribute name (expected $2)'
|
121
|
+
|
122
|
+
# verify type argument variable type
|
123
|
+
type.check_type [ NilClass, String ], 'wrong argument type $1 for attribute type (expected $2)'
|
124
|
+
|
125
|
+
# convert symbol to string
|
126
|
+
attribute = attribute.to_s if attribute.kind_of?( Symbol )
|
98
127
|
|
99
|
-
|
100
|
-
|
128
|
+
# raise exception if attribute name was not given
|
129
|
+
attribute.not_empty 'attribute name cannot be be empty string'
|
130
|
+
|
131
|
+
type.not_empty 'argument type must be either nil or non empty string' if type.kind_of?( String )
|
132
|
+
|
133
|
+
# in qt_behaviour
|
134
|
+
command = command_params
|
101
135
|
|
102
|
-
command = command_params #in qt_behaviour
|
103
136
|
command.transitions_off
|
137
|
+
|
104
138
|
command.command_name( 'SetAttribute' )
|
105
139
|
|
106
140
|
case type
|
@@ -0,0 +1,300 @@
|
|
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
|
+
#
|
26
|
+
# == behaviour
|
27
|
+
# QtSettings
|
28
|
+
#
|
29
|
+
# == requires
|
30
|
+
# testability-driver-qt-sut-plugin
|
31
|
+
#
|
32
|
+
# == input_type
|
33
|
+
# *
|
34
|
+
#
|
35
|
+
# == sut_type
|
36
|
+
# QT
|
37
|
+
#
|
38
|
+
# == sut_version
|
39
|
+
# *
|
40
|
+
#
|
41
|
+
# == objects
|
42
|
+
# *
|
43
|
+
#
|
44
|
+
module Settings
|
45
|
+
|
46
|
+
include MobyBehaviour::QT::Behaviour
|
47
|
+
|
48
|
+
|
49
|
+
# == description
|
50
|
+
# Sets the given settings to the settings storage defined in the setting indentifiers.
|
51
|
+
# QSettings documentation will give more information on how the settigns are created
|
52
|
+
# and accessed.
|
53
|
+
#
|
54
|
+
# == arguments
|
55
|
+
# identifiers
|
56
|
+
# Hash
|
57
|
+
# description: Idenfifiers for the settings. See QSettings documentations for details on how
|
58
|
+
# settings are accessed. You can use either direct file name or organization and
|
59
|
+
# application name way to access and edit the settings.
|
60
|
+
# See [link="#identifier_params_table1"]file path access [/link] and
|
61
|
+
# [link="#identifier_params_table2"]registry access [/link] on how
|
62
|
+
# specify the idenfitication details for the settings to be accessed.
|
63
|
+
#
|
64
|
+
# example: File name: {:fileName => '/etc/init/settings.ini', :format => 'Ini'}
|
65
|
+
# Registry: {:organization => 'Tdriver', :application => 'qttasserver'}
|
66
|
+
#
|
67
|
+
# values
|
68
|
+
# Hash
|
69
|
+
# description: Setting values to be edited (key and value)
|
70
|
+
# example: {:setting => 'value'}
|
71
|
+
#
|
72
|
+
# == tables
|
73
|
+
# identifier_params_table1
|
74
|
+
# title: Hash argument when using file path
|
75
|
+
# description: Valid values when using filepath to access settings.
|
76
|
+
# |Key|Description|Example|
|
77
|
+
# |:fileName|Settings file name or path to registry|:fileName => '/etc/init/settings.ini'|
|
78
|
+
# |:format|Settings storage format. Possible values: Ini, Native, Invalid|:format => 'Ini'|
|
79
|
+
#
|
80
|
+
# identifier_params_table2
|
81
|
+
# title: Hash argument when using registry type access to settings
|
82
|
+
# description: Valid values when using registry type way to access settings.
|
83
|
+
# |Key|Description|Example|
|
84
|
+
# |:organization|Organization for the settings|:organization => 'MySoft'|
|
85
|
+
# |:application|Application using the settings|:application => 'MyApp'|
|
86
|
+
# |:format|Settings storage format. Possible values: ini, native, invalid. Defaults to Native if not set.|:format => 'native'|
|
87
|
+
# |:scope|Scope of the settings. User specific or system wide. Possible values: user, system. Defaults to user.|:scope => 'system'|
|
88
|
+
#
|
89
|
+
# == returns
|
90
|
+
# NilClass
|
91
|
+
# description: -
|
92
|
+
# example: -
|
93
|
+
#
|
94
|
+
# == exceptions
|
95
|
+
# ArgumentError
|
96
|
+
# description: In case the given parameters are not valid.
|
97
|
+
#
|
98
|
+
def set_settings(identifiers, values)
|
99
|
+
|
100
|
+
begin
|
101
|
+
raise ArgumentError.new("No values to set") unless values
|
102
|
+
|
103
|
+
params = generate_fixture_params(identifiers, values)
|
104
|
+
|
105
|
+
self.fixture('setting', 'set', params)
|
106
|
+
|
107
|
+
rescue Exception => e
|
108
|
+
|
109
|
+
$logger.log "behaviour" , "FAIL;Failed set settings \"#{identifiers.to_s}\", \"#{values.to_s}\".;set_settings;"
|
110
|
+
Kernel::raise e
|
111
|
+
|
112
|
+
end
|
113
|
+
|
114
|
+
$logger.log "behaviour" , "PASS;Operation set settings executed successfully \"#{identifiers.to_s}\", \"#{values.to_s}\".;set_settings;"
|
115
|
+
|
116
|
+
nil
|
117
|
+
end
|
118
|
+
|
119
|
+
|
120
|
+
# == description
|
121
|
+
# Remove the settings corresponding to the given keys from the settings idenfitied by
|
122
|
+
# the identifiers.
|
123
|
+
#
|
124
|
+
# == arguments
|
125
|
+
# identifiers
|
126
|
+
# Hash
|
127
|
+
# description: Idenfifiers for the settings. See QSettings documentations for details on how
|
128
|
+
# settings are accessed. You can use either direct file name or organization and
|
129
|
+
# application name way to access and edit the settings.
|
130
|
+
# See [link="#identifier_params_table1"]file path access [/link] and
|
131
|
+
# [link="#identifier_params_table2"]registry access [/link] on how
|
132
|
+
# specify the idenfitication details for the settings to be accessed.
|
133
|
+
#
|
134
|
+
# example: File name: {:fileName => '/etc/init/settings.ini', :format => 'Ini'}
|
135
|
+
# Registry: {:organization => 'Tdriver', :application => 'qttasserver'}
|
136
|
+
#
|
137
|
+
# setting_keys
|
138
|
+
# Array
|
139
|
+
# description: Array of settings keys which are to be removed.
|
140
|
+
# example: [setting1, setting2]
|
141
|
+
#
|
142
|
+
# == returns
|
143
|
+
# NilClass
|
144
|
+
# description: -
|
145
|
+
# example: -
|
146
|
+
#
|
147
|
+
# == exceptions
|
148
|
+
# ArgumentError
|
149
|
+
# description: In case the given parameters are not valid.
|
150
|
+
#
|
151
|
+
def remove_settings(identifiers, setting_keys)
|
152
|
+
begin
|
153
|
+
raise ArgumentError.new("No settings to remove") unless setting_keys
|
154
|
+
|
155
|
+
params = generate_fixture_params(identifiers, nil)
|
156
|
+
setting_keys.each{|value| params[value.to_sym] = ''}
|
157
|
+
|
158
|
+
self.fixture('setting', 'remove', params)
|
159
|
+
|
160
|
+
rescue Exception => e
|
161
|
+
|
162
|
+
$logger.log "behaviour" , "FAIL;Failed remove settings \"#{identifiers.to_s}\", \"#{setting_keys.to_s}\".;remove_settings;"
|
163
|
+
Kernel::raise e
|
164
|
+
|
165
|
+
end
|
166
|
+
|
167
|
+
$logger.log "behaviour" , "PASS;Operation remove settings executed successfully \"#{identifiers.to_s}\", \"#{setting_keys.to_s}\".;remove_settings;"
|
168
|
+
|
169
|
+
nil
|
170
|
+
|
171
|
+
end
|
172
|
+
|
173
|
+
# == description
|
174
|
+
# Read the setting values corresponding to the given keys from the settings idenfitied by
|
175
|
+
# the identifiers.
|
176
|
+
#
|
177
|
+
# == arguments
|
178
|
+
# identifiers
|
179
|
+
# Hash
|
180
|
+
# description: Idenfifiers for the settings. See QSettings documentations for details on how
|
181
|
+
# settings are accessed. You can use either direct file name or organization and
|
182
|
+
# application name way to access and edit the settings.
|
183
|
+
# See [link="#identifier_params_table1"]file path access [/link] and
|
184
|
+
# [link="#identifier_params_table2"]registry access [/link] on how
|
185
|
+
# specify the idenfitication details for the settings to be accessed.
|
186
|
+
#
|
187
|
+
# example: File name: {:fileName => '/etc/init/settings.ini', :format => 'Ini'}
|
188
|
+
# Registry: {:organization => 'Tdriver', :application => 'qttasserver'}
|
189
|
+
#
|
190
|
+
# setting_keys
|
191
|
+
# Array
|
192
|
+
# description: Array of settings keys which are to be removed.
|
193
|
+
# example: [setting1, setting2]
|
194
|
+
#
|
195
|
+
# == returns
|
196
|
+
# Hash
|
197
|
+
# description: Hash table with key value pairs for the settings read.
|
198
|
+
# example: {:setting => 'value'}
|
199
|
+
#
|
200
|
+
# == exceptions
|
201
|
+
# ArgumentError
|
202
|
+
# description: In case the given parameters are not valid.
|
203
|
+
#
|
204
|
+
def read_settings(identifiers, setting_keys)
|
205
|
+
hash = nil
|
206
|
+
begin
|
207
|
+
raise ArgumentError.new("No settings to read") unless setting_keys
|
208
|
+
|
209
|
+
params = generate_fixture_params(identifiers, nil)
|
210
|
+
setting_keys.each{|value| params[value.to_sym] = ''}
|
211
|
+
|
212
|
+
hash = eval(self.fixture('setting', 'read', params))
|
213
|
+
|
214
|
+
rescue Exception => e
|
215
|
+
|
216
|
+
$logger.log "behaviour" , "FAIL;Failed read settings \"#{identifiers.to_s}\", \"#{setting_keys.to_s}\".;read_settings;"
|
217
|
+
Kernel::raise e
|
218
|
+
|
219
|
+
end
|
220
|
+
|
221
|
+
$logger.log "behaviour" , "PASS;Operation read settings executed successfully \"#{identifiers.to_s}\", \"#{setting_keys.to_s}\".;read_settings;"
|
222
|
+
|
223
|
+
hash
|
224
|
+
|
225
|
+
end
|
226
|
+
|
227
|
+
# == description
|
228
|
+
# Read the all the setting values from the settings idenfitied by
|
229
|
+
# the identifiers.
|
230
|
+
#
|
231
|
+
# == arguments
|
232
|
+
# identifiers
|
233
|
+
# Hash
|
234
|
+
# description: Idenfifiers for the settings. See QSettings documentations for details on how
|
235
|
+
# settings are accessed. You can use either direct file name or organization and
|
236
|
+
# application name way to access and edit the settings.
|
237
|
+
# See [link="#identifier_params_table1"]file path access [/link] and
|
238
|
+
# [link="#identifier_params_table2"]registry access [/link] on how
|
239
|
+
# specify the idenfitication details for the settings to be accessed.
|
240
|
+
#
|
241
|
+
# example: File name: {:fileName => '/etc/init/settings.ini', :format => 'Ini'}
|
242
|
+
# Registry: {:organization => 'Tdriver', :application => 'qttasserver'}
|
243
|
+
#
|
244
|
+
#
|
245
|
+
# == returns
|
246
|
+
# Hash
|
247
|
+
# description: Hash table with key value pairs for the settings read.
|
248
|
+
# example: {:setting => 'value'}
|
249
|
+
#
|
250
|
+
# == exceptions
|
251
|
+
# ArgumentError
|
252
|
+
# description: In case the given parameters are not valid.
|
253
|
+
#
|
254
|
+
def read_all_settings(identifiers)
|
255
|
+
hash = nil
|
256
|
+
begin
|
257
|
+
|
258
|
+
params = generate_fixture_params(identifiers, nil)
|
259
|
+
hash = eval(self.fixture('setting', 'readAll', params))
|
260
|
+
|
261
|
+
rescue Exception => e
|
262
|
+
|
263
|
+
$logger.log "behaviour" , "FAIL;Failed read all settings \"#{identifiers.to_s}\".;read_all_settings;"
|
264
|
+
Kernel::raise e
|
265
|
+
|
266
|
+
end
|
267
|
+
|
268
|
+
$logger.log "behaviour" , "PASS;Operation read all settings executed successfully \"#{identifiers.to_s}\".;read_all_settings;"
|
269
|
+
|
270
|
+
hash
|
271
|
+
|
272
|
+
end
|
273
|
+
|
274
|
+
private
|
275
|
+
|
276
|
+
def generate_fixture_params(identifiers, params)
|
277
|
+
|
278
|
+
raise ArgumentError.new("No enough information to access settings. Define filename or organization") unless identifiers[:fileName] or identifiers[:organization]
|
279
|
+
raise ArgumentError.new("Cannot define both fileName and organization.") if identifiers[:fileName] and identifiers[:organization]
|
280
|
+
|
281
|
+
fixture_params = Hash.new
|
282
|
+
fixture_params[:settingFileName] = identifiers[:fileName] if identifiers[:fileName]
|
283
|
+
fixture_params[:settingOrganization] = identifiers[:organization] if identifiers[:organization]
|
284
|
+
|
285
|
+
fixture_params[:settingApplication] = identifiers[:application] if identifiers[:application]
|
286
|
+
fixture_params[:settingFormat] = identifiers[:format] if identifiers[:format]
|
287
|
+
fixture_params[:settingScope] = identifiers[:scope] if identifiers[:scope]
|
288
|
+
fixture_params.merge!(params) if params
|
289
|
+
fixture_params
|
290
|
+
end
|
291
|
+
|
292
|
+
# enable hooking for performance measurement & debug logging
|
293
|
+
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
294
|
+
|
295
|
+
|
296
|
+
end # Settings
|
297
|
+
|
298
|
+
end
|
299
|
+
|
300
|
+
end # MobyBase
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# -*- coding: utf-8 -*-
|
1
2
|
############################################################################
|
2
3
|
##
|
3
4
|
## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
|
@@ -116,11 +117,11 @@ module MobyBehaviour
|
|
116
117
|
begin
|
117
118
|
# execute the application control service request
|
118
119
|
apps = execute_command( MobyCommand::Application.new( :ListStartedApps ) )
|
119
|
-
|
120
|
+
$logger.log "behaviour", "PASS;Successfully listed applications.;#{ id };sut;{};list_started_apps;"
|
120
121
|
|
121
122
|
rescue Exception => e
|
122
123
|
|
123
|
-
|
124
|
+
$logger.log "behaviour", "FAIL;Failed to list applications.;#{ id };sut;{};list_started_apps;"
|
124
125
|
Kernel::raise RuntimeError.new( "Unable to list started applications: Exception: #{ e.message } (#{ e.class })" )
|
125
126
|
|
126
127
|
end
|
@@ -189,6 +190,7 @@ module MobyBehaviour
|
|
189
190
|
# RuntimeError
|
190
191
|
# description: Timeout of %s seconds reached. %s
|
191
192
|
def execute_shell_command(command, param = { :detached => "false"} )
|
193
|
+
|
192
194
|
Kernel::raise ArgumentError.new("The command argument must be a non empty String.") unless ( command.kind_of?( String ) and !command.empty? )
|
193
195
|
Kernel::raise ArgumentError.new("The parameters argumet must be a Hash.") unless ( param.kind_of?(Hash) )
|
194
196
|
|
@@ -201,29 +203,36 @@ module MobyBehaviour
|
|
201
203
|
# Launch the program execution into the background, wait for it to finish.
|
202
204
|
if param[:wait].to_s == "true"
|
203
205
|
param[:threaded] = "true"
|
204
|
-
|
206
|
+
|
207
|
+
#pid = execute_command( MobyCommand::Application.new( :Shell, command, nil, nil, nil, nil, nil, nil, param ) ).to_i
|
208
|
+
|
209
|
+
pid = execute_command( MobyCommand::Application.new( :Shell, { :application_name => command, :flags => param } ) ).to_i
|
210
|
+
|
205
211
|
data = ""
|
206
212
|
if pid != 0
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
213
|
+
time = Time.new + timeout
|
214
|
+
while true
|
215
|
+
obj = shell_command(pid)
|
216
|
+
sleep 1
|
217
|
+
data += obj['output']
|
218
|
+
if Time.new > time
|
219
|
+
command_params = {:kill => 'true'}
|
220
|
+
command_output = shell_command(pid, command_params)['output']
|
221
|
+
Kernel::raise RuntimeError.new( "Timeout of #{timeout.to_s} seconds reached. #{command_output}")
|
222
|
+
elsif obj['status'] == "RUNNING"
|
223
|
+
next
|
224
|
+
else
|
225
|
+
break
|
226
|
+
end
|
220
227
|
end
|
221
228
|
end
|
222
|
-
end
|
223
229
|
return data
|
224
230
|
end
|
225
231
|
|
226
|
-
return execute_command( MobyCommand::Application.new( :Shell, command, nil, nil, nil, nil, nil, nil, param ) ).to_s
|
232
|
+
#return execute_command( MobyCommand::Application.new( :Shell, command, nil, nil, nil, nil, nil, nil, nil, param ) ).to_s
|
233
|
+
|
234
|
+
return execute_command( MobyCommand::Application.new( :Shell, { :application_name => command, :flags => param } ) ).to_s
|
235
|
+
|
227
236
|
end
|
228
237
|
|
229
238
|
# == description
|
@@ -260,7 +269,11 @@ module MobyBehaviour
|
|
260
269
|
def shell_command(pid, param = {} )
|
261
270
|
Kernel::raise ArgumentError.new("pid argument should be positive integer.") unless pid.to_i > 0
|
262
271
|
param[ :status ] = 'true'
|
263
|
-
|
272
|
+
|
273
|
+
#xml_source = execute_command( MobyCommand::Application.new( :Shell, pid.to_s, nil, nil, nil, nil, nil, nil, nil, param ) ).to_s
|
274
|
+
|
275
|
+
xml_source = execute_command( MobyCommand::Application.new( :Shell, { :application_name => pid.to_s, :flags => param } ) ).to_s
|
276
|
+
|
264
277
|
if param[:kill].nil?
|
265
278
|
xml = Nokogiri::XML(xml_source)
|
266
279
|
data = {}
|
@@ -314,12 +327,12 @@ module MobyBehaviour
|
|
314
327
|
|
315
328
|
rescue Exception => e
|
316
329
|
|
317
|
-
|
330
|
+
$logger.log "behaviour" , "FAIL;Failed to find application.;#{id.to_s};sut;{};application;" << (hash_uid.kind_of?(Hash) ? hash_uid.inspect : hash_uid.class.to_s)
|
318
331
|
Kernel::raise e
|
319
332
|
|
320
333
|
end
|
321
334
|
|
322
|
-
|
335
|
+
$logger.log "behaviour" , "PASS;Application found.;#{id.to_s};sut;{};application;" << hash_uid.inspect
|
323
336
|
|
324
337
|
app_child
|
325
338
|
|
@@ -334,8 +347,13 @@ module MobyBehaviour
|
|
334
347
|
# example: -
|
335
348
|
# == exceptions
|
336
349
|
def system_information
|
337
|
-
|
350
|
+
|
351
|
+
# xml_source = execute_command( MobyCommand::Application.new( :SystemInfo, nil) )
|
352
|
+
|
353
|
+
xml_source = execute_command( MobyCommand::Application.new( :SystemInfo ) )
|
354
|
+
|
338
355
|
MobyBase::StateObject.new( xml_source )
|
356
|
+
|
339
357
|
end
|
340
358
|
|
341
359
|
# == description
|
@@ -492,18 +510,34 @@ module MobyBehaviour
|
|
492
510
|
def log_process_mem_start(thread_name, file_name = nil, timestamp_type = nil, interval_s = nil)
|
493
511
|
status = nil
|
494
512
|
begin
|
513
|
+
|
514
|
+
=begin
|
495
515
|
status = execute_command(
|
496
516
|
MobyCommand::Application.new(
|
497
517
|
:ProcessMemLoggingStart,
|
498
518
|
thread_name,
|
499
519
|
nil, nil, nil, nil, nil, nil,
|
500
520
|
{:file_name => file_name, :timestamp => timestamp_type, :interval_s => interval_s} ) )
|
521
|
+
=end
|
522
|
+
|
523
|
+
status = execute_command(
|
524
|
+
MobyCommand::Application.new(
|
525
|
+
:ProcessMemLoggingStart,
|
526
|
+
{ :application_name => thread_name, :flags => { :file_name => file_name, :timestamp => timestamp_type, :interval_s => interval_s } }
|
527
|
+
)
|
528
|
+
)
|
529
|
+
|
501
530
|
$logger.log "behaviour", "PASS;Successfully started process memory logging.;#{ id };sut;{};log_process_mem_start;"
|
531
|
+
|
502
532
|
rescue Exception => e
|
533
|
+
|
503
534
|
$logger.log "behaviour", "FAIL;Failed to start process memory logging.;#{ id };sut;{};log_process_mem_start;"
|
504
535
|
Kernel::raise RuntimeError.new( "Unable to start process memory logging: Exception: #{ e.message } (#{ e.class })" )
|
536
|
+
|
505
537
|
end
|
538
|
+
|
506
539
|
status
|
540
|
+
|
507
541
|
end
|
508
542
|
|
509
543
|
# == nodoc
|
@@ -533,12 +567,23 @@ module MobyBehaviour
|
|
533
567
|
def log_process_mem_stop(thread_name, return_data = nil)
|
534
568
|
log = nil
|
535
569
|
begin
|
570
|
+
|
571
|
+
=begin
|
536
572
|
log = execute_command(
|
537
573
|
MobyCommand::Application.new(
|
538
574
|
:ProcessMemLoggingStop,
|
539
575
|
thread_name,
|
540
576
|
nil, nil, nil, nil, nil, nil,
|
541
577
|
{:return_data => return_data} ) )
|
578
|
+
=end
|
579
|
+
|
580
|
+
log = execute_command(
|
581
|
+
MobyCommand::Application.new(
|
582
|
+
:ProcessMemLoggingStop,
|
583
|
+
{ :application_name => thread_name, :flags => { :return_data => return_data } }
|
584
|
+
)
|
585
|
+
)
|
586
|
+
|
542
587
|
$logger.log "behaviour", "PASS;Successfully stopped process memory logging.;#{ id };sut;{};log_process_mem_stop;"
|
543
588
|
rescue Exception => e
|
544
589
|
$logger.log "behaviour", "FAIL;Failed to stop process memory logging.;#{ id };sut;{};log_process_mem_stop;"
|
@@ -564,18 +609,34 @@ module MobyBehaviour
|
|
564
609
|
# description: -
|
565
610
|
# example: -
|
566
611
|
#
|
567
|
-
def cpu_load_start(
|
612
|
+
def cpu_load_start( cpu_load )
|
568
613
|
begin
|
614
|
+
|
615
|
+
=begin
|
569
616
|
status = execute_command(
|
570
617
|
MobyCommand::Application.new(
|
571
618
|
:CpuLoadStart,
|
572
619
|
nil, nil, nil, nil, nil, nil, nil,
|
573
|
-
{:cpu_load =>
|
620
|
+
{:cpu_load => cpu_load} ) )
|
621
|
+
=end
|
622
|
+
|
623
|
+
status = execute_command(
|
624
|
+
MobyCommand::Application.new(
|
625
|
+
:CpuLoadStart,
|
626
|
+
{ :flags => { :cpu_load => cpu_load } }
|
627
|
+
)
|
628
|
+
)
|
629
|
+
|
574
630
|
$logger.log "behaviour", "PASS;Successfully started generating CPU load.;#{ id };sut;{};cpu_load_start;"
|
631
|
+
|
575
632
|
rescue Exception => e
|
633
|
+
|
576
634
|
$logger.log "behaviour", "FAIL;Failed to start generating CPU load.;#{ id };sut;{};cpu_load_start;"
|
635
|
+
|
577
636
|
Kernel::raise RuntimeError.new( "Unable to start generating CPU load: Exception: #{ e.message } (#{ e.class })" )
|
637
|
+
|
578
638
|
end
|
639
|
+
|
579
640
|
end
|
580
641
|
|
581
642
|
# == description
|
@@ -644,7 +705,7 @@ module MobyBehaviour
|
|
644
705
|
# the behaviour returns the amout of behaviours
|
645
706
|
# sleep to avoid sending messages to the app untill the
|
646
707
|
# commands have been executed
|
647
|
-
sleep (ret*interval)
|
708
|
+
sleep ( ret * interval )
|
648
709
|
|
649
710
|
$logger.log "behaviour", "PASS;Successfully executed grouped behaviours.;#{ id };sut;{};group_behaviours;"
|
650
711
|
rescue Exception => e
|
@@ -688,7 +749,6 @@ module MobyBehaviour
|
|
688
749
|
|
689
750
|
# enable hooking for performance measurement & debug logging
|
690
751
|
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
691
|
-
|
692
752
|
end
|
693
753
|
|
694
754
|
end
|
@@ -34,9 +34,10 @@ module MobyPlugin
|
|
34
34
|
## plugin configuration, constructor and deconstructor methods
|
35
35
|
def self.plugin_name
|
36
36
|
|
37
|
+
#File.basename( __FILE__, '.rb' ).downcase # => "tdriver-qt-sut-plugin"
|
38
|
+
|
37
39
|
# return plugin name as string
|
38
40
|
"testability-driver-qt-sut-plugin"
|
39
|
-
#File.basename( __FILE__, '.rb' ).downcase # => "tdriver-qt-sut-plugin"
|
40
41
|
|
41
42
|
end
|
42
43
|
|
@@ -52,19 +53,19 @@ module MobyPlugin
|
|
52
53
|
# load plugin specific implementation or other initialization etc.
|
53
54
|
MobyUtil::FileHelper.load_modules(
|
54
55
|
|
55
|
-
# load utility
|
56
|
+
# load utility modules
|
56
57
|
'util/*.rb',
|
57
58
|
|
58
|
-
# sut
|
59
|
+
# sut communication class
|
59
60
|
'sut/communication.rb',
|
60
61
|
|
61
|
-
# sut adapter
|
62
|
+
# sut adapter class
|
62
63
|
'sut/adapter.rb',
|
63
64
|
|
64
65
|
# sut controller
|
65
66
|
'sut/controller.rb',
|
66
67
|
|
67
|
-
# qt behaviour
|
68
|
+
# qt behaviour abstraction class
|
68
69
|
'behaviours/behaviour.rb',
|
69
70
|
|
70
71
|
# load behaviour(s)
|
@@ -99,13 +100,34 @@ module MobyPlugin
|
|
99
100
|
# returns SUT object - this method will be called from MobyBase::SUTFactory
|
100
101
|
def self.make_sut( sut_id )
|
101
102
|
|
102
|
-
|
103
|
-
socket_read_timeout = $parameters[ sut_id ][ :socket_read_timeout, "15" ].to_i
|
104
|
-
socket_write_timeout = $parameters[ sut_id ][ :socket_write_timeout, "15" ].to_i
|
105
|
-
|
103
|
+
# create sut object
|
106
104
|
MobyBase::SUT.new(
|
107
|
-
|
108
|
-
|
105
|
+
|
106
|
+
# create controller for sut
|
107
|
+
MobyBase::SutController.new(
|
108
|
+
|
109
|
+
# controller id
|
110
|
+
"QT",
|
111
|
+
|
112
|
+
# create sut adapter
|
113
|
+
MobyController::QT::SutAdapter.new(
|
114
|
+
|
115
|
+
# sut id
|
116
|
+
sut_id,
|
117
|
+
|
118
|
+
# tcp/ip read timeouts, default: 15 (seconds)
|
119
|
+
$parameters[ sut_id ][ :socket_read_timeout, "15" ].to_i,
|
120
|
+
|
121
|
+
# tcp/ip write timeouts, default: 15 (seconds)
|
122
|
+
$parameters[ sut_id ][ :socket_write_timeout, "15" ].to_i
|
123
|
+
)
|
124
|
+
|
125
|
+
),
|
126
|
+
|
127
|
+
# pass test object factory class
|
128
|
+
MobyBase::TestObjectFactory.instance,
|
129
|
+
|
130
|
+
# pass sut id
|
109
131
|
sut_id
|
110
132
|
)
|
111
133
|
|
@@ -115,7 +137,7 @@ module MobyPlugin
|
|
115
137
|
TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
|
116
138
|
|
117
139
|
# register plugin
|
118
|
-
|
140
|
+
TDriver::PluginService.register_plugin( self )
|
119
141
|
|
120
142
|
end # SUT
|
121
143
|
|
@@ -203,10 +203,14 @@ module MobyController
|
|
203
203
|
# inflate the message body if compressed
|
204
204
|
if ( header[ 3 ] == 2 )
|
205
205
|
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
206
|
+
if $parameters[ @sut_id ][ :win_native, false ] == "true"
|
207
|
+
zstream = Zlib::Inflate.new(-Zlib::MAX_WBITS)
|
208
|
+
body = zstream.inflate(body) unless body.empty?
|
209
|
+
else
|
210
|
+
# remove leading 4 bytes
|
211
|
+
body = body[ 4 .. -1 ]
|
212
|
+
body = Zlib::Inflate.inflate( body ) unless body.empty?
|
213
|
+
end
|
210
214
|
|
211
215
|
end
|
212
216
|
|
data/lib/testability-driver-plugins/testability-driver-qt-sut-plugin/util/message_composer.rb
CHANGED
@@ -167,6 +167,7 @@ module MobyUtil
|
|
167
167
|
'application_path' => @_application_name,
|
168
168
|
'arguments' => arguments,
|
169
169
|
'environment' => @_environment,
|
170
|
+
'directory' => @_working_directory,
|
170
171
|
'events_to_listen' => @_events_to_listen,
|
171
172
|
'signals_to_listen' => @_signals_to_listen,
|
172
173
|
'start_command' => @_start_command
|
data/xml/behaviour/qt.xml
CHANGED
@@ -676,6 +676,32 @@
|
|
676
676
|
|
677
677
|
</behaviour>
|
678
678
|
|
679
|
+
|
680
|
+
<behaviour name="Settings" object_type="sut" sut_type="QT" env="qt" input_type="*" version="*">
|
681
|
+
|
682
|
+
<module name="MobyBehaviour::QT::Settings" />
|
683
|
+
|
684
|
+
<methods>
|
685
|
+
<method name="set_settings">
|
686
|
+
<description>Set settintgs</description>
|
687
|
+
<example>set_settins</example>
|
688
|
+
</method>
|
689
|
+
<method name="remove_settings">
|
690
|
+
<description>Remove settings.</description>
|
691
|
+
<example>remove_settings</example>
|
692
|
+
</method>
|
693
|
+
<method name="read_settings">
|
694
|
+
<description>Read settings</description>
|
695
|
+
<example>read_settings</example>
|
696
|
+
</method>
|
697
|
+
<method name="read_all_settings">
|
698
|
+
<description>Read all settings</description>
|
699
|
+
<example>read_all_settings</example>
|
700
|
+
</method>
|
701
|
+
</methods>
|
702
|
+
|
703
|
+
</behaviour>
|
704
|
+
|
679
705
|
<behaviour name="QtInfoLoggerBehaviour" object_type="sut;application" sut_type="QT" env="qt" input_type="*" version="*">
|
680
706
|
|
681
707
|
<module name="MobyBehaviour::QT::InfoLoggerBehaviour" />
|
data/xml/keymap/qt.xml
CHANGED
@@ -317,5 +317,5 @@
|
|
317
317
|
<parameter name="kPlay" value="0x01020005"/>
|
318
318
|
<parameter name="kSleep" value="0x01020004"/>
|
319
319
|
<parameter name="kZoom" value="0x01020006"/>
|
320
|
-
<parameter name="kCancel"
|
321
|
-
</keymap>
|
320
|
+
<parameter name="kCancel" value="0x01020001"/>
|
321
|
+
</keymap>
|
data/xml/template/qt.xml
CHANGED
@@ -17,7 +17,7 @@
|
|
17
17
|
<parameter name="input_type" value="touch" /> <!-- overwrites default value -->
|
18
18
|
|
19
19
|
<!-- keymap definitions -->
|
20
|
-
<keymap xml_file="keymaps/qt.xml" />
|
20
|
+
<keymap xml_file="keymaps/qt.xml" env="qt" />
|
21
21
|
|
22
22
|
<!-- gesture defaults -->
|
23
23
|
<parameter name="gesture_flick_distance" value="150" />
|
@@ -83,6 +83,7 @@
|
|
83
83
|
<fixture name="mobilitysysinfo" plugin="mobilitysysinfofixture" env="qt"/>
|
84
84
|
<fixture name="contact" plugin="contactfixture" env="qt"/>
|
85
85
|
<fixture name="launch" plugin="launchfixture" env="qt"/>
|
86
|
+
<fixture name="setting" plugin="settingfixture" env="qt"/>
|
86
87
|
</fixtures>
|
87
88
|
</template>
|
88
89
|
|
metadata
CHANGED
@@ -1,7 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: testability-driver-qt-sut-plugin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 17
|
5
|
+
prerelease:
|
6
|
+
segments:
|
7
|
+
- 1
|
8
|
+
- 1
|
9
|
+
- 1
|
10
|
+
version: 1.1.1
|
5
11
|
platform: ruby
|
6
12
|
authors:
|
7
13
|
- TDriver team
|
@@ -9,19 +15,24 @@ autorequire:
|
|
9
15
|
bindir: bin
|
10
16
|
cert_chain: []
|
11
17
|
|
12
|
-
date: 2011-
|
13
|
-
default_executable:
|
18
|
+
date: 2011-04-12 00:00:00 Z
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: testability-driver
|
17
|
-
|
18
|
-
|
19
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
20
25
|
requirements:
|
21
26
|
- - ">="
|
22
27
|
- !ruby/object:Gem::Version
|
28
|
+
hash: 57
|
29
|
+
segments:
|
30
|
+
- 0
|
31
|
+
- 8
|
32
|
+
- 3
|
23
33
|
version: 0.8.3
|
24
|
-
|
34
|
+
type: :runtime
|
35
|
+
version_requirements: *id001
|
25
36
|
description:
|
26
37
|
email: testabilitydriver@nokia.com
|
27
38
|
executables: []
|
@@ -52,6 +63,7 @@ files:
|
|
52
63
|
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/qt_api_method.rb
|
53
64
|
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/record.rb
|
54
65
|
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/screen_capture.rb
|
66
|
+
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/settings.rb
|
55
67
|
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/sut.rb
|
56
68
|
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/synchronization.rb
|
57
69
|
- lib/testability-driver-plugins/testability-driver-qt-sut-plugin/behaviours/treewidgetitemcolumn.rb
|
@@ -92,7 +104,7 @@ files:
|
|
92
104
|
- xml/defaults/sut_qt.xml
|
93
105
|
- xml/keymap/qt.xml
|
94
106
|
- xml/template/qt.xml
|
95
|
-
|
107
|
+
- installer/extconf.rb
|
96
108
|
homepage: http://gitorious.org/tdriver
|
97
109
|
licenses: []
|
98
110
|
|
@@ -102,21 +114,27 @@ rdoc_options: []
|
|
102
114
|
require_paths:
|
103
115
|
- lib/testability-driver-plugins/
|
104
116
|
required_ruby_version: !ruby/object:Gem::Requirement
|
117
|
+
none: false
|
105
118
|
requirements:
|
106
119
|
- - ">="
|
107
120
|
- !ruby/object:Gem::Version
|
121
|
+
hash: 3
|
122
|
+
segments:
|
123
|
+
- 0
|
108
124
|
version: "0"
|
109
|
-
version:
|
110
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
111
127
|
requirements:
|
112
128
|
- - ">="
|
113
129
|
- !ruby/object:Gem::Version
|
130
|
+
hash: 3
|
131
|
+
segments:
|
132
|
+
- 0
|
114
133
|
version: "0"
|
115
|
-
version:
|
116
134
|
requirements: []
|
117
135
|
|
118
136
|
rubyforge_project:
|
119
|
-
rubygems_version: 1.
|
137
|
+
rubygems_version: 1.7.2
|
120
138
|
signing_key:
|
121
139
|
specification_version: 3
|
122
140
|
summary: Testability Driver - Testability Driver Interface Qt SUT plugin
|