deep_test_pre 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (98) hide show
  1. data/CHANGELOG +47 -0
  2. data/README.rdoc +199 -0
  3. data/Rakefile +137 -0
  4. data/lib/deep_test.rb +78 -0
  5. data/lib/deep_test/agent.rb +108 -0
  6. data/lib/deep_test/central_command.rb +165 -0
  7. data/lib/deep_test/cpu_info.rb +22 -0
  8. data/lib/deep_test/database/mysql_setup_listener.rb +112 -0
  9. data/lib/deep_test/database/setup_listener.rb +116 -0
  10. data/lib/deep_test/deadlock_detector.rb +7 -0
  11. data/lib/deep_test/demon.rb +25 -0
  12. data/lib/deep_test/distributed/beachhead.rb +104 -0
  13. data/lib/deep_test/distributed/dispatch_controller.rb +60 -0
  14. data/lib/deep_test/distributed/establish_beachhead.rb +19 -0
  15. data/lib/deep_test/distributed/filename_resolver.rb +40 -0
  16. data/lib/deep_test/distributed/landing_fleet.rb +30 -0
  17. data/lib/deep_test/distributed/landing_ship.rb +60 -0
  18. data/lib/deep_test/distributed/remote_deployment.rb +56 -0
  19. data/lib/deep_test/distributed/rsync.rb +50 -0
  20. data/lib/deep_test/distributed/shell_environment.rb +50 -0
  21. data/lib/deep_test/distributed/ssh_client_connection_info.rb +14 -0
  22. data/lib/deep_test/extensions/object_extension.rb +40 -0
  23. data/lib/deep_test/failure_message.rb +19 -0
  24. data/lib/deep_test/lib_root.rb +4 -0
  25. data/lib/deep_test/listener_list.rb +17 -0
  26. data/lib/deep_test/local_deployment.rb +46 -0
  27. data/lib/deep_test/logger.rb +32 -0
  28. data/lib/deep_test/main.rb +41 -0
  29. data/lib/deep_test/marshallable_exception_wrapper.rb +44 -0
  30. data/lib/deep_test/metrics/data.rb +34 -0
  31. data/lib/deep_test/metrics/measurement.rb +39 -0
  32. data/lib/deep_test/null_listener.rb +62 -0
  33. data/lib/deep_test/options.rb +113 -0
  34. data/lib/deep_test/proxy_io.rb +77 -0
  35. data/lib/deep_test/rake_tasks.rb +13 -0
  36. data/lib/deep_test/result_reader.rb +40 -0
  37. data/lib/deep_test/rspec_detector.rb +21 -0
  38. data/lib/deep_test/spec.rb +17 -0
  39. data/lib/deep_test/spec/extensions/example_group_methods.rb +64 -0
  40. data/lib/deep_test/spec/extensions/example_methods.rb +52 -0
  41. data/lib/deep_test/spec/extensions/options.rb +43 -0
  42. data/lib/deep_test/spec/extensions/spec_task.rb +21 -0
  43. data/lib/deep_test/spec/runner.rb +72 -0
  44. data/lib/deep_test/spec/work_result.rb +35 -0
  45. data/lib/deep_test/spec/work_unit.rb +59 -0
  46. data/lib/deep_test/test.rb +10 -0
  47. data/lib/deep_test/test/extensions/error.rb +14 -0
  48. data/lib/deep_test/test/run_test_suite.rb +5 -0
  49. data/lib/deep_test/test/runner.rb +24 -0
  50. data/lib/deep_test/test/supervised_test_suite.rb +48 -0
  51. data/lib/deep_test/test/work_result.rb +35 -0
  52. data/lib/deep_test/test/work_unit.rb +40 -0
  53. data/lib/deep_test/test_task.rb +47 -0
  54. data/lib/deep_test/ui/console.rb +74 -0
  55. data/lib/deep_test/ui/null.rb +17 -0
  56. data/lib/deep_test/warlock.rb +146 -0
  57. data/lib/telegraph.rb +29 -0
  58. data/lib/telegraph/ack_sequence.rb +14 -0
  59. data/lib/telegraph/logging.rb +20 -0
  60. data/lib/telegraph/message.rb +39 -0
  61. data/lib/telegraph/operator.rb +47 -0
  62. data/lib/telegraph/switchboard.rb +57 -0
  63. data/lib/telegraph/wire.rb +73 -0
  64. data/test/deep_test/agent_test.rb +175 -0
  65. data/test/deep_test/central_command_test.rb +147 -0
  66. data/test/deep_test/cpu_info_test.rb +33 -0
  67. data/test/deep_test/database/mysql_setup_listener_test.rb +18 -0
  68. data/test/deep_test/demon_test.rb +23 -0
  69. data/test/deep_test/distributed/beachhead_test.rb +67 -0
  70. data/test/deep_test/distributed/dispatch_controller_test.rb +162 -0
  71. data/test/deep_test/distributed/filename_resolver_test.rb +56 -0
  72. data/test/deep_test/distributed/landing_fleet_test.rb +55 -0
  73. data/test/deep_test/distributed/landing_ship_test.rb +48 -0
  74. data/test/deep_test/distributed/remote_deployment_test.rb +134 -0
  75. data/test/deep_test/distributed/rsync_test.rb +47 -0
  76. data/test/deep_test/distributed/shell_environment_test.rb +108 -0
  77. data/test/deep_test/distributed/ssh_client_connection_info_test.rb +34 -0
  78. data/test/deep_test/extensions/object_extension_test.rb +37 -0
  79. data/test/deep_test/listener_list_test.rb +22 -0
  80. data/test/deep_test/local_deployment_test.rb +19 -0
  81. data/test/deep_test/logger_test.rb +38 -0
  82. data/test/deep_test/main_test.rb +12 -0
  83. data/test/deep_test/marshallable_exception_wrapper_test.rb +46 -0
  84. data/test/deep_test/metrics/data_test.rb +22 -0
  85. data/test/deep_test/metrics/measurement_test.rb +18 -0
  86. data/test/deep_test/proxy_io_test.rb +104 -0
  87. data/test/deep_test/result_reader_test.rb +128 -0
  88. data/test/deep_test/test/extensions/error_test.rb +42 -0
  89. data/test/deep_test/test/runner_test.rb +11 -0
  90. data/test/deep_test/test/supervised_test_suite_test.rb +107 -0
  91. data/test/deep_test/test/work_result_test.rb +85 -0
  92. data/test/deep_test/test/work_unit_test.rb +63 -0
  93. data/test/deep_test/test_task_test.rb +15 -0
  94. data/test/deep_test/ui/console_test.rb +13 -0
  95. data/test/deep_test/warlock_test.rb +40 -0
  96. data/test/test_helper.rb +30 -0
  97. data/test/test_task_test.rb +75 -0
  98. metadata +156 -0
data/CHANGELOG ADDED
@@ -0,0 +1,47 @@
1
+ 1.2.2 (October 11, 2008)
2
+
3
+ * Added libs option to DeepTest::TestTask for Rails 2.1 compatibility
4
+ * RSpec 1.1.8 compatibility
5
+ * Require RSpec 1.1.8
6
+
7
+ 1.2.1 (September 25, 2008)
8
+
9
+ * rspec 1.1.4 compatibility
10
+ * Requires rspec 1.1.4
11
+
12
+ 1.2.0 (March 28, 2008)
13
+
14
+ * Added capability to run distributed
15
+ * Changed to use straight DRb instead of Rinda (performance)
16
+ * Changed error raised on before/after(:all) to warning
17
+ * Added worker listener to setup mysql database for each worker
18
+ * Run test server in same process
19
+ * Check rspec version when loading rspec support
20
+ * Add support for multiple worker listeners
21
+
22
+ 1.1.4 (March 11, 2008)
23
+
24
+ * Fixed 2 RSpec pending example bugs
25
+ * Fixed setting spec_opts with DeepTest bug
26
+ * Raise an error if before or after all is defined
27
+ * Added server_port to configuration options
28
+ * Wait for signal from server indicating it is ready on startup
29
+
30
+ 1.1.3 (March 10, 2008)
31
+
32
+ * Added Support for RSpec
33
+ * Added DeepTest::TestTask#timeout_in_seconds to configure Rinda IO timeouts
34
+ * Added worker_listener to configuration options
35
+
36
+ 1.1.2 (February 9, 2008)
37
+
38
+ * Fix bug with run_test_suite script not exiting with correct exit code.
39
+
40
+ 1.1.1 (February 9, 2008)
41
+
42
+ * No longer fork from Rake process.
43
+
44
+ 1.1.0 (December 23, 2007)
45
+
46
+ * DeepTest::TestTask#processes= is now DeepTest::TestTask#number_of_workers=
47
+ * No longer depend on the Daemons gem, use DeepTest::Warlock instead.
data/README.rdoc ADDED
@@ -0,0 +1,199 @@
1
+ = DeepTest
2
+
3
+ DeepTest enables tests to run in parallel using multiple processes. Processes
4
+ may spawned locally to take advantage of multiple processors on a single
5
+ machine or distributed across many machines to take advantage of distributed
6
+ processing.
7
+
8
+ == Note
9
+
10
+ This README has been updated to reflect changes made on the master branch that have
11
+ not yet been released. If you are looking for the README for DeepTest 1.2 it is
12
+ availeble on the 1.2.x branch on github.
13
+
14
+ == Usage
15
+
16
+ In your Rakefile:
17
+
18
+ require "rubygems"
19
+ require "deep_test/rake_tasks"
20
+
21
+ # sample DeepTest task
22
+
23
+ DeepTest::TestTask.new "task_name" do |t|
24
+ t.number_of_agents = 2 # optional, defaults to number of cores
25
+ t.pattern = "test/**/*_test.rb"
26
+ t.libs << "test" # may be necessary for Rails >= 2.1.x
27
+ end
28
+
29
+ # sample SpecTask using DeepTest
30
+
31
+ Spec::Rake::SpecTask.new(:deep_spec) do |t|
32
+ t.spec_files = FileList['spec/**/*_spec.rb']
33
+ t.deep_test :number_of_agents => 2 # optional, defaults to number of cores
34
+ end
35
+
36
+
37
+ === Specifying a Listener to be Notified of Events
38
+
39
+ In my_listener.rb
40
+ class MyListener
41
+ def before_sync
42
+ end
43
+
44
+ def before_starting_agents
45
+ end
46
+
47
+ def starting(agent)
48
+ end
49
+
50
+ def starting_work(agent, work_unit)
51
+ end
52
+
53
+ def finished_work(agent, work_unit, result)
54
+ end
55
+ end
56
+
57
+ In your Rakefile
58
+
59
+ DeepTest::TestTask.new "task_name" do |t|
60
+ ...
61
+ t.listener = "MyListener"
62
+ end
63
+
64
+ An instance of MyListener will be created for each agent that is
65
+ started, and will receive events from that agent. However, you must ensure
66
+ that the MyListener class is loaded at the time that the test files are
67
+ loaded, so it is available to be instantiated. You can specify multiple
68
+ listener classes by separating them with a comma. For more information about
69
+ when events are triggered, see the documentation at
70
+ DeepTest::NullListener.
71
+
72
+
73
+ === Setting Up A New Database For Each Agent
74
+
75
+ By default, DeepTest will reinitialize ActiveRecord connections if ActiveRecord
76
+ is loaded when the agents are started. This means all agents are running
77
+ against the same database. You may want each agent to use a database
78
+ decidicated to it. To facilitate this, DeepTest provides a agent listener to
79
+ help you. If you're using Rails with Mysql, simply configure DeepTest as
80
+ follows in your Rakefile:
81
+
82
+ DeepTest::TestTask.new "task_name" do |t|
83
+ ...
84
+ t.listener = "DeepTest::Database::MysqlSetupListener"
85
+ end
86
+
87
+
88
+ Before spawning agents, DeepTest will dump the schema of the database for the
89
+ current Rails environment (usually test). As each agent starts up, the
90
+ listener will create a database dedicated to that agent and load the schema
91
+ into it. The database will be dropped when the agent process exits.
92
+
93
+ If you're using Mysql but not using Rails, you'll have to create a subclass of
94
+ MysqlSetupListener and override +master_database_config+ and +dump_file_name+,
95
+ as the default implementations of these methods are Rails specific.
96
+
97
+
98
+ If you're using a database other than Mysql, read the documentation for
99
+ DeepTest::Database::SetupListener and create a new subclass for your database
100
+ type. If you do this, please consider contributing your subclass back to the
101
+ project so that it can be included in later releases of DeepTest.
102
+
103
+ === Distributing Tests Across Multiple Machines
104
+
105
+ In addition to running your tests in parallel, DeepTest can also distribute
106
+ them across multiple machines. It does this by first mirroring the local
107
+ working copy that launched the tests on each machine that will be running tests.
108
+ Then agents are launched on each of the machines and consume tests in the same
109
+ fashion as when DeepTest is running locally.
110
+
111
+ ==== Requirements
112
+
113
+ Before you can distribute tests, you must ensure that all the machines involved
114
+ (including the machine with the local working copy) have rsync installed for
115
+ mirroring working copies. You must also have either SSH or an RSync daemon
116
+ exposing your local working copy running on the local development machine. For
117
+ more information about rsync, visit the rsync
118
+ webpage[http://www.samba.org/rsync/]. Currently only passwordless access is
119
+ supported, so you must either setup your RSync daemon to be accessible without
120
+ a password or enable passwordless SSH access from the test machines to the
121
+ local development machine. DeepTest must also be installed as a gem on each
122
+ test machine and available either as a gem or in your project on the local
123
+ machine.
124
+
125
+ ==== Configuring Your Project
126
+
127
+ There is no need to start a special daemon process on the machines that will
128
+ be used to run DeepTest. Simply specify the names of the hosts that you
129
+ would like DeepTest to distribute to along with a set of sync_options telling
130
+ it how to to rsync the project code.
131
+
132
+ If you're using rsync over ssh, create a DeepTest test task similar to that
133
+ below in your Rakefile.
134
+
135
+ DeepTest::TestTask.new "deep_test_distributed" do |t|
136
+ t.pattern = "test/**/*_test.rb" # whatever is appropriate for your project
137
+ t.distributed_hosts = %w[host1 host2]
138
+ t.sync_options = {
139
+ :source => <absolute path of project root on machine>,
140
+ :username => "username",
141
+ :remote_base_dir => <absolute path to keep working copies in on remote machine> # defaults to /tmp
142
+ }
143
+ end
144
+
145
+ The :source entry in sync_options can be easily calculated based on the value
146
+ of \_\_FILE__ when defining the task. :username will be used by rsync to ssh
147
+ back to the local machine and mirror the working copy.
148
+
149
+ If you have an rsync daemon running in your local machine, configure the
150
+ rake task as follows.
151
+
152
+ DeepTest::TestTask.new "deep_test_distributed" do |t|
153
+ t.pattern = "test/**/*_test.rb" # whatever is appropriate for your project
154
+ t.distributed_hosts = %w[host1 host2]
155
+ t.sync_options = {
156
+ :source => <name of rsync module from daemon configuration>,
157
+ :daemon => true,
158
+ :username => "username"
159
+ }
160
+ end
161
+
162
+ Username is optional in both cases. You'll need to either setup passwordless
163
+ ssh access or run an rsync daemon that doesn't require passwords.
164
+
165
+ There may be other options you'd like to pass to rsync in your particular
166
+ scenario. This can be done by adding an :rsync_options entry to sync_options.
167
+ For example, if you're working on a Rails project you'll probably want to at
168
+ least have something like this:
169
+
170
+ DeepTest::TestTask.new "deep_test_distributed" do |t|
171
+ ...
172
+ excludes = %w[.svn tmp/** log/**]
173
+ t.sync_options = {
174
+ ...
175
+ :rsync_options => excludes.map {|s| "'--exclude=#{s}'"}.join(' ')
176
+ }
177
+ end
178
+
179
+ That way you can avoid spending any time mirroring tmp and log files that don't
180
+ have any effect on the tests. If you are running distributed tests against a
181
+ database, consult the section above about creating a new database for each
182
+ agent to see how to configure DeepTest for your project.
183
+
184
+ Any number of projects can be run using the same test servers, as long as
185
+ they're all using the same version of Ruby and DeepTest.
186
+
187
+ == Contributors
188
+
189
+ * anonymous z
190
+ * Alex Chaffee
191
+ * Dan[http://www.dcmanges.com/blog] Manges[http://www.dcmanges.com/blog]
192
+ * David[http://davidvollbracht.com/] Vollbracht[http://davidvollbracht.com/]
193
+ * Brian[http://blog.brianguthrie.com/] Guthrie[http://blog.brianguthrie.com/]
194
+ * Shane[http://shanel.tumblr.com/] Liebling[http://shanel.tumblr.com/]
195
+ * Scott Taylor
196
+
197
+ == License
198
+
199
+ DeepTest Released under Ruby's[http://www.ruby-lang.org/en/LICENSE.txt] license[http://www.ruby-lang.org/en/LICENSE.txt]
data/Rakefile ADDED
@@ -0,0 +1,137 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rake/rdoctask'
4
+ require 'rake/gempackagetask'
5
+ require 'rake/contrib/sshpublisher'
6
+ require 'yaml'
7
+
8
+ require 'rubygems'
9
+ gem('rspec', ENV['RSPEC_VERSION'] || '1.1.12')
10
+ require 'spec/rake/spectask'
11
+
12
+ $LOAD_PATH << File.dirname(__FILE__) + "/lib"
13
+
14
+ require "deep_test/rake_tasks"
15
+
16
+ task :default => %w[
17
+ test
18
+ spec
19
+ deep_test
20
+ deep_spec_1.1.12
21
+
22
+ ]
23
+
24
+ #deep_spec_1.1.8
25
+ # distributed_test
26
+ # distributed_spec
27
+ # negative_acceptance_tests
28
+ # test_rails_project
29
+
30
+ task :pc => :default
31
+
32
+ Rake::TestTask.new do |t|
33
+ t.pattern = "test/**/*_test.rb"
34
+ t.libs += ['test', 'lib']
35
+ end
36
+
37
+ DeepTest::TestTask.new :deep_test do |t|
38
+ t.pattern = "test/**/*_test.rb"
39
+ end
40
+
41
+ DeepTest::TestTask.new(:manual_distributed_test) do |t|
42
+ t.pattern = "test/**/*_test.rb"
43
+ t.distributed_hosts = (ENV['HOSTS'] || '').split(' ')
44
+ t.sync_options = {:source => File.dirname(__FILE__),
45
+ :username => ENV['USERNAME'],
46
+ :rsync_options => "--exclude=.svn"}
47
+ end
48
+
49
+ DeepTest::TestTask.new(:distributed_test) do |t|
50
+ t.pattern = "test/**/*_test.rb"
51
+ t.distributed_hosts = %w[localhost]
52
+ t.sync_options = {:source => File.dirname(__FILE__),
53
+ :rsync_options => "--exclude=.svn",
54
+ :remote_base_dir => "/tmp/deep_test"}
55
+ end
56
+
57
+ Spec::Rake::SpecTask.new(:spec) do |t|
58
+ t.spec_files = FileList['spec/**/*_spec.rb']
59
+ end
60
+
61
+ Spec::Rake::SpecTask.new(:deep_spec) do |t|
62
+ t.spec_files = FileList['spec/**/*_spec.rb']
63
+ t.deep_test({})
64
+ end
65
+
66
+ task :'deep_spec_1.1.8' do
67
+ sh 'rake deep_spec RSPEC_VERSION=1.1.8'
68
+ end
69
+
70
+ task :'deep_spec_1.1.12' do
71
+ sh 'rake deep_spec RSPEC_VERSION=1.1.12'
72
+ end
73
+
74
+ Spec::Rake::SpecTask.new(:distributed_spec) do |t|
75
+ t.spec_files = FileList['spec/**/*_spec.rb']
76
+ t.deep_test :distributed_hosts => %w[localhost],
77
+ :sync_options => {:source => File.dirname(__FILE__),
78
+ :rsync_options => "--exclude=.svn"}
79
+ end
80
+
81
+ Rake::TestTask.new(:negative_acceptance_tests) do |t|
82
+ t.pattern = "negative_acceptance_tests/tests.rb"
83
+ end
84
+
85
+ Rake::TestTask.new(:test_rails_project) do |t|
86
+ t.pattern = "sample_rails_project/deep_test.rb"
87
+ end
88
+
89
+ desc "Generate documentation"
90
+ Rake::RDocTask.new(:rdoc) do |rdoc|
91
+ rdoc.rdoc_dir = "doc"
92
+ rdoc.title = "DeepTest"
93
+ rdoc.options << '--line-numbers'
94
+ rdoc.rdoc_files.include(
95
+ 'README.rdoc',
96
+ 'CHANGELOG',
97
+ 'lib/deep_test/null_listener.rb',
98
+ 'lib/deep_test/database/*.rb'
99
+ )
100
+ end
101
+
102
+ desc "Upload RDoc to RubyForge"
103
+ task :publish_rdoc => [:rerdoc] do
104
+ rubyforge_config = "#{ENV['HOME']}/.rubyforge/user-config.yml"
105
+ username = YAML.load_file(rubyforge_config)["username"]
106
+ sh "chmod -R 775 doc"
107
+ sh "scp -rqp doc/* #{username}@rubyforge.org:/var/www/gforge-projects/deep-test"
108
+ end
109
+
110
+ specification = Gem::Specification.new do |s|
111
+ s.platform = Gem::Platform::RUBY
112
+ s.name = "deep_test_pre"
113
+ s.summary = "DeepTest runs tests in multiple processes."
114
+ s.version = "2.0"
115
+ s.author = "anonymous z, Dan Manges, David Vollbracht"
116
+ s.description = s.summary
117
+ s.email = "daniel.manges@gmail.com"
118
+ s.homepage = "http://deep-test.rubyforge.org"
119
+ s.rubyforge_project = "deep-test"
120
+
121
+ s.has_rdoc = true
122
+ s.extra_rdoc_files = ['README.rdoc', 'CHANGELOG']
123
+ s.rdoc_options << '--title' << "DeepTest" << '--main' << 'README.rdoc' << '--line-numbers'
124
+
125
+ s.files = FileList['{lib,test}/**/*.{rb,rake}', 'README.rdoc', 'CHANGELOG', 'Rakefile'].to_a
126
+ end
127
+
128
+ Rake::GemPackageTask.new(specification) do |package|
129
+ package.need_zip = true
130
+ package.need_tar = true
131
+ end
132
+
133
+ Rake::Task[:gem].prerequisites.unshift :default
134
+
135
+ task :tar do
136
+ system "tar zcf pkg/deep_test.tar.gz --exclude=.svn --exclude='*.tar.gz' --exclude='*.gem' --directory=.. deep_test"
137
+ end
data/lib/deep_test.rb ADDED
@@ -0,0 +1,78 @@
1
+ module DeepTest
2
+ class << self
3
+ def logger
4
+ @logger ||= DeepTest::Logger.new($stdout)
5
+ end
6
+
7
+ def logger=(logger)
8
+ @logger = logger
9
+ end
10
+ end
11
+
12
+ class IncompleteTestRunError < StandardError
13
+ def initialize(count)
14
+ super "#{count} tests were not run because the DeepTest Agents died"
15
+ end
16
+
17
+ def backtrace
18
+ []
19
+ end
20
+ end
21
+ end
22
+
23
+ require "logger"
24
+ require "timeout"
25
+ require "thread"
26
+ require "socket"
27
+ require "webrick"
28
+ require "timeout"
29
+ require "base64"
30
+
31
+ require File.dirname(__FILE__) + "/telegraph"
32
+ require File.dirname(__FILE__) + "/deep_test/lib_root"
33
+ require File.dirname(__FILE__) + "/deep_test/extensions/object_extension"
34
+
35
+ require File.dirname(__FILE__) + "/deep_test/demon"
36
+ require File.dirname(__FILE__) + "/deep_test/deadlock_detector"
37
+ require File.dirname(__FILE__) + "/deep_test/local_deployment"
38
+ require File.dirname(__FILE__) + "/deep_test/logger"
39
+
40
+ require File.dirname(__FILE__) + "/deep_test/marshallable_exception_wrapper"
41
+ require File.dirname(__FILE__) + "/deep_test/null_listener"
42
+ require File.dirname(__FILE__) + "/deep_test/listener_list"
43
+ require File.dirname(__FILE__) + "/deep_test/cpu_info"
44
+ require File.dirname(__FILE__) + "/deep_test/failure_message"
45
+ require File.dirname(__FILE__) + "/deep_test/options"
46
+ require File.dirname(__FILE__) + "/deep_test/main"
47
+ require File.dirname(__FILE__) + "/deep_test/result_reader"
48
+ require File.dirname(__FILE__) + "/deep_test/rspec_detector"
49
+ require File.dirname(__FILE__) + "/deep_test/central_command"
50
+ require File.dirname(__FILE__) + "/deep_test/proxy_io"
51
+ require File.dirname(__FILE__) + "/deep_test/test_task"
52
+ require File.dirname(__FILE__) + "/deep_test/agent"
53
+ require File.dirname(__FILE__) + "/deep_test/warlock"
54
+
55
+ require File.dirname(__FILE__) + "/deep_test/database/setup_listener"
56
+ require File.dirname(__FILE__) + "/deep_test/database/mysql_setup_listener"
57
+
58
+ require File.dirname(__FILE__) + "/deep_test/distributed/shell_environment"
59
+ require File.dirname(__FILE__) + "/deep_test/distributed/landing_ship"
60
+ require File.dirname(__FILE__) + "/deep_test/distributed/dispatch_controller"
61
+ require File.dirname(__FILE__) + "/deep_test/distributed/ssh_client_connection_info"
62
+ require File.dirname(__FILE__) + "/deep_test/distributed/filename_resolver"
63
+ require File.dirname(__FILE__) + "/deep_test/distributed/landing_fleet"
64
+ require File.dirname(__FILE__) + "/deep_test/distributed/remote_deployment"
65
+ require File.dirname(__FILE__) + "/deep_test/distributed/beachhead"
66
+ require File.dirname(__FILE__) + "/deep_test/distributed/rsync"
67
+
68
+ require File.dirname(__FILE__) + "/deep_test/metrics/data"
69
+ require File.dirname(__FILE__) + "/deep_test/metrics/measurement"
70
+
71
+ DeepTest::RSpecDetector.if_rspec_available do
72
+ require File.dirname(__FILE__) + "/deep_test/spec"
73
+ end
74
+ require File.dirname(__FILE__) + "/deep_test/test"
75
+
76
+ require File.dirname(__FILE__) + "/deep_test/ui/console"
77
+ require File.dirname(__FILE__) + "/deep_test/ui/null"
78
+