landrush 0.3.0

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.
@@ -0,0 +1,33 @@
1
+ require 'test_helper'
2
+
3
+ module Landrush
4
+ describe DependentVMs do
5
+ describe "any?" do
6
+ it "reports false when nothing has happened" do
7
+ DependentVMs.any?.must_equal false
8
+ end
9
+
10
+ it "reports true once a machine has been added" do
11
+ env = fake_environment_with_machine('recordme.example.dev', '1.2.3.4')
12
+ DependentVMs.add(env[:machine])
13
+ DependentVMs.any?.must_equal true
14
+ end
15
+
16
+ it "reports false if a machine has been added then removed" do
17
+ env = fake_environment_with_machine('recordme.example.dev', '1.2.3.4')
18
+ DependentVMs.add(env[:machine])
19
+ DependentVMs.remove(env[:machine])
20
+ DependentVMs.any?.must_equal false
21
+ end
22
+
23
+ it "reports true if not all machines have been removed" do
24
+ first_env = fake_environment_with_machine('recordme.example.dev', '1.2.3.4')
25
+ second_env = fake_environment_with_machine('alsome.example.dev', '2.3.4.5')
26
+ DependentVMs.add(first_env[:machine])
27
+ DependentVMs.add(second_env[:machine])
28
+ DependentVMs.remove(first_env[:machine])
29
+ DependentVMs.any?.must_equal true
30
+ end
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,20 @@
1
+ require 'test_helper'
2
+
3
+ module Landrush
4
+ describe ResolverConfig do
5
+ describe 'ensure_config_exists' do
6
+ it 'writes a resolver config on the host if one is not already there' do
7
+ ResolverConfig.config_file.exist?.must_equal false
8
+ hush {
9
+ ResolverConfig.ensure_config_exists
10
+ }
11
+ ResolverConfig.config_file.exist?.must_equal true
12
+ ResolverConfig.config_file.read.must_equal <<-EOF.gsub(/^ +/, '')
13
+ # Generated by landrush, a vagrant plugin
14
+ nameserver 127.0.0.1
15
+ port 10053
16
+ EOF
17
+ end
18
+ end
19
+ end
20
+ end
@@ -0,0 +1,22 @@
1
+ require 'test_helper'
2
+
3
+ module Landrush
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
@@ -0,0 +1,55 @@
1
+ require 'test_helper'
2
+
3
+ module Landrush
4
+ describe Store do
5
+ before {
6
+ @store = Store.new(Tempfile.new(%w[landrush_test_store .json]))
7
+ }
8
+
9
+ after {
10
+ @store.backing_file.unlink
11
+ }
12
+
13
+ describe "set" do
14
+ it "sets the key to the value and makes it available for getting" do
15
+ @store.set('foo', 'bar')
16
+
17
+ @store.get('foo').must_equal 'bar'
18
+ end
19
+
20
+ it "allows updating keys that already exist" do
21
+ @store.set('foo', 'bar')
22
+ @store.set('foo', 'qux')
23
+
24
+ @store.get('foo').must_equal 'qux'
25
+ end
26
+ end
27
+
28
+ describe "get" do
29
+ it "returns nil for unset values" do
30
+ @store.get('notakey').must_equal nil
31
+ end
32
+
33
+ it "returns the latest set value (no caching)" do
34
+ @store.set('foo', 'first')
35
+ @store.get('foo').must_equal 'first'
36
+ @store.set('foo', 'second')
37
+ @store.get('foo').must_equal 'second'
38
+ @store.delete('foo')
39
+ @store.get('foo').must_equal nil
40
+ end
41
+ end
42
+
43
+ describe "delete" do
44
+ it "removes the key from the store" do
45
+ @store.set('now', 'you see me')
46
+
47
+ @store.get('now').must_equal 'you see me'
48
+
49
+ @store.delete('now')
50
+
51
+ @store.get('now').must_equal nil # you don't!
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,10 @@
1
+ module ClearDependentVms
2
+ def setup
3
+ super
4
+ Landrush::DependentVMs.clear!
5
+ end
6
+ end
7
+
8
+ class MiniTest::Spec
9
+ include ClearDependentVms
10
+ end
@@ -0,0 +1,21 @@
1
+ module FakeResolverConfigHooks
2
+ def setup
3
+ super
4
+ @test_resolver_config = Pathname('/tmp/vagrant_landrush_test_resolver_config')
5
+ Landrush::ResolverConfig.instance_variable_set(
6
+ "@config_file",
7
+ @test_resolver_config
8
+ )
9
+ end
10
+
11
+ def teardown
12
+ super
13
+ if @test_resolver_config.exist?
14
+ @test_resolver_config.delete
15
+ end
16
+ end
17
+ end
18
+
19
+ class MiniTest::Spec
20
+ include FakeResolverConfigHooks
21
+ end
@@ -0,0 +1,4 @@
1
+ class FakeUI
2
+ def self.info(*args)
3
+ end
4
+ end
@@ -0,0 +1,16 @@
1
+ module FakeWorkingDirHooks
2
+ def setup
3
+ super
4
+ Landrush.working_dir = '/tmp/vagrant_landrush_test_working_dir'
5
+ end
6
+
7
+ def teardown
8
+ super
9
+ Landrush.working_dir.rmtree if Landrush.working_dir.directory?
10
+ end
11
+ end
12
+
13
+ class MiniTest::Spec
14
+ include FakeWorkingDirHooks
15
+ end
16
+
@@ -0,0 +1,40 @@
1
+ # Set test port so there's nothing colliding
2
+ Landrush::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 Landrush::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 Landrush::Server.running?
33
+ Landrush::Server.stop
34
+ end
35
+ end
36
+ end
37
+
38
+ class MiniTest::Spec
39
+ include TestServerHooks
40
+ end
@@ -0,0 +1,54 @@
1
+ $:.push(File.expand_path('../../lib', __FILE__))
2
+
3
+ require 'bundler/setup'
4
+ require 'minitest/spec'
5
+
6
+ require 'landrush'
7
+
8
+ require 'minitest/autorun'
9
+
10
+ def fake_environment(extras={})
11
+ env = Vagrant::Environment.new
12
+ { ui: FakeUI, global_config: env.config_global }.merge(extras)
13
+ end
14
+
15
+ def fake_environment_with_machine(hostname, ip)
16
+ provider_cls = Class.new do
17
+ def initialize(machine)
18
+ end
19
+ end
20
+
21
+ env = Vagrant::Environment.new
22
+
23
+ machine = Vagrant::Machine.new(
24
+ 'fake_machine',
25
+ 'fake_provider',
26
+ provider_cls,
27
+ 'provider_config',
28
+ env.config_global,
29
+ Pathname('data_dir'),
30
+ 'box',
31
+ env
32
+ )
33
+
34
+ machine.config.landrush.enable
35
+
36
+ machine.config.vm.hostname = hostname
37
+ machine.config.vm.network :private_network, ip: ip
38
+
39
+ { machine: machine, ui: FakeUI, global_config: env.config_global }
40
+ end
41
+
42
+ class MiniTest::Spec
43
+ alias_method :hush, :capture_io
44
+ end
45
+
46
+ # order is important on these
47
+ require 'support/clear_dependent_vms'
48
+
49
+ require 'support/fake_ui'
50
+ require 'support/test_server_daemon'
51
+ require 'support/fake_resolver_config'
52
+
53
+ # need to be last; don't want to delete dir out from servers before they clean up
54
+ require 'support/fake_working_dir'
metadata ADDED
@@ -0,0 +1,156 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: landrush
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.3.0
5
+ prerelease:
6
+ platform: ruby
7
+ authors:
8
+ - Paul Hinze
9
+ autorequire:
10
+ bindir: bin
11
+ cert_chain: []
12
+ date: 2013-06-17 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
15
+ name: rubydns
16
+ requirement: !ruby/object:Gem::Requirement
17
+ none: false
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
31
+ name: bundler
32
+ requirement: !ruby/object:Gem::Requirement
33
+ none: false
34
+ requirements:
35
+ - - ~>
36
+ - !ruby/object:Gem::Version
37
+ version: '1.3'
38
+ type: :development
39
+ prerelease: false
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ~>
44
+ - !ruby/object:Gem::Version
45
+ version: '1.3'
46
+ - !ruby/object:Gem::Dependency
47
+ name: rake
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ description: ! 'Even a Vagrant needs a place to settle down once in a while.
63
+
64
+
65
+ This Vagrant plugin spins up a lightweight DNS server and makes it visible
66
+
67
+ to your guests and your host, so that you can easily access all your
68
+
69
+ machines without having to fiddle with IP addresses.
70
+
71
+
72
+ DNS records are automatically added and removed as machines are brought up
73
+
74
+ and down, and you can configure static entries to be returned from the
75
+
76
+ server as well. See the README for more documentation.
77
+
78
+ '
79
+ email:
80
+ - paul.t.hinze@gmail.com
81
+ executables: []
82
+ extensions: []
83
+ extra_rdoc_files: []
84
+ files:
85
+ - .gitignore
86
+ - Gemfile
87
+ - LICENSE.txt
88
+ - README.md
89
+ - Rakefile
90
+ - examples/Vagrantfile
91
+ - landrush.gemspec
92
+ - lib/ext/rexec.rb
93
+ - lib/landrush.rb
94
+ - lib/landrush/action/redirect_dns.rb
95
+ - lib/landrush/action/setup.rb
96
+ - lib/landrush/action/teardown.rb
97
+ - lib/landrush/command.rb
98
+ - lib/landrush/config.rb
99
+ - lib/landrush/dependent_vms.rb
100
+ - lib/landrush/plugin.rb
101
+ - lib/landrush/resolver_config.rb
102
+ - lib/landrush/server.rb
103
+ - lib/landrush/store.rb
104
+ - lib/landrush/util.rb
105
+ - lib/landrush/version.rb
106
+ - test/landrush/action/setup_test.rb
107
+ - test/landrush/action/teardown_test.rb
108
+ - test/landrush/dependent_vms_test.rb
109
+ - test/landrush/resolver_config_test.rb
110
+ - test/landrush/server_test.rb
111
+ - test/landrush/store_test.rb
112
+ - test/support/clear_dependent_vms.rb
113
+ - test/support/fake_resolver_config.rb
114
+ - test/support/fake_ui.rb
115
+ - test/support/fake_working_dir.rb
116
+ - test/support/test_server_daemon.rb
117
+ - test/test_helper.rb
118
+ homepage: https://github.com/phinze/landrush
119
+ licenses:
120
+ - MIT
121
+ post_install_message:
122
+ rdoc_options: []
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ none: false
127
+ requirements:
128
+ - - ! '>='
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ required_rubygems_version: !ruby/object:Gem::Requirement
132
+ none: false
133
+ requirements:
134
+ - - ! '>='
135
+ - !ruby/object:Gem::Version
136
+ version: '0'
137
+ requirements: []
138
+ rubyforge_project:
139
+ rubygems_version: 1.8.23
140
+ signing_key:
141
+ specification_version: 3
142
+ summary: a vagrant plugin providing consistent DNS visible on host and guests
143
+ test_files:
144
+ - test/landrush/action/setup_test.rb
145
+ - test/landrush/action/teardown_test.rb
146
+ - test/landrush/dependent_vms_test.rb
147
+ - test/landrush/resolver_config_test.rb
148
+ - test/landrush/server_test.rb
149
+ - test/landrush/store_test.rb
150
+ - test/support/clear_dependent_vms.rb
151
+ - test/support/fake_resolver_config.rb
152
+ - test/support/fake_ui.rb
153
+ - test/support/fake_working_dir.rb
154
+ - test/support/test_server_daemon.rb
155
+ - test/test_helper.rb
156
+ has_rdoc: