bane 0.4.0 → 1.0.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.
- 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
|