bane 0.4.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -13
- data/HISTORY.md +49 -0
- data/LICENSE +1 -1
- data/README.md +2 -2
- data/lib/bane/arguments_parser.rb +2 -0
- data/lib/bane/behavior_maker.rb +5 -3
- data/lib/bane/behaviors/responders/close_after_pause.rb +2 -0
- data/lib/bane/behaviors/responders/close_immediately.rb +2 -0
- data/lib/bane/behaviors/responders/deluge_response.rb +2 -0
- data/lib/bane/behaviors/responders/echo_response.rb +2 -0
- data/lib/bane/behaviors/responders/exported.rb +2 -0
- data/lib/bane/behaviors/responders/fixed_response.rb +2 -0
- data/lib/bane/behaviors/responders/for_each_line.rb +2 -0
- data/lib/bane/behaviors/responders/http_refuse_all_credentials.rb +2 -0
- data/lib/bane/behaviors/responders/never_respond.rb +2 -0
- data/lib/bane/behaviors/responders/newline_response.rb +2 -0
- data/lib/bane/behaviors/responders/random_response.rb +2 -0
- data/lib/bane/behaviors/responders/slow_response.rb +2 -0
- data/lib/bane/behaviors/servers/exported.rb +2 -0
- data/lib/bane/behaviors/servers/responder_server.rb +2 -0
- data/lib/bane/behaviors/servers/timeout_in_listen_queue.rb +2 -0
- data/lib/bane/command_line_configuration.rb +2 -0
- data/lib/bane/extensions.rb +2 -0
- data/lib/bane/launcher.rb +2 -0
- data/lib/bane/naive_http_response.rb +2 -0
- data/lib/bane/version.rb +5 -0
- data/lib/bane.rb +2 -0
- metadata +35 -98
- data/Rakefile +0 -51
- data/examples/multiple_behaviors.rb +0 -25
- data/examples/readme_example.rb +0 -10
- data/examples/single_behavior.rb +0 -19
- data/test/bane/acceptance_test.rb +0 -65
- data/test/bane/arguments_parser_test.rb +0 -76
- data/test/bane/bane_test.rb +0 -12
- data/test/bane/behaviors/responders/close_after_pause_test.rb +0 -30
- data/test/bane/behaviors/responders/close_immediately_test.rb +0 -14
- data/test/bane/behaviors/responders/deluge_response_test.rb +0 -20
- data/test/bane/behaviors/responders/echo_response_test.rb +0 -16
- data/test/bane/behaviors/responders/fixed_response_test.rb +0 -14
- data/test/bane/behaviors/responders/for_each_line_test.rb +0 -29
- data/test/bane/behaviors/responders/http_refuse_all_credentials_test.rb +0 -18
- data/test/bane/behaviors/responders/never_respond_test.rb +0 -31
- data/test/bane/behaviors/responders/newline_response_test.rb +0 -14
- data/test/bane/behaviors/responders/random_response_test.rb +0 -15
- data/test/bane/behaviors/responders/slow_response_test.rb +0 -21
- data/test/bane/behaviors/servers/responder_server_test.rb +0 -77
- data/test/bane/behaviors/servers/timeout_in_listen_queue_test.rb +0 -23
- data/test/bane/command_line_configuration_test.rb +0 -82
- data/test/bane/extensions_test.rb +0 -17
- data/test/bane/fake_connection_test.rb +0 -34
- data/test/bane/launchable_role_tests.rb +0 -20
- data/test/bane/naive_http_response_test.rb +0 -69
- data/test/test_helper.rb +0 -71
checksums.yaml
CHANGED
@@ -1,15 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
OWY2YTY3ZDFmNDU4Y2I1MzEwZjViNDIzZGU0YzMzNzk4ZjdiMmIxOA==
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 6f238270f71940d8a67a36a5a57f99c0ba77f05ba8c5af3a9ea9805c1d527d12
|
4
|
+
data.tar.gz: 7da73073b9fcd740d5c64e609d963191ccd411b20dd2fbd700618b9c21744cd1
|
7
5
|
SHA512:
|
8
|
-
metadata.gz:
|
9
|
-
|
10
|
-
NjczN2E4ZjM4YjcyMjUyYTBlODUxNjVkM2NiODc4MjIyM2Q2MjE3OWNmYzk0
|
11
|
-
YmFjZmVlNzVmYjMyOGE4ZmJhZmYzYzU3MTljOWMyODc5YjRiYjM=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
MmI5ZjZmYjM5YTczYzQ0NjFmYjNlMTBlY2I5ZmJiY2ZkMmQ4MDM5MjczYjgw
|
14
|
-
MTJkMWQxOTVkOTExN2FiMjVjNjUxOGRlOWU1YTc3OGUxMjUxNDM1Mjk1Zjkw
|
15
|
-
NDU5YzgzYzE2OGQ0MTY4OTdlY2RjYzNlNDM0ZDEyZmEyMGI3YzI=
|
6
|
+
metadata.gz: 59df1b491b22c50e6ab0cd4adeaa633f6d3089c05b489fafeffad196c5ce75376940454575d3d208e65efb7b5cf618ceedaae0fd9cec87de0f37108149cab0d8
|
7
|
+
data.tar.gz: 662f09c29e1dbe1da105fac39891ee68893afc014dd1f56f49f099986c13ef8c3d7a0964b470bd495900310b104e8a34f28cc1d86d30337b202e5a377a4ddf2e
|
data/HISTORY.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
# master
|
2
|
+
|
3
|
+
## 1.0.0
|
4
|
+
|
5
|
+
### Changed
|
6
|
+
* Support Ruby 2.5+. This meant adding a dependency on 'gserver', which was moved out of the standard library.
|
7
|
+
|
8
|
+
## 0.4.0
|
9
|
+
|
10
|
+
### Added
|
11
|
+
* The EchoResponse behavior which replies with each line sent
|
12
|
+
* The TimeoutInListenQueue server which binds to a port but never calls listen(2)
|
13
|
+
* Trap SIGINT to gracefully stop servers without a messy exception stacktrace
|
14
|
+
|
15
|
+
### Removed
|
16
|
+
* The fancy, flexible ConfigurationParser has been deleted. Command-line invocation now uses the CommandLineConfiguration parser. For programmatic invocation, see the examples.
|
17
|
+
* Ruby 1.8.7 support
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
* Rearranged packages to create Bane::Behaviors::Servers and Bane::Beaviors::Responders. Servers may be started and stopped; Responders simply interact with an already connected socket.
|
21
|
+
* Added Bane::Behaviors::Servers::LOCALHOST (127.0.0.1) and deprecated Bane::Behaviors::Servers::DEFAULT_HOST; please use LOCALHOST when specifying a host to listen on.
|
22
|
+
|
23
|
+
## 0.3.0
|
24
|
+
|
25
|
+
### Added
|
26
|
+
* Servers can now listen on all hosts or localhost via the command-line options -a / --listen-on-all-hosts or -l / --listen-on-localhost. The default is to listen on localhost.
|
27
|
+
|
28
|
+
|
29
|
+
### Changed
|
30
|
+
* Behaviors receive their parameters through their constructors instead of being passed via the serve method. That is,
|
31
|
+
the serve(io, options) method has been changed to serve(io). Behaviors that need to accept user-specified parameters
|
32
|
+
should accept them via constructor arguments, and should provide a default version since the command-line interface
|
33
|
+
does not specify options. e.g.
|
34
|
+
|
35
|
+
```
|
36
|
+
class MyBehavior
|
37
|
+
def initialize(options = {})
|
38
|
+
...
|
39
|
+
```
|
40
|
+
|
41
|
+
* BehaviorServer no longer accepts options; instead these are created with the Behavior objects.
|
42
|
+
* Configuration() and ConfigurationParser class are deprecated and will be removed in the next release. Instead of
|
43
|
+
using these classes, please directly instantiate a BehaviorServer with the required arguments. This class is being
|
44
|
+
deprecated and removed because the flexibility of the code creates a structure that is harder to read and maintain.
|
45
|
+
I'm also not sure anyone is using this method -- if so, please open a GitHub Issue and let me know if you're using
|
46
|
+
it -- and if so, how.
|
47
|
+
|
48
|
+
|
49
|
+
|
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -16,7 +16,7 @@ Bane is available as a Ruby gem. Install it with
|
|
16
16
|
|
17
17
|
Note that Bane installs an executable, `bane`. Simply invoke `bane` with no arguments to get a usage description.
|
18
18
|
|
19
|
-
Bane requires Ruby
|
19
|
+
Bane requires Ruby 2.5 or later.
|
20
20
|
|
21
21
|
## Usage
|
22
22
|
|
@@ -80,6 +80,7 @@ Note that these are simple protocol-independent socket behaviors:
|
|
80
80
|
* The server accepts a connection and then drops it immediately (CloseImmediately)
|
81
81
|
* The service can send megabytes when kilobytes are expected. (rough approximation with the DelugeReponse)
|
82
82
|
* The service can refuse all authentication credentials. (HttpRefuseAllCredentials)
|
83
|
+
* The request can sit in a listen queue until the caller times out. (TimeoutInListenQueue)
|
83
84
|
|
84
85
|
The following behaviors are not yet supported; they require the configuration of an HTTP server.
|
85
86
|
See the implementation of HttpRefuseAllCredentials for a simple example of an HTTP behavior.
|
@@ -91,7 +92,6 @@ The following behaviors are not yet supported. These require the ability to mani
|
|
91
92
|
TCP packets at a low level, which may require a C or C++ extension or raw sockets.
|
92
93
|
|
93
94
|
* The connection can be refused.
|
94
|
-
* The request can sit in a listen queue until the caller times out.
|
95
95
|
* The remote end can reply with a SYN/ACK and then never send any data.
|
96
96
|
* The remote end can send nothing but RESET packets.
|
97
97
|
* The remote end can report a full receive window and never drain the data.
|
data/lib/bane/behavior_maker.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Bane
|
2
4
|
|
3
5
|
class BehaviorMaker
|
@@ -28,12 +30,12 @@ module Bane
|
|
28
30
|
|
29
31
|
class ResponderMaker
|
30
32
|
def initialize(responder)
|
31
|
-
@
|
33
|
+
@responder = responder
|
32
34
|
end
|
33
35
|
|
34
36
|
def make(port, host)
|
35
|
-
Behaviors::Servers::ResponderServer.new(port, @
|
37
|
+
Behaviors::Servers::ResponderServer.new(port, @responder.new, host)
|
36
38
|
end
|
37
39
|
end
|
38
40
|
|
39
|
-
end
|
41
|
+
end
|
data/lib/bane/extensions.rb
CHANGED
data/lib/bane/launcher.rb
CHANGED
data/lib/bane/version.rb
ADDED
data/lib/bane.rb
CHANGED
metadata
CHANGED
@@ -1,104 +1,64 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bane
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Daniel Wellman
|
8
8
|
- Joe Leo
|
9
|
-
autorequire:
|
9
|
+
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2022-01-23 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
|
-
name:
|
15
|
+
name: rake
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
requirements:
|
18
|
-
- - ~>
|
18
|
+
- - "~>"
|
19
19
|
- !ruby/object:Gem::Version
|
20
|
-
version: '
|
20
|
+
version: '13.0'
|
21
21
|
type: :development
|
22
22
|
prerelease: false
|
23
23
|
version_requirements: !ruby/object:Gem::Requirement
|
24
24
|
requirements:
|
25
|
-
- - ~>
|
25
|
+
- - "~>"
|
26
26
|
- !ruby/object:Gem::Version
|
27
|
-
version: '
|
27
|
+
version: '13.0'
|
28
28
|
- !ruby/object:Gem::Dependency
|
29
|
-
name:
|
30
|
-
requirement: !ruby/object:Gem::Requirement
|
31
|
-
requirements:
|
32
|
-
- - ! '>='
|
33
|
-
- !ruby/object:Gem::Version
|
34
|
-
version: 1.1.5
|
35
|
-
type: :development
|
36
|
-
prerelease: false
|
37
|
-
version_requirements: !ruby/object:Gem::Requirement
|
38
|
-
requirements:
|
39
|
-
- - ! '>='
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
version: 1.1.5
|
42
|
-
- !ruby/object:Gem::Dependency
|
43
|
-
name: jeweler
|
29
|
+
name: rdoc
|
44
30
|
requirement: !ruby/object:Gem::Requirement
|
45
31
|
requirements:
|
46
|
-
- -
|
32
|
+
- - "~>"
|
47
33
|
- !ruby/object:Gem::Version
|
48
|
-
version:
|
34
|
+
version: '6.3'
|
49
35
|
type: :development
|
50
36
|
prerelease: false
|
51
37
|
version_requirements: !ruby/object:Gem::Requirement
|
52
38
|
requirements:
|
53
|
-
- -
|
39
|
+
- - "~>"
|
54
40
|
- !ruby/object:Gem::Version
|
55
|
-
version:
|
41
|
+
version: '6.3'
|
56
42
|
- !ruby/object:Gem::Dependency
|
57
|
-
name:
|
43
|
+
name: gserver
|
58
44
|
requirement: !ruby/object:Gem::Requirement
|
59
45
|
requirements:
|
60
46
|
- - '='
|
61
47
|
- !ruby/object:Gem::Version
|
62
|
-
version:
|
63
|
-
type: :
|
48
|
+
version: 0.0.1
|
49
|
+
type: :runtime
|
64
50
|
prerelease: false
|
65
51
|
version_requirements: !ruby/object:Gem::Requirement
|
66
52
|
requirements:
|
67
53
|
- - '='
|
68
54
|
- !ruby/object:Gem::Version
|
69
|
-
version:
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
version: 0.14.0
|
77
|
-
type: :development
|
78
|
-
prerelease: false
|
79
|
-
version_requirements: !ruby/object:Gem::Requirement
|
80
|
-
requirements:
|
81
|
-
- - ! '>='
|
82
|
-
- !ruby/object:Gem::Version
|
83
|
-
version: 0.14.0
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: wwtd
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - ! '>='
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '0'
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - ! '>='
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '0'
|
98
|
-
description: ! " Bane is a test harness used to test your application's interaction
|
99
|
-
with\n other servers. It is based upon the material from Michael Nygard's \"Release\n
|
100
|
-
\ It!\" book as described in the \"Test Harness\" chapter.\n"
|
101
|
-
email: dan@danielwellman.com
|
55
|
+
version: 0.0.1
|
56
|
+
description: |
|
57
|
+
Bane is a test harness used to test your application's interaction with
|
58
|
+
other servers. It is based upon the material from Michael Nygard's "Release
|
59
|
+
It!" book as described in the "Test Harness" chapter.
|
60
|
+
email:
|
61
|
+
- dan@danielwellman.com
|
102
62
|
executables:
|
103
63
|
- bane
|
104
64
|
extensions: []
|
@@ -107,14 +67,11 @@ extra_rdoc_files:
|
|
107
67
|
- README.md
|
108
68
|
- TODO
|
109
69
|
files:
|
70
|
+
- HISTORY.md
|
110
71
|
- LICENSE
|
111
72
|
- README.md
|
112
|
-
- Rakefile
|
113
73
|
- TODO
|
114
74
|
- bin/bane
|
115
|
-
- examples/multiple_behaviors.rb
|
116
|
-
- examples/readme_example.rb
|
117
|
-
- examples/single_behavior.rb
|
118
75
|
- lib/bane.rb
|
119
76
|
- lib/bane/arguments_parser.rb
|
120
77
|
- lib/bane/behavior_maker.rb
|
@@ -137,50 +94,30 @@ files:
|
|
137
94
|
- lib/bane/extensions.rb
|
138
95
|
- lib/bane/launcher.rb
|
139
96
|
- lib/bane/naive_http_response.rb
|
140
|
-
-
|
141
|
-
|
142
|
-
- test/bane/bane_test.rb
|
143
|
-
- test/bane/behaviors/responders/close_after_pause_test.rb
|
144
|
-
- test/bane/behaviors/responders/close_immediately_test.rb
|
145
|
-
- test/bane/behaviors/responders/deluge_response_test.rb
|
146
|
-
- test/bane/behaviors/responders/echo_response_test.rb
|
147
|
-
- test/bane/behaviors/responders/fixed_response_test.rb
|
148
|
-
- test/bane/behaviors/responders/for_each_line_test.rb
|
149
|
-
- test/bane/behaviors/responders/http_refuse_all_credentials_test.rb
|
150
|
-
- test/bane/behaviors/responders/never_respond_test.rb
|
151
|
-
- test/bane/behaviors/responders/newline_response_test.rb
|
152
|
-
- test/bane/behaviors/responders/random_response_test.rb
|
153
|
-
- test/bane/behaviors/responders/slow_response_test.rb
|
154
|
-
- test/bane/behaviors/servers/responder_server_test.rb
|
155
|
-
- test/bane/behaviors/servers/timeout_in_listen_queue_test.rb
|
156
|
-
- test/bane/command_line_configuration_test.rb
|
157
|
-
- test/bane/extensions_test.rb
|
158
|
-
- test/bane/fake_connection_test.rb
|
159
|
-
- test/bane/launchable_role_tests.rb
|
160
|
-
- test/bane/naive_http_response_test.rb
|
161
|
-
- test/test_helper.rb
|
162
|
-
homepage: http://github.com/danielwellman/bane
|
97
|
+
- lib/bane/version.rb
|
98
|
+
homepage: https://github.com/danielwellman/bane
|
163
99
|
licenses:
|
164
100
|
- BSD
|
165
|
-
metadata:
|
166
|
-
|
101
|
+
metadata:
|
102
|
+
source_code_uri: https://github.com/danielwellman/bane
|
103
|
+
changelog_uri: https://github.com/danielwellman/bane/blob/main/HISTORY.md
|
104
|
+
post_install_message:
|
167
105
|
rdoc_options: []
|
168
106
|
require_paths:
|
169
107
|
- lib
|
170
108
|
required_ruby_version: !ruby/object:Gem::Requirement
|
171
109
|
requirements:
|
172
|
-
- -
|
110
|
+
- - ">="
|
173
111
|
- !ruby/object:Gem::Version
|
174
|
-
version:
|
112
|
+
version: 2.5.0
|
175
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
176
114
|
requirements:
|
177
|
-
- -
|
115
|
+
- - ">="
|
178
116
|
- !ruby/object:Gem::Version
|
179
117
|
version: '0'
|
180
118
|
requirements: []
|
181
|
-
|
182
|
-
|
183
|
-
signing_key:
|
119
|
+
rubygems_version: 3.1.6
|
120
|
+
signing_key:
|
184
121
|
specification_version: 4
|
185
122
|
summary: A test harness for socket connections based upon ideas from Michael Nygard's
|
186
123
|
'Release It!'
|
data/Rakefile
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'bundler'
|
5
|
-
begin
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
gem.name = "bane"
|
17
|
-
gem.homepage = "http://github.com/danielwellman/bane"
|
18
|
-
gem.license = "BSD"
|
19
|
-
gem.summary = "A test harness for socket connections based upon ideas from Michael Nygard's 'Release It!'"
|
20
|
-
gem.description = <<-END
|
21
|
-
Bane is a test harness used to test your application's interaction with
|
22
|
-
other servers. It is based upon the material from Michael Nygard's "Release
|
23
|
-
It!" book as described in the "Test Harness" chapter.
|
24
|
-
END
|
25
|
-
gem.authors = ["Daniel Wellman", "Joe Leo"]
|
26
|
-
gem.email = "dan@danielwellman.com"
|
27
|
-
gem.files = FileList[ 'lib/**/*', 'bin/*', 'test/**/*', 'examples/*',
|
28
|
-
'Rakefile' ]
|
29
|
-
end
|
30
|
-
Jeweler::RubygemsDotOrgTasks.new
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
require 'rake/testtask'
|
35
|
-
Rake::TestTask.new(:test) do |test|
|
36
|
-
test.libs << 'test'
|
37
|
-
test.test_files = FileList['test/**/*_test.rb']
|
38
|
-
test.verbose = true
|
39
|
-
end
|
40
|
-
|
41
|
-
task :default => :test
|
42
|
-
|
43
|
-
require 'rdoc/task'
|
44
|
-
Rake::RDocTask.new do |rdoc|
|
45
|
-
version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
46
|
-
|
47
|
-
rdoc.rdoc_dir = 'rdoc'
|
48
|
-
rdoc.title = "list #{version}"
|
49
|
-
rdoc.rdoc_files.include('README*')
|
50
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
51
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
2
|
-
require 'bane'
|
3
|
-
|
4
|
-
include Bane
|
5
|
-
include Behaviors
|
6
|
-
|
7
|
-
# This example creates several behavior listening on distinct ports.
|
8
|
-
# Note the FixedResponse port specifies to listen to all hosts (0.0.0.0), all
|
9
|
-
# other servers listen to localhost only by default (127.0.0.1).
|
10
|
-
|
11
|
-
close_immediately = Responders::CloseImmediately.new
|
12
|
-
never_respond = Responders::NeverRespond.new
|
13
|
-
fixed_response = Responders::FixedResponse.new(message: "OK")
|
14
|
-
|
15
|
-
launcher = Launcher.new([Servers::ResponderServer.new(3000, close_immediately),
|
16
|
-
Servers::ResponderServer.new(8000, never_respond),
|
17
|
-
Servers::ResponderServer.new(8080, fixed_response, Servers::ALL_INTERFACES)])
|
18
|
-
launcher.start
|
19
|
-
# To run until interrupt, use the following line:
|
20
|
-
#launcher.join
|
21
|
-
|
22
|
-
# For examples, we'll let these sleep for a few seconds and then shut down'
|
23
|
-
sleep 10
|
24
|
-
launcher.stop
|
25
|
-
|
data/examples/readme_example.rb
DELETED
@@ -1,10 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
2
|
-
require 'bane'
|
3
|
-
|
4
|
-
include Bane
|
5
|
-
include Behaviors
|
6
|
-
|
7
|
-
launcher = Launcher.new(
|
8
|
-
[Servers::ResponderServer.new(3000, Responders::FixedResponse.new(message: "Shall we play a game?"))])
|
9
|
-
launcher.start
|
10
|
-
launcher.join
|
data/examples/single_behavior.rb
DELETED
@@ -1,19 +0,0 @@
|
|
1
|
-
$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'
|
2
|
-
require 'bane'
|
3
|
-
|
4
|
-
include Bane
|
5
|
-
include Behaviors
|
6
|
-
|
7
|
-
# This example creates a single behavior listening on port 3000.
|
8
|
-
# Note that the behavior, CloseAfterPause, specifies a default duration to pause - 60 seconds.
|
9
|
-
|
10
|
-
behavior = Servers::ResponderServer.new(3000, Responders::CloseAfterPause.new(duration: 60))
|
11
|
-
launcher = Launcher.new([behavior])
|
12
|
-
launcher.start
|
13
|
-
# To run until interrupt, use the following line:
|
14
|
-
#launcher.join
|
15
|
-
|
16
|
-
# For examples, we'll let these sleep for a few seconds and then shut down'
|
17
|
-
sleep 10
|
18
|
-
launcher.stop
|
19
|
-
|
@@ -1,65 +0,0 @@
|
|
1
|
-
require_relative '../test_helper'
|
2
|
-
require 'mocha/setup'
|
3
|
-
|
4
|
-
class BaneAcceptanceTest < Test::Unit::TestCase
|
5
|
-
|
6
|
-
include ServerTestHelpers
|
7
|
-
|
8
|
-
TEST_PORT = 4000
|
9
|
-
|
10
|
-
def test_uses_specified_port_and_server
|
11
|
-
run_server_with(TEST_PORT, Bane::Behaviors::Responders::FixedResponse) do
|
12
|
-
with_response_from TEST_PORT do |response|
|
13
|
-
assert !response.empty?, "Should have had a non-empty response"
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_serves_http_requests
|
19
|
-
run_server_with(TEST_PORT, Bane::Behaviors::Responders::HttpRefuseAllCredentials) do
|
20
|
-
assert_match /401/, status_returned_from("http://localhost:#{TEST_PORT}/some/url")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
def test_supports_command_line_interface
|
25
|
-
run_server_with_cli_arguments(["--listen-on-localhost", TEST_PORT, "FixedResponse"]) do
|
26
|
-
with_response_from TEST_PORT do |response|
|
27
|
-
assert !response.empty?, "Should have had a non-empty response"
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def run_server_with(port, behavior, &block)
|
35
|
-
behavior = Bane::Behaviors::Servers::ResponderServer.new(port, behavior.new)
|
36
|
-
launcher = Bane::Launcher.new([behavior], quiet_logger)
|
37
|
-
launch_and_stop_safely(launcher, &block)
|
38
|
-
sleep 0.1 # Until we can fix the GServer stopping race condition (Issue #7)
|
39
|
-
end
|
40
|
-
|
41
|
-
def run_server_with_cli_arguments(arguments, &block)
|
42
|
-
config = Bane::CommandLineConfiguration.new(Bane.find_makeables)
|
43
|
-
launcher = Bane::Launcher.new(config.process(arguments), quiet_logger) { |error| raise error }
|
44
|
-
launch_and_stop_safely(launcher, &block)
|
45
|
-
sleep 0.1 # Until we can fix the GServer stopping race condition (Issue #7)
|
46
|
-
end
|
47
|
-
|
48
|
-
def quiet_logger
|
49
|
-
StringIO.new
|
50
|
-
end
|
51
|
-
|
52
|
-
def status_returned_from(uri)
|
53
|
-
Net::HTTP.get_response(URI(uri)).code
|
54
|
-
end
|
55
|
-
|
56
|
-
def with_response_from(port)
|
57
|
-
begin
|
58
|
-
connection = TCPSocket.new "localhost", port
|
59
|
-
yield connection.read
|
60
|
-
ensure
|
61
|
-
connection.close if connection
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
end
|