shamrock 0.0.3 → 0.0.4
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.
- data/.travis.yml +2 -0
- data/lib/shamrock/service.rb +27 -8
- data/lib/shamrock/version.rb +1 -1
- data/lib/shamrock.rb +1 -2
- data/spec/shamrock/service_spec.rb +19 -6
- metadata +2 -4
- data/lib/shamrock/port.rb +0 -9
- data/spec/shamrock/port_spec.rb +0 -9
    
        data/.travis.yml
    ADDED
    
    
    
        data/lib/shamrock/service.rb
    CHANGED
    
    | @@ -1,22 +1,33 @@ | |
| 1 | 
            +
            require 'logger'
         | 
| 2 | 
            +
             | 
| 1 3 | 
             
            module Shamrock
         | 
| 2 4 | 
             
              class Service
         | 
| 3 5 |  | 
| 4 6 | 
             
                attr_reader :port, :url
         | 
| 5 7 |  | 
| 6 | 
            -
                 | 
| 7 | 
            -
             | 
| 8 | 
            -
             | 
| 8 | 
            +
                PORT_RANGE = 9220..9260
         | 
| 9 | 
            +
             | 
| 10 | 
            +
                DEFAULT_OPTIONS = {
         | 
| 11 | 
            +
                  handler: Rack::Handler::WEBrick,
         | 
| 12 | 
            +
                  monitor: Shamrock::Monitor
         | 
| 13 | 
            +
                }
         | 
| 9 14 |  | 
| 15 | 
            +
                def initialize(rack_app, options = {})
         | 
| 10 16 | 
             
                  @rack_app = rack_app
         | 
| 11 | 
            -
             | 
| 12 | 
            -
                   | 
| 13 | 
            -
             | 
| 14 | 
            -
                  @ | 
| 17 | 
            +
             | 
| 18 | 
            +
                  options   = DEFAULT_OPTIONS.merge(options)
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                  @handler  = options[:handler]
         | 
| 21 | 
            +
                  @logger   = logger
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                  @port     = options[:port] || random_port
         | 
| 24 | 
            +
                  @url      = "http://localhost:#{port}"
         | 
| 25 | 
            +
                  @monitor  = options[:monitor].new(Http.new(url))
         | 
| 15 26 | 
             
                end
         | 
| 16 27 |  | 
| 17 28 | 
             
                def start
         | 
| 18 29 | 
             
                  @thread = Thread.new do
         | 
| 19 | 
            -
                    @handler.run(@rack_app, Port: port | 
| 30 | 
            +
                    @handler.run(@rack_app, Port: port, Logger: @logger)
         | 
| 20 31 | 
             
                  end
         | 
| 21 32 |  | 
| 22 33 | 
             
                  @monitor.wait_until_ready
         | 
| @@ -28,6 +39,14 @@ module Shamrock | |
| 28 39 |  | 
| 29 40 | 
             
                private
         | 
| 30 41 |  | 
| 42 | 
            +
                def logger
         | 
| 43 | 
            +
                  defined? Rails ? Rails.logger : Logger.new(STDOUT)
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                def random_port
         | 
| 47 | 
            +
                  Random.rand(PORT_RANGE)
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 31 50 | 
             
                def server_name
         | 
| 32 51 | 
             
                  @rack_app.class.name
         | 
| 33 52 | 
             
                end
         | 
    
        data/lib/shamrock/version.rb
    CHANGED
    
    
    
        data/lib/shamrock.rb
    CHANGED
    
    
| @@ -5,20 +5,33 @@ describe Shamrock::Service do | |
| 5 5 | 
             
                @rack_app = proc {|env| [200, {"Content-Type" => "text/html"}, "Hello Rack!"]}
         | 
| 6 6 | 
             
              end
         | 
| 7 7 |  | 
| 8 | 
            -
               | 
| 9 | 
            -
                 | 
| 10 | 
            -
                   | 
| 8 | 
            +
              describe "initialization" do
         | 
| 9 | 
            +
                it "should use a specific port if one is given in the initializer" do
         | 
| 10 | 
            +
                  service = Shamrock::Service.new(@rack_app, port: 8080)
         | 
| 11 | 
            +
                  service.port.should == 8080
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                it "should assign a random port of none is given to initializer" do
         | 
| 15 | 
            +
                  service = Shamrock::Service.new(@rack_app)
         | 
| 16 | 
            +
                  service.port.should_not be_nil
         | 
| 11 17 | 
             
                end
         | 
| 12 18 | 
             
              end
         | 
| 13 19 |  | 
| 14 20 | 
             
              describe "#start" do
         | 
| 21 | 
            +
                # In-line the service startup for this test
         | 
| 22 | 
            +
                class Shamrock::Service::Thread
         | 
| 23 | 
            +
                  def initialize(&block)
         | 
| 24 | 
            +
                    yield
         | 
| 25 | 
            +
                  end
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 15 28 | 
             
                it "should start the server" do
         | 
| 16 29 | 
             
                  monitor = mock('monitor', wait_until_ready: true)
         | 
| 17 30 | 
             
                  monitor_class = mock('monitor class', new: monitor)
         | 
| 18 31 |  | 
| 19 32 | 
             
                  handler = mock('handler')
         | 
| 20 | 
            -
                  service = Shamrock::Service.new(@rack_app, handler, monitor_class)
         | 
| 21 | 
            -
                  handler.should_receive(:run).with(@rack_app, Port: service.port | 
| 33 | 
            +
                  service = Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class)
         | 
| 34 | 
            +
                  handler.should_receive(:run).with(@rack_app, Port: service.port, Logger: anything)
         | 
| 22 35 | 
             
                  service.start
         | 
| 23 36 | 
             
                end
         | 
| 24 37 |  | 
| @@ -29,7 +42,7 @@ describe Shamrock::Service do | |
| 29 42 | 
             
                  monitor.should_receive(:wait_until_ready).once
         | 
| 30 43 |  | 
| 31 44 | 
             
                  handler = mock('handler', run: true)
         | 
| 32 | 
            -
                  Shamrock::Service.new(@rack_app, handler, monitor_class).start
         | 
| 45 | 
            +
                  Shamrock::Service.new(@rack_app, handler: handler, monitor: monitor_class).start
         | 
| 33 46 | 
             
                end
         | 
| 34 47 | 
             
              end
         | 
| 35 48 | 
             
            end
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: shamrock
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.4
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -85,6 +85,7 @@ extra_rdoc_files: [] | |
| 85 85 | 
             
            files:
         | 
| 86 86 | 
             
            - .gitignore
         | 
| 87 87 | 
             
            - .rspec
         | 
| 88 | 
            +
            - .travis.yml
         | 
| 88 89 | 
             
            - Gemfile
         | 
| 89 90 | 
             
            - LICENSE
         | 
| 90 91 | 
             
            - README.md
         | 
| @@ -92,13 +93,11 @@ files: | |
| 92 93 | 
             
            - lib/shamrock.rb
         | 
| 93 94 | 
             
            - lib/shamrock/http.rb
         | 
| 94 95 | 
             
            - lib/shamrock/monitor.rb
         | 
| 95 | 
            -
            - lib/shamrock/port.rb
         | 
| 96 96 | 
             
            - lib/shamrock/service.rb
         | 
| 97 97 | 
             
            - lib/shamrock/version.rb
         | 
| 98 98 | 
             
            - shamrock.gemspec
         | 
| 99 99 | 
             
            - spec/shamrock/http_spec.rb
         | 
| 100 100 | 
             
            - spec/shamrock/monitor_spec.rb
         | 
| 101 | 
            -
            - spec/shamrock/port_spec.rb
         | 
| 102 101 | 
             
            - spec/shamrock/service_spec.rb
         | 
| 103 102 | 
             
            - spec/spec_helper.rb
         | 
| 104 103 | 
             
            homepage: http://github.com/jsl/shamrock
         | 
| @@ -128,6 +127,5 @@ summary: Facilitates setting up stub services in your application | |
| 128 127 | 
             
            test_files:
         | 
| 129 128 | 
             
            - spec/shamrock/http_spec.rb
         | 
| 130 129 | 
             
            - spec/shamrock/monitor_spec.rb
         | 
| 131 | 
            -
            - spec/shamrock/port_spec.rb
         | 
| 132 130 | 
             
            - spec/shamrock/service_spec.rb
         | 
| 133 131 | 
             
            - spec/spec_helper.rb
         | 
    
        data/lib/shamrock/port.rb
    DELETED