testability-driver 1.1.1 → 1.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (71) hide show
  1. data/config/sut_parameters.rb +21 -8
  2. data/config/tdriver_custom_error_recovery.rb +83 -0
  3. data/ext/extconf.rb +3 -2
  4. data/ext/native_extensions.c +60 -2
  5. data/lib/tdriver-devtools/behaviour/old/xml/example/flick-example.rb +2 -105
  6. data/lib/tdriver/base/behaviour/factory.rb +154 -89
  7. data/lib/tdriver/base/behaviour/factory_new.rb +409 -0
  8. data/lib/tdriver/base/errors.rb +3 -3
  9. data/lib/tdriver/base/state_object.rb +85 -22
  10. data/lib/tdriver/base/sut/adapter.rb +26 -0
  11. data/lib/tdriver/base/sut/controller.rb +1 -1
  12. data/lib/tdriver/base/sut/generic/behaviours/application.rb +89 -118
  13. data/lib/tdriver/base/sut/generic/behaviours/find.rb +67 -62
  14. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +296 -187
  15. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +7 -7
  16. data/lib/tdriver/base/sut/generic/commands/application.rb +366 -295
  17. data/lib/tdriver/base/sut/sut.rb +19 -3
  18. data/lib/tdriver/base/test_object/abstract.rb +41 -21
  19. data/lib/tdriver/base/test_object/adapter.rb +62 -9
  20. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +10 -6
  21. data/lib/tdriver/base/test_object/behaviours/test_object.rb +84 -47
  22. data/lib/tdriver/base/test_object/factory.rb +124 -68
  23. data/lib/tdriver/base/test_object/loader.rb +3 -4
  24. data/lib/tdriver/base/test_object/verification.rb +3 -3
  25. data/lib/tdriver/base/test_object/xml/adapter.rb +734 -0
  26. data/lib/tdriver/loader.rb +12 -0
  27. data/lib/tdriver/report/error_recovery/tdriver_error_recovery.rb +3 -2
  28. data/lib/tdriver/report/error_recovery/tdriver_error_recovery_settings.rb +14 -14
  29. data/lib/tdriver/report/report.rb +4 -8
  30. data/lib/tdriver/report/report_api.rb +9 -0
  31. data/lib/tdriver/report/report_crash_file_capture.rb +4 -4
  32. data/lib/tdriver/report/report_creator.rb +57 -35
  33. data/lib/tdriver/report/report_cucumber.rb +1 -1
  34. data/lib/tdriver/report/report_cucumber_listener.rb +5 -158
  35. data/lib/tdriver/report/report_cucumber_reporter.rb +7 -161
  36. data/lib/tdriver/report/report_execution_statistics.rb +4 -4
  37. data/lib/tdriver/report/report_file_capture.rb +5 -5
  38. data/lib/tdriver/report/report_grouping.rb +24 -22
  39. data/lib/tdriver/report/report_junit_xml.rb +5 -5
  40. data/lib/tdriver/report/report_test_case_run.rb +31 -22
  41. data/lib/tdriver/report/report_test_run.rb +107 -104
  42. data/lib/tdriver/report/report_writer.rb +150 -83
  43. data/lib/tdriver/tdriver.rb +147 -103
  44. data/lib/tdriver/util/common/boolean.rb +51 -0
  45. data/lib/tdriver/util/common/crc16.rb +110 -68
  46. data/lib/tdriver/util/common/hash.rb +63 -7
  47. data/lib/tdriver/util/common/kernel.rb +46 -1
  48. data/lib/tdriver/util/common/loader.rb +1 -0
  49. data/lib/tdriver/util/common/object.rb +20 -8
  50. data/lib/tdriver/util/common/string.rb +21 -2
  51. data/lib/tdriver/util/logger/logger.rb +4 -4
  52. data/lib/tdriver/util/parameter/loader.rb +2 -19
  53. data/lib/tdriver/util/parameter/parameter.rb +874 -177
  54. data/lib/tdriver/util/plugin/service.rb +1 -1
  55. data/lib/tdriver/util/recorder/recorder.rb +7 -1
  56. data/lib/tdriver/util/xml/abstraction.rb +13 -1
  57. data/lib/tdriver/util/xml/parsers/nokogiri/abstraction.rb +63 -10
  58. data/lib/tdriver/util/xml/parsers/nokogiri/attribute.rb +8 -2
  59. data/lib/tdriver/util/xml/parsers/nokogiri/document.rb +16 -3
  60. data/lib/tdriver/util/xml/parsers/nokogiri/node.rb +36 -32
  61. data/lib/tdriver/util/xml/parsers/nokogiri/nodeset.rb +19 -22
  62. data/lib/tdriver/util/xml/xml.rb +147 -32
  63. data/lib/tdriver/verify/verify.rb +1112 -289
  64. data/lib/tdriver/version.rb +1 -1
  65. data/xml/templates/generic.xml +14 -2
  66. metadata +51 -24
  67. data/lib/tdriver/util/parameter/parameter_hash.rb +0 -104
  68. data/lib/tdriver/util/parameter/parameter_new.rb +0 -869
  69. data/lib/tdriver/util/parameter/parameter_template.rb +0 -120
  70. data/lib/tdriver/util/parameter/parameter_user_api.rb +0 -116
  71. data/lib/tdriver/util/parameter/parameter_xml.rb +0 -261
@@ -21,6 +21,25 @@ module MobyUtil
21
21
 
22
22
  module XML
23
23
 
24
+ class << self
25
+
26
+ private
27
+
28
+ def initialize_class
29
+
30
+ # empty xml cache hash
31
+ @document_cache = { :cache => [], :objects => {} }
32
+
33
+ # default xml cache buffer size
34
+ @document_cache_buffer_size = 10
35
+
36
+ # set used parser module
37
+ self.current_parser = MobyUtil::XML::Nokogiri
38
+
39
+ end
40
+
41
+ end
42
+
24
43
  # Get current XML parser
25
44
  # == params
26
45
  # == return
@@ -32,6 +51,31 @@ module MobyUtil
32
51
 
33
52
  end
34
53
 
54
+ # Set XML document cache buffering size, set 0 to disable
55
+ # == params
56
+ # == return
57
+ # Integer::
58
+ # == raises
59
+ # TypeError::
60
+ def self.buffer_size=( value )
61
+
62
+ value.check_type Integer, 'wrong argument type $1 for XML cache buffer size (expected $2)'
63
+
64
+ @document_cache_buffer_size = value
65
+
66
+ end
67
+
68
+ # Get current XML document cache buffering size
69
+ # == params
70
+ # == return
71
+ # Integer::
72
+ # == raises
73
+ def self.buffer_size
74
+
75
+ @document_cache_buffer_size
76
+
77
+ end
78
+
35
79
  # Set XML parser to be used
36
80
  # == params
37
81
  # Module::
@@ -48,20 +92,31 @@ module MobyUtil
48
92
 
49
93
  # apply parser implementation to abstraction modules
50
94
  [
51
- MobyUtil::XML::Document,
52
- MobyUtil::XML::Element,
53
- MobyUtil::XML::Nodeset,
54
- MobyUtil::XML::Attribute,
55
- MobyUtil::XML::Text,
56
- MobyUtil::XML::Builder,
57
- MobyUtil::XML::Comment ].each do | _module |
58
-
59
- _module.module_exec{
60
-
61
- # include parser implementation to abstraction modules
62
- include MobyUtil::KernelHelper.get_constant( "#{ @@parser }::#{ _module.name.split('::').last }")
63
-
64
- }
95
+ :Document,
96
+ :Element,
97
+ :Nodeset,
98
+ :Attribute,
99
+ :Text,
100
+ :Builder,
101
+ :Comment
102
+
103
+ ].each do | _module |
104
+
105
+ const_get( _module ).module_exec{
106
+
107
+ begin
108
+
109
+ # include parser behaviour
110
+ include @@parser.const_get( _module )
111
+
112
+ rescue NameError
113
+
114
+ # raise proper exception if behaviour module not found
115
+ raise NotImplementedError, "Required behaviour module #{ @@parser.name }::#{ _module } not found"
116
+
117
+ end
118
+
119
+ }
65
120
 
66
121
  end
67
122
 
@@ -77,21 +132,78 @@ module MobyUtil
77
132
  #
78
133
  # == params
79
134
  # xml_string:: String containing XML
135
+ # crc:: Optional CRC16 checksum - used for cache/buffering if given
80
136
  # == return
81
137
  # Document:: XML document object
138
+ # Array:: Array containing XML document object and status was it already found from cache
82
139
  # == raises
83
- def self.parse_string( xml_string )
140
+ def self.parse_string( xml_string, crc = nil )
84
141
 
85
142
  begin
86
143
 
87
- MobyUtil::XML::Document.new( nil ).tap{ | document |
144
+ unless crc.nil?
88
145
 
89
- # parse given string
90
- document.xml = document.parse( xml_string )
146
+ [ Document.new( xml_string ), false ]
91
147
 
92
- }
148
+ else
93
149
 
94
- rescue Exception => exception
150
+ Document.new( xml_string )
151
+
152
+ end
153
+
154
+ # JKo: disable xml caching for now, need more investigation why tests starts to fail
155
+ =begin
156
+ unless crc.nil?
157
+
158
+ if @document_cache[ :cache ].include?( crc )
159
+
160
+ # return cached object and status that object was found from cache
161
+ [ @document_cache[ :objects ][ crc ], true ]
162
+
163
+ else
164
+
165
+ cache_enabled = ( @document_cache_buffer_size > 0 )
166
+
167
+ # create new document object with given xml string
168
+ document = Document.new( xml_string, { :cache_enabled => cache_enabled } )
169
+
170
+ # verify that xml caching is enabled
171
+ if cache_enabled
172
+
173
+ # drop olders cached xml object
174
+ if @document_cache[ :cache ].count == @document_cache_buffer_size
175
+
176
+ # remove data object from cache
177
+ @document_cache[ :objects ].delete(
178
+
179
+ # take (oldest) first from cache buffer
180
+ @document_cache[ :cache ].shift
181
+
182
+ )
183
+
184
+ end
185
+
186
+ # add new xml data object to cache
187
+ @document_cache[ :cache ] << crc
188
+
189
+ # add new xml data object to cache
190
+ @document_cache[ :objects ][ crc ] = document
191
+
192
+ end
193
+
194
+ # return document object and status that object was not found from cache
195
+ [ document, false ]
196
+
197
+ end
198
+
199
+ else
200
+
201
+ # create new document object with given xml string - no caching used
202
+ Document.new( xml_string )
203
+
204
+ end
205
+ =end
206
+ rescue
95
207
 
96
208
  if $TDRIVER_INITIALIZED == true
97
209
 
@@ -133,14 +245,12 @@ module MobyUtil
133
245
  end
134
246
 
135
247
  # raise exception
136
- #Kernel::raise MobyUtil::XML::ParseError.new( "%s (%s)%s" % [ exception.message.gsub("\n", ''), exception.class, dump_location ] )
137
- Kernel::raise MobyUtil::XML::ParseError, "#{ exception.message.gsub("\n", '') } (#{ exception.class }). #{ dump_location }"
248
+ Kernel::raise MobyUtil::XML::ParseError, "#{ $!.message.gsub("\n", '') } (#{ $!.class }). #{ dump_location }"
138
249
 
139
250
  else
140
251
 
141
252
  # raise exception
142
- #Kernel::raise MobyUtil::XML::ParseError.new( "%s (%s)" % [ exception.message.gsub("\n", ''), exception.class ] )
143
- Kernel::raise MobyUtil::XML::ParseError, "#{ exception.message.gsub("\n", '') } (#{ exception.class })"
253
+ Kernel::raise MobyUtil::XML::ParseError, "#{ $!.message.gsub("\n", '') } (#{ $!.class })"
144
254
 
145
255
  end
146
256
 
@@ -160,11 +270,16 @@ module MobyUtil
160
270
  # == raises
161
271
  # IOError:: File '%s' not found
162
272
  def self.parse_file( filename )
163
-
273
+
164
274
  # raise exception if file not found
165
275
  Kernel::raise IOError, "File #{ filename.inspect } not found" unless File.exist?( filename )
166
276
 
167
- self.parse_string( IO.read( filename ) )
277
+ # parse file content
278
+ parse_string(
279
+
280
+ IO.read( filename )
281
+
282
+ )
168
283
 
169
284
  end
170
285
 
@@ -190,15 +305,15 @@ module MobyUtil
190
305
 
191
306
  begin
192
307
 
193
- MobyUtil::XML::Builder.new.tap{ | builder |
308
+ Builder.new.tap{ | builder |
194
309
 
195
310
  builder.build( &block )
196
311
 
197
312
  }
198
313
 
199
- rescue Exception => exception
314
+ rescue
200
315
 
201
- Kernel::raise MobyUtil::XML::BuilderError, "#{ exception.message } (#{ exception.class })"
316
+ Kernel::raise MobyUtil::XML::BuilderError, "#{ $!.message } (#{ $!.class })"
202
317
 
203
318
  end
204
319
 
@@ -207,9 +322,9 @@ module MobyUtil
207
322
  # enable hooking for performance measurement & debug logging
208
323
  TDriver::Hooking.hook_methods( self ) if defined?( TDriver::Hooking )
209
324
 
325
+ # initialize class
326
+ initialize_class
327
+
210
328
  end # XML
211
329
 
212
330
  end # MobyUtil
213
-
214
- # set used parser module
215
- MobyUtil::XML.current_parser = MobyUtil::XML::Nokogiri
@@ -45,15 +45,15 @@ module TDriverVerify
45
45
 
46
46
  @@on_error_verify_block.call
47
47
 
48
- rescue Exception => exception
48
+ rescue Exception
49
49
 
50
- raise exception.class.new( "Exception was raised while executing on_error_verify_block. Reason: %s" % [ exception.message ])
50
+ raise exception.class, "Exception was raised while executing on_error_verify_block. Reason: #{ $!.message.to_s }"
51
51
 
52
52
  end
53
53
 
54
54
  else
55
55
 
56
- raise ArgumentError.new( "No verify block defined with on_error_verify_block method" )
56
+ raise ArgumentError, 'No verify block defined with on_error_verify_block method'
57
57
 
58
58
  end
59
59
 
@@ -70,103 +70,993 @@ module TDriverVerify
70
70
  # === raises
71
71
  # ArgumentError:: message was not a String or timeout an integer, or no block was given.
72
72
  # VerificationError:: The verification failed.
73
+ def verify( timeout = nil, message = nil, &block )
74
+
75
+ begin
76
+
77
+ # determine name of caller method
78
+ verify_caller = caller( 1 ).first.to_s
79
+
80
+ # store orignal logging state
81
+ logging_enabled = $logger.enabled
82
+
83
+ # disable behaviour logging
84
+ $logger.enabled = false
85
+
86
+ # ensure that code block was given
87
+ raise ArgumentError, "No block was given." unless block_given?
88
+
89
+ # ensure that timeout is either nil or type of integer
90
+ raise ArgumentError, "wrong argument type #{ timeout.class } for timeout (expected Fixnum or NilClass)" unless [ NilClass, Fixnum ].include?( timeout.class )
91
+
92
+ # ensure that message is either nil or type of string
93
+ raise ArgumentError, "Argument message was not a String" unless [ NilClass, String ].include?( message.class )
94
+
95
+ # convert timeout to integer, nil will be zero
96
+ timeout = get_timeout( timeout )
97
+
98
+ # calculate the time when timeout exceeds
99
+ timeout_end_time = Time.now + timeout
100
+
101
+ # convert message to string, nil will be empty string
102
+ message = message.to_s
103
+
104
+ # add double quotation and trailing whitespace if not empty string
105
+ message = "#{ message.inspect } " if message.length > 0
106
+
107
+ # store original timeout value
108
+ original_timeout_value = MobyBase::TestObjectFactory.instance.timeout
109
+
110
+ # set the testobject timeout to 0 for the duration of the verify call
111
+ MobyBase::TestObjectFactory.instance.timeout = 0
112
+
113
+ loop do
114
+
115
+ begin
116
+
117
+ counter = ref_counter
118
+
119
+ # execute code block
120
+ yield
121
+
122
+ # break loop if no exceptions thrown
123
+ break
124
+
125
+ rescue
126
+
127
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
128
+
129
+ # refresh and retry unless timeout exceeded
130
+ raise $! if Time.new > timeout_end_time
131
+
132
+ # retry interval
133
+ sleep TIMEOUT_CYCLE_SECONDS
134
+
135
+ # refresh suts
136
+ refresh_suts if counter == ref_counter
137
+
138
+ end # begin
139
+
140
+ end # do loop
141
+
142
+ rescue
143
+
144
+ # restore logger state
145
+ $logger.enabled = logging_enabled
146
+
147
+ # execute on verification error code block
148
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
149
+
150
+ # process the exception
151
+ if $!.kind_of?( MobyBase::ContinuousVerificationError )
152
+
153
+ raise
154
+
155
+ else
156
+
157
+ error_message = "Verification #{ message }at #{ verify_caller } failed as an exception was thrown when the verification block was executed"
158
+ error_message << "#{ MobyUtil::KernelHelper.find_source( verify_caller ) }\nDetails: \n#{ $!.inspect }"
159
+
160
+ end
161
+
162
+ $logger.behaviour "FAIL;Verification #{ message }failed: #{ $!.to_s }.\n #{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify;"
163
+
164
+ # raise the exception
165
+ raise MobyBase::VerificationError, error_message
166
+
167
+ ensure
168
+
169
+ # restore original test object factory timeout value
170
+ MobyBase::TestObjectFactory.instance.timeout = original_timeout_value
171
+
172
+ # restore logger state
173
+ $logger.enabled = logging_enabled
174
+
175
+ end
176
+
177
+ $logger.behaviour "PASS;Verification #{ message }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify;"
178
+
179
+ nil
180
+
181
+ end
182
+
183
+ # Verifies that the block given to this method throws an exception while being evaluated. Verification is synchronized with all connected suts.
184
+ # If this method is called for a sut, synchronization is only done with that sut.
185
+ #
186
+ # === params
187
+ # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
188
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
189
+ # === returns
190
+ # nil
191
+ # === raises
192
+ # ArgumentError:: message was not a String or timeout an integer, or no block was given.
193
+ # VerificationError:: The verification failed.
194
+ def verify_not( timeout = nil, message = nil, &block )
195
+
196
+ begin
197
+
198
+ # determine name of caller method
199
+ verify_caller = caller( 1 ).first.to_s
200
+
201
+ # store orignal logging state
202
+ logging_enabled = $logger.enabled
203
+
204
+ # disable behaviour logging
205
+ $logger.enabled = false
206
+
207
+ # ensure that code block was given
208
+ raise ArgumentError, "No block was given." unless block_given?
209
+
210
+ # ensure that timeout is either nil or type of integer
211
+ raise ArgumentError, "wrong argument type #{ timeout.class } for timeout (expected Fixnum or NilClass)" unless [ NilClass, Fixnum ].include?( timeout.class )
212
+
213
+ # ensure that message is either nil or type of string
214
+ raise ArgumentError, "Argument message was not a String" unless [ NilClass, String ].include?( message.class )
215
+
216
+ # convert timeout to integer, nil will be zero
217
+ timeout = get_timeout( timeout )
218
+
219
+ # calculate the time when timeout exceeds
220
+ timeout_end_time = Time.now + timeout
221
+
222
+ # convert message to string, nil will be empty string
223
+ message = message.to_s
224
+
225
+ # add double quotation and trailing whitespace if not empty string
226
+ message = "#{ message.inspect } " if message.length > 0
227
+
228
+ # store original timeout value
229
+ original_timeout_value = MobyBase::TestObjectFactory.instance.timeout
230
+
231
+ # set the testobject timeout to 0 for the duration of the verify call
232
+ MobyBase::TestObjectFactory.instance.timeout = 0
233
+
234
+ # result container
235
+ result = nil
236
+
237
+ loop do
238
+
239
+ counter = ref_counter
240
+
241
+ begin
242
+
243
+ # execute code block
244
+ result = yield
245
+
246
+ rescue
247
+
248
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
249
+
250
+ # break loop if exceptions thrown
251
+ break
252
+
253
+ end
254
+
255
+ # refresh and retry unless timeout exceeded
256
+ raise $! if Time.new > timeout_end_time
257
+
258
+ # retry interval
259
+ sleep TIMEOUT_CYCLE_SECONDS
260
+
261
+ # refresh suts
262
+ refresh_suts if counter == ref_counter
263
+
264
+ end # do loop
265
+
266
+ rescue
267
+
268
+ # restore logger state
269
+ $logger.enabled = logging_enabled
270
+
271
+ # execute on verification error code block
272
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
273
+
274
+ # process the exception
275
+ if $!.kind_of?( MobyBase::ContinuousVerificationError )
276
+
277
+ raise
278
+
279
+ elsif $!.kind_of?( MobyBase::VerificationError )
280
+
281
+ error_message = "Verification #{ message }at #{ verify_caller } failed: #{ MobyUtil::KernelHelper.find_source( verify_caller ) }"
282
+ error_message << "The block did not raise exception. It returned: #{ result.inspect }"
283
+
284
+ else
285
+
286
+ error_message = "Verification #{ message }at #{ verify_caller } failed as an exception was thrown when the verification block was executed"
287
+ error_message << "#{ MobyUtil::KernelHelper.find_source( verify_caller ) }\nDetails: \n#{ $!.inspect }"
288
+
289
+ end
290
+
291
+ $logger.behaviour "FAIL;Verification #{ message }failed: #{ $!.to_s }.\n #{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_not;"
292
+
293
+ # raise the exception
294
+ raise MobyBase::VerificationError, error_message
295
+
296
+ ensure
297
+
298
+ # restore original test object factory timeout value
299
+ MobyBase::TestObjectFactory.instance.timeout = original_timeout_value
300
+
301
+ # restore logger state
302
+ $logger.enabled = logging_enabled
303
+
304
+ end
305
+
306
+ $logger.behaviour "PASS;Verification #{ message }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_not;"
307
+
308
+ nil
309
+
310
+ end
311
+
312
+ # Verifies that the block given to this method evaluates to true. Verification is synchronized with all connected suts.
313
+ # If this method is called for a sut, synchronization is only done with that sut.
314
+ #
315
+ # === params
316
+ # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
317
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
318
+ # === returns
319
+ # nil
320
+ # === raises
321
+ # ArgumentError:: message was not a String or timeout an integer, or no block was given.
322
+ # VerificationError:: The verification failed.
323
+ # RuntimeError:: An unexpected error was encountered during verification.
324
+ def verify_true( timeout = nil, message = nil, &block )
325
+
326
+ begin
327
+
328
+ # expected result
329
+ expected_value = true
330
+
331
+ # determine name of caller method
332
+ verify_caller = caller( 1 ).first.to_s
333
+
334
+ # store orignal logging state
335
+ logging_enabled = $logger.enabled
336
+
337
+ # disable behaviour logging
338
+ $logger.enabled = false
339
+
340
+ # ensure that code block was given
341
+ raise ArgumentError, "No block was given." unless block_given?
342
+
343
+ # ensure that timeout is either nil or type of integer
344
+ raise ArgumentError, "wrong argument type #{ timeout.class } for timeout (expected Fixnum or NilClass)" unless [ NilClass, Fixnum ].include?( timeout.class )
345
+
346
+ # ensure that message is either nil or type of string
347
+ raise ArgumentError, "Argument message was not a String" unless [ NilClass, String ].include?( message.class )
348
+
349
+ # convert timeout to integer, nil will be zero
350
+ timeout = get_timeout( timeout )
351
+
352
+ # calculate the time when timeout exceeds
353
+ timeout_end_time = Time.now + timeout
354
+
355
+ # convert message to string, nil will be empty string
356
+ message = message.to_s
357
+
358
+ # add double quotation and trailing whitespace if not empty string
359
+ message = "#{ message.inspect } " if message.length > 0
360
+
361
+ # store original timeout value
362
+ original_timeout_value = MobyBase::TestObjectFactory.instance.timeout
363
+
364
+ # set the testobject timeout to 0 for the duration of the verify call
365
+ MobyBase::TestObjectFactory.instance.timeout = 0
366
+
367
+ # result container
368
+ result = nil
369
+
370
+ loop do
371
+
372
+ begin
373
+
374
+ counter = ref_counter
375
+
376
+ # execute code block
377
+ result = yield
378
+
379
+ # raise exception if result of yield does not equal with expected value
380
+ raise MobyBase::VerificationError unless result == expected_value
381
+
382
+ # break loop if no exceptions thrown
383
+ break
384
+
385
+ rescue
386
+
387
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
388
+
389
+ # refresh and retry unless timeout exceeded
390
+ raise $! if Time.new > timeout_end_time
391
+
392
+ # retry interval
393
+ sleep TIMEOUT_CYCLE_SECONDS
394
+
395
+ # refresh suts
396
+ refresh_suts if counter == ref_counter
397
+
398
+ end # begin
399
+
400
+ end # do loop
401
+
402
+ rescue
403
+
404
+ # restore logger state
405
+ $logger.enabled = logging_enabled
406
+
407
+ # execute on verification error code block
408
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
409
+
410
+ # process the exception
411
+ if $!.kind_of?( MobyBase::ContinuousVerificationError )
412
+
413
+ raise
414
+
415
+ elsif $!.kind_of?( MobyBase::VerificationError )
416
+
417
+ error_message = "Verification #{ message }at #{ verify_caller } failed: #{ MobyUtil::KernelHelper.find_source( verify_caller ) }"
418
+ error_message << "The block did not return #{ expected_value }. It returned: #{ result.inspect }"
419
+
420
+ else
421
+
422
+ error_message = "Verification #{ message }at #{ verify_caller } failed as an exception was thrown when the verification block was executed"
423
+ error_message << "#{ MobyUtil::KernelHelper.find_source( verify_caller ) }\nDetails: \n#{ $!.inspect }"
424
+
425
+ end
426
+
427
+ $logger.behaviour "FAIL;Verification #{ message }failed: #{ $!.to_s }.\n #{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_true;"
428
+
429
+ # raise the exception
430
+ raise MobyBase::VerificationError, error_message
431
+
432
+ ensure
433
+
434
+ # restore original test object factory timeout value
435
+ MobyBase::TestObjectFactory.instance.timeout = original_timeout_value
436
+
437
+ # restore logger state
438
+ $logger.enabled = logging_enabled
439
+
440
+ end
441
+
442
+ $logger.behaviour "PASS;Verification #{ message }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_true;"
443
+
444
+ nil
445
+
446
+ end
447
+
448
+ # Verifies that the block given to this method evaluates to false. Verification is synchronized with all connected suts.
449
+ # If this method is called for a sut, synchronization is only done with that sut.
450
+ #
451
+ # === params
452
+ # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
453
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
454
+ # === returns
455
+ # nil
456
+ # === raises
457
+ # ArgumentError:: message was not a String or timeout an integer, or no block was given.
458
+ # VerificationError:: The verification failed.
459
+ # RuntimeError:: An unexpected error was encountered during verification.
460
+ def verify_false( timeout = nil, message = nil, &block )
461
+
462
+ begin
463
+
464
+ # expected result
465
+ expected_value = false
466
+
467
+ # determine name of caller method
468
+ verify_caller = caller( 1 ).first.to_s
469
+
470
+ # store orignal logging state
471
+ logging_enabled = $logger.enabled
472
+
473
+ # disable behaviour logging
474
+ $logger.enabled = false
475
+
476
+ # ensure that code block was given
477
+ raise ArgumentError, "No block was given." unless block_given?
478
+
479
+ # ensure that timeout is either nil or type of integer
480
+ raise ArgumentError, "wrong argument type #{ timeout.class } for timeout (expected Fixnum or NilClass)" unless [ NilClass, Fixnum ].include?( timeout.class )
481
+
482
+ # ensure that message is either nil or type of string
483
+ raise ArgumentError, "Argument message was not a String" unless [ NilClass, String ].include?( message.class )
484
+
485
+ # convert timeout to integer, nil will be zero
486
+ timeout = get_timeout( timeout )
487
+
488
+ # calculate the time when timeout exceeds
489
+ timeout_end_time = Time.now + timeout
490
+
491
+ # convert message to string, nil will be empty string
492
+ message = message.to_s
493
+
494
+ # add double quotation and trailing whitespace if not empty string
495
+ message = "#{ message.inspect } " if message.length > 0
496
+
497
+ # store original timeout value
498
+ original_timeout_value = MobyBase::TestObjectFactory.instance.timeout
499
+
500
+ # set the testobject timeout to 0 for the duration of the verify call
501
+ MobyBase::TestObjectFactory.instance.timeout = 0
502
+
503
+ # result container
504
+ result = nil
505
+
506
+ loop do
507
+
508
+ begin
509
+
510
+ counter = ref_counter
511
+
512
+ # execute code block
513
+ result = yield
514
+
515
+ # raise exception if result of yield does not equal with expected value
516
+ raise MobyBase::VerificationError unless result == expected_value
517
+
518
+ # break loop if no exceptions thrown
519
+ break
520
+
521
+ rescue
522
+
523
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
524
+
525
+ # refresh and retry unless timeout exceeded
526
+ raise $! if Time.new > timeout_end_time
527
+
528
+ # retry interval
529
+ sleep TIMEOUT_CYCLE_SECONDS
530
+
531
+ # refresh suts
532
+ refresh_suts if counter == ref_counter
533
+
534
+ end # begin
535
+
536
+ end # do loop
537
+
538
+ rescue
539
+
540
+ # restore logger state
541
+ $logger.enabled = logging_enabled
542
+
543
+ # execute on verification error code block
544
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
545
+
546
+ # process the exception
547
+ if $!.kind_of?( MobyBase::ContinuousVerificationError )
548
+
549
+ raise
550
+
551
+ elsif $!.kind_of?( MobyBase::VerificationError )
552
+
553
+ error_message = "Verification #{ message }at #{ verify_caller } failed: #{ MobyUtil::KernelHelper.find_source( verify_caller ) }"
554
+ error_message << "The block did not return #{ expected_value }. It returned: #{ result.inspect }"
555
+
556
+ else
557
+
558
+ error_message = "Verification #{ message }at #{ verify_caller } failed as an exception was thrown when the verification block was executed"
559
+ error_message << "#{ MobyUtil::KernelHelper.find_source( verify_caller ) }\nDetails: \n#{ $!.inspect }"
560
+
561
+ end
562
+
563
+ $logger.behaviour "FAIL;Verification #{ message }failed: #{ $!.to_s }.\n #{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_false;"
564
+
565
+ # raise the exception
566
+ raise MobyBase::VerificationError, error_message
567
+
568
+ ensure
569
+
570
+ # restore original test object factory timeout value
571
+ MobyBase::TestObjectFactory.instance.timeout = original_timeout_value
572
+
573
+ # restore logger state
574
+ $logger.enabled = logging_enabled
575
+
576
+ end
577
+
578
+ $logger.behaviour "PASS;Verification #{ message }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_false;"
579
+
580
+ nil
581
+
582
+ end
583
+
584
+ # Verifies that the block given to this method evaluates to the expected value. Verification is synchronized with all connected suts.
585
+ # If this method is called for a sut, synchronization is only done with that sut.
586
+ #
587
+ # === params
588
+ # expected:: Expected result value of the block
589
+ # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
590
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
591
+ # === returns
592
+ # nil
593
+ # === raises
594
+ # ArgumentError:: message was not a String or timeout an integer, or no block was given.
595
+ # VerificationError:: The verification failed.
596
+ # RuntimeError:: An unexpected error was encountered during verification.
597
+ def verify_equal( expected_value, timeout = nil, message = nil, &block )
598
+
599
+ begin
600
+
601
+ # determine name of caller method
602
+ verify_caller = caller( 1 ).first.to_s
603
+
604
+ # store orignal logging state
605
+ logging_enabled = $logger.enabled
606
+
607
+ # disable behaviour logging
608
+ $logger.enabled = false
609
+
610
+ # ensure that code block was given
611
+ raise ArgumentError, "No block was given." unless block_given?
612
+
613
+ # ensure that timeout is either nil or type of integer
614
+ raise ArgumentError, "wrong argument type #{ timeout.class } for timeout (expected Fixnum or NilClass)" unless [ NilClass, Fixnum ].include?( timeout.class )
615
+
616
+ # ensure that message is either nil or type of string
617
+ raise ArgumentError, "Argument message was not a String" unless [ NilClass, String ].include?( message.class )
618
+
619
+ # convert timeout to integer, nil will be zero
620
+ timeout = get_timeout( timeout )
621
+
622
+ # calculate the time when timeout exceeds
623
+ timeout_end_time = Time.now + timeout
624
+
625
+ # convert message to string, nil will be empty string
626
+ message = message.to_s
627
+
628
+ # add double quotation and trailing whitespace if not empty string
629
+ message = "#{ message.inspect } " if message.length > 0
630
+
631
+ # store original timeout value
632
+ original_timeout_value = MobyBase::TestObjectFactory.instance.timeout
633
+
634
+ # set the testobject timeout to 0 for the duration of the verify call
635
+ MobyBase::TestObjectFactory.instance.timeout = 0
636
+
637
+ # result container
638
+ result = nil
639
+
640
+ loop do
641
+
642
+ begin
643
+
644
+ counter = ref_counter
645
+
646
+ # execute code block
647
+ result = yield
648
+
649
+ # raise exception if result of yield does not equal with expected value
650
+ raise MobyBase::VerificationError unless result == expected_value
651
+
652
+ # break loop if no exceptions thrown
653
+ break
654
+
655
+ rescue
656
+
657
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
658
+
659
+ # refresh and retry unless timeout exceeded
660
+ raise $! if Time.new > timeout_end_time
661
+
662
+ # retry interval
663
+ sleep TIMEOUT_CYCLE_SECONDS
664
+
665
+ # refresh suts
666
+ refresh_suts if counter == ref_counter
667
+
668
+ end # begin
669
+
670
+ end # do loop
671
+
672
+ rescue
673
+
674
+ # restore logger state
675
+ $logger.enabled = logging_enabled
676
+
677
+ # execute on verification error code block
678
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
679
+
680
+ # process the exception
681
+ if $!.kind_of?( MobyBase::ContinuousVerificationError )
682
+
683
+ raise
684
+
685
+ elsif $!.kind_of?( MobyBase::VerificationError )
686
+
687
+ error_message = "Verification #{ message }at #{ verify_caller } failed: #{ MobyUtil::KernelHelper.find_source( verify_caller ) }"
688
+ error_message << "The block did not return #{ expected_value }. It returned: #{ result.inspect }"
689
+
690
+ else
691
+
692
+ error_message = "Verification #{ message }at #{ verify_caller } failed as an exception was thrown when the verification block was executed"
693
+ error_message << "#{ MobyUtil::KernelHelper.find_source( verify_caller ) }\nDetails: \n#{ $!.inspect }"
694
+
695
+ end
696
+
697
+ $logger.behaviour "FAIL;Verification #{ message }failed: #{ $!.to_s }.\n #{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_equal;"
698
+
699
+ # raise the exception
700
+ raise MobyBase::VerificationError, error_message
701
+
702
+ ensure
703
+
704
+ # restore original test object factory timeout value
705
+ MobyBase::TestObjectFactory.instance.timeout = original_timeout_value
706
+
707
+ # restore logger state
708
+ $logger.enabled = logging_enabled
709
+
710
+ end
711
+
712
+ $logger.behaviour "PASS;Verification #{ message }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_equal;"
713
+
714
+ nil
715
+
716
+ end
717
+
718
+ # Verifies that the block given to return value matches with expected regular expression pattern. Verification is synchronized with all connected suts.
719
+ # If this method is called for a sut, synchronization is only done with that sut.
720
+ #
721
+ # === params
722
+ # expected:: Regular expression
723
+ # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
724
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
725
+ # === returns
726
+ # nil
727
+ # === raises
728
+ # ArgumentError:: message was not a String or timeout an integer, or no block was given.
729
+ # TypeError:: if block result not type of String.
730
+ # VerificationError:: The verification failed.
731
+ # RuntimeError:: An unexpected error was encountered during verification.
732
+ def verify_regexp( expected_value, timeout = nil, message = nil, &block )
733
+
734
+ begin
735
+
736
+ # determine name of caller method
737
+ verify_caller = caller( 1 ).first.to_s
738
+
739
+ # store orignal logging state
740
+ logging_enabled = $logger.enabled
741
+
742
+ # disable behaviour logging
743
+ $logger.enabled = false
744
+
745
+ # ensure that code block was given
746
+ raise ArgumentError, "No block was given." unless block_given?
747
+
748
+ # ensure that timeout is either nil or type of integer
749
+ raise ArgumentError, "wrong argument type #{ timeout.class } for timeout (expected Fixnum or NilClass)" unless [ NilClass, Fixnum ].include?( timeout.class )
750
+
751
+ # ensure that message is either nil or type of string
752
+ raise ArgumentError, "Argument message was not a String" unless [ NilClass, String ].include?( message.class )
753
+
754
+ expected_value.check_type Regexp, "wrong argument type $1 for expected result (expected $2)"
755
+
756
+ # convert timeout to integer, nil will be zero
757
+ timeout = get_timeout( timeout )
758
+
759
+ # calculate the time when timeout exceeds
760
+ timeout_end_time = Time.now + timeout
761
+
762
+ # convert message to string, nil will be empty string
763
+ message = message.to_s
764
+
765
+ # add double quotation and trailing whitespace if not empty string
766
+ message = "#{ message.inspect } " if message.length > 0
767
+
768
+ # store original timeout value
769
+ original_timeout_value = MobyBase::TestObjectFactory.instance.timeout
770
+
771
+ # set the testobject timeout to 0 for the duration of the verify call
772
+ MobyBase::TestObjectFactory.instance.timeout = 0
773
+
774
+ # result container
775
+ result = nil
776
+
777
+ loop do
778
+
779
+ begin
780
+
781
+ counter = ref_counter
782
+
783
+ # execute code block
784
+ result = yield
785
+
786
+ # raise exception if result of yield does not match with expected value regexp
787
+ raise MobyBase::VerificationError unless result =~ expected_value
788
+
789
+ # break loop if no exceptions thrown
790
+ break
791
+
792
+ rescue
793
+
794
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
795
+
796
+ # refresh and retry unless timeout exceeded
797
+ raise $! if Time.new > timeout_end_time
798
+
799
+ # retry interval
800
+ sleep TIMEOUT_CYCLE_SECONDS
801
+
802
+ # refresh suts
803
+ refresh_suts if counter == ref_counter
804
+
805
+ end # begin
806
+
807
+ end # do loop
808
+
809
+ rescue
810
+
811
+ # restore logger state
812
+ $logger.enabled = logging_enabled
813
+
814
+ # execute on verification error code block
815
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
816
+
817
+ # process the exception
818
+ if $!.kind_of?( MobyBase::ContinuousVerificationError )
819
+
820
+ raise
821
+
822
+ elsif $!.kind_of?( MobyBase::VerificationError )
823
+
824
+ error_message = "Verification #{ message }at #{ verify_caller } failed: #{ MobyUtil::KernelHelper.find_source( verify_caller ) }"
825
+ error_message << "The block did not return #{ expected_value.inspect } pattern. It returned: #{ result.inspect }"
826
+
827
+ else
828
+
829
+ error_message = "Verification #{ message }at #{ verify_caller } failed as an exception was thrown when the verification block was executed"
830
+ error_message << "#{ MobyUtil::KernelHelper.find_source( verify_caller ) }\nDetails: \n#{ $!.inspect }"
831
+
832
+ end
833
+
834
+ $logger.behaviour "FAIL;Verification #{ message }failed: #{ $!.to_s }.\n #{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_regexp;"
835
+
836
+ # raise the exception
837
+ raise MobyBase::VerificationError, error_message
838
+
839
+ ensure
840
+
841
+ # restore original test object factory timeout value
842
+ MobyBase::TestObjectFactory.instance.timeout = original_timeout_value
843
+
844
+ # restore logger state
845
+ $logger.enabled = logging_enabled
846
+
847
+ end
848
+
849
+ $logger.behaviour "PASS;Verification #{ message }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? self.id.to_s + ';sut' : ';' };{};verify_regexp;"
850
+
851
+ nil
852
+
853
+ end
854
+
855
+ # Verifies that the given signal is emitted.
856
+ #
857
+ # === params
858
+ # timeout:: Integer, defining the amount of seconds during which the verification must pass.
859
+ # signal_name:: String, name of the signal
860
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
861
+ # block:: code to execute while listening signals
862
+ # === returns
863
+ # nil
864
+ # === raises
865
+ # ArgumentError:: message or signal_name was not a String or timeout a non negative Integer
866
+ # VerificationError:: The verification failed.
867
+ def verify_signal( timeout, signal_name, message = nil, &block )
868
+
869
+ logging_enabled = $logger.enabled
870
+ verify_caller = caller(1).first.to_s
871
+
872
+ begin
873
+
874
+ $logger.enabled = false
875
+
876
+ raise ArgumentError, "Argument timeout was not a non negative Integer." unless (timeout.kind_of?(Integer) && timeout >= 0)
877
+ raise ArgumentError, "Argument message was not a non empty String." unless (message.nil? || (message.kind_of?(String) && !message.empty?))
878
+
879
+ # wait for the signal
880
+ begin
881
+
882
+ self.wait_for_signal( timeout, signal_name, &block )
883
+
884
+ rescue
885
+
886
+ error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed:"
887
+ error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
888
+ error_msg << "The signal #{signal_name} was not emitted in #{timeout} seconds.\nNested exception:\n" << $!.inspect
889
+
890
+ raise MobyBase::VerificationError, error_msg
891
+
892
+ end
893
+
894
+ rescue
895
+
896
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
897
+
898
+ $logger.enabled = logging_enabled
899
+
900
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed: #{$!.to_s} using timeout '#{timeout}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_signal;#{signal_name}"
901
+
902
+ raise
73
903
 
74
- def verify( timeout = nil, message = nil, &block )
904
+ ensure
905
+
906
+ $logger.enabled = logging_enabled
907
+
908
+ end
909
+
910
+ $logger.behaviour "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_signal;#{signal_name}"
911
+
912
+ nil
913
+
914
+ end
915
+
916
+ =begin
917
+
918
+ # old implementation:
919
+
920
+ # Verifies that the block given to return value matches with expected regular expression pattern. Verification is synchronized with all connected suts.
921
+ # If this method is called for a sut, synchronization is only done with that sut.
922
+ #
923
+ # === params
924
+ # expected:: Regular expression
925
+ # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
926
+ # message:: (optional) A String that is displayed as additional information if the verification fails.
927
+ # === returns
928
+ # nil
929
+ # === raises
930
+ # ArgumentError:: message was not a String or timeout an integer, or no block was given.
931
+ # TypeError:: if block result not type of String.
932
+ # VerificationError:: The verification failed.
933
+ # RuntimeError:: An unexpected error was encountered during verification.
934
+ def verify_regexp( expected, timeout = nil, message = nil, &block )
75
935
 
76
936
  logging_enabled = $logger.enabled
77
937
 
78
- verify_caller = caller(1).first.to_s
938
+ verify_caller = caller( 1 ).first.to_s
79
939
 
80
940
  begin
81
941
 
942
+ raise ArgumentError, "No block was given." unless block_given?
943
+
944
+ # verify argument types
945
+ timeout.check_type [ Integer, NilClass ], "wrong argument type $1 for timeout (expected $2)"
946
+ message.check_type [ String, NilClass ], "wrong argument type $1 for message (expected $2)"
947
+ expected.check_type Regexp, "wrong argument type $1 for expected result (expected $2)"
948
+
82
949
  $logger.enabled = false
83
-
84
- Kernel::raise ArgumentError.new("No block was given.") unless block_given?
85
- Kernel::raise ArgumentError.new("Argument timeout was not an Integer.") unless timeout.nil? or timeout.kind_of?(Integer)
86
- Kernel::raise ArgumentError.new("Argument message was not a String.") unless message.nil? or message.kind_of?(String)
87
950
 
88
951
  #Set the testobject timeout to 0 for the duration of the verify call
89
952
  original_sync_timeout = MobyBase::TestObjectFactory.instance.timeout
953
+
90
954
  MobyBase::TestObjectFactory.instance.timeout = 0
91
955
 
92
- timeout_time = get_end_time(timeout)
93
- #TIMEOUT_CYCLE_SECONDS
956
+ timeout_time = get_end_time( timeout )
94
957
 
95
958
  loop do
96
-
959
+
97
960
  counter = ref_counter
961
+
962
+ # catch errors thrown due to verification results
963
+ begin
964
+
965
+ # catch errors thrown in the provided block
966
+ begin
967
+
968
+ # execute block
969
+ result = yield
98
970
 
99
- begin # catch errors thrown in the provided block
971
+ rescue Exception
100
972
 
101
- yield
973
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
102
974
 
103
- # no error => verification ok
104
- break
975
+ error_msg = "Verification #{ message.nil? ? '' : '"' << message.to_s << '" '}at #{ verify_caller } failed as an exception was thrown when the verification block was executed."
105
976
 
106
- rescue Exception => e
977
+ error_msg << MobyUtil::KernelHelper.find_source( verify_caller )
107
978
 
108
- raise if e.kind_of? MobyBase::ContinuousVerificationError
979
+ error_msg << "\nDetails: \n#{ $!.inspect }"
109
980
 
110
- source_contents = ""
111
- error_msg = ""
981
+ raise MobyBase::VerificationError, error_msg
112
982
 
113
- if Time.new > timeout_time
983
+ end
114
984
 
115
- error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed\n"
985
+ # verify that result value is type of string
986
+ result.check_type String, "wrong variable type $1 for result (expected $2)"
987
+
988
+ # result verification
989
+ unless result =~ expected
116
990
 
117
- begin
991
+ error_msg = "Verification #{ message.nil? ? '' : '"' << message.to_s << '" '}at #{ verify_caller } failed:"
992
+
993
+ error_msg << MobyUtil::KernelHelper.find_source( verify_caller )
994
+
995
+ error_msg << "\nThe block did not match with pattern #{ expected.inspect }. It returned: #{ result.inspect }"
118
996
 
119
- source_contents = MobyUtil::KernelHelper.find_source(verify_caller)
997
+ raise MobyBase::VerificationError, error_msg
120
998
 
121
- rescue Exception
122
- # failed to load line from file, do nothing
123
- $logger.enabled = logging_enabled
124
- $logger.log "behaviour" , "WARNING;Failed to load source line: #{e.backtrace.inspect}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify;"
125
- end
999
+ end
126
1000
 
127
- if !source_contents.empty?
128
- error_msg << source_contents
129
- end
1001
+ # break loop if no exceptions thrown
1002
+ break
130
1003
 
131
- error_msg << "\nNested exception:" << e.message << "\n"
1004
+ rescue MobyBase::VerificationError
132
1005
 
133
- Kernel::raise MobyBase::VerificationError.new(error_msg)
1006
+ # refresh and retry unless timeout reached
134
1007
 
135
- end
1008
+ raise $! if Time.new > timeout_time
136
1009
 
137
- end
1010
+ sleep TIMEOUT_CYCLE_SECONDS
138
1011
 
139
- sleep TIMEOUT_CYCLE_SECONDS
1012
+ refresh_suts if counter == ref_counter
1013
+
1014
+ rescue MobyBase::ContinuousVerificationError
1015
+
1016
+ raise
140
1017
 
141
- refresh_suts if counter == ref_counter
1018
+ rescue TypeError
1019
+
1020
+ raise $!
1021
+
1022
+ rescue Exception
1023
+
1024
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
1025
+
1026
+ # an unexpected error has occurred
1027
+ raise RuntimeError, "An unexpected error was encountered during verification:\n#{ $!.inspect }"
1028
+
1029
+ end # begin, catch any VerificationErrors
142
1030
 
143
1031
  end # do
144
1032
 
145
- rescue Exception => e
1033
+ rescue Exception
146
1034
 
147
1035
  execute_on_error_verify_block unless @@on_error_verify_block.nil?
148
1036
 
149
- raise if e.kind_of? MobyBase::ContinuousVerificationError
1037
+ raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
150
1038
 
151
1039
  $logger.enabled = logging_enabled
152
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed: #{e.to_s}#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify;"
153
- Kernel::raise e
1040
+
1041
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{ $!.to_s }.\n#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? "#{ self.id.to_s };sut" : ';' };{};verify_regexp;#{ expected.inspect }"
154
1042
 
155
- ensure
1043
+ raise $!
156
1044
 
157
- MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout unless original_sync_timeout.nil?
1045
+ ensure
1046
+
1047
+ MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout
158
1048
 
1049
+ $logger.enabled = logging_enabled
1050
+
159
1051
  end
160
1052
 
161
- $logger.enabled = logging_enabled
162
- $logger.log "behaviour" , "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify;"
1053
+ $logger.behaviour "PASS;Verification #{ message.nil? ? '' : '\"' << message << '\" ' }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{ self.kind_of?( MobyBase::SUT ) ? "#{ self.id.to_s };sut" : ';'};{};verify_regexp;#{ expected.inspect }"
163
1054
 
164
- return nil
1055
+ nil
165
1056
 
166
1057
  end
167
1058
 
168
-
169
- # Verifies that the block given to this method throws an exception while being evaluated. Verification is synchronized with all connected suts.
1059
+ # Verifies that the block given to this method evaluates without throwing any exceptions. Verification is synchronized with all connected suts.
170
1060
  # If this method is called for a sut, synchronization is only done with that sut.
171
1061
  #
172
1062
  # === params
@@ -177,13 +1067,16 @@ module TDriverVerify
177
1067
  # === raises
178
1068
  # ArgumentError:: message was not a String or timeout an integer, or no block was given.
179
1069
  # VerificationError:: The verification failed.
180
- def verify_not( timeout = nil, message = nil, &block )
1070
+ def verify( timeout = nil, message = nil, &block )
181
1071
 
182
1072
  logging_enabled = $logger.enabled
1073
+
183
1074
  verify_caller = caller(1).first.to_s
1075
+
184
1076
  begin
185
1077
 
186
1078
  $logger.enabled = false
1079
+
187
1080
  Kernel::raise ArgumentError.new("No block was given.") unless block_given?
188
1081
  Kernel::raise ArgumentError.new("Argument timeout was not an Integer.") unless timeout.nil? or timeout.kind_of?(Integer)
189
1082
  Kernel::raise ArgumentError.new("Argument message was not a String.") unless message.nil? or message.kind_of?(String)
@@ -196,47 +1089,55 @@ module TDriverVerify
196
1089
  #TIMEOUT_CYCLE_SECONDS
197
1090
 
198
1091
  loop do
1092
+
199
1093
  counter = ref_counter
200
- artificial_exception_raised = false
1094
+
201
1095
  begin # catch errors thrown in the provided block
202
1096
 
203
1097
  yield
204
- artificial_exception_raised = true
205
- Kernel::raise "test"
1098
+
1099
+ # no error => verification ok
1100
+ break
1101
+
206
1102
  rescue Exception => e
1103
+
207
1104
  raise if e.kind_of? MobyBase::ContinuousVerificationError
208
1105
 
209
1106
  source_contents = ""
210
1107
  error_msg = ""
211
1108
 
212
- if (!artificial_exception_raised)
213
- # an error was encountered => verification ok
214
- break
215
- end
216
-
217
1109
  if Time.new > timeout_time
218
1110
 
219
1111
  error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed\n"
220
1112
 
221
- source_contents = MobyUtil::KernelHelper.find_source(verify_caller)
1113
+ begin
1114
+
1115
+ source_contents = MobyUtil::KernelHelper.find_source(verify_caller)
1116
+
1117
+ rescue Exception
1118
+ # failed to load line from file, do nothing
1119
+ $logger.enabled = logging_enabled
1120
+ $logger.behaviour "WARNING;Failed to load source line: #{e.backtrace.inspect}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify;"
1121
+ end
222
1122
 
223
1123
  if !source_contents.empty?
224
1124
  error_msg << source_contents
225
1125
  end
226
1126
 
1127
+ error_msg << "\nNested exception:" << e.message << "\n"
1128
+
227
1129
  Kernel::raise MobyBase::VerificationError.new(error_msg)
228
1130
 
229
1131
  end
230
1132
 
231
- sleep TIMEOUT_CYCLE_SECONDS
1133
+ end
232
1134
 
233
- refresh_suts if counter == ref_counter
1135
+ sleep TIMEOUT_CYCLE_SECONDS
234
1136
 
235
- end
1137
+ refresh_suts if counter == ref_counter
236
1138
 
237
1139
  end # do
238
1140
 
239
-
240
1141
  rescue Exception => e
241
1142
 
242
1143
  execute_on_error_verify_block unless @@on_error_verify_block.nil?
@@ -244,7 +1145,7 @@ module TDriverVerify
244
1145
  raise if e.kind_of? MobyBase::ContinuousVerificationError
245
1146
 
246
1147
  $logger.enabled = logging_enabled
247
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed: #{e.to_s}#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_not;"
1148
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed: #{e.to_s}#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify;"
248
1149
  Kernel::raise e
249
1150
 
250
1151
  ensure
@@ -254,12 +1155,13 @@ module TDriverVerify
254
1155
  end
255
1156
 
256
1157
  $logger.enabled = logging_enabled
257
- $logger.log "behaviour" , "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_not;"
1158
+ $logger.behaviour "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify;"
1159
+
258
1160
  return nil
259
1161
 
260
1162
  end
261
1163
 
262
- # Verifies that the block given to this method evaluates to true. Verification is synchronized with all connected suts.
1164
+ # Verifies that the block given to this method throws an exception while being evaluated. Verification is synchronized with all connected suts.
263
1165
  # If this method is called for a sut, synchronization is only done with that sut.
264
1166
  #
265
1167
  # === params
@@ -270,13 +1172,12 @@ module TDriverVerify
270
1172
  # === raises
271
1173
  # ArgumentError:: message was not a String or timeout an integer, or no block was given.
272
1174
  # VerificationError:: The verification failed.
273
- # RuntimeError:: An unexpected error was encountered during verification.
274
- def verify_true( timeout = nil, message = nil, &block )
1175
+ def verify_not( timeout = nil, message = nil, &block )
275
1176
 
276
1177
  logging_enabled = $logger.enabled
277
1178
  verify_caller = caller(1).first.to_s
278
-
279
1179
  begin
1180
+
280
1181
  $logger.enabled = false
281
1182
  Kernel::raise ArgumentError.new("No block was given.") unless block_given?
282
1183
  Kernel::raise ArgumentError.new("Argument timeout was not an Integer.") unless timeout.nil? or timeout.kind_of?(Integer)
@@ -290,93 +1191,74 @@ module TDriverVerify
290
1191
  #TIMEOUT_CYCLE_SECONDS
291
1192
 
292
1193
  loop do
293
-
294
1194
  counter = ref_counter
1195
+ artificial_exception_raised = false
1196
+ begin # catch errors thrown in the provided block
295
1197
 
296
- begin # catch errors thrown due to verification results
297
-
298
-
299
- begin # catch errors thrown in the provided block
300
-
301
- result = yield
302
-
303
- rescue Exception => e
304
-
305
- #@@on_error_verify_block.call unless @@on_error_verify_block.nil?
306
-
307
- raise if e.kind_of? MobyBase::ContinuousVerificationError
308
-
309
- error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed as an exception was thrown when the verification block was executed."
310
- error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
311
- error_msg << "\nDetails: "
312
- error_msg << "\n" << e.inspect
313
-
314
- raise MobyBase::VerificationError.new( error_msg )
315
-
316
- end
317
-
318
- unless result == true
319
-
320
- error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed."
321
- error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
322
-
323
- error_msg << "\nThe block did not return true. It returned: " << result.inspect
1198
+ yield
1199
+ artificial_exception_raised = true
1200
+ Kernel::raise "test"
1201
+ rescue Exception => e
1202
+ raise if e.kind_of? MobyBase::ContinuousVerificationError
324
1203
 
325
- raise MobyBase::VerificationError.new( error_msg )
1204
+ source_contents = ""
1205
+ error_msg = ""
326
1206
 
1207
+ if (!artificial_exception_raised)
1208
+ # an error was encountered => verification ok
1209
+ break
327
1210
  end
328
1211
 
329
- # break loop if no exceptions thrown
330
- break
331
-
332
- rescue MobyBase::VerificationError => ve
333
-
334
- # refresh and retry unless timeout reached
335
-
336
- if ( Time.new > timeout_time )
337
-
338
- execute_on_error_verify_block unless @@on_error_verify_block.nil?
339
-
340
- Kernel::raise ve
1212
+ if Time.new > timeout_time
341
1213
 
342
- end
1214
+ error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed\n"
343
1215
 
344
- sleep TIMEOUT_CYCLE_SECONDS
1216
+ source_contents = MobyUtil::KernelHelper.find_source(verify_caller)
345
1217
 
346
- refresh_suts if counter == ref_counter
1218
+ if !source_contents.empty?
1219
+ error_msg << source_contents
1220
+ end
347
1221
 
348
- rescue Exception => e
1222
+ Kernel::raise MobyBase::VerificationError.new(error_msg)
349
1223
 
350
- raise if e.kind_of? MobyBase::ContinuousVerificationError
1224
+ end
351
1225
 
352
- $logger.enabled = logging_enabled
1226
+ sleep TIMEOUT_CYCLE_SECONDS
353
1227
 
354
- # an unexpected error has occurred
355
- Kernel::raise RuntimeError.new("An unexpected error was encountered during verification:\n" << e.inspect )
1228
+ refresh_suts if counter == ref_counter
356
1229
 
357
- end # begin, catch any VerificationErrors
1230
+ end
358
1231
 
359
1232
  end # do
360
1233
 
1234
+
361
1235
  rescue Exception => e
1236
+
1237
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
1238
+
362
1239
  raise if e.kind_of? MobyBase::ContinuousVerificationError
1240
+
363
1241
  $logger.enabled = logging_enabled
364
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{e.to_s}.\n#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_true;"
1242
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed: #{e.to_s}#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_not;"
365
1243
  Kernel::raise e
1244
+
366
1245
  ensure
1246
+
367
1247
  MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout unless original_sync_timeout.nil?
1248
+
368
1249
  end
369
1250
 
370
1251
  $logger.enabled = logging_enabled
371
- $logger.log "behaviour" , "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_true;"
1252
+ $logger.behaviour "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_not;"
372
1253
  return nil
373
1254
 
374
1255
  end
375
1256
 
376
- # Verifies that the block given to this method evaluates to false. Verification is synchronized with all connected suts.
1257
+ # Verifies that the block given to this method evaluates to the expected value. Verification is synchronized with all connected suts.
377
1258
  # If this method is called for a sut, synchronization is only done with that sut.
378
1259
  #
379
1260
  # === params
1261
+ # expected:: Expected result value of the block
380
1262
  # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
381
1263
  # message:: (optional) A String that is displayed as additional information if the verification fails.
382
1264
  # === returns
@@ -385,18 +1267,12 @@ module TDriverVerify
385
1267
  # ArgumentError:: message was not a String or timeout an integer, or no block was given.
386
1268
  # VerificationError:: The verification failed.
387
1269
  # RuntimeError:: An unexpected error was encountered during verification.
388
- def verify_false( timeout = nil, message = nil, &block )
389
-
1270
+ def verify_equal( expected, timeout = nil, message = nil, &block )
390
1271
  logging_enabled = $logger.enabled
391
-
392
1272
  verify_caller = caller(1).first.to_s
393
-
394
1273
  begin
395
-
396
1274
  $logger.enabled = false
397
-
398
1275
  Kernel::raise ArgumentError.new("No block was given.") unless block_given?
399
-
400
1276
  Kernel::raise ArgumentError.new("Argument timeout was not an Integer.") unless timeout.nil? or timeout.kind_of?(Integer)
401
1277
  Kernel::raise ArgumentError.new("Argument message was not a String.") unless message.nil? or message.kind_of?(String)
402
1278
 
@@ -405,6 +1281,7 @@ module TDriverVerify
405
1281
  MobyBase::TestObjectFactory.instance.timeout = 0
406
1282
 
407
1283
  timeout_time = get_end_time(timeout)
1284
+
408
1285
  #TIMEOUT_CYCLE_SECONDS
409
1286
 
410
1287
  loop do
@@ -413,6 +1290,7 @@ module TDriverVerify
413
1290
 
414
1291
  begin # catch errors thrown in the provided block
415
1292
  result = yield
1293
+
416
1294
  rescue Exception => e
417
1295
  raise if e.kind_of? MobyBase::ContinuousVerificationError
418
1296
  error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed as an exception was thrown when the verification block was executed."
@@ -421,12 +1299,12 @@ module TDriverVerify
421
1299
  error_msg << "\n" << e.inspect
422
1300
  raise MobyBase::VerificationError.new(error_msg)
423
1301
  end
424
-
425
- error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed:"
426
- error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
427
- error_msg << "The block did not return false. It returned: " << result.inspect
428
- raise MobyBase::VerificationError.new(error_msg) unless result == false
429
-
1302
+ if result != expected
1303
+ error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed:"
1304
+ error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
1305
+ error_msg << "\nThe block did not return #{expected.inspect}. It returned: " << result.inspect
1306
+ raise MobyBase::VerificationError.new(error_msg)
1307
+ end
430
1308
  # break loop if no exceptions thrown
431
1309
  break
432
1310
 
@@ -441,12 +1319,11 @@ module TDriverVerify
441
1319
  sleep TIMEOUT_CYCLE_SECONDS
442
1320
 
443
1321
  refresh_suts if counter == ref_counter
444
-
445
-
1322
+ rescue MobyBase::ContinuousVerificationError
1323
+ raise
446
1324
  rescue Exception => e
447
1325
  raise if e.kind_of? MobyBase::ContinuousVerificationError
448
1326
  # an unexpected error has occurred
449
- $logger.enabled = logging_enabled
450
1327
  Kernel::raise RuntimeError.new("An unexpected error was encountered during verification:\n" << e.inspect )
451
1328
 
452
1329
  end # begin, catch any VerificationErrors
@@ -460,25 +1337,22 @@ module TDriverVerify
460
1337
  raise if e.kind_of? MobyBase::ContinuousVerificationError
461
1338
 
462
1339
  $logger.enabled = logging_enabled
463
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{e.to_s}.\n #{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_false;"
464
-
1340
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{e.to_s}.\n#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_equal;" << expected.to_s
465
1341
  Kernel::raise e
466
-
467
1342
  ensure
468
1343
  MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout unless original_sync_timeout.nil?
469
1344
  end
470
1345
 
471
1346
  $logger.enabled = logging_enabled
472
- $logger.log "behaviour" , "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_false;"
1347
+ $logger.behaviour "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_equal;" << expected.to_s
473
1348
  return nil
474
1349
 
475
1350
  end
476
1351
 
477
- # Verifies that the block given to this method evaluates to the expected value. Verification is synchronized with all connected suts.
1352
+ # Verifies that the block given to this method evaluates to true. Verification is synchronized with all connected suts.
478
1353
  # If this method is called for a sut, synchronization is only done with that sut.
479
1354
  #
480
1355
  # === params
481
- # expected:: Expected result value of the block
482
1356
  # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
483
1357
  # message:: (optional) A String that is displayed as additional information if the verification fails.
484
1358
  # === returns
@@ -487,9 +1361,11 @@ module TDriverVerify
487
1361
  # ArgumentError:: message was not a String or timeout an integer, or no block was given.
488
1362
  # VerificationError:: The verification failed.
489
1363
  # RuntimeError:: An unexpected error was encountered during verification.
490
- def verify_equal( expected, timeout = nil, message = nil, &block )
1364
+ def verify_true( timeout = nil, message = nil, &block )
1365
+
491
1366
  logging_enabled = $logger.enabled
492
1367
  verify_caller = caller(1).first.to_s
1368
+
493
1369
  begin
494
1370
  $logger.enabled = false
495
1371
  Kernel::raise ArgumentError.new("No block was given.") unless block_given?
@@ -501,30 +1377,45 @@ module TDriverVerify
501
1377
  MobyBase::TestObjectFactory.instance.timeout = 0
502
1378
 
503
1379
  timeout_time = get_end_time(timeout)
504
-
505
1380
  #TIMEOUT_CYCLE_SECONDS
506
1381
 
507
1382
  loop do
1383
+
508
1384
  counter = ref_counter
1385
+
509
1386
  begin # catch errors thrown due to verification results
510
1387
 
1388
+
511
1389
  begin # catch errors thrown in the provided block
1390
+
512
1391
  result = yield
513
1392
 
514
1393
  rescue Exception => e
1394
+
1395
+ #@@on_error_verify_block.call unless @@on_error_verify_block.nil?
1396
+
515
1397
  raise if e.kind_of? MobyBase::ContinuousVerificationError
1398
+
516
1399
  error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed as an exception was thrown when the verification block was executed."
517
1400
  error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
518
1401
  error_msg << "\nDetails: "
519
1402
  error_msg << "\n" << e.inspect
520
- raise MobyBase::VerificationError.new(error_msg)
1403
+
1404
+ raise MobyBase::VerificationError.new( error_msg )
1405
+
521
1406
  end
522
- if result != expected
523
- error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed:"
1407
+
1408
+ unless result == true
1409
+
1410
+ error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed."
524
1411
  error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
525
- error_msg << "\nThe block did not return #{expected.inspect}. It returned: " << result.inspect
526
- raise MobyBase::VerificationError.new(error_msg)
1412
+
1413
+ error_msg << "\nThe block did not return true. It returned: " << result.inspect
1414
+
1415
+ raise MobyBase::VerificationError.new( error_msg )
1416
+
527
1417
  end
1418
+
528
1419
  # break loop if no exceptions thrown
529
1420
  break
530
1421
 
@@ -532,17 +1423,24 @@ module TDriverVerify
532
1423
 
533
1424
  # refresh and retry unless timeout reached
534
1425
 
535
- if Time.new > timeout_time
1426
+ if ( Time.new > timeout_time )
1427
+
1428
+ execute_on_error_verify_block unless @@on_error_verify_block.nil?
1429
+
536
1430
  Kernel::raise ve
1431
+
537
1432
  end
538
1433
 
539
1434
  sleep TIMEOUT_CYCLE_SECONDS
540
1435
 
541
1436
  refresh_suts if counter == ref_counter
542
- rescue MobyBase::ContinuousVerificationError
543
- raise
1437
+
544
1438
  rescue Exception => e
1439
+
545
1440
  raise if e.kind_of? MobyBase::ContinuousVerificationError
1441
+
1442
+ $logger.enabled = logging_enabled
1443
+
546
1444
  # an unexpected error has occurred
547
1445
  Kernel::raise RuntimeError.new("An unexpected error was encountered during verification:\n" << e.inspect )
548
1446
 
@@ -551,228 +1449,153 @@ module TDriverVerify
551
1449
  end # do
552
1450
 
553
1451
  rescue Exception => e
554
-
555
- execute_on_error_verify_block unless @@on_error_verify_block.nil?
556
-
557
1452
  raise if e.kind_of? MobyBase::ContinuousVerificationError
558
-
559
1453
  $logger.enabled = logging_enabled
560
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{e.to_s}.\n#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_equal;" << expected.to_s
1454
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{e.to_s}.\n#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_true;"
561
1455
  Kernel::raise e
562
1456
  ensure
563
1457
  MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout unless original_sync_timeout.nil?
564
1458
  end
565
1459
 
566
1460
  $logger.enabled = logging_enabled
567
- $logger.log "behaviour" , "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_equal;" << expected.to_s
1461
+ $logger.behaviour "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_true;"
568
1462
  return nil
569
1463
 
570
1464
  end
571
1465
 
572
- # Verifies that the block given to return value matches with expected regular expression pattern. Verification is synchronized with all connected suts.
1466
+ # Verifies that the block given to this method evaluates to false. Verification is synchronized with all connected suts.
573
1467
  # If this method is called for a sut, synchronization is only done with that sut.
574
1468
  #
575
1469
  # === params
576
- # expected:: Regular expression
577
1470
  # timeout:: (optional) Integer defining the amount of seconds during which the verification must pass.
578
1471
  # message:: (optional) A String that is displayed as additional information if the verification fails.
579
1472
  # === returns
580
1473
  # nil
581
1474
  # === raises
582
1475
  # ArgumentError:: message was not a String or timeout an integer, or no block was given.
583
- # TypeError:: if block result not type of String.
584
1476
  # VerificationError:: The verification failed.
585
1477
  # RuntimeError:: An unexpected error was encountered during verification.
586
- def verify_regexp( expected, timeout = nil, message = nil, &block )
1478
+ def verify_false( timeout = nil, message = nil, &block )
587
1479
 
588
1480
  logging_enabled = $logger.enabled
589
1481
 
590
- verify_caller = caller( 1 ).first.to_s
1482
+ verify_caller = caller(1).first.to_s
591
1483
 
592
1484
  begin
593
1485
 
594
- raise ArgumentError, "No block was given." unless block_given?
1486
+ $logger.enabled = false
595
1487
 
596
- # verify argument types
597
- timeout.check_type [ Integer, NilClass ], "wrong argument type $1 for timeout (expected $2)"
598
- message.check_type [ String, NilClass ], "wrong argument type $1 for message (expected $2)"
599
- expected.check_type Regexp, "wrong argument type $1 for expected result (expected $2)"
1488
+ Kernel::raise ArgumentError.new("No block was given.") unless block_given?
600
1489
 
601
- $logger.enabled = false
1490
+ Kernel::raise ArgumentError.new("Argument timeout was not an Integer.") unless timeout.nil? or timeout.kind_of?(Integer)
1491
+ Kernel::raise ArgumentError.new("Argument message was not a String.") unless message.nil? or message.kind_of?(String)
602
1492
 
603
1493
  #Set the testobject timeout to 0 for the duration of the verify call
604
1494
  original_sync_timeout = MobyBase::TestObjectFactory.instance.timeout
605
-
606
1495
  MobyBase::TestObjectFactory.instance.timeout = 0
607
1496
 
608
- timeout_time = get_end_time( timeout )
1497
+ timeout_time = get_end_time(timeout)
1498
+ #TIMEOUT_CYCLE_SECONDS
609
1499
 
610
1500
  loop do
611
-
612
1501
  counter = ref_counter
613
-
614
- # catch errors thrown due to verification results
615
- begin
616
-
617
- # catch errors thrown in the provided block
618
- begin
619
-
620
- # execute block
621
- result = yield
622
-
623
- rescue Exception
624
-
625
- raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
626
-
627
- error_msg = "Verification #{ message.nil? ? '' : '"' << message.to_s << '" '}at #{ verify_caller } failed as an exception was thrown when the verification block was executed."
628
-
629
- error_msg << MobyUtil::KernelHelper.find_source( verify_caller )
630
-
631
- error_msg << "\nDetails: \n#{ $!.inspect }"
632
-
633
- raise MobyBase::VerificationError, error_msg
1502
+ begin # catch errors thrown due to verification results
634
1503
 
1504
+ begin # catch errors thrown in the provided block
1505
+ result = yield
1506
+ rescue Exception => e
1507
+ raise if e.kind_of? MobyBase::ContinuousVerificationError
1508
+ error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed as an exception was thrown when the verification block was executed."
1509
+ error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
1510
+ error_msg << "\nDetails: "
1511
+ error_msg << "\n" << e.inspect
1512
+ raise MobyBase::VerificationError.new(error_msg)
635
1513
  end
636
1514
 
637
- # verify that result value is type of string
638
- result.check_type String, "wrong variable type $1 for result (expected $2)"
639
-
640
- # result verification
641
- unless result =~ expected
642
-
643
- error_msg = "Verification #{ message.nil? ? '' : '"' << message.to_s << '" '}at #{ verify_caller } failed:"
644
-
645
- error_msg << MobyUtil::KernelHelper.find_source( verify_caller )
646
-
647
- error_msg << "\nThe block did not match with pattern #{ expected.inspect }. It returned: #{ result.inspect }"
648
-
649
- raise MobyBase::VerificationError, error_msg
650
-
651
- end
1515
+ error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed:"
1516
+ error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
1517
+ error_msg << "The block did not return false. It returned: " << result.inspect
1518
+ raise MobyBase::VerificationError.new(error_msg) unless result == false
652
1519
 
653
1520
  # break loop if no exceptions thrown
654
1521
  break
655
1522
 
656
- rescue MobyBase::VerificationError
1523
+ rescue MobyBase::VerificationError => ve
657
1524
 
658
1525
  # refresh and retry unless timeout reached
659
1526
 
660
- raise $! if Time.new > timeout_time
1527
+ if Time.new > timeout_time
1528
+ Kernel::raise ve
1529
+ end
661
1530
 
662
1531
  sleep TIMEOUT_CYCLE_SECONDS
663
1532
 
664
1533
  refresh_suts if counter == ref_counter
665
-
666
- rescue MobyBase::ContinuousVerificationError
667
-
668
- raise
669
1534
 
670
- rescue TypeError
671
-
672
- raise $!
673
-
674
- rescue Exception
675
-
676
- raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
677
1535
 
1536
+ rescue Exception => e
1537
+ raise if e.kind_of? MobyBase::ContinuousVerificationError
678
1538
  # an unexpected error has occurred
679
- raise RuntimeError, "An unexpected error was encountered during verification:\n#{ $!.inspect }"
1539
+ $logger.enabled = logging_enabled
1540
+ Kernel::raise RuntimeError.new("An unexpected error was encountered during verification:\n" << e.inspect )
680
1541
 
681
1542
  end # begin, catch any VerificationErrors
682
1543
 
683
1544
  end # do
684
1545
 
685
- rescue Exception
1546
+ rescue Exception => e
686
1547
 
687
1548
  execute_on_error_verify_block unless @@on_error_verify_block.nil?
688
1549
 
689
- raise if $!.kind_of?( MobyBase::ContinuousVerificationError )
1550
+ raise if e.kind_of? MobyBase::ContinuousVerificationError
690
1551
 
691
1552
  $logger.enabled = logging_enabled
692
-
693
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{ $!.to_s }.\n#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s }.;#{ self.kind_of?( MobyBase::SUT ) ? "#{ self.id.to_s };sut" : ';' };{};verify_regexp;#{ expected.inspect }"
1553
+ $logger.behaviour "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed:#{e.to_s}.\n #{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_false;"
694
1554
 
695
- raise $!
1555
+ Kernel::raise e
696
1556
 
697
1557
  ensure
698
-
699
- MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout
700
-
701
- $logger.enabled = logging_enabled
702
-
1558
+ MobyBase::TestObjectFactory.instance.timeout = original_sync_timeout unless original_sync_timeout.nil?
703
1559
  end
704
1560
 
705
- $logger.log "behaviour", "PASS;Verification #{ message.nil? ? '' : '\"' << message << '\" ' }at #{ verify_caller } was successful#{ timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{ self.kind_of?( MobyBase::SUT ) ? "#{ self.id.to_s };sut" : ';'};{};verify_regexp;#{ expected.inspect }"
706
-
707
- nil
1561
+ $logger.enabled = logging_enabled
1562
+ $logger.behaviour "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_false;"
1563
+ return nil
708
1564
 
709
1565
  end
1566
+
1567
+ =end
710
1568
 
1569
+ private
711
1570
 
712
- # Verifies that the given signal is emitted.
713
- #
714
- # === params
715
- # timeout:: Integer, defining the amount of seconds during which the verification must pass.
716
- # signal_name:: String, name of the signal
717
- # message:: (optional) A String that is displayed as additional information if the verification fails.
718
- # block:: code to execute while listening signals
719
- # === returns
720
- # nil
721
- # === raises
722
- # ArgumentError:: message or signal_name was not a String or timeout a non negative Integer
723
- # VerificationError:: The verification failed.
724
- def verify_signal( timeout, signal_name, message = nil, &block )
725
-
726
- logging_enabled = $logger.enabled
727
- verify_caller = caller(1).first.to_s
728
-
729
- begin
730
-
731
- $logger.enabled = false
732
-
733
- Kernel::raise ArgumentError.new("Argument timeout was not a non negative Integer.") unless (timeout.kind_of?(Integer) && timeout >= 0)
734
- Kernel::raise ArgumentError.new("Argument message was not a non empty String.") unless (message.nil? || (message.kind_of?(String) && !message.empty?))
735
-
736
- # wait for the signal
737
- begin
738
-
739
- self.wait_for_signal( timeout, signal_name, &block )
740
-
741
- rescue Exception => e
1571
+ def get_end_time( timeout )
742
1572
 
743
- error_msg = "Verification #{message.nil? ? '' : '"' << message.to_s << '" '}at #{verify_caller} failed:"
744
- error_msg << MobyUtil::KernelHelper.find_source(verify_caller)
745
- error_msg << "The signal #{signal_name} was not emitted in #{timeout} seconds."
746
- error_msg << "\nNested exception:\n" << e.inspect
747
- Kernel::raise MobyBase::VerificationError.new(error_msg)
1573
+ if self.kind_of?( MobyBase::SUT )
748
1574
 
749
- end
1575
+ Time.new + ( timeout.nil? ? $parameters[ self.sut ][ :synchronization_timeout, '10' ].to_i : timeout.to_i )
750
1576
 
751
- rescue Exception => e
1577
+ else
752
1578
 
753
- execute_on_error_verify_block unless @@on_error_verify_block.nil?
1579
+ Time.new + ( timeout.nil? ? $parameters[ :synchronization_timeout, '10' ].to_i : timeout.to_i )
754
1580
 
755
- $logger.enabled = logging_enabled
756
- $logger.log "behaviour" , "FAIL;Verification #{message.nil? ? '' : '\"' << message << '\" '}failed: #{e.to_s} using timeout '#{timeout}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_signal;#{signal_name}"
757
- Kernel::raise e
758
1581
  end
759
1582
 
760
- $logger.enabled = logging_enabled
761
- $logger.log "behaviour" , "PASS;Verification #{message.nil? ? '' : '\"' << message << '\" '}at #{verify_caller} was successful#{timeout.nil? ? '' : ' using timeout ' + timeout.to_s}.;#{self.kind_of?(MobyBase::SUT) ? self.id.to_s + ';sut' : ';'};{};verify_signal;#{signal_name}"
762
- return nil
763
-
764
1583
  end
765
1584
 
766
- private
767
-
1585
+ def get_timeout( timeout )
1586
+
1587
+ if self.kind_of?( MobyBase::SUT )
768
1588
 
769
- def get_end_time(timeout)
1589
+ timeout = $parameters[ self.sut ][ :synchronization_timeout, '10' ].to_i if timeout.nil?
770
1590
 
771
- if self.kind_of?(MobyBase::SUT)
772
- Time.new + (timeout.nil? ? MobyUtil::Parameter[self.sut][ :synchronization_timeout].to_i : timeout.to_i)
773
1591
  else
774
- Time.new + (timeout.nil? ? MobyUtil::Parameter[ :synchronization_timeout].to_i : timeout.to_i)
1592
+
1593
+ timeout = $parameters[ :synchronization_timeout, '10' ].to_i if timeout.nil?
1594
+
775
1595
  end
1596
+
1597
+ timeout.to_i
1598
+
776
1599
  end
777
1600
 
778
1601
  # Current count of combined sut refresh calls to all suts