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.
Files changed (54) hide show
  1. checksums.yaml +5 -13
  2. data/HISTORY.md +49 -0
  3. data/LICENSE +1 -1
  4. data/README.md +2 -2
  5. data/lib/bane/arguments_parser.rb +2 -0
  6. data/lib/bane/behavior_maker.rb +5 -3
  7. data/lib/bane/behaviors/responders/close_after_pause.rb +2 -0
  8. data/lib/bane/behaviors/responders/close_immediately.rb +2 -0
  9. data/lib/bane/behaviors/responders/deluge_response.rb +2 -0
  10. data/lib/bane/behaviors/responders/echo_response.rb +2 -0
  11. data/lib/bane/behaviors/responders/exported.rb +2 -0
  12. data/lib/bane/behaviors/responders/fixed_response.rb +2 -0
  13. data/lib/bane/behaviors/responders/for_each_line.rb +2 -0
  14. data/lib/bane/behaviors/responders/http_refuse_all_credentials.rb +2 -0
  15. data/lib/bane/behaviors/responders/never_respond.rb +2 -0
  16. data/lib/bane/behaviors/responders/newline_response.rb +2 -0
  17. data/lib/bane/behaviors/responders/random_response.rb +2 -0
  18. data/lib/bane/behaviors/responders/slow_response.rb +2 -0
  19. data/lib/bane/behaviors/servers/exported.rb +2 -0
  20. data/lib/bane/behaviors/servers/responder_server.rb +2 -0
  21. data/lib/bane/behaviors/servers/timeout_in_listen_queue.rb +2 -0
  22. data/lib/bane/command_line_configuration.rb +2 -0
  23. data/lib/bane/extensions.rb +2 -0
  24. data/lib/bane/launcher.rb +2 -0
  25. data/lib/bane/naive_http_response.rb +2 -0
  26. data/lib/bane/version.rb +5 -0
  27. data/lib/bane.rb +2 -0
  28. metadata +35 -98
  29. data/Rakefile +0 -51
  30. data/examples/multiple_behaviors.rb +0 -25
  31. data/examples/readme_example.rb +0 -10
  32. data/examples/single_behavior.rb +0 -19
  33. data/test/bane/acceptance_test.rb +0 -65
  34. data/test/bane/arguments_parser_test.rb +0 -76
  35. data/test/bane/bane_test.rb +0 -12
  36. data/test/bane/behaviors/responders/close_after_pause_test.rb +0 -30
  37. data/test/bane/behaviors/responders/close_immediately_test.rb +0 -14
  38. data/test/bane/behaviors/responders/deluge_response_test.rb +0 -20
  39. data/test/bane/behaviors/responders/echo_response_test.rb +0 -16
  40. data/test/bane/behaviors/responders/fixed_response_test.rb +0 -14
  41. data/test/bane/behaviors/responders/for_each_line_test.rb +0 -29
  42. data/test/bane/behaviors/responders/http_refuse_all_credentials_test.rb +0 -18
  43. data/test/bane/behaviors/responders/never_respond_test.rb +0 -31
  44. data/test/bane/behaviors/responders/newline_response_test.rb +0 -14
  45. data/test/bane/behaviors/responders/random_response_test.rb +0 -15
  46. data/test/bane/behaviors/responders/slow_response_test.rb +0 -21
  47. data/test/bane/behaviors/servers/responder_server_test.rb +0 -77
  48. data/test/bane/behaviors/servers/timeout_in_listen_queue_test.rb +0 -23
  49. data/test/bane/command_line_configuration_test.rb +0 -82
  50. data/test/bane/extensions_test.rb +0 -17
  51. data/test/bane/fake_connection_test.rb +0 -34
  52. data/test/bane/launchable_role_tests.rb +0 -20
  53. data/test/bane/naive_http_response_test.rb +0 -69
  54. data/test/test_helper.rb +0 -71
checksums.yaml CHANGED
@@ -1,15 +1,7 @@
1
1
  ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- Y2M3MGZkYWY0NDNhNjZlYTY5M2I2MGViMDljNjY3YzRiYmY2MDg3OA==
5
- data.tar.gz: !binary |-
6
- OWY2YTY3ZDFmNDU4Y2I1MzEwZjViNDIzZGU0YzMzNzk4ZjdiMmIxOA==
2
+ SHA256:
3
+ metadata.gz: 6f238270f71940d8a67a36a5a57f99c0ba77f05ba8c5af3a9ea9805c1d527d12
4
+ data.tar.gz: 7da73073b9fcd740d5c64e609d963191ccd411b20dd2fbd700618b9c21744cd1
7
5
  SHA512:
8
- metadata.gz: !binary |-
9
- ODE5MDJlYzkyMzNmYzllYzRlMTAwY2RjYjNhYzlkNjA1NTU0ODRiZmNhOGZh
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
@@ -1,4 +1,4 @@
1
- Copyright (c) 2010, Daniel J. Wellman
1
+ Copyright (c) 2021, Daniel J. Wellman
2
2
  All rights reserved.
3
3
 
4
4
  Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
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 1.9 or later. If you would like to use a Ruby 1.8.7-compatible version, install version 0.3.0.
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.
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'optparse'
2
4
 
3
5
  module Bane
@@ -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
- @responer = responder
33
+ @responder = responder
32
34
  end
33
35
 
34
36
  def make(port, host)
35
- Behaviors::Servers::ResponderServer.new(port, @responer.new, host)
37
+ Behaviors::Servers::ResponderServer.new(port, @responder.new, host)
36
38
  end
37
39
  end
38
40
 
39
- end
41
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Responders
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
  module Behaviors
3
5
  module Servers
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'gserver'
2
4
 
3
5
  module Bane
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'socket'
2
4
 
3
5
  module Bane
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
 
3
5
  def self.find_makeables
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  unless Class.respond_to?(:unqualified_name)
2
4
  class Class
3
5
  def unqualified_name
data/lib/bane/launcher.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bane
2
4
 
3
5
  class Launcher
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  class NaiveHttpResponse
2
4
 
3
5
  CRLF = "\r\n"
@@ -0,0 +1,5 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Bane
4
+ VERSION = '1.0.0'
5
+ end
data/lib/bane.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bane/extensions'
2
4
  require 'bane/behavior_maker'
3
5
  require 'bane/behaviors/responders/for_each_line'
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.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: 2014-06-21 00:00:00.000000000 Z
12
+ date: 2022-01-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rdoc
15
+ name: rake
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - ~>
18
+ - - "~>"
19
19
  - !ruby/object:Gem::Version
20
- version: '3.12'
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: '3.12'
27
+ version: '13.0'
28
28
  - !ruby/object:Gem::Dependency
29
- name: bundler
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: 2.0.1
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: 2.0.1
41
+ version: '6.3'
56
42
  - !ruby/object:Gem::Dependency
57
- name: test-unit
43
+ name: gserver
58
44
  requirement: !ruby/object:Gem::Requirement
59
45
  requirements:
60
46
  - - '='
61
47
  - !ruby/object:Gem::Version
62
- version: 1.2.3
63
- type: :development
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: 1.2.3
70
- - !ruby/object:Gem::Dependency
71
- name: mocha
72
- requirement: !ruby/object:Gem::Requirement
73
- requirements:
74
- - - ! '>='
75
- - !ruby/object:Gem::Version
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
- - test/bane/acceptance_test.rb
141
- - test/bane/arguments_parser_test.rb
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
- post_install_message:
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: '0'
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
- rubyforge_project:
182
- rubygems_version: 2.2.2
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
-
@@ -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
@@ -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