DTR 0.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGES +2 -0
- data/LICENSE.TXT +203 -0
- data/README +152 -0
- data/Rakefile +368 -0
- data/TODO +11 -0
- data/bin/dtr +64 -0
- data/doc/jamis.rb +591 -0
- data/install.rb +89 -0
- data/lib/dtr/base.rb +281 -0
- data/lib/dtr/command_line.rb +173 -0
- data/lib/dtr/drb_dtr.rb +275 -0
- data/lib/dtr/ruby_ext.rb +27 -0
- data/lib/dtr.rb +88 -0
- data/show_process_exit_code.bat +5 -0
- data/test/average_packer_test.rb +32 -0
- data/test/base_test.rb +236 -0
- data/test/original_test_reports_test.rb +91 -0
- data/test/ruby_ext_test.rb +13 -0
- data/test/ruby_runner_test.rb +56 -0
- data/test/scenario_setup_and_run_tests_simply.rb +51 -0
- data/test/server_test.rb +39 -0
- data/test/test_helper.rb +108 -0
- metadata +82 -0
@@ -0,0 +1,91 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class OriginalTestReportsTest < Test::Unit::TestCase
|
4
|
+
|
5
|
+
def setup
|
6
|
+
@reports = DTR::OriginalTestReports.new
|
7
|
+
end
|
8
|
+
|
9
|
+
def test_summary_of_report
|
10
|
+
assert_equal '.', @reports.summary_of(create_report(1, 1, 0, 0))
|
11
|
+
assert_equal '...', @reports.summary_of(create_report(3, 3, 0, 0))
|
12
|
+
assert_equal 'F', @reports.summary_of(create_report(1, 10, 1, 0))
|
13
|
+
assert_equal 'E', @reports.summary_of(create_report(1, 15, 0, 1))
|
14
|
+
assert_equal '.FFE', @reports.summary_of(create_report(4, 10, 2, 1))
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_failures_and_errors
|
18
|
+
expected = %{ 1) Failure:
|
19
|
+
test_failed(AFailedTestCase) [a_failed_test_case.rb:4]:
|
20
|
+
<false> is not true.
|
21
|
+
}
|
22
|
+
@reports.summary_of(create_a_failed_report)
|
23
|
+
assert_equal(expected, @reports.failures_and_errors)
|
24
|
+
|
25
|
+
expected = %{ 1) Failure:
|
26
|
+
test_failed(AFailedTestCase) [a_failed_test_case.rb:4]:
|
27
|
+
<false> is not true.
|
28
|
+
|
29
|
+
2) Failure:
|
30
|
+
test_failed(AFailedTestCase) [a_failed_test_case.rb:4]:
|
31
|
+
<false> is not true.
|
32
|
+
}
|
33
|
+
@reports.summary_of(create_a_failed_report)
|
34
|
+
assert_equal(expected, @reports.failures_and_errors)
|
35
|
+
|
36
|
+
expected = %{ 1) Error:
|
37
|
+
test_error(AnErrorTestCase):
|
38
|
+
RuntimeError: error
|
39
|
+
an_error_test_case.rb:4:in `test_error'
|
40
|
+
|
41
|
+
2) Failure:
|
42
|
+
test_failed(AFailedTestCase) [a_failed_test_case.rb:4]:
|
43
|
+
<false> is not true.
|
44
|
+
|
45
|
+
3) Failure:
|
46
|
+
test_failed(AFailedTestCase) [a_failed_test_case.rb:4]:
|
47
|
+
<false> is not true.
|
48
|
+
}
|
49
|
+
@reports.summary_of(create_an_error_report)
|
50
|
+
assert_equal(expected, @reports.failures_and_errors)
|
51
|
+
end
|
52
|
+
|
53
|
+
def create_report(*test_summary)
|
54
|
+
DTR::TestReport.new('test_file_name', {:name => 'client name', :exit_code => 0}, *test_summary)
|
55
|
+
end
|
56
|
+
|
57
|
+
def create_a_failed_report
|
58
|
+
stdout = %{
|
59
|
+
thought-workers-computer:~/dtr/testdata thoughtworker$ ruby a_failed_test_case.rb
|
60
|
+
Loaded suite a_failed_test_case
|
61
|
+
Started
|
62
|
+
F
|
63
|
+
Finished in 0.014801 seconds.
|
64
|
+
|
65
|
+
1) Failure:
|
66
|
+
test_failed(AFailedTestCase) [a_failed_test_case.rb:4]:
|
67
|
+
<false> is not true.
|
68
|
+
|
69
|
+
1 tests, 1 assertions, 1 failures, 0 errors
|
70
|
+
}
|
71
|
+
DTR::TestReport.new('a_failed_test_case.rb', {:name => 'client name', :exit_code => 0, :stdout => stdout}, 1, 1, 1, 0)
|
72
|
+
end
|
73
|
+
|
74
|
+
def create_an_error_report
|
75
|
+
stdout = %{
|
76
|
+
thought-workers-computer:~/dtr/testdata thoughtworker$ ruby an_error_test_case.rb
|
77
|
+
Loaded suite an_error_test_case
|
78
|
+
Started
|
79
|
+
E
|
80
|
+
Finished in 0.000483 seconds.
|
81
|
+
|
82
|
+
1) Error:
|
83
|
+
test_error(AnErrorTestCase):
|
84
|
+
RuntimeError: error
|
85
|
+
an_error_test_case.rb:4:in `test_error'
|
86
|
+
|
87
|
+
1 tests, 0 assertions, 0 failures, 1 errors
|
88
|
+
}
|
89
|
+
DTR::TestReport.new('an_error_test_case.rb', {:name => 'client name', :exit_code => 0, :stdout => stdout}, 1, 1, 0, 1)
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/test_helper'
|
3
|
+
|
4
|
+
class RubyExtTest < Test::Unit::TestCase
|
5
|
+
def test_array_to_acl_list
|
6
|
+
assert_equal %w(allow localhost allow 127.0.0.1), [].to_acl_list
|
7
|
+
assert_equal %w(allow localhost allow 127.0.0.1).sort, ['druby://localhost:8888', 'sldjf'].to_acl_list.sort
|
8
|
+
assert_equal %w(allow localhost allow 127.0.0.1).sort, ['druby://127.0.0.1'].to_acl_list.sort
|
9
|
+
assert_equal %w(allow localhost allow 127.0.0.1 allow 192.168.0.111).sort, ['druby://192.168.0.111:3344'].to_acl_list.sort
|
10
|
+
assert_equal %w(allow localhost allow 127.0.0.1 allow 192.168.0.111 allow 182.1.1.1).sort, ['druby://192.168.0.111:3344', 'druby://182.1.1.1'].to_acl_list.sort
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
@@ -0,0 +1,56 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.dirname(__FILE__) + '/test_helper'
|
3
|
+
|
4
|
+
class RubyRunnerTest < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@report = nil
|
8
|
+
@executed_cmd = nil
|
9
|
+
@executed_time = 0
|
10
|
+
@report_updated = true
|
11
|
+
@test_case_1 = File.dirname(__FILE__) + '/../testdata/a_test_case.rb'
|
12
|
+
@runner = DTR::RubyRunner.new
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_should_not_run_test_file_not_exists
|
16
|
+
@runner.run self, self, ['test_file_not_exists.rb'], 'signature'
|
17
|
+
assert_nil @executed_cmd
|
18
|
+
assert_nil @report
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_should_not_continue_to_run_tests_after_updated_report_failed
|
22
|
+
@report_updated = false
|
23
|
+
@runner.run self, self, [@test_case_1, File.dirname(__FILE__) + '/../testdata/a_test_case2.rb'], 'signature'
|
24
|
+
assert_equal 1, @executed_time
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_should_not_run_test_file_if_server_has_its_report
|
28
|
+
reports[@test_case_1] = 'report'
|
29
|
+
@runner.run self, self, [@test_case_1], 'signature'
|
30
|
+
assert_equal 0, @executed_time
|
31
|
+
assert_nil @report
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_parse_stdout
|
35
|
+
assert_equal [2, 5, 1, 1], @runner.parse(%{
|
36
|
+
1 tests, 1 assertions, 0 failures, 0 errors
|
37
|
+
2 tests, 5 assertions, 1 failures, 1 errors
|
38
|
+
[[TestCase finished]]
|
39
|
+
})
|
40
|
+
end
|
41
|
+
|
42
|
+
def update(signature, report)
|
43
|
+
@report = report
|
44
|
+
@report_updated
|
45
|
+
end
|
46
|
+
|
47
|
+
def reports
|
48
|
+
@reports ||= {}
|
49
|
+
end
|
50
|
+
|
51
|
+
def execute(cmd)
|
52
|
+
@executed_time += 1
|
53
|
+
@executed_cmd = cmd
|
54
|
+
{:client_name => 'client name', :stdout => %{Finished in 1.1 seconds. \n4 tests, 2 assertions, 1 failures, 2 errors}, :stderr => 'outputs[:stderr]', :exit_code => 0}
|
55
|
+
end
|
56
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- coding: UTF-8 -*-
|
2
|
+
|
3
|
+
require 'test/unit'
|
4
|
+
|
5
|
+
#require 'logger'
|
6
|
+
#def logger
|
7
|
+
# logger = Logger.new STDOUT
|
8
|
+
# logger.level = Logger::DEBUG
|
9
|
+
# logger
|
10
|
+
#end
|
11
|
+
|
12
|
+
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
13
|
+
require 'dtr'
|
14
|
+
|
15
|
+
Thread.new do
|
16
|
+
Dir.chdir(File.dirname(__FILE__) + '/../testdata') do
|
17
|
+
DTROPTIONS[:setup] = 'rake setup'
|
18
|
+
DTR.start_client_server
|
19
|
+
end
|
20
|
+
end.join(1)
|
21
|
+
|
22
|
+
DTROPTIONS[:wait_a_moment] = false
|
23
|
+
|
24
|
+
class ScenarioSetupAndRunTestsSimply < Test::Unit::TestCase
|
25
|
+
|
26
|
+
def test_run_success
|
27
|
+
assert DTR.run(['a_test_case.rb', 'a_test_case2.rb'], ['druby://localhost:3344'])
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_run_failed
|
31
|
+
assert !DTR.run(['a_test_case.rb', 'an_error_test_case.rb', 'a_test_case2.rb'], ['druby://localhost:3344'])
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_run_setup_and_tests
|
35
|
+
assert DTR.run(['test_case_created_by_setup.rb'], ['druby://localhost:3344'], :run_setup_before_start => true)
|
36
|
+
ensure
|
37
|
+
File.delete 'test_case_created_by_setup.rb' if File.exist?('test_case_created_by_setup.rb')
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_should_crash_when_there_is_client_cant_be_connected
|
41
|
+
assert DTR.run(['a_test_case.rb', 'a_test_case2.rb'], ['druby://localhost:5555', 'druby://localhost:3344'])
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_should_failed_when_turn_on_option_and_there_is_no_client_alive
|
45
|
+
DTROPTIONS[:raise_on_no_alive_client] = true
|
46
|
+
assert !DTR.run(['a_test_case.rb'], ['druby://localhost:2345'])
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
|
51
|
+
|
data/test/server_test.rb
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
require File.dirname(__FILE__) + '/test_helper'
|
2
|
+
|
3
|
+
class ServerTest < Test::Unit::TestCase
|
4
|
+
def setup
|
5
|
+
@server = DTR::Server.new
|
6
|
+
end
|
7
|
+
|
8
|
+
def test_available_clients_should_not_contain_clients_not_idle
|
9
|
+
@server.add_client client_idling
|
10
|
+
@server.add_client client_not_idling
|
11
|
+
|
12
|
+
assert_equal [client_idling], @server.available_clients
|
13
|
+
end
|
14
|
+
|
15
|
+
def test_available_clients_should_contain_clients_connecting_self
|
16
|
+
client_connecting = OpenStruct.new :idle? => true, :server_signature => @server.server_signature, :name => 'client 1'
|
17
|
+
client_not_connecting = OpenStruct.new :idle? => true, :server_signature => DTR::Server.new.server_signature, :name => 'client 2'
|
18
|
+
@server.add_client client_connecting
|
19
|
+
@server.add_client client_not_connecting
|
20
|
+
|
21
|
+
assert_equal [client_connecting], @server.available_clients
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_should_reset_client_setup_log_when_add_client
|
25
|
+
@server.add_client client_idling
|
26
|
+
@server.client_setup_logs[client_idling.name] = 'report'
|
27
|
+
@server.add_client client_idling
|
28
|
+
assert_nil @server.client_setup_logs[client_idling.name]
|
29
|
+
end
|
30
|
+
|
31
|
+
def client_idling
|
32
|
+
OpenStruct.new :idle? => true, :server_signature => @server.server_signature, :name => 'client idling'
|
33
|
+
end
|
34
|
+
|
35
|
+
def client_not_idling
|
36
|
+
OpenStruct.new :idle? => false, :server_signature => @server.server_signature, :name => 'client not idling'
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'fileutils'
|
3
|
+
require 'ostruct'
|
4
|
+
|
5
|
+
$LOAD_PATH.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
6
|
+
require 'dtr'
|
7
|
+
|
8
|
+
FileUtils.makedirs DTROPTIONS[:tmp_dir]
|
9
|
+
DTROPTIONS.merge!({:client_name => "dtr client", :setup => "echo \"setup_dtr_client\"", :wait_a_moment => false})
|
10
|
+
|
11
|
+
class NoResponseClient
|
12
|
+
attr_reader :report_signature
|
13
|
+
|
14
|
+
def self.server=(server)
|
15
|
+
@@server = server
|
16
|
+
end
|
17
|
+
|
18
|
+
def name
|
19
|
+
'test client'
|
20
|
+
end
|
21
|
+
|
22
|
+
def server_signature
|
23
|
+
@@server.server_signature
|
24
|
+
end
|
25
|
+
|
26
|
+
def idle?
|
27
|
+
(@executing_test_files ||= nil).nil?
|
28
|
+
end
|
29
|
+
|
30
|
+
def setup(signature)
|
31
|
+
@log = log + 'setup ' + signature
|
32
|
+
@report_signature = signature
|
33
|
+
end
|
34
|
+
|
35
|
+
def run(runner_name, test_files, signature)
|
36
|
+
@report_signature = signature
|
37
|
+
raise 'I am busy, should not ask me do anymore' unless idle?
|
38
|
+
@executing_test_files = test_files
|
39
|
+
end
|
40
|
+
|
41
|
+
def log
|
42
|
+
@log ||= ''
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
module Test
|
47
|
+
module Unit
|
48
|
+
class TestCase
|
49
|
+
def assert_false(o)
|
50
|
+
assert !o
|
51
|
+
end
|
52
|
+
|
53
|
+
def new_successful_test_file
|
54
|
+
new_test_file do |file, num|
|
55
|
+
file.syswrite(%{
|
56
|
+
require 'test/unit'
|
57
|
+
class TestFile#{num} < Test::Unit::TestCase
|
58
|
+
def test_succeeded
|
59
|
+
assert true
|
60
|
+
end
|
61
|
+
end
|
62
|
+
})
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def new_failed_test_file
|
67
|
+
new_test_file do |file, num|
|
68
|
+
file.syswrite(%{
|
69
|
+
require 'test/unit'
|
70
|
+
class TestFile#{num} < Test::Unit::TestCase
|
71
|
+
def test_failed
|
72
|
+
assert false
|
73
|
+
end
|
74
|
+
end
|
75
|
+
})
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
def new_error_test_file
|
80
|
+
new_test_file do |file, num|
|
81
|
+
file.syswrite(%{
|
82
|
+
require 'test/unit'
|
83
|
+
class TestFile#{num} < Test::Unit::TestCase
|
84
|
+
def test_error
|
85
|
+
raise 'error'
|
86
|
+
end
|
87
|
+
|
88
|
+
def test_runtime_error
|
89
|
+
should.raise.runtime.error
|
90
|
+
end
|
91
|
+
end
|
92
|
+
})
|
93
|
+
end
|
94
|
+
end
|
95
|
+
|
96
|
+
def new_test_file
|
97
|
+
@test_file_num ||= 0
|
98
|
+
@test_file_num += 1
|
99
|
+
file_name = "#{DTROPTIONS[:tmp_dir]}/test_file#{@test_file_num}.rb"
|
100
|
+
File.open(file_name, 'w') do |file|
|
101
|
+
yield file, @test_file_num
|
102
|
+
end
|
103
|
+
|
104
|
+
file_name
|
105
|
+
end
|
106
|
+
end
|
107
|
+
end
|
108
|
+
end
|
metadata
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
rubygems_version: 0.9.4
|
3
|
+
specification_version: 1
|
4
|
+
name: DTR
|
5
|
+
version: !ruby/object:Gem::Version
|
6
|
+
version: 0.0.1
|
7
|
+
date: 2007-09-19 00:00:00 +08:00
|
8
|
+
summary: DTR is a distributed test runner to run tests on distributed computers for decreasing build time.
|
9
|
+
require_paths:
|
10
|
+
- lib
|
11
|
+
email: swing1979@gmail.com
|
12
|
+
homepage: http://dtr.rubyforge.org
|
13
|
+
rubyforge_project: dtr
|
14
|
+
description:
|
15
|
+
autorequire:
|
16
|
+
default_executable: dtr
|
17
|
+
bindir: bin
|
18
|
+
has_rdoc: false
|
19
|
+
required_ruby_version: !ruby/object:Gem::Version::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">"
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: 0.0.0
|
24
|
+
version:
|
25
|
+
platform: ruby
|
26
|
+
signing_key:
|
27
|
+
cert_chain:
|
28
|
+
post_install_message:
|
29
|
+
authors:
|
30
|
+
- Li Xiao
|
31
|
+
files:
|
32
|
+
- install.rb
|
33
|
+
- bin
|
34
|
+
- CHANGES
|
35
|
+
- doc
|
36
|
+
- html
|
37
|
+
- lib
|
38
|
+
- LICENSE.TXT
|
39
|
+
- Rakefile
|
40
|
+
- README
|
41
|
+
- show_process_exit_code.bat
|
42
|
+
- test
|
43
|
+
- testdata
|
44
|
+
- tmp
|
45
|
+
- TODO
|
46
|
+
- bin/dtr
|
47
|
+
- lib/dtr/base.rb
|
48
|
+
- lib/dtr/command_line.rb
|
49
|
+
- lib/dtr/drb_dtr.rb
|
50
|
+
- lib/dtr/ruby_ext.rb
|
51
|
+
- lib/dtr.rb
|
52
|
+
- test/average_packer_test.rb
|
53
|
+
- test/base_test.rb
|
54
|
+
- test/original_test_reports_test.rb
|
55
|
+
- test/ruby_ext_test.rb
|
56
|
+
- test/ruby_runner_test.rb
|
57
|
+
- test/scenario_setup_and_run_tests_simply.rb
|
58
|
+
- test/server_test.rb
|
59
|
+
- test/test_helper.rb
|
60
|
+
- doc/jamis.rb
|
61
|
+
test_files: []
|
62
|
+
|
63
|
+
rdoc_options: []
|
64
|
+
|
65
|
+
extra_rdoc_files: []
|
66
|
+
|
67
|
+
executables:
|
68
|
+
- dtr
|
69
|
+
extensions: []
|
70
|
+
|
71
|
+
requirements: []
|
72
|
+
|
73
|
+
dependencies:
|
74
|
+
- !ruby/object:Gem::Dependency
|
75
|
+
name: progressbar
|
76
|
+
version_requirement:
|
77
|
+
version_requirements: !ruby/object:Gem::Version::Requirement
|
78
|
+
requirements:
|
79
|
+
- - ">"
|
80
|
+
- !ruby/object:Gem::Version
|
81
|
+
version: 0.0.2
|
82
|
+
version:
|