vagrant-rubydns 0.2.0 → 0.2.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -2,36 +2,53 @@ require 'rubydns'
2
2
 
3
3
  module VagrantRubydns
4
4
  class Server < RExec::Daemon::Base
5
-
6
- INTERFACES = [
7
- [:udp, "0.0.0.0", 10053],
8
- [:tcp, "0.0.0.0", 10053]
9
- ]
10
5
  Name = Resolv::DNS::Name
11
- IN = Resolv::DNS::Resource::IN
6
+ IN = Resolv::DNS::Resource::IN
7
+
8
+ def self.port
9
+ @port ||= 10053
10
+ end
11
+
12
+ def self.port=(port)
13
+ @port = port
14
+ end
15
+
16
+ def self.upstream_servers
17
+ [[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]]
18
+ end
19
+
20
+ def self.interfaces
21
+ [
22
+ [:udp, "0.0.0.0", port],
23
+ [:tcp, "0.0.0.0", port]
24
+ ]
25
+ end
12
26
 
13
27
  def self.upstream
14
- @upstream ||= RubyDNS::Resolver.new([[:udp, "8.8.8.8", 53], [:tcp, "8.8.8.8", 53]])
28
+ @upstream ||= RubyDNS::Resolver.new(upstream_servers)
15
29
  end
16
30
 
17
- def self.logfile
18
- VagrantRubydns.working_dir.join('server.log')
31
+ def self.pid
32
+ RExec::Daemon::ProcessFile.recall(self)
19
33
  end
20
34
 
21
35
  # For RExec
22
- @@base_directory = VagrantRubydns.working_dir
36
+ def self.working_directory
37
+ VagrantRubydns.working_dir
38
+ end
23
39
 
24
40
  def self.running?
25
41
  RExec::Daemon::ProcessFile.status(self) == :running
26
42
  end
27
43
 
28
44
  def self.prefork
45
+ super
29
46
  ResolverConfig.ensure_config_exists
30
47
  end
31
48
 
32
49
  def self.run
33
50
  server = self
34
- RubyDNS::run_server(:listen => INTERFACES) do
51
+ RubyDNS::run_server(:listen => interfaces) do
35
52
  self.logger.level = Logger::INFO
36
53
 
37
54
  match(/.*/, IN::A) do |transaction|
@@ -1,5 +1,5 @@
1
1
  module Vagrant
2
2
  module Rubydns
3
- VERSION = "0.2.0"
3
+ VERSION = "0.2.1"
4
4
  end
5
5
  end
@@ -0,0 +1,40 @@
1
+ # Set test port so there's nothing colliding
2
+ VagrantRubydns::Server.port = 11153
3
+
4
+ module SilenceOutput
5
+ def silence
6
+ orig_out, orig_err = $stdout, $stderr
7
+ $stdout, $stderr = StringIO.new, StringIO.new
8
+
9
+ yield
10
+ ensure
11
+ $stdout = orig_out
12
+ $stderr = orig_err
13
+ end
14
+
15
+ def start
16
+ silence { super }
17
+ end
18
+
19
+ def stop
20
+ silence { super }
21
+ end
22
+ end
23
+
24
+ class VagrantRubydns::Server
25
+ extend SilenceOutput
26
+ end
27
+
28
+ module TestServerHooks
29
+ def teardown
30
+ super
31
+ # Cleanup any stray server instances from tests
32
+ if VagrantRubydns::Server.running?
33
+ VagrantRubydns::Server.stop
34
+ end
35
+ end
36
+ end
37
+
38
+ class MiniTest::Spec
39
+ include TestServerHooks
40
+ end
@@ -39,9 +39,15 @@ def fake_environment_with_machine(hostname, ip)
39
39
  { machine: machine, ui: FakeUI, global_config: env.config_global }
40
40
  end
41
41
 
42
+ class MiniTest::Spec
43
+ alias_method :hush, :capture_io
44
+ end
45
+
42
46
  # order is important on these
43
- require 'support/fake_working_dir'
44
47
  require 'support/clear_dependent_vms'
45
48
 
46
49
  require 'support/fake_ui'
47
- require 'support/disable_server_daemon'
50
+ require 'support/test_server_daemon'
51
+
52
+ # need to be last; don't want to delete dir out from servers before they clean up
53
+ require 'support/fake_working_dir'
@@ -50,9 +50,12 @@ module VagrantRubydns
50
50
  env = fake_environment_with_machine('somehost.vagrant.dev', '1.2.3.4')
51
51
 
52
52
  Server.start
53
+ original_pid = Server.pid
54
+
53
55
  setup.call(env)
54
56
 
55
- Server.start_count.must_equal 1
57
+ Server.running?.must_equal true
58
+ Server.pid.must_equal original_pid
56
59
  end
57
60
 
58
61
  it "does nothing if it is not enabled via config" do
@@ -44,7 +44,7 @@ module VagrantRubydns
44
44
  Server.start
45
45
  teardown.call(env)
46
46
 
47
- Server.stop_count.must_equal 1
47
+ Server.running?.must_equal false
48
48
  end
49
49
 
50
50
  it "leaves the rubydns server when other dependent vms exist" do
@@ -58,7 +58,7 @@ module VagrantRubydns
58
58
  Server.start
59
59
  teardown.call(env)
60
60
 
61
- Server.stop_count.must_equal 0
61
+ Server.running?.must_equal true
62
62
  end
63
63
 
64
64
  it "leaves the server alone if it's not running" do
@@ -68,7 +68,7 @@ module VagrantRubydns
68
68
 
69
69
  teardown.call(env)
70
70
 
71
- Server.stop_count.must_equal 0
71
+ Server.running?.must_equal false
72
72
  end
73
73
 
74
74
  it "does nothing when rubydns is disabled" do
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module VagrantRubydns
4
+ describe Server do
5
+ after {
6
+ if Server.running?
7
+ Server.stop
8
+ end
9
+ }
10
+ describe 'start/stop' do
11
+ it 'starts and stops a daemon' do
12
+ hush { Server.start }
13
+
14
+ Server.running?.must_equal true
15
+
16
+ hush { Server.stop }
17
+
18
+ Server.running?.must_equal false
19
+ end
20
+ end
21
+ end
22
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-rubydns
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-07 00:00:00.000000000 Z
12
+ date: 2013-05-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rubydns
@@ -87,13 +87,14 @@ files:
87
87
  - lib/vagrant-rubydns/util.rb
88
88
  - lib/vagrant-rubydns/version.rb
89
89
  - test/support/clear_dependent_vms.rb
90
- - test/support/disable_server_daemon.rb
91
90
  - test/support/fake_ui.rb
92
91
  - test/support/fake_working_dir.rb
92
+ - test/support/test_server_daemon.rb
93
93
  - test/test_helper.rb
94
94
  - test/vagrant-rubydns/action/setup_test.rb
95
95
  - test/vagrant-rubydns/action/teardown_test.rb
96
96
  - test/vagrant-rubydns/dependent_vms_test.rb
97
+ - test/vagrant-rubydns/server_test.rb
97
98
  - test/vagrant-rubydns/store_test.rb
98
99
  - vagrant-rubydns.gemspec
99
100
  homepage: ''
@@ -123,12 +124,13 @@ specification_version: 3
123
124
  summary: a simple dns server for vagrant guests
124
125
  test_files:
125
126
  - test/support/clear_dependent_vms.rb
126
- - test/support/disable_server_daemon.rb
127
127
  - test/support/fake_ui.rb
128
128
  - test/support/fake_working_dir.rb
129
+ - test/support/test_server_daemon.rb
129
130
  - test/test_helper.rb
130
131
  - test/vagrant-rubydns/action/setup_test.rb
131
132
  - test/vagrant-rubydns/action/teardown_test.rb
132
133
  - test/vagrant-rubydns/dependent_vms_test.rb
134
+ - test/vagrant-rubydns/server_test.rb
133
135
  - test/vagrant-rubydns/store_test.rb
134
136
  has_rdoc:
@@ -1,37 +0,0 @@
1
- class VagrantRubydns::Server < RExec::Daemon::Base
2
- def self.start
3
- @start_count += 1
4
- end
5
-
6
- def self.stop
7
- @stop_count += 1
8
- end
9
-
10
- def self.running?
11
- @start_count > 0
12
- end
13
-
14
- def self.clear!
15
- @start_count = 0
16
- @stop_count = 0
17
- end
18
-
19
- def self.start_count
20
- @start_count
21
- end
22
-
23
- def self.stop_count
24
- @stop_count
25
- end
26
- end
27
-
28
- module FakeServerHooks
29
- def setup
30
- super
31
- VagrantRubydns::Server.clear!
32
- end
33
- end
34
-
35
- class MiniTest::Spec
36
- include FakeServerHooks
37
- end