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
         
     |