sanford 0.10.1 → 0.11.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/Gemfile +1 -1
  2. data/README.md +41 -56
  3. data/Rakefile +0 -1
  4. data/bench/client.rb +8 -3
  5. data/bench/{services.rb → config.sanford} +11 -6
  6. data/bench/{runner.rb → report.rb} +2 -2
  7. data/bench/report.txt +32 -32
  8. data/lib/sanford/cli.rb +42 -28
  9. data/lib/sanford/config_file.rb +79 -0
  10. data/lib/sanford/{worker.rb → connection_handler.rb} +28 -20
  11. data/lib/sanford/error_handler.rb +7 -7
  12. data/lib/sanford/pid_file.rb +42 -0
  13. data/lib/sanford/process.rb +136 -0
  14. data/lib/sanford/process_signal.rb +20 -0
  15. data/lib/sanford/route.rb +48 -0
  16. data/lib/sanford/router.rb +36 -0
  17. data/lib/sanford/runner.rb +30 -58
  18. data/lib/sanford/sanford_runner.rb +19 -9
  19. data/lib/sanford/server.rb +211 -42
  20. data/lib/sanford/server_data.rb +47 -0
  21. data/lib/sanford/service_handler.rb +8 -46
  22. data/lib/sanford/template_source.rb +19 -2
  23. data/lib/sanford/test_runner.rb +27 -28
  24. data/lib/sanford/version.rb +1 -1
  25. data/lib/sanford.rb +1 -23
  26. data/sanford.gemspec +4 -5
  27. data/test/helper.rb +3 -20
  28. data/test/support/app_server.rb +142 -0
  29. data/test/support/config.sanford +7 -0
  30. data/test/support/config_invalid_run.sanford +3 -0
  31. data/test/support/config_no_run.sanford +0 -0
  32. data/test/support/fake_server_connection.rb +58 -0
  33. data/test/support/pid_file_spy.rb +19 -0
  34. data/test/support/template.erb +1 -0
  35. data/test/system/server_tests.rb +378 -0
  36. data/test/system/service_handler_tests.rb +224 -0
  37. data/test/unit/cli_tests.rb +187 -0
  38. data/test/unit/config_file_tests.rb +59 -0
  39. data/test/unit/connection_handler_tests.rb +254 -0
  40. data/test/unit/error_handler_tests.rb +30 -35
  41. data/test/unit/pid_file_tests.rb +70 -0
  42. data/test/unit/process_signal_tests.rb +61 -0
  43. data/test/unit/process_tests.rb +428 -0
  44. data/test/unit/route_tests.rb +92 -0
  45. data/test/unit/router_tests.rb +65 -0
  46. data/test/unit/runner_tests.rb +61 -15
  47. data/test/unit/sanford_runner_tests.rb +162 -28
  48. data/test/unit/sanford_tests.rb +0 -8
  49. data/test/unit/server_data_tests.rb +87 -0
  50. data/test/unit/server_tests.rb +502 -21
  51. data/test/unit/service_handler_tests.rb +114 -219
  52. data/test/unit/template_engine_tests.rb +1 -1
  53. data/test/unit/template_source_tests.rb +56 -16
  54. data/test/unit/test_runner_tests.rb +206 -0
  55. metadata +67 -67
  56. data/bench/tasks.rb +0 -41
  57. data/lib/sanford/config.rb +0 -28
  58. data/lib/sanford/host.rb +0 -129
  59. data/lib/sanford/host_data.rb +0 -65
  60. data/lib/sanford/hosts.rb +0 -38
  61. data/lib/sanford/manager.rb +0 -275
  62. data/test/support/fake_connection.rb +0 -36
  63. data/test/support/helpers.rb +0 -17
  64. data/test/support/service_handlers.rb +0 -154
  65. data/test/support/services.rb +0 -123
  66. data/test/support/simple_client.rb +0 -62
  67. data/test/system/request_handling_tests.rb +0 -306
  68. data/test/unit/config_tests.rb +0 -56
  69. data/test/unit/host_data_tests.rb +0 -71
  70. data/test/unit/host_tests.rb +0 -141
  71. data/test/unit/hosts_tests.rb +0 -50
  72. data/test/unit/manager_tests.rb +0 -195
  73. data/test/unit/worker_tests.rb +0 -24
@@ -1,195 +0,0 @@
1
- require 'assert'
2
- require 'sanford/manager'
3
-
4
- module Sanford::Manager
5
-
6
- class UnitTests < Assert::Context
7
- desc "Sanford::Manager"
8
- subject{ Sanford::Manager }
9
-
10
- should have_imeths :call, :get_handler_class
11
-
12
- should "return ServerHandler or SignalHandler with get_handler_class" do
13
- assert_equal Sanford::Manager::ServerHandler, subject.get_handler_class('run')
14
- assert_equal Sanford::Manager::ServerHandler, subject.get_handler_class('start')
15
- assert_equal Sanford::Manager::SignalHandler, subject.get_handler_class('stop')
16
- assert_equal Sanford::Manager::SignalHandler, subject.get_handler_class('restart')
17
- end
18
-
19
- end
20
-
21
- class ConfigTests < UnitTests
22
- desc "Config"
23
- setup do
24
- @config = Sanford::Manager::Config.new({ :host => 'TestHost' })
25
- end
26
- subject{ @config }
27
-
28
- should have_readers :host_name, :host, :ip, :port, :pid, :pid_file, :restart_dir
29
- should have_readers :file_descriptor, :client_file_descriptors
30
- should have_imeths :listen_args, :has_listen_args?, :found_host?
31
-
32
- should "find a host based on the `host` option" do
33
- assert_equal TestHost, subject.host
34
- assert_equal true, subject.found_host?
35
- end
36
-
37
- should "set the ip, port and pid file based on the host's configuration" do
38
- assert_equal TestHost.ip, subject.ip
39
- assert_equal TestHost.port, subject.port
40
- assert_equal TestHost.pid_file.to_s, subject.pid_file.to_s
41
- end
42
-
43
- should "use the first host if no host option is provided" do
44
- config = Sanford::Manager::Config.new({ :port => 1 })
45
- assert_equal Sanford.hosts.first, config.host
46
- end
47
-
48
- should "return the file descriptor or ip and port with listen_args" do
49
- config = Sanford::Manager::Config.new({
50
- :file_descriptor => 1,
51
- :ip => 'localhost', :port => 1234
52
- })
53
- assert_equal [ config.file_descriptor ], config.listen_args
54
- assert_equal true, subject.has_listen_args?
55
-
56
- config = Sanford::Manager::Config.new({ :ip => 'localhost', :port => 1234 })
57
- assert_equal [ config.ip, config.port ], config.listen_args
58
- assert_equal true, subject.has_listen_args?
59
-
60
- config = Sanford::Manager::Config.new({ :host => 'InvalidHost' })
61
- assert_equal false, config.has_listen_args?
62
- end
63
-
64
- should "build a NullHost when a host can't be found" do
65
- config = Sanford::Manager::Config.new({ :host => 'poop' })
66
- assert_instance_of Sanford::Manager::Config::NullHost, config.host
67
- assert_equal false, config.found_host?
68
- end
69
-
70
- should "split a string list of client file descriptors into an array" do
71
- config = Sanford::Manager::Config.new({ :client_fds => '1,2,3' })
72
- assert_equal [ 1, 2, 3 ], config.client_file_descriptors
73
- end
74
-
75
- end
76
-
77
- class EnvVarsTests < ConfigTests
78
- desc "with env vars set"
79
- setup do
80
- ENV['SANFORD_HOST'] = 'TestHost'
81
- ENV['SANFORD_IP'] = '127.0.0.1'
82
- ENV['SANFORD_PORT'] = '12345'
83
- @config = Sanford::Manager::Config.new({
84
- :host => 'InvalidHost',
85
- :port => 54678
86
- })
87
- end
88
- teardown do
89
- ENV.delete('SANFORD_HOST')
90
- ENV.delete('SANFORD_IP')
91
- ENV.delete('SANFORD_PORT')
92
- end
93
-
94
- should "use the env vars over passed in options or the host's configuration" do
95
- assert_equal TestHost, subject.host
96
- assert_equal '127.0.0.1', subject.ip
97
- assert_equal 12345, subject.port
98
- end
99
-
100
- end
101
-
102
- class PIDFileTests < ConfigTests
103
- desc "PIDFile"
104
- setup do
105
- @pid_file_path = File.join(ROOT, "tmp/my.pid")
106
- @pid_file = Sanford::Manager::Config::PIDFile.new(@pid_file_path)
107
- end
108
- teardown do
109
- FileUtils.rm_rf(@pid_file_path)
110
- end
111
- subject{ @pid_file }
112
-
113
- should have_imeths :pid, :to_s, :write, :remove
114
-
115
- should "return its path with #to_s" do
116
- assert_equal @pid_file_path, subject.to_s
117
- end
118
-
119
- should "write the pid file with #write" do
120
- subject.write
121
-
122
- assert_file_exists @pid_file_path
123
- assert_equal "#{Process.pid}\n", File.read(@pid_file_path)
124
- end
125
-
126
- should "return the value stored in the pid value with #pid" do
127
- subject.write
128
-
129
- assert_equal Process.pid, subject.pid
130
- end
131
-
132
- should "remove the file with #remove" do
133
- subject.write
134
- subject.remove
135
-
136
- assert_not File.exists?(@pid_file_path)
137
- end
138
-
139
- should "complain nicely if it can't write the pid file" do
140
- pid_file_path = 'does/not/exist.pid'
141
- pid_file = Sanford::Manager::Config::PIDFile.new(pid_file_path)
142
-
143
- err = nil
144
- begin
145
- pid_file.write
146
- rescue Exception => err
147
- end
148
-
149
- assert err
150
- assert_kind_of RuntimeError, err
151
- assert_includes File.dirname(pid_file_path), err.message
152
- end
153
-
154
- end
155
-
156
- class ServerHandlerTests < UnitTests
157
- desc "ServerHandler"
158
- setup do
159
- @handler = Sanford::Manager::ServerHandler.new({ :host => 'TestHost' })
160
- end
161
- subject{ @handler }
162
-
163
- should have_imeths :run, :start
164
-
165
- should "raise an error when a host can't be found" do
166
- assert_raises(Sanford::NoHostError) do
167
- Sanford::Manager::ServerHandler.new({ :host => 'not_found' })
168
- end
169
- end
170
-
171
- should "raise an error when a host is invalid for running a server" do
172
- assert_raises(Sanford::InvalidHostError) do
173
- Sanford::Manager::ServerHandler.new({ :host => 'InvalidHost' })
174
- end
175
- end
176
-
177
- end
178
-
179
- class SignalHandlertests < UnitTests
180
- desc "SignalHandler"
181
- setup do
182
- @handler = Sanford::Manager::SignalHandler.new({ :pid => -1 })
183
- end
184
- subject{ @handler }
185
-
186
- should have_imeths :stop, :restart
187
-
188
- should "raise an error when a pid can't be found" do
189
- assert_raises(Sanford::NoPIDError) do
190
- Sanford::Manager::SignalHandler.new
191
- end
192
- end
193
- end
194
-
195
- end
@@ -1,24 +0,0 @@
1
- require 'assert'
2
- require 'sanford/worker'
3
-
4
- require 'sanford/host_data'
5
- require 'test/support/fake_connection'
6
-
7
- class Sanford::Worker
8
-
9
- class UnitTests < Assert::Context
10
- desc "Sanford::Worker"
11
- setup do
12
- @host_data = Sanford::HostData.new(TestHost)
13
- @connection = FakeConnection.with_request('service', {})
14
- @worker = Sanford::Worker.new(@host_data, @connection)
15
- end
16
- subject{ @worker }
17
-
18
- should have_imeths :logger, :run
19
-
20
- end
21
-
22
- # `Worker`'s logic is tested in the system test: `request_handling_test.rb`
23
-
24
- end