turnout_proxy 0.0.1 → 0.0.3
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/.travis.yml +2 -0
- data/VERSION +1 -1
- data/lib/turnout_proxy.rb +1 -3
- data/lib/turnout_proxy/host_chooser.rb +12 -6
- data/lib/turnout_proxy/version.rb +4 -0
- data/test/acceptance/test_turnout_proxy.rb +3 -5
- data/test/lib/turnout_proxy/test_host_chooser.rb +4 -4
- data/test/support/hello_server.rb +3 -3
- data/test/support/travis_spawn.rb +12 -0
- data/turnout_proxy.gemspec +1 -1
- metadata +62 -68
data/.travis.yml
CHANGED
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.3
|
data/lib/turnout_proxy.rb
CHANGED
@@ -1,10 +1,8 @@
|
|
1
1
|
require 'em-proxy'
|
2
2
|
require 'turnout_proxy/host_chooser'
|
3
|
+
require 'turnout_proxy/version'
|
3
4
|
|
4
5
|
module TurnoutProxy
|
5
|
-
version_file = File.expand_path('../VERSION', File.dirname(__FILE__))
|
6
|
-
VERSION = File.read(version_file).freeze
|
7
|
-
|
8
6
|
def self.run(options = {})
|
9
7
|
Proxy.start(options) do |conn|
|
10
8
|
callbacks = HostChooser.new(conn, options)
|
@@ -1,31 +1,37 @@
|
|
1
1
|
module TurnoutProxy
|
2
2
|
|
3
3
|
class HostChooser
|
4
|
-
attr_accessor :file_checker
|
5
|
-
|
6
4
|
def initialize(connection, options = {})
|
7
5
|
@connection = connection
|
8
|
-
@file_checker = File
|
6
|
+
@file_checker = options.fetch(:file_checker) { File }
|
9
7
|
|
10
8
|
@default = validate_host(options[:default])
|
11
9
|
@alternate = validate_host(options[:alternate])
|
12
10
|
|
13
11
|
@lock_file = options[:lock_file]
|
12
|
+
|
13
|
+
choose_destination_server!
|
14
14
|
end
|
15
15
|
|
16
16
|
def on_data(data)
|
17
|
-
use_alternate? ? @connection.server(:alternate, @alternate) : @connection.server(:default, @default)
|
18
17
|
data
|
19
18
|
end
|
20
19
|
|
21
20
|
private
|
22
21
|
|
22
|
+
def choose_destination_server!
|
23
|
+
name, proxy_options = if use_alternate?
|
24
|
+
[:alternate, @alternate]
|
25
|
+
else
|
26
|
+
[:default, @default]
|
27
|
+
end
|
28
|
+
@connection.server(name, proxy_options.merge(:relay_client => true, :relay_server => true))
|
29
|
+
end
|
30
|
+
|
23
31
|
def use_alternate?
|
24
32
|
@file_checker.exists?(@lock_file)
|
25
33
|
end
|
26
34
|
|
27
|
-
private
|
28
|
-
|
29
35
|
def validate_host(host_config)
|
30
36
|
if host_config.nil? || String(host_config[:host]).empty? || host_config[:port].nil?
|
31
37
|
raise ArgumentError, "Bad host config, both host and port must be present."
|
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
require 'fileutils'
|
3
3
|
require 'net/http'
|
4
|
-
require '
|
4
|
+
require 'support/travis_spawn'
|
5
5
|
require 'support/hello_server'
|
6
6
|
require 'turnout_proxy'
|
7
7
|
|
8
8
|
class TestTurnoutProxy < TurnoutProxyTestCase
|
9
|
-
include
|
9
|
+
include TravisSpawn
|
10
10
|
include TurnoutProxy
|
11
11
|
|
12
12
|
TEST_LOCK_FILE = PROJECT_ROOT.join("lock")
|
@@ -51,12 +51,10 @@ class TestTurnoutProxy < TurnoutProxyTestCase
|
|
51
51
|
end
|
52
52
|
|
53
53
|
test "doesn't fail if destination server isn't responding" do
|
54
|
-
@pid = nil
|
55
54
|
with_running_proxy(8085) do |pid|
|
56
|
-
@pid = pid
|
57
55
|
Net::HTTP.get(URI("http://127.0.0.1:5678")) rescue nil
|
56
|
+
assert_equal 0, `kill -0 #{pid}`.chomp.to_i
|
58
57
|
end
|
59
|
-
Process.kill 0, @pid
|
60
58
|
end
|
61
59
|
|
62
60
|
end
|
@@ -31,14 +31,14 @@ class TestHostChooser < TurnoutProxyTestCase
|
|
31
31
|
@file_checker = FakeFile.new
|
32
32
|
end
|
33
33
|
|
34
|
-
ALTERNATE_CONFIG = { :host => "127.0.0.1", :port => 19999 }
|
35
|
-
DEFAULT_CONFIG = { :host => "127.0.0.1", :port => 9012 }
|
34
|
+
ALTERNATE_CONFIG = { :host => "127.0.0.1", :port => 19999, :relay_client => true, :relay_server => true }
|
35
|
+
DEFAULT_CONFIG = { :host => "127.0.0.1", :port => 9012, :relay_client => true, :relay_server => true }
|
36
36
|
|
37
37
|
def host_chooser
|
38
38
|
host_chooser = HostChooser.new(@connection,
|
39
39
|
:default => DEFAULT_CONFIG,
|
40
|
-
:alternate => ALTERNATE_CONFIG
|
41
|
-
|
40
|
+
:alternate => ALTERNATE_CONFIG,
|
41
|
+
:file_checker => @file_checker)
|
42
42
|
host_chooser
|
43
43
|
end
|
44
44
|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
|
-
require '
|
3
|
+
require 'support/travis_spawn'
|
4
4
|
require 'eventmachine'
|
5
5
|
|
6
6
|
class HelloServer
|
7
|
-
include
|
7
|
+
include TravisSpawn
|
8
8
|
|
9
9
|
def initialize(port, message)
|
10
|
-
@pid = spawn("ruby #{__FILE__} #{port} #{message}")
|
10
|
+
@pid = spawn("ruby -Itest #{__FILE__} #{port} #{message}")
|
11
11
|
at_exit { die }
|
12
12
|
end
|
13
13
|
|
data/turnout_proxy.gemspec
CHANGED
metadata
CHANGED
@@ -1,75 +1,73 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: turnout_proxy
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
hash: 29
|
3
|
+
version: !ruby/object:Gem::Version
|
5
4
|
prerelease:
|
6
|
-
|
7
|
-
- 0
|
8
|
-
- 0
|
9
|
-
- 1
|
10
|
-
version: 0.0.1
|
5
|
+
version: 0.0.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Vladimir Yarotsky
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2013-05-06 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: em-proxy
|
22
|
-
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
23
17
|
none: false
|
24
|
-
requirements:
|
18
|
+
requirements:
|
25
19
|
- - ~>
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
segments:
|
29
|
-
- 0
|
30
|
-
- 1
|
31
|
-
version: "0.1"
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0.1'
|
32
22
|
type: :runtime
|
33
|
-
|
23
|
+
version_requirements: !ruby/object:Gem::Requirement
|
24
|
+
none: false
|
25
|
+
requirements:
|
26
|
+
- - ~>
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
version: '0.1'
|
34
29
|
prerelease: false
|
35
|
-
- !ruby/object:Gem::Dependency
|
30
|
+
- !ruby/object:Gem::Dependency
|
36
31
|
name: rake
|
37
|
-
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
38
33
|
none: false
|
39
|
-
requirements:
|
40
|
-
- -
|
41
|
-
- !ruby/object:Gem::Version
|
42
|
-
|
43
|
-
segments:
|
44
|
-
- 0
|
45
|
-
version: "0"
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
46
38
|
type: :development
|
47
|
-
|
39
|
+
version_requirements: !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ! '>='
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: '0'
|
48
45
|
prerelease: false
|
49
|
-
- !ruby/object:Gem::Dependency
|
46
|
+
- !ruby/object:Gem::Dependency
|
50
47
|
name: posix-spawn
|
51
|
-
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
52
49
|
none: false
|
53
|
-
requirements:
|
54
|
-
- -
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
|
57
|
-
segments:
|
58
|
-
- 0
|
59
|
-
version: "0"
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
60
54
|
type: :development
|
61
|
-
|
55
|
+
version_requirements: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ! '>='
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
62
61
|
prerelease: false
|
63
62
|
description:
|
64
63
|
email: vladimir.yarotksy@gmail.com
|
65
|
-
executables:
|
64
|
+
executables:
|
66
65
|
- turnout_proxy
|
67
66
|
extensions: []
|
68
|
-
|
69
|
-
extra_rdoc_files:
|
67
|
+
extra_rdoc_files:
|
70
68
|
- LICENSE.txt
|
71
69
|
- README.md
|
72
|
-
files:
|
70
|
+
files:
|
73
71
|
- .gitignore
|
74
72
|
- .travis.yml
|
75
73
|
- Gemfile
|
@@ -80,48 +78,44 @@ files:
|
|
80
78
|
- bin/turnout_proxy
|
81
79
|
- lib/turnout_proxy.rb
|
82
80
|
- lib/turnout_proxy/host_chooser.rb
|
81
|
+
- lib/turnout_proxy/version.rb
|
83
82
|
- test/acceptance/test_turnout_proxy.rb
|
84
83
|
- test/lib/turnout_proxy/test_host_chooser.rb
|
85
84
|
- test/support/hello_server.rb
|
85
|
+
- test/support/travis_spawn.rb
|
86
86
|
- test/test_helper.rb
|
87
87
|
- turnout_proxy.gemspec
|
88
88
|
homepage: http://github.com/v-yarotsky/turnout_proxy
|
89
|
-
licenses:
|
89
|
+
licenses:
|
90
90
|
- MIT
|
91
91
|
post_install_message:
|
92
92
|
rdoc_options: []
|
93
|
-
|
94
|
-
require_paths:
|
93
|
+
require_paths:
|
95
94
|
- lib
|
96
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
95
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
97
96
|
none: false
|
98
|
-
requirements:
|
99
|
-
- -
|
100
|
-
- !ruby/object:Gem::Version
|
101
|
-
|
102
|
-
segments:
|
97
|
+
requirements:
|
98
|
+
- - ! '>='
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
segments:
|
103
101
|
- 0
|
104
|
-
|
105
|
-
|
102
|
+
hash: 241058783050928805
|
103
|
+
version: '0'
|
104
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
106
105
|
none: false
|
107
|
-
requirements:
|
108
|
-
- -
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
hash: 23
|
111
|
-
segments:
|
112
|
-
- 1
|
113
|
-
- 3
|
114
|
-
- 6
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
115
109
|
version: 1.3.6
|
116
110
|
requirements: []
|
117
|
-
|
118
111
|
rubyforge_project:
|
119
|
-
rubygems_version: 1.8.
|
112
|
+
rubygems_version: 1.8.25
|
120
113
|
signing_key:
|
121
114
|
specification_version: 3
|
122
115
|
summary: Proxy server which allows to switch between two destinations using lock file
|
123
|
-
test_files:
|
116
|
+
test_files:
|
124
117
|
- test/acceptance/test_turnout_proxy.rb
|
125
118
|
- test/lib/turnout_proxy/test_host_chooser.rb
|
126
119
|
- test/support/hello_server.rb
|
120
|
+
- test/support/travis_spawn.rb
|
127
121
|
- test/test_helper.rb
|