bane 0.4.0 → 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
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