testability-driver 1.3.1 → 1.3.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 (45) hide show
  1. data/bin/start_app_perf +6 -6
  2. data/lib/tdriver-devtools/behaviour/xml/rdoc_behaviour_xml_generator.rb +4 -4
  3. data/lib/tdriver-devtools/doc/xslt/template.xsl +103 -21
  4. data/lib/tdriver/base/behaviour/behaviours/object_behaviour_description.rb +1 -1
  5. data/lib/tdriver/base/command_data/loader.rb +6 -2
  6. data/lib/tdriver/base/loader.rb +21 -14
  7. data/lib/tdriver/base/state_object.rb +1 -1
  8. data/lib/tdriver/base/sut/controller.rb +8 -2
  9. data/lib/tdriver/base/sut/generic/behaviours/sut.rb +103 -46
  10. data/lib/tdriver/base/sut/generic/behaviours/switchbox_behaviour.rb +2 -2
  11. data/lib/tdriver/base/sut/generic/behaviours/verification.rb +1 -1
  12. data/lib/tdriver/base/sut/generic/commands/application.rb +18 -278
  13. data/lib/tdriver/base/sut/generic/commands/key_sequence.rb +1 -1
  14. data/lib/tdriver/base/sut/sut.rb +1 -1
  15. data/lib/tdriver/base/test_object/abstract.rb +1 -1
  16. data/lib/tdriver/base/test_object/adapter.rb +4 -1
  17. data/lib/tdriver/base/test_object/behaviours/syncronization.rb +3 -3
  18. data/lib/tdriver/base/test_object/behaviours/test_object.rb +61 -24
  19. data/lib/tdriver/base/test_object/cache.rb +6 -4
  20. data/lib/tdriver/base/test_object/factory.rb +4 -2
  21. data/lib/tdriver/base/test_object/loader.rb +23 -14
  22. data/lib/tdriver/base/test_object/xml/abstraction.rb +63 -0
  23. data/lib/tdriver/base/test_object/xml/adapter.rb +4 -1
  24. data/lib/tdriver/report/report_test_run.rb +1 -1
  25. data/lib/tdriver/report/report_writer.rb +4 -3
  26. data/lib/tdriver/util/common/boolean.rb +10 -13
  27. data/lib/tdriver/util/common/environment.rb +8 -7
  28. data/lib/tdriver/util/common/hash.rb +5 -5
  29. data/lib/tdriver/util/common/numeric.rb +5 -5
  30. data/lib/tdriver/util/common/object.rb +3 -3
  31. data/lib/tdriver/util/common/retryable.rb +65 -2
  32. data/lib/tdriver/util/common/string.rb +4 -4
  33. data/lib/tdriver/util/database/access.rb +9 -11
  34. data/lib/tdriver/util/fixture/service.rb +54 -0
  35. data/lib/tdriver/util/localisation/localisation.rb +3 -2
  36. data/lib/tdriver/util/logger/logger.rb +55 -41
  37. data/lib/tdriver/util/parameter/parameter.rb +38 -7
  38. data/lib/tdriver/util/xml/abstraction.rb +8 -8
  39. data/lib/tdriver/util/xml/builder.rb +1 -1
  40. data/lib/tdriver/util/xml/xml.rb +11 -11
  41. data/lib/tdriver/verify/verify.rb +33 -36
  42. data/lib/tdriver/version.rb +1 -1
  43. data/xml/defaults/sut_generic.xml +1 -29
  44. data/xml/templates/generic.xml +28 -0
  45. metadata +48 -17
data/bin/start_app_perf CHANGED
@@ -72,13 +72,13 @@ def run(iteration)
72
72
  #puts events
73
73
  doc = Nokogiri::XML.parse(events)
74
74
  first_time_stamp = nil
75
- node_set = doc.xpath('//object[@name = "QtApplicationEvents"]/objects/object')
75
+ node_set = doc.xpath('//obj[@name = "QtApplicationEvents"]/obj')
76
76
  timer_counter = 0
77
77
  index = 0
78
78
  target_object = nil
79
79
  while(index < node_set.size)
80
80
  node = node_set.at(index)
81
- time_str = node.xpath("#{node.path}/attributes/attribute[@name = \"timeStamp\"]/value").first.text
81
+ time_str = node.xpath("#{node.path}/attr[@name = \"timeStamp\"]").first.text
82
82
  time_stamp = Time.local(toi(time_str[0..3]), toi(time_str[4..5]), toi(time_str[6..7]), toi(time_str[8..9]), toi(time_str[10..11]), toi(time_str[12..13]), toi(time_str[14..16])*1000)
83
83
  if (first_time_stamp == nil)
84
84
  first_time_stamp = time_stamp
@@ -92,7 +92,7 @@ def run(iteration)
92
92
  delta_time = delta_time + delta_time_milliseconds
93
93
 
94
94
  strOut << (delta_time).to_s << "\t" << event_name
95
- target_object = node.xpath("#{node.path}/objects/object").first
95
+ target_object = node.xpath("#{node.path}/obj").first
96
96
  if(target_object)
97
97
  target_object_name = target_object.attribute("name").text
98
98
  target_object_type = target_object.attribute("type").text
@@ -114,16 +114,16 @@ def run(iteration)
114
114
  if !@settings[:signals].empty?
115
115
  signals = app.fixture('signal', 'get_signal')
116
116
  app.fixture('signal', 'remove_signals')
117
- #puts signals
117
+ #puts signals
118
118
  doc = Nokogiri::XML.parse(signals)
119
119
  first_time_stamp = nil
120
- node_set = doc.xpath('//tasInfo[@name = "QtSignals"]/object')
120
+ node_set = doc.xpath('//tasInfo[@name = "QtSignals"]/obj')
121
121
  timer_counter = 0
122
122
  index = 0
123
123
  target_object = nil
124
124
  while(index < node_set.size)
125
125
  node = node_set.at(index)
126
- time_str = node.xpath("#{node.path}/attributes/attribute[@name = \"timeStamp\"]/value").first.text
126
+ time_str = node.xpath("#{node.path}/attr[@name = \"timeStamp\"]").first.text
127
127
  time_stamp = Time.local(toi(time_str[0..3]), toi(time_str[4..5]), toi(time_str[6..7]), toi(time_str[8..9]), toi(time_str[10..11]), toi(time_str[12..13]), toi(time_str[14..16])*1000)
128
128
  if (first_time_stamp == nil)
129
129
  first_time_stamp = time_stamp
@@ -1439,7 +1439,7 @@ EXAMPLE
1439
1439
  # generate arguments xml
1440
1440
  arguments = ( feature.last[:arguments] || {} ).collect{ | arg |
1441
1441
 
1442
- p arg
1442
+ #p arg
1443
1443
 
1444
1444
  # generate argument types template
1445
1445
  arg.collect{ | argument |
@@ -1881,7 +1881,7 @@ EXAMPLE
1881
1881
 
1882
1882
  warn("Warning! One of the behaviour modules is already using name '#{ module_header[:behaviour] }', saving as #{ xml_file_name }")
1883
1883
 
1884
- sleep 1
1884
+ #sleep 1
1885
1885
 
1886
1886
  end
1887
1887
 
@@ -1898,7 +1898,7 @@ EXAMPLE
1898
1898
  xml_file_name = ( @module_path[1..-1].join("") ) + '.xml'
1899
1899
 
1900
1900
  warn("Warning: #{ @module_path.join("::") } does not have behaviour (module) description defined, saving as %s " % xml_file_name )
1901
- sleep 2
1901
+ #sleep 2
1902
1902
 
1903
1903
  if @created_files.has_key?( xml_file_name )
1904
1904
 
@@ -1906,7 +1906,7 @@ EXAMPLE
1906
1906
 
1907
1907
  xml_file_name = ( @module_path[1..-1].join("") ) + '_duplicate_name.xml'
1908
1908
 
1909
- sleep 1
1909
+ #sleep 1
1910
1910
 
1911
1911
  end
1912
1912
 
@@ -490,7 +490,32 @@
490
490
  <!-- method: call example using parameters -->
491
491
  <xsl:if test="@type='method'">
492
492
 
493
- <xsl:text>object.</xsl:text><xsl:value-of select="@name" />
493
+ <!-- contains($type/@name,' ') -->
494
+
495
+ <!--
496
+
497
+ <xsl:choose>
498
+ <xsl:when test="string-length($tmp_full_tag)=0">
499
+ <xsl:value-of select="substring-after(substring-before($text, ']'), '[')" />
500
+ </xsl:when>
501
+ <xsl:otherwise>
502
+ <xsl:value-of select="$tmp_full_tag" />
503
+ </xsl:otherwise>
504
+ </xsl:choose>
505
+
506
+
507
+ -->
508
+
509
+ <!-- determine whether add dot between the object and method; e.g. object.method or object[]-->
510
+
511
+ <xsl:choose>
512
+ <xsl:when test="contains(@name, '[')">
513
+ <xsl:text>object</xsl:text>
514
+ </xsl:when>
515
+ <xsl:otherwise>
516
+ <xsl:text>object.</xsl:text><xsl:value-of select="@name" />
517
+ </xsl:otherwise>
518
+ </xsl:choose>
494
519
 
495
520
  <xsl:choose>
496
521
 
@@ -506,7 +531,17 @@
506
531
 
507
532
  <!-- do not show parenthesis if first argument is type of block -->
508
533
  <xsl:if test="arguments/argument[1]/@type!='block'">
509
- <xsl:text>( </xsl:text>
534
+
535
+ <xsl:choose>
536
+ <xsl:when test="contains(@name, '[')">
537
+ <xsl:text>[ </xsl:text>
538
+ </xsl:when>
539
+ <xsl:otherwise>
540
+ <xsl:text>( </xsl:text>
541
+ </xsl:otherwise>
542
+ </xsl:choose>
543
+
544
+ <!--<xsl:text>( </xsl:text>-->
510
545
 
511
546
  <!-- collect arguments for example -->
512
547
  <xsl:for-each select="arguments/argument">
@@ -551,7 +586,18 @@
551
586
  </xsl:if>
552
587
 
553
588
  </xsl:for-each>
554
- <xsl:text> ) </xsl:text>
589
+ <!--<xsl:text> ) </xsl:text>-->
590
+
591
+ <xsl:choose>
592
+ <xsl:when test="contains(@name, ']')">
593
+ <xsl:text> ] </xsl:text>
594
+ </xsl:when>
595
+ <xsl:otherwise>
596
+ <xsl:text> ) </xsl:text>
597
+ </xsl:otherwise>
598
+ </xsl:choose>
599
+
600
+
555
601
  </xsl:if>
556
602
 
557
603
  <!-- collect arguments for example -->
@@ -1636,42 +1682,78 @@
1636
1682
 
1637
1683
  </xsl:template>
1638
1684
 
1685
+ <!-- template#process_tags -->
1639
1686
  <xsl:template name="process_tags">
1640
1687
 
1641
1688
  <xsl:param name="text"/>
1642
1689
 
1643
1690
  <xsl:variable name="remainingContent" select="$text"/>
1644
1691
 
1645
- <!-- content before start tag -->
1692
+ <!-- content before tag start character -->
1646
1693
  <xsl:variable name="content_before_tag" select="substring-before($text, '[')"/>
1647
1694
 
1648
1695
  <!-- content after start tag -->
1649
- <xsl:variable name="content_after_tag" select="substring-after(substring-after($text, '['), ']')"/>
1650
-
1651
- <!-- start tag -->
1652
- <xsl:variable name="full_tag" select="substring-after(substring-before($text, ']'), '[')"/>
1696
+ <!-- content after start tag: content[/example_tag]continues-->
1697
+ <!--<xsl:variable name="content_after_tag" select="substring-after(substring-after($text, '['), ']')"/>
1698
+ -->
1653
1699
 
1654
- <xsl:variable name="tag" select="str:split(substring-after(substring-before($text, ']'), '['), '=')[1]"/>
1700
+ <!-- start tag: [example_tag="abcdef"] -->
1701
+ <xsl:variable name="content_after_tag">
1702
+ <xsl:variable name="tmp_content_after_tag" select="substring-after(substring-after($text, '['), '&quot;]')"/>
1703
+ <xsl:choose>
1704
+ <xsl:when test="string-length($tmp_content_after_tag)=0">
1705
+ <xsl:value-of select="substring-after(substring-after($text, '['), ']')" />
1706
+ </xsl:when>
1707
+ <xsl:otherwise>
1708
+ <xsl:value-of select="$tmp_content_after_tag" />
1709
+ </xsl:otherwise>
1710
+ </xsl:choose>
1711
+ </xsl:variable>
1655
1712
 
1656
- <!-- content between tag -->
1657
- <xsl:variable name="tag_content" select="substring-before($content_after_tag, concat('[/', $tag, ']'))"/>
1658
1713
 
1659
- <xsl:variable name="content_after_start_tag" select="substring-after($text, concat('[',$tag,']'))"/>
1714
+ <!-- start tag: [example_tag="abcdef"] -->
1715
+ <!-- <xsl:variable name="tmp_full_tag" select="substring-after(substring-before($text, '&quot;]'), '[')"/>
1716
+ -->
1660
1717
 
1661
- <xsl:variable name="content_after_end_tag" select="substring-after($content_after_tag, concat('[/', $tag, ']'))"/>
1718
+ <!-- check if full tag contains string value -->
1662
1719
 
1663
1720
  <!--
1664
- <br /><b>tag: </b><xsl:value-of select="$tag" />
1665
1721
 
1666
- <br /><b>tag_2: </b><xsl:value-of select="str:split($tag, '=')[1]" />
1722
+
1723
+ <xsl:if test="string-length($tag_content)=0">
1667
1724
 
1668
- <br /><b>before: </b><xsl:value-of select="$content_before_tag" />
1669
- <br /><b>after: </b><xsl:value-of select="$content_after_tag" />
1670
- <br /><b>content: </b><xsl:value-of select="$tag_content" />
1671
- <br /><b>content_after_end_tag: </b><xsl:value-of select="$content_after_end_tag" />
1725
+ <xsl:call-template name="process_tags">
1726
+ <xsl:with-param name="text" select="$content_after_start_tag" />
1727
+ </xsl:call-template>
1728
+
1729
+ </xsl:if>
1672
1730
 
1673
- <br /><br />
1674
- -->
1731
+ -->
1732
+
1733
+ <xsl:variable name="full_tag">
1734
+ <!-- start tag: [example_tag="abcdef"] -->
1735
+ <xsl:variable name="tmp_full_tag" select="substring-after(substring-before($text, '&quot;]'), '[')"/>
1736
+ <xsl:choose>
1737
+ <xsl:when test="string-length($tmp_full_tag)=0">
1738
+ <xsl:value-of select="substring-after(substring-before($text, ']'), '[')" />
1739
+ </xsl:when>
1740
+ <xsl:otherwise>
1741
+ <xsl:value-of select="$tmp_full_tag" />
1742
+ </xsl:otherwise>
1743
+ </xsl:choose>
1744
+ </xsl:variable>
1745
+
1746
+ <!-- tag: example_tag -->
1747
+ <xsl:variable name="tag" select="str:split(substring-after(substring-before($text, ']'), '['), '=')[1]"/>
1748
+
1749
+ <!-- content between tags: content-->
1750
+ <xsl:variable name="tag_content" select="substring-before($content_after_tag, concat('[/', $tag, ']'))"/>
1751
+
1752
+ <!-- content after start tag: content[/example_tag]continues -->
1753
+ <xsl:variable name="content_after_start_tag" select="substring-after($text, concat('[',$tag,']'))"/>
1754
+
1755
+ <!-- content after end tag: continues-->
1756
+ <xsl:variable name="content_after_end_tag" select="substring-after($content_after_tag, concat('[/', $tag, ']'))"/>
1675
1757
 
1676
1758
  <!-- show leading text before tag... -->
1677
1759
  <xsl:value-of select="$content_before_tag" />
@@ -236,7 +236,7 @@ module MobyBehaviour
236
236
 
237
237
  result_hash = {
238
238
 
239
- :object => { :type => self.type, :sut => self.kind_of?( MobyBase::SUT ) ? self.id : self.sut.id },
239
+ :object => { :type => @type, :sut => kind_of?( MobyBase::SUT ) ? id : sut.id },
240
240
  :methods => object_methods,
241
241
  :behaviours => behaviours
242
242
  }
@@ -17,9 +17,13 @@
17
17
  ##
18
18
  ############################################################################
19
19
 
20
+ [
20
21
 
22
+ # command_data abstract class
23
+ 'command_data.rb'
21
24
 
25
+ ].each{ | filename |
22
26
 
23
- # command_data abstract class
24
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data' ) )
27
+ require File.expand_path( File.join( File.dirname( __FILE__ ), filename ) )
25
28
 
29
+ }
@@ -17,24 +17,31 @@
17
17
  ##
18
18
  ############################################################################
19
19
 
20
- # behaviour abstraction class, factory and all other related modules etc
21
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'behaviour/loader' ) )
20
+ [
22
21
 
23
- # command_data abstraction class etc.
24
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'command_data/loader' ) )
22
+ # behaviour abstraction class, factory and all other related modules etc
23
+ 'behaviour/loader.rb',
25
24
 
26
- # command_data controller abstraction class etc.
27
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'controller/loader' ) )
25
+ # command_data abstraction class etc.
26
+ 'command_data/loader.rb',
28
27
 
29
- # sut abstract class, generic sut etc
30
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'sut/loader' ) )
28
+ # command_data controller abstraction class etc.
29
+ 'controller/loader.rb',
31
30
 
32
- # error classes
33
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'errors' ) )
31
+ # sut abstract class, generic sut etc
32
+ 'sut/loader.rb',
34
33
 
35
- # test object abstraction, factory, identificator behaviours and all other related modules
36
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'test_object/loader' ) )
34
+ # error classes
35
+ 'errors.rb',
37
36
 
38
- # state object
39
- require File.expand_path( File.join( File.dirname( __FILE__ ), 'state_object' ) )
37
+ # test object abstraction, factory, identificator behaviours and all other related modules
38
+ 'test_object/loader.rb',
40
39
 
40
+ # state object
41
+ 'state_object.rb'
42
+
43
+ ].each{ | filename |
44
+
45
+ require File.expand_path( File.join( File.dirname( __FILE__ ), filename ) )
46
+
47
+ }
@@ -307,7 +307,7 @@ module MobyBase
307
307
  # TODO: document me
308
308
  def inspect
309
309
 
310
- "#<#{ self.class }:0x#{ ( "%x" % ( self.object_id.to_i << 1 ) )[ 3 .. -1 ] } @id=#{ @id.inspect } @type=\"#{ @type }\" @name=\"#{ @name }\">"
310
+ "#<#{ self.class }:0x#{ ( "%x" % ( object_id.to_i << 1 ) )[ 3 .. -1 ] } @id=#{ @id.inspect } @type=\"#{ @type }\" @name=\"#{ @name }\">"
311
311
 
312
312
  end
313
313
 
@@ -84,20 +84,25 @@ module MobyBase
84
84
 
85
85
  command_data.check_type MobyCommand::CommandData, 'Wrong argument type $1 for command_data (expected $2)'
86
86
 
87
+ _command_class_suffix = command_data.class.name.gsub(/^MobyCommand::/, '')
88
+
89
+ _execution_order_count = @execution_order.count
90
+
87
91
  # retrieve controller for command; iterate through each sut controller
88
92
  @execution_order.each_with_index do | controller, index |
89
93
 
90
94
  begin
91
95
 
92
96
  # extend command_data with combinination of corresponding sut specific controller
93
- command_data.extend eval("#{ @sut_controllers[ controller ] }::#{ command_data.class.name.gsub(/^MobyCommand::/, '') }")
97
+ command_data.extend eval( "#{ @sut_controllers[ controller ] }::#{ _command_class_suffix }" )
94
98
 
99
+ # controller found
95
100
  break
96
101
 
97
102
  rescue NameError
98
103
 
99
104
  # raise exception only if none controller found
100
- if ( index + 1 ) == @execution_order.count
105
+ if ( index + 1 ) == _execution_order_count
101
106
 
102
107
  raise MobyBase::ControllerNotFoundError, "No controller found for command data object #{ command_data.inspect }"
103
108
 
@@ -117,6 +122,7 @@ module MobyBase
117
122
  # execute the command
118
123
  command_data.execute
119
124
 
125
+ # retry in case of IO/connection error
120
126
  rescue Errno::EPIPE, IOError
121
127
 
122
128
  raise if retries == 1
@@ -185,7 +185,7 @@ module MobyBehaviour
185
185
  def freeze
186
186
 
187
187
  =begin
188
- if sut_parameters[ :use_find_object, 'false' ] == 'true' && self.respond_to?( 'find_object' )
188
+ if use_find_objects
189
189
 
190
190
  warn("warning: SUT##{ __method__ } is not supported when use_find_objects optimization is enabled")
191
191
 
@@ -213,7 +213,7 @@ module MobyBehaviour
213
213
  def unfreeze
214
214
 
215
215
  =begin
216
- if sut_parameters[ :use_find_object, 'false' ] == 'true' && self.respond_to?( 'find_object' )
216
+ if use_find_objects
217
217
 
218
218
  warn("warning: SUT##{ __method__ } is not supported when use_find_objects optimization is enabled")
219
219
 
@@ -260,13 +260,17 @@ module MobyBehaviour
260
260
 
261
261
  if xml.kind_of?( MobyUtil::XML::Element )
262
262
 
263
+ @test_object_adapter = @test_object_adapter.identify_test_object_adapter_from_data( xml )
264
+
263
265
  @xml_data = xml
264
266
  @frozen = true
265
267
  @forced_xml = true
266
268
 
267
269
  elsif xml.kind_of?( String )
268
270
 
269
- @xml_data = MobyUtil::XML.parse_string( xml ).root
271
+ @test_object_adapter = @test_object_adapter.identify_test_object_adapter_from_data( xml )
272
+
273
+ @xml_data = MobyUtil::XML.parse_string( xml )
270
274
  @frozen = true
271
275
  @forced_xml = true
272
276
 
@@ -387,42 +391,55 @@ module MobyBehaviour
387
391
  # description: If the implementation is missing for the method
388
392
  def setup
389
393
 
390
- if self.parameter[ :sut_setup, nil ] || self.parameter[ :setup, nil ]
394
+ if sut_parameters[ :sut_setup, nil ] || sut_parameters[ :setup, nil ]
391
395
 
392
- if self.parameter[ :sut_setup, nil ]
393
- require MobyUtil::FileHelper.expand_path(self.parameter[ :sut_setup ])
396
+ if sut_parameters[ :sut_setup, nil ]
397
+
398
+ require MobyUtil::FileHelper.expand_path( sut_parameters[ :sut_setup ] )
394
399
 
395
400
  $logger.behaviour "PASS;sut.setup method found"
396
401
 
397
- self.setup
402
+ setup
398
403
 
399
404
  $logger.behaviour "PASS;sut.setup executed"
405
+
400
406
  end
401
407
 
402
- if self.parameter[ :setup, nil ]
408
+ if sut_parameters[ :setup, nil ]
409
+
403
410
  $logger.behaviour "PASS;sut.setup parameters found"
404
- methods=self.parameter[ :setup ]
405
- methods.each do |method|
406
- m=method[0].to_s
407
- args=method[1]
411
+
412
+ methods = sut_parameters[ :setup ]
413
+
414
+ methods.each do | method |
415
+
416
+ m = method[0].to_s
417
+
418
+ args = method[1]
419
+
408
420
  if args.to_s == ""
421
+
409
422
  eval("self.#{m}")
423
+
410
424
  else
425
+
411
426
  eval("self.#{m}(:#{args.to_sym})")
427
+
412
428
  end
429
+
413
430
  end
431
+
414
432
  $logger.behaviour "PASS;sut.setup parameter methods executed"
433
+
415
434
  end
416
435
 
417
436
  else
418
- $logger.behaviour "FAIL;No methods or parameters found for sut.setup"
419
437
 
438
+ $logger.behaviour "FAIL;No methods or parameters found for sut.setup"
420
439
  raise MobyBase::BehaviourError.new("Setup", "Failed to load sut.setup method check the :sut_setup parameter")
421
440
 
422
441
  end
423
442
 
424
-
425
-
426
443
  end
427
444
 
428
445
  # == description
@@ -437,34 +454,50 @@ module MobyBehaviour
437
454
  # description: If the implementation is missing for the method
438
455
  def teardown
439
456
 
440
- if self.parameter[ :sut_teardown, nil ] || self.parameter[ :teardown, nil ]
457
+ if sut_parameters[ :sut_teardown, nil ] || sut_parameters[ :teardown, nil ]
441
458
 
442
- if self.parameter[ :sut_teardown, nil ]
443
- require MobyUtil::FileHelper.expand_path(self.parameter[ :sut_teardown ])
459
+ if sut_parameters[ :sut_teardown, nil ]
460
+
461
+ require MobyUtil::FileHelper.expand_path(sut_parameters[ :sut_teardown ])
444
462
 
445
463
  $logger.behaviour "PASS;sut.teardown method found"
446
464
 
447
- self.teardown
465
+ teardown
448
466
 
449
467
  $logger.behaviour "PASS;sut.teardown executed"
468
+
450
469
  end
451
470
 
452
- if self.parameter[ :teardown, nil ]
471
+ if sut_parameters[ :teardown, nil ]
472
+
453
473
  $logger.behaviour "PASS;sut.teardown parameters found"
454
- methods=self.parameter[ :teardown ]
455
- methods.each do |method|
456
- m=method[0].to_s
457
- args=method[1]
474
+
475
+ methods = sut_parameters[ :teardown ]
476
+
477
+ methods.each do | method |
478
+
479
+ m = method[0].to_s
480
+
481
+ args = method[1]
482
+
458
483
  if args.to_s == ""
484
+
459
485
  eval("self.#{m}")
486
+
460
487
  else
488
+
461
489
  eval("self.#{m}(:#{args.to_sym})")
490
+
462
491
  end
492
+
463
493
  end
494
+
464
495
  $logger.behaviour "PASS;sut.teardown parameter methods executed"
496
+
465
497
  end
466
498
 
467
499
  else
500
+
468
501
  $logger.behaviour "FAIL;No method or parameters found for sut.teardown"
469
502
 
470
503
  raise MobyBase::BehaviourError.new("Teardown", "Failed to load sut.teardown method check the :sut_teardown parameter")
@@ -511,7 +544,7 @@ module MobyBehaviour
511
544
  if source_data.nil?
512
545
 
513
546
  # refresh if xml data is empty
514
- self.refresh if @xml_data.empty?
547
+ refresh if @xml_data.empty?
515
548
 
516
549
  raise RuntimeError, "Can not create state object of SUT with id #{ @id.inspect }, no XML content or SUT not initialized properly." if @xml_data.empty?
517
550
 
@@ -540,10 +573,13 @@ module MobyBehaviour
540
573
  # Returns the current foreground application or one which matches with given attributes rules.
541
574
  #
542
575
  # == arguments
543
- # attributes
576
+ # target
544
577
  # Hash
545
578
  # description: Hash defining required expected attributes of the application
546
- # example: { :name => 'testapp' }
579
+ # example: { :name => "testapp" }
580
+ # String
581
+ # description: Name of application
582
+ # example: "testapp"
547
583
  #
548
584
  # == returns
549
585
  # MobyBase::TestObject
@@ -554,20 +590,24 @@ module MobyBehaviour
554
590
  # TypeError
555
591
  # description: Wrong argument type <class> for attributes (expected Hash)
556
592
  #
557
- def application( attributes = {} )
593
+ def application( target = {} )
558
594
 
559
595
  begin
560
596
 
561
- attributes.check_type( Hash, 'Wrong argument type $1 for attributes (expected $2)' )
597
+ # raise exception if argument type other than hash
598
+ target.check_type( [ String, Hash ], "Wrong argument type $1 for application identification rules (expected $2)" )
562
599
 
563
- attributes[ :type ] = 'application'
600
+ # if target application is given as string, interpret it as application name
601
+ target = { :name => target.to_s } if target.kind_of?( String )
602
+
603
+ target[ :type ] = 'application'
564
604
 
565
- attributes[ :__parent_application ] = nil
605
+ target[ :__parent_application ] = nil
566
606
 
567
- @current_application_id = nil if attributes[ :id ].nil?
607
+ @current_application_id = nil if target[ :id ].nil?
568
608
 
569
609
  # create test object and return it as result
570
- test_object = child( attributes )
610
+ test_object = child( target )
571
611
 
572
612
  # store parent application to test object
573
613
  test_object.instance_variable_set( :@parent_application, test_object )
@@ -577,7 +617,7 @@ module MobyBehaviour
577
617
  rescue
578
618
 
579
619
  $logger.behaviour(
580
- "FAIL;Failed to find application.;#{ id.to_s };sut;{};application;#{ attributes.kind_of?( Hash ) ? attributes.inspect : attributes.class.to_s }"
620
+ "FAIL;Failed to find application.;#{ id.to_s };sut;{};application;#{ target.kind_of?( Hash ) ? target.inspect : target.class.to_s }"
581
621
  )
582
622
 
583
623
  # raise same exception
@@ -585,7 +625,7 @@ module MobyBehaviour
585
625
 
586
626
  ensure
587
627
 
588
- $logger.behaviour "PASS;Application found.;#{ id.to_s };sut;{};application;#{ attributes.inspect }" if $!.nil?
628
+ $logger.behaviour "PASS;Application found.;#{ id.to_s };sut;{};application;#{ target.inspect }" if $!.nil?
589
629
 
590
630
  end
591
631
 
@@ -760,7 +800,7 @@ module MobyBehaviour
760
800
 
761
801
  app_list = MobyBase::StateObject.new(
762
802
 
763
- :source_data => self.list_apps,
803
+ :source_data => list_apps,
764
804
  :parent => nil,
765
805
  :test_object_adapter => @test_object_adapter
766
806
 
@@ -773,7 +813,7 @@ module MobyBehaviour
773
813
  app_info = find_app(app_list, {:id => target[ :uid ]}) if target[ :uid ] != nil
774
814
  app_info = find_app(app_list, {:name => target[ :name ]}) unless app_info
775
815
 
776
- app = self.application(:id => app_info.id) if app_info
816
+ app = application(:id => app_info.id) if app_info
777
817
 
778
818
  if target[:restart_if_running] && app
779
819
 
@@ -800,7 +840,7 @@ module MobyBehaviour
800
840
 
801
841
  if ( target[ :start_command ] != nil )
802
842
 
803
- raise MobyBase::BehaviourError.new("Run", "Failed to load execute_shell_method") unless self.respond_to?("execute_shell_command")
843
+ raise MobyBase::BehaviourError.new("Run", "Failed to load execute_shell_method") unless respond_to?("execute_shell_command")
804
844
 
805
845
  execute_shell_command( target[ :start_command ], :detached => "true" )
806
846
 
@@ -884,7 +924,7 @@ module MobyBehaviour
884
924
  # verify that application is launched and application test object is found from xml
885
925
  expected_attributes.delete( :name )
886
926
 
887
- self.wait_child(
927
+ wait_child(
888
928
 
889
929
  # attributes to identify application object
890
930
  expected_attributes,
@@ -1178,10 +1218,10 @@ module MobyBehaviour
1178
1218
  if ( sut_parameters[ :read_lang_from_app ]=='true')
1179
1219
 
1180
1220
  #read localeName app
1181
- language=self.application.attribute("localeName")
1221
+ language = application.attribute("localeName")
1182
1222
 
1183
1223
  #determine the language from the locale
1184
- language=language.split('_')[0].to_s if (language!=nil && !language.empty?)
1224
+ language = language.split('_')[0].to_s if (language!=nil && !language.empty?)
1185
1225
 
1186
1226
  else
1187
1227
 
@@ -1491,6 +1531,26 @@ module MobyBehaviour
1491
1531
 
1492
1532
  end
1493
1533
 
1534
+ # == nodoc
1535
+ # == description
1536
+ # == returns
1537
+ def use_find_objects=( value )
1538
+
1539
+ value.check_type [ TrueClass, FalseClass ], 'wrong argument type $1 for use_find_objects (expected $2)'
1540
+
1541
+ sut_parameters[ :use_find_object ] = value
1542
+
1543
+ end
1544
+
1545
+ # == nodoc
1546
+ # == description
1547
+ # == returns
1548
+ def use_find_objects
1549
+
1550
+ sut_parameters[ :use_find_object, false ].true? && respond_to?( 'find_object' ).true?
1551
+
1552
+ end
1553
+
1494
1554
  private
1495
1555
 
1496
1556
  # TODO: document me
@@ -1511,9 +1571,6 @@ module MobyBehaviour
1511
1571
 
1512
1572
  unless @frozen
1513
1573
 
1514
- # determine should FindObjects service be used
1515
- use_find_objects = sut_parameters[ :use_find_object, 'false' ] == 'true' and self.respond_to?( 'find_object' ) == true
1516
-
1517
1574
  # duplicate refresh arguments hash
1518
1575
  refresh_arguments = refresh_args.clone
1519
1576
 
@@ -1526,7 +1583,7 @@ module MobyBehaviour
1526
1583
  # store as local variable for less AST lookups
1527
1584
  xml_data_checksum = @xml_data_checksum
1528
1585
 
1529
- #use find_object if set on and the method exists
1586
+ # use find_object if set on and the method exists
1530
1587
  if use_find_objects
1531
1588
 
1532
1589
  # retrieve new ui dump xml and checksum
@@ -1563,7 +1620,7 @@ module MobyBehaviour
1563
1620
  xml_data, from_cache = MobyUtil::XML.parse_string( new_xml_data, new_checksum )
1564
1621
 
1565
1622
  # store new xml data object
1566
- @xml_data = xml_data.root
1623
+ @xml_data = xml_data
1567
1624
 
1568
1625
  # store xml checksum to be compared while next ui dump request; do not reparse xml if checksum values are equal
1569
1626
  @xml_data_checksum = new_checksum