testability-driver-runner 0.9.2

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.
Files changed (74) hide show
  1. data/bin/sierra +19 -0
  2. data/bin/tdrunner +17 -0
  3. data/lib/tdrunner.rb +208 -0
  4. data/lib/tdrunner.yml +1 -0
  5. data/lib/tdrunner_cucumber.rb +222 -0
  6. data/lib/tdrunner_cucumber_runners.rb +35 -0
  7. data/lib/tdrunner_file_finder.rb +45 -0
  8. data/lib/tdrunner_monitor.rb +473 -0
  9. data/lib/tdrunner_profile.rb +416 -0
  10. data/lib/tdrunner_test_unit.rb +433 -0
  11. data/rakefile +135 -0
  12. data/readme +186 -0
  13. data/websi/README +243 -0
  14. data/websi/Rakefile +10 -0
  15. data/websi/app/controllers/application_controller.rb +29 -0
  16. data/websi/app/controllers/report_editor/test_run/cases_controller.rb +307 -0
  17. data/websi/app/controllers/report_editor_controller.rb +25 -0
  18. data/websi/app/controllers/websi_controller.rb +478 -0
  19. data/websi/app/controllers/websi_script.rb +26 -0
  20. data/websi/app/controllers/websi_support.rb +142 -0
  21. data/websi/app/helpers/application_helper.rb +22 -0
  22. data/websi/app/helpers/report_editor/report_editor_helper.rb +26 -0
  23. data/websi/app/helpers/report_editor/test_run/cases_helper.rb +26 -0
  24. data/websi/app/helpers/websi_helper.rb +21 -0
  25. data/websi/app/views/layouts/application.rhtml +17 -0
  26. data/websi/app/views/websi/execution.html.erb +28 -0
  27. data/websi/app/views/websi/index.html.erb +23 -0
  28. data/websi/app/views/websi/profile.html.erb +30 -0
  29. data/websi/app/views/websi/results.html.erb +30 -0
  30. data/websi/app/views/websi/tests.html.erb +23 -0
  31. data/websi/app/views/websi/weights.html.erb +16 -0
  32. data/websi/config/boot.rb +129 -0
  33. data/websi/config/database.yml +22 -0
  34. data/websi/config/environment.rb +60 -0
  35. data/websi/config/environments/development.rb +36 -0
  36. data/websi/config/environments/production.rb +47 -0
  37. data/websi/config/environments/test.rb +47 -0
  38. data/websi/config/initializers/backtrace_silencers.rb +26 -0
  39. data/websi/config/initializers/inflections.rb +29 -0
  40. data/websi/config/initializers/mime_types.rb +24 -0
  41. data/websi/config/initializers/new_rails_defaults.rb +40 -0
  42. data/websi/config/initializers/session_store.rb +34 -0
  43. data/websi/config/locales/en.yml +5 -0
  44. data/websi/config/routes.rb +62 -0
  45. data/websi/db/development.sqlite3 +0 -0
  46. data/websi/db/seeds.rb +26 -0
  47. data/websi/doc/README_FOR_APP +2 -0
  48. data/websi/log/development.log +0 -0
  49. data/websi/log/production.log +0 -0
  50. data/websi/log/server.log +0 -0
  51. data/websi/log/test.log +0 -0
  52. data/websi/public/report_editor/test_run/_index.html +12 -0
  53. data/websi/public/robots.txt +5 -0
  54. data/websi/public/stylesheets/tdriver_report_style.css +220 -0
  55. data/websi/public/tests/config/web_profile.sip +0 -0
  56. data/websi/public/tests/example_profile.sip +8 -0
  57. data/websi/public/tests/tdrunner.yml +3 -0
  58. data/websi/public/tests/web_profile.sip +8 -0
  59. data/websi/public/tests/websi_parameters.xml +4 -0
  60. data/websi/script/about +4 -0
  61. data/websi/script/console +3 -0
  62. data/websi/script/dbconsole +3 -0
  63. data/websi/script/destroy +3 -0
  64. data/websi/script/generate +3 -0
  65. data/websi/script/performance/benchmarker +3 -0
  66. data/websi/script/performance/profiler +3 -0
  67. data/websi/script/plugin +3 -0
  68. data/websi/script/runner +3 -0
  69. data/websi/script/server +3 -0
  70. data/websi/test/functional/websi_controller_test.rb +27 -0
  71. data/websi/test/performance/browsing_test.rb +28 -0
  72. data/websi/test/test_helper.rb +57 -0
  73. data/websi/test/unit/helpers/websi_helper_test.rb +23 -0
  74. metadata +199 -0
@@ -0,0 +1,35 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of Testability Driver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+
21
+ module TDRunner
22
+ module TDRunnerCucumber
23
+ module TDRunnerCucumberRunners
24
+ def tdrunner_loaded_features()
25
+ $tdrunner_loaded_features
26
+ end
27
+ def set_tdrunner_loaded_features(feature_folder,cucumber_runner)
28
+ if $tdrunner_loaded_features==nil
29
+ $tdrunner_loaded_features=[['.'],['.']]
30
+ end
31
+ $tdrunner_loaded_features << [[feature_folder],[cucumber_runner]]
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,45 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of Testability Driver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+
20
+
21
+ class TDRunnerFileFinder
22
+ def initialize(find_file_extension)
23
+ @exclude_folders_pattern = [ '.*', '_*' ]
24
+ @include_files_pattern = [ "*/*.#{find_file_extension}" ]
25
+ end
26
+ def file_pattern_matches?( patterns, filepath )
27
+ patterns.each{ | pattern | return true if File.fnmatch( pattern, filepath ) }; false
28
+ end
29
+ def get_files( folder, files_list = [] )
30
+ if File.directory?( folder )
31
+ folder = File.expand_path( folder )
32
+ Dir.open( folder ).each { | entry |
33
+ # create full filepath
34
+ filepath = "#{ folder }/#{ entry }"
35
+ # file: add file to required files list
36
+ files_list.push( filepath ) if file_pattern_matches?( @include_files_pattern, filepath )
37
+ # directory: go deeper in folder stack structure if exclusion pattern does not meet
38
+ files_list |= get_files("#{ filepath }/") if File.directory?( filepath ) and not file_pattern_matches?( @exclude_folders_pattern, entry )
39
+ }
40
+ files_list
41
+ else
42
+ folder
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,473 @@
1
+ ############################################################################
2
+ ##
3
+ ## Copyright (C) 2010 Nokia Corporation and/or its subsidiary(-ies).
4
+ ## All rights reserved.
5
+ ## Contact: Nokia Corporation (testabilitydriver@nokia.com)
6
+ ##
7
+ ## This file is part of Testability Driver.
8
+ ##
9
+ ## If you have questions regarding the use of this file, please contact
10
+ ## Nokia at testabilitydriver@nokia.com .
11
+ ##
12
+ ## This library is free software; you can redistribute it and/or
13
+ ## modify it under the terms of the GNU Lesser General Public
14
+ ## License version 2.1 as published by the Free Software Foundation
15
+ ## and appearing in the file LICENSE.LGPL included in the packaging
16
+ ## of this file.
17
+ ##
18
+ ############################################################################
19
+ require 'yaml'
20
+
21
+ module TDRunner
22
+ #TDRunner monitor module for controlling the SIERRA execution
23
+ module TDRunnerMonitor
24
+
25
+ def add_failed_testunit_tests(tdrunner_parameters,case_contents_array,index)
26
+ if(tdrunner_parameters.failed_execution_profile != nil)
27
+ failed_case = case_contents_array[index].at(0).to_s
28
+ if tdrunner_parameters.tdrunner_ordered==false
29
+ #i.e. no dependencies
30
+ add_tc_to_failed_array(tdrunner_parameters,failed_case)
31
+ else
32
+ add_dependent_tcs_to_failed_array(tdrunner_parameters,case_contents_array,index)
33
+ end
34
+ end
35
+ end
36
+
37
+ def add_dependent_tcs_to_failed_array(tdrunner_parameters,case_contents_array,index)
38
+ temp_array=Array.new
39
+
40
+ failed_case = case_contents_array[index].at(0).to_s
41
+ pos = case_contents_array[index].at(2).count( "-").to_i
42
+ temp_array<<get_pos_string(pos) + get_test_name(failed_case)+ "(" + get_test_class(failed_case) + ")=1"
43
+ i = index.to_i - 1
44
+
45
+ while( i>0 || i==0 )
46
+ prev_pos = case_contents_array[i].at(2).count( "-").to_i
47
+ prev_failed_case = case_contents_array[i].at(0).to_s
48
+
49
+ if (pos>prev_pos && prev_pos!=0 )
50
+ temp_array<<get_pos_string(prev_pos) + get_test_name(prev_failed_case)+ "(" + get_test_class(prev_failed_case) + ")=1"
51
+ end
52
+
53
+ if(prev_pos==0)
54
+ temp_array<<get_pos_string(prev_pos) + get_test_name(prev_failed_case)+ "(" + get_test_class(prev_failed_case) + ")=1"
55
+ break
56
+ end
57
+ i=i-1
58
+ end
59
+
60
+ $failed_tests ||= Array.new
61
+ if !$failed_tests.include? temp_array.reverse!
62
+ class_name = get_test_class(failed_case) + "=1"
63
+ $failed_tests <<class_name if !value_exists_in_array($failed_tests , class_name)
64
+ $failed_tests<<temp_array
65
+ end
66
+ end
67
+
68
+ def add_tc_to_failed_array(tdrunner_parameters,testcase)
69
+ $failed_tests ||= Array.new
70
+ tc_class=get_test_class(testcase)
71
+ tc_name=get_test_name(testcase)
72
+ class_name = tc_class + "=1"
73
+ tc_name = tc_name+ "(" + tc_class + ")=1"
74
+
75
+ if !$failed_tests.include? tc_name
76
+ $failed_tests <<class_name if !$failed_tests.include? class_name
77
+ $failed_tests << tc_name
78
+ end
79
+ end
80
+
81
+ def get_pos_string(pos)
82
+ pos_str=""
83
+ if(pos>0)
84
+ pos_str=Array.new(pos, "-").join.to_s
85
+ end
86
+ return pos_str
87
+ end
88
+
89
+ def get_test_name(testcase_name)
90
+ name=testcase_name.gsub(/[)]/,'')
91
+ name_arr=name.split('(')
92
+ return name_arr[0].to_s
93
+ end
94
+
95
+ def get_test_class(testcase_name)
96
+ name=testcase_name.gsub(/[)]/,'')
97
+ name_arr=name.split('(')
98
+ return name_arr[1].to_s
99
+ end
100
+
101
+ def write_failed_sip_file(tdrunner_parameters)
102
+ if($failed_tests!=nil && tdrunner_parameters.failed_execution_profile != nil && !$failed_tests.empty?)
103
+ file = File.open(tdrunner_parameters.failed_execution_profile.to_s,'w')
104
+ $failed_tests.flatten.each { |x| file.write(x.to_s+"\n")}
105
+ file.close
106
+ puts 'Failed execution profile created: '+ tdrunner_parameters.failed_execution_profile
107
+ end
108
+ end
109
+
110
+ def trap_pause
111
+ puts "\nExecution paused...\n"
112
+ puts "\nStop execution Yes or No?:"
113
+ response=STDIN.gets
114
+ if response.capitalize == "Yes\n" || response.capitalize == "Y\n"
115
+ $tdrunner_interrupted=true
116
+ STDERR.puts "\nFinalizing test... Please wait...\n"
117
+ STDERR.puts "\nPress ctrl+Break to interrupt immediately\n"
118
+ exit
119
+ elsif response.capitalize == "No\n" || response.capitalize == "N\n"
120
+ STDERR.puts "\nContinuing execution..."
121
+ else
122
+ STDERR.puts "\nIncorrect answer"
123
+ trap_pause
124
+ end
125
+ end
126
+ def trap_interrupt
127
+ trap('INT') do
128
+ trap_pause
129
+ end
130
+ end
131
+
132
+ #Method for checking how many seconds TDRunner has run
133
+ def format_execution_duration(duration_value)
134
+ secs=0
135
+ if (/^\d+:\d+$/.match(duration_value.to_s))
136
+ secs = (duration_value.split(':') [0].to_i*3600) + (duration_value.split(':') [1].to_i*60)
137
+ elsif (/^\d+\.\d+$/.match(duration_value.to_s))
138
+ secs = 3600*duration_value.to_f
139
+ else (/^\d+$/.match(duration_value.to_s))
140
+ secs=60*duration_value.to_f
141
+ end
142
+ secs
143
+ end
144
+
145
+ def exit_tdrunner_execution(message)
146
+ puts message
147
+ end
148
+
149
+ def remove_extra_ends_from_implementation(found_implementation, ends_to_remove)
150
+ removed_ends=0
151
+ current_index=found_implementation.length
152
+ found_implementation.reverse_each do |reverse_line|
153
+ current_index-=1
154
+ if removed_ends < ends_to_remove
155
+ if reverse_line.include?('end')
156
+ found_implementation.delete_at(current_index)
157
+ removed_ends+=1
158
+ end
159
+ end
160
+ end
161
+ found_implementation
162
+ end
163
+
164
+ def find_missing_method_from_ruby_file(method, loaded_test_files, method_name=nil)
165
+ found_implementation=Array.new
166
+ found_setup_implementation=Array.new
167
+ found_teardown_implementation=Array.new
168
+
169
+ loaded_test_files.each do |test_file|
170
+ if found_implementation == []
171
+ f = File.open(test_file) or die "Unable to open file..."
172
+ b_method_found=false
173
+
174
+ f.each_line do |line|
175
+ if b_method_found==true
176
+ if line.include?('def ')
177
+ b_method_found=false
178
+ end
179
+ end
180
+
181
+ if b_method_found==true
182
+ found_implementation << line
183
+ end
184
+
185
+ if line=~/def #{method}(.*)$/
186
+ if method_name==nil
187
+ found_implementation << line
188
+ found_setup_implementation << find_missing_method_from_ruby_file('setup',test_file,"setup_#{method}")
189
+ found_teardown_implementation << find_missing_method_from_ruby_file('teardown',test_file,"teardown_#{method}")
190
+ else
191
+ found_implementation << line.gsub(method, method_name)
192
+ end
193
+ b_method_found=true
194
+ end
195
+ end
196
+
197
+ if b_method_found==true
198
+ found_implementation=remove_extra_ends_from_implementation(found_implementation,1)
199
+ b_method_found=false
200
+ elsif found_implementation.length > 1 && b_method_found==false
201
+ #found_implementation=remove_extra_ends_from_implementation(found_implementation,1)
202
+ b_method_found=false
203
+ end
204
+
205
+ end
206
+ end
207
+ found_implementation << found_setup_implementation
208
+ found_implementation << found_teardown_implementation
209
+ found_implementation
210
+ end
211
+
212
+ def add_missing_methods(original_test_class,missing_methods,loaded_test_files)
213
+ ObjectSpace.each_object( Class ){ | test_class |
214
+ if test_class.ancestors.include?( Test::Unit::TestCase ) && test_class != Test::Unit::TestCase
215
+ test_class.public_instance_methods( true ).sort.each{ | method |
216
+ if method =~ /^test_/
217
+ missing_methods.each do |missing_method|
218
+ if missing_method.to_s == method
219
+ method_implementation=find_missing_method_from_ruby_file(method,loaded_test_files)
220
+ original_test_class.class_eval("module TestModule_#{missing_method.to_s}
221
+ #{method_implementation.to_s}
222
+ end")
223
+ original_test_class.class_eval("include TestModule_#{missing_method.to_s}")
224
+ end
225
+ end
226
+ end
227
+ }
228
+ end
229
+ }
230
+ original_test_class
231
+ end
232
+
233
+ def get_missing_methods(test_class, case_name_array)
234
+ missing_methods_arr=Array.new
235
+ case_name_array.each do |test_case|
236
+ tc_line_arr=test_case.gsub(')','(').split('(')
237
+ if tc_line_arr.length > 1
238
+ if tc_line_arr[1].to_s==test_class.name.to_s
239
+ b_method_exists=false
240
+ test_class.public_instance_methods( true ).sort.each{ | method |
241
+ if method =~ /^test_/
242
+ if tc_line_arr[0].to_s==method.to_s
243
+ b_method_exists=true
244
+ end
245
+ end
246
+ }
247
+ if b_method_exists==false
248
+ missing_methods_arr << tc_line_arr[0].to_s
249
+ end
250
+ end
251
+ end
252
+ end
253
+ missing_methods_arr
254
+ end
255
+
256
+ #adds missing test methods in to the test class based on tdrunner execution profile
257
+ def add_missing_methods_in_to_test_class(test_class,tdrunner_parameters,loaded_test_files)
258
+
259
+ f = File.open(tdrunner_parameters.execution_profile) or die "Unable to open file..."
260
+ case_name_array=[]
261
+ b_profile_file_exist=false
262
+ f.each_line do |line|
263
+ case_arr=line.split('=')
264
+ if case_arr.length > 1
265
+ case_name_array << case_arr[0].gsub('-','')
266
+ b_profile_file_exist=true
267
+ end
268
+ end
269
+ if b_profile_file_exist==true
270
+ missing_methods=get_missing_methods(test_class, case_name_array)
271
+ test_class=add_missing_methods(test_class,missing_methods,loaded_test_files)
272
+ end
273
+ test_class
274
+ end
275
+
276
+
277
+ #Removes duplicates and existing randomizations if found
278
+ def flatten_tests(tests)
279
+ clean_test_arr=[]
280
+ tests.each do |test_case|
281
+ unless clean_test_arr.include? test_case
282
+ clean_test_arr.push test_case
283
+ end
284
+ end
285
+ clean_test_arr
286
+ end
287
+
288
+ def get_test_classes(tests)
289
+ test_classes=[]
290
+ tests.each do |test_case|
291
+ if test_case.to_s.include?('(')==false
292
+ test_classes.push test_case
293
+ end
294
+ end
295
+ test_classes
296
+ end
297
+
298
+ def is_class_included(case_contents_array,class_name)
299
+ b_class_added=false
300
+ case_contents_array.each do | case_content|
301
+ if case_content[0]==class_name
302
+ b_class_added=true
303
+ end
304
+ break if b_class_added==true
305
+ end
306
+ b_class_added
307
+ end
308
+
309
+ def order_the_tests(tests,case_contents_array)
310
+ ordered_tests=[]
311
+ ordered_contents=[]
312
+ tests_to_string=[]
313
+ not_found_tests=[]
314
+ tests.each do |tc|
315
+ tests_to_string << tc.to_s
316
+ end
317
+ test_classes=get_test_classes(tests)
318
+ case_contents_array.each do|tc|
319
+ if not_found_tests.include?(tc[0].to_s)==false
320
+ index=tests_to_string.index tc[0].to_s
321
+ if index!=nil
322
+ ordered_tests.push tests[index]
323
+ ordered_contents.push tc
324
+ else
325
+ tests_to_be_added=tests.find_all{|item| item.to_s % item.to_s == tc[0].to_s }
326
+ if tests_to_be_added!=[]
327
+ ordered_tests.push tests_to_be_added.first
328
+ ordered_contents.push tc
329
+ else
330
+ not_found_tests << tc[0].to_s
331
+ end
332
+ end
333
+ end
334
+ end
335
+ test_classes.each do |test_class|
336
+ if is_class_included(case_contents_array,test_class.to_s)==false
337
+ ordered_tests.push test_class
338
+ ordered_contents.push [test_class.to_s,nil,test_class.to_s,'not run']
339
+ end
340
+ end
341
+ return ordered_tests, ordered_contents
342
+ end
343
+
344
+ def organize_tests(tests,case_contents_array,case_name_array,tdrunner_parameters)
345
+ organized_tests=[]
346
+ test_classes=get_test_classes(tests)
347
+ tests.each do |test_case|
348
+ profile_index=case_name_array.index test_case.to_s
349
+ if profile_index == nil
350
+ File.open(tdrunner_parameters.execution_profile, 'a') { |file| file.write("\n"+test_case.to_s+"=1") } if tdrunner_parameters.execution_mode=='-m'
351
+ else
352
+ case_contents_array.each do |test|
353
+ if test_case.to_s==test[0].to_s
354
+
355
+ organized_tests.push test_case
356
+
357
+ end
358
+ end
359
+ end
360
+
361
+ end
362
+ test_classes.each do |test_class|
363
+ organized_tests.push test_class
364
+ end
365
+ organized_tests
366
+ end
367
+
368
+ def value_exists_in_array(current_array,value)
369
+ b_exists=false
370
+ current_array.each do |arr_value|
371
+ if arr_value.include?(value)
372
+ b_exists=true
373
+ end
374
+ end
375
+ b_exists
376
+ end
377
+
378
+ #method for randomizing the executed tests
379
+ def randomize_test_cases(tests,tdrunner_parameters)
380
+ tests=flatten_tests(tests)
381
+ if tdrunner_parameters.execution_profile!=nil
382
+ f = File.open(tdrunner_parameters.execution_profile) or die "Unable to open file..."
383
+ @case_contents_array=[] # start with an empty array
384
+ case_name_array=[]
385
+ b_profile_file_exist=false
386
+
387
+ f.each_line do |line|
388
+ case_arr=line.split('=')
389
+ if case_arr.length == 2
390
+ for i in (1..case_arr[1].to_i)
391
+ @case_contents_array << [case_arr[0].gsub('-',''),nil,case_arr[0],'not run'] #name, parameters, place in tree, test result
392
+ case_name_array << case_arr[0].gsub('-','')
393
+ end
394
+ b_profile_file_exist=true
395
+ elsif case_arr.length == 3
396
+ for i in (1..case_arr[1].to_i)
397
+ @case_contents_array << [case_arr[0].gsub('-',''),case_arr[2],case_arr[0],'not run'] #name, parameters, place in tree, test result
398
+ case_name_array << case_arr[0].gsub('-','')
399
+ end
400
+ b_profile_file_exist=true
401
+ end
402
+ end
403
+ tests=organize_tests(tests,@case_contents_array,case_name_array,tdrunner_parameters)
404
+
405
+ end
406
+
407
+ if tdrunner_parameters.tdrunner_ordered==false
408
+ if b_profile_file_exist==true
409
+ @case_contents_array=@case_contents_array.shuffle
410
+ tests,@case_contents_array=order_the_tests(tests, @case_contents_array)
411
+ end
412
+ else
413
+ if b_profile_file_exist==true
414
+ tests,@case_contents_array=order_the_tests(tests, @case_contents_array)
415
+ end
416
+ end
417
+ return tests, @case_contents_array
418
+
419
+ end
420
+
421
+ #Method to check how long tdrunner run is active
422
+ #TDRunner mode is checked from initialized TDRunnerParameters class
423
+ def tdrunner_active(run_start_time,iteration,tdrunner_parameters)
424
+ current_run_time=Time.now-run_start_time
425
+ case tdrunner_parameters.execution_mode
426
+ when '-H'
427
+ if (current_run_time<format_execution_duration(tdrunner_parameters.duration_value))
428
+ true
429
+ else
430
+ false
431
+ end
432
+ when '-i'
433
+ if iteration<tdrunner_parameters.lpt_run
434
+ true
435
+ else
436
+ false
437
+ end
438
+ when '-d'
439
+ if Time.now<tdrunner_parameters.lpt_run
440
+ true
441
+ else
442
+ false
443
+ end
444
+ when '-m'
445
+ #exit_tdrunner_execution('Execution profile created: '+ tdrunner_parameters.execution_profile)
446
+ false
447
+ when '-e'
448
+ if iteration<tdrunner_parameters.lpt_run
449
+ true
450
+ else
451
+ false
452
+ end
453
+ end
454
+ end
455
+
456
+
457
+ #Formater for displaying the execution time
458
+ def format_duration(seconds)
459
+ m, s = seconds.divmod(60)
460
+ "#{m}m#{'%.3f' % s}s"
461
+ end
462
+
463
+ def wait_for_starttime(tdrunner_parameters)
464
+ #If the start time is defined then only start execution at this time
465
+ if tdrunner_parameters.start_time!=nil
466
+ while Time.now < tdrunner_parameters.start_time
467
+ sleep(1)
468
+ end
469
+ end
470
+ end
471
+
472
+ end
473
+ end