warden-protocol 0.1.3
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/.gitignore +17 -0
- data/.rspec +1 -0
- data/CHANGELOG.md +14 -0
- data/Gemfile +6 -0
- data/README.md +13 -0
- data/Rakefile +40 -0
- data/lib/warden/protocol.rb +4 -0
- data/lib/warden/protocol/base.rb +168 -0
- data/lib/warden/protocol/buffer.rb +69 -0
- data/lib/warden/protocol/build.sh +13 -0
- data/lib/warden/protocol/message.rb +50 -0
- data/lib/warden/protocol/pb.rb +497 -0
- data/lib/warden/protocol/pb/copy_in.proto +35 -0
- data/lib/warden/protocol/pb/copy_out.proto +39 -0
- data/lib/warden/protocol/pb/create.proto +65 -0
- data/lib/warden/protocol/pb/destroy.proto +33 -0
- data/lib/warden/protocol/pb/echo.proto +26 -0
- data/lib/warden/protocol/pb/error.proto +19 -0
- data/lib/warden/protocol/pb/info.proto +95 -0
- data/lib/warden/protocol/pb/limit_bandwidth.proto +30 -0
- data/lib/warden/protocol/pb/limit_disk.proto +70 -0
- data/lib/warden/protocol/pb/limit_memory.proto +34 -0
- data/lib/warden/protocol/pb/link.proto +40 -0
- data/lib/warden/protocol/pb/list.proto +25 -0
- data/lib/warden/protocol/pb/message.proto +36 -0
- data/lib/warden/protocol/pb/net_in.proto +39 -0
- data/lib/warden/protocol/pb/net_out.proto +35 -0
- data/lib/warden/protocol/pb/ping.proto +24 -0
- data/lib/warden/protocol/pb/resource_limits.proto +30 -0
- data/lib/warden/protocol/pb/run.proto +29 -0
- data/lib/warden/protocol/pb/spawn.proto +37 -0
- data/lib/warden/protocol/pb/stop.proto +40 -0
- data/lib/warden/protocol/pb/stream.proto +41 -0
- data/lib/warden/protocol/version.rb +7 -0
- data/spec/base_spec.rb +150 -0
- data/spec/buffer_spec.rb +65 -0
- data/spec/copy_in_spec.rb +51 -0
- data/spec/copy_out_spec.rb +56 -0
- data/spec/create_spec.rb +70 -0
- data/spec/destroy_spec.rb +36 -0
- data/spec/echo_spec.rb +42 -0
- data/spec/error_spec.rb +33 -0
- data/spec/info_spec.rb +122 -0
- data/spec/limit_bandwidth_spec.rb +57 -0
- data/spec/limit_disk_spec.rb +103 -0
- data/spec/limit_memory_spec.rb +47 -0
- data/spec/link_spec.rb +67 -0
- data/spec/list_spec.rb +41 -0
- data/spec/net_in_spec.rb +57 -0
- data/spec/net_out_spec.rb +47 -0
- data/spec/ping_spec.rb +32 -0
- data/spec/resource_limits_spec.rb +84 -0
- data/spec/run_spec.rb +79 -0
- data/spec/spawn_spec.rb +55 -0
- data/spec/spec_helper.rb +11 -0
- data/spec/stop_spec.rb +46 -0
- data/spec/stream_spec.rb +65 -0
- data/spec/support/examples/wrappable_reply.rb +26 -0
- data/spec/support/examples/wrappable_request.rb +26 -0
- data/spec/support/helper.rb +122 -0
- data/spec/support/matchers.rb +22 -0
- data/warden-protocol.gemspec +21 -0
- metadata +166 -0
    
        data/spec/buffer_spec.rb
    ADDED
    
    | @@ -0,0 +1,65 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
            require "warden/protocol/buffer"
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe Warden::Protocol::Buffer do
         | 
| 7 | 
            +
              let(:request) { Warden::Protocol::EchoRequest.new(:message => "request") }
         | 
| 8 | 
            +
              let(:response) { Warden::Protocol::EchoResponse.new(:message => "response") }
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it "should support iterating over requests" do
         | 
| 11 | 
            +
                subject << Warden::Protocol::Buffer.request_to_wire(request)
         | 
| 12 | 
            +
                subject.each_request do |request|
         | 
| 13 | 
            +
                  request.class.should == Warden::Protocol::EchoRequest
         | 
| 14 | 
            +
                  request.message.should == "request"
         | 
| 15 | 
            +
                end
         | 
| 16 | 
            +
              end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              it "should support iterating over responses" do
         | 
| 19 | 
            +
                subject << Warden::Protocol::Buffer.response_to_wire(response)
         | 
| 20 | 
            +
                subject.each_response do |response|
         | 
| 21 | 
            +
                  response.class.should == Warden::Protocol::EchoResponse
         | 
| 22 | 
            +
                  response.message.should == "response"
         | 
| 23 | 
            +
                end
         | 
| 24 | 
            +
              end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
              describe "fuzzing" do
         | 
| 27 | 
            +
                it "should not break request iteration" do
         | 
| 28 | 
            +
                  data = Warden::Protocol::Buffer.request_to_wire(request)
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                  loop do
         | 
| 31 | 
            +
                    chunk = data.slice!(0)
         | 
| 32 | 
            +
                    subject << chunk
         | 
| 33 | 
            +
                    break if data.empty?
         | 
| 34 | 
            +
             | 
| 35 | 
            +
                    subject.each_request do
         | 
| 36 | 
            +
                      fail
         | 
| 37 | 
            +
                    end
         | 
| 38 | 
            +
                  end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                  subject.each_request do |request|
         | 
| 41 | 
            +
                    request.class.should == Warden::Protocol::EchoRequest
         | 
| 42 | 
            +
                    request.message.should == "request"
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
                end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                it "should not break response iteration" do
         | 
| 47 | 
            +
                  data = Warden::Protocol::Buffer.response_to_wire(response)
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                  loop do
         | 
| 50 | 
            +
                    chunk = data.slice!(0)
         | 
| 51 | 
            +
                    subject << chunk
         | 
| 52 | 
            +
                    break if data.empty?
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    subject.each_response do
         | 
| 55 | 
            +
                      fail
         | 
| 56 | 
            +
                    end
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  subject.each_response do |response|
         | 
| 60 | 
            +
                    response.class.should == Warden::Protocol::EchoResponse
         | 
| 61 | 
            +
                    response.message.should == "response"
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
                end
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
            end
         | 
| @@ -0,0 +1,51 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::CopyInRequest do
         | 
| 6 | 
            +
              subject(:request) do
         | 
| 7 | 
            +
                described_class.new(
         | 
| 8 | 
            +
                  :handle => "handle",
         | 
| 9 | 
            +
                  :src_path => "/src",
         | 
| 10 | 
            +
                  :dst_path => "/dst",
         | 
| 11 | 
            +
                )
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it_should_behave_like "wrappable request"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              its("class.type_camelized") { should == "CopyIn" }
         | 
| 17 | 
            +
              its("class.type_underscored") { should == "copy_in" }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              field :handle do
         | 
| 20 | 
            +
                it_should_be_required
         | 
| 21 | 
            +
                it_should_be_typed_as_string
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              field :src_path do
         | 
| 25 | 
            +
                it_should_be_required
         | 
| 26 | 
            +
                it_should_be_typed_as_string
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              field :dst_path do
         | 
| 30 | 
            +
                it_should_be_required
         | 
| 31 | 
            +
                it_should_be_typed_as_string
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              it "should respond to #create_response" do
         | 
| 35 | 
            +
                request.create_response.should be_a(Warden::Protocol::CopyInResponse)
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
            describe Warden::Protocol::CopyInResponse do
         | 
| 40 | 
            +
              subject(:response) do
         | 
| 41 | 
            +
                described_class.new
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              its("class.type_camelized") { should == "CopyIn" }
         | 
| 47 | 
            +
              its("class.type_underscored") { should == "copy_in" }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              it { should be_ok }
         | 
| 50 | 
            +
              it { should_not be_error }
         | 
| 51 | 
            +
            end
         | 
| @@ -0,0 +1,56 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::CopyOutRequest do
         | 
| 6 | 
            +
              subject(:request) do
         | 
| 7 | 
            +
                described_class.new(
         | 
| 8 | 
            +
                  :handle => "handle",
         | 
| 9 | 
            +
                  :src_path => "/src",
         | 
| 10 | 
            +
                  :dst_path => "/dst",
         | 
| 11 | 
            +
                )
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
             | 
| 14 | 
            +
              it_should_behave_like "wrappable request"
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              its("class.type_camelized") { should == "CopyOut" }
         | 
| 17 | 
            +
              its("class.type_underscored") { should == "copy_out" }
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              field :handle do
         | 
| 20 | 
            +
                it_should_be_required
         | 
| 21 | 
            +
                it_should_be_typed_as_string
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              field :src_path do
         | 
| 25 | 
            +
                it_should_be_required
         | 
| 26 | 
            +
                it_should_be_typed_as_string
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              field :dst_path do
         | 
| 30 | 
            +
                it_should_be_required
         | 
| 31 | 
            +
                it_should_be_typed_as_string
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              field :owner do
         | 
| 35 | 
            +
                it_should_be_optional
         | 
| 36 | 
            +
                it_should_be_typed_as_string
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              it "should respond to #create_response" do
         | 
| 40 | 
            +
                request.create_response.should be_a(Warden::Protocol::CopyOutResponse)
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
            describe Warden::Protocol::CopyOutResponse do
         | 
| 45 | 
            +
              subject(:response) do
         | 
| 46 | 
            +
                described_class.new
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 50 | 
            +
             | 
| 51 | 
            +
              its("class.type_camelized") { should == "CopyOut" }
         | 
| 52 | 
            +
              its("class.type_underscored") { should == "copy_out" }
         | 
| 53 | 
            +
             | 
| 54 | 
            +
              it { should be_ok }
         | 
| 55 | 
            +
              it { should_not be_error }
         | 
| 56 | 
            +
            end
         | 
    
        data/spec/create_spec.rb
    ADDED
    
    | @@ -0,0 +1,70 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::CreateRequest do
         | 
| 6 | 
            +
              subject(:request) do
         | 
| 7 | 
            +
                described_class.new
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "wrappable request"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              its("class.type_camelized") { should == "Create" }
         | 
| 13 | 
            +
              its("class.type_underscored") { should == "create" }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              field :bind_mounts do
         | 
| 16 | 
            +
                it_should_be_optional
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                it "should be populated with BindMount objects" do
         | 
| 19 | 
            +
                  m = Warden::Protocol::CreateRequest::BindMount.new
         | 
| 20 | 
            +
                  m.src_path = "/src"
         | 
| 21 | 
            +
                  m.dst_path = "/dst"
         | 
| 22 | 
            +
                  m.mode = Warden::Protocol::CreateRequest::BindMount::Mode::RO
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  subject.bind_mounts = [m]
         | 
| 25 | 
            +
                  subject.should be_valid
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              field :grace_time do
         | 
| 30 | 
            +
                it_should_be_optional
         | 
| 31 | 
            +
                it_should_be_typed_as_uint
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              field :handle do
         | 
| 35 | 
            +
                it_should_be_optional
         | 
| 36 | 
            +
                it_should_be_typed_as_string
         | 
| 37 | 
            +
              end
         | 
| 38 | 
            +
             | 
| 39 | 
            +
              field :network do
         | 
| 40 | 
            +
                it_should_be_optional
         | 
| 41 | 
            +
                it_should_be_typed_as_string
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              field :rootfs do
         | 
| 45 | 
            +
                it_should_be_optional
         | 
| 46 | 
            +
                it_should_be_typed_as_string
         | 
| 47 | 
            +
              end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
              it "should respond to #create_response" do
         | 
| 50 | 
            +
                request.create_response.should be_a(Warden::Protocol::CreateResponse)
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            describe Warden::Protocol::CreateResponse do
         | 
| 55 | 
            +
              subject(:response) do
         | 
| 56 | 
            +
                described_class.new(:handle => "handle")
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              its("class.type_camelized") { should == "Create" }
         | 
| 62 | 
            +
              its("class.type_underscored") { should == "create" }
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              it { should be_ok }
         | 
| 65 | 
            +
              it { should_not be_error }
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              field :handle do
         | 
| 68 | 
            +
                it_should_be_required
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
            end
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::DestroyRequest do
         | 
| 6 | 
            +
              subject(:request) do
         | 
| 7 | 
            +
                described_class.new(:handle => "handle")
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "wrappable request"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              its("class.type_camelized") { should == "Destroy" }
         | 
| 13 | 
            +
              its("class.type_underscored") { should == "destroy" }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              field :handle do
         | 
| 16 | 
            +
                it_should_be_required
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              it "should respond to #create_response" do
         | 
| 20 | 
            +
                request.create_response.should be_a(Warden::Protocol::DestroyResponse)
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            describe Warden::Protocol::DestroyResponse do
         | 
| 25 | 
            +
              subject(:response) do
         | 
| 26 | 
            +
                described_class.new
         | 
| 27 | 
            +
              end
         | 
| 28 | 
            +
             | 
| 29 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              its("class.type_camelized") { should == "Destroy" }
         | 
| 32 | 
            +
              its("class.type_underscored") { should == "destroy" }
         | 
| 33 | 
            +
             | 
| 34 | 
            +
              it { should be_ok }
         | 
| 35 | 
            +
              it { should_not be_error }
         | 
| 36 | 
            +
            end
         | 
    
        data/spec/echo_spec.rb
    ADDED
    
    | @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::EchoRequest do
         | 
| 6 | 
            +
              subject(:request) do
         | 
| 7 | 
            +
                described_class.new(:message => "here's a snowman: ☃")
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "wrappable request"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              its("class.type_camelized") { should == "Echo" }
         | 
| 13 | 
            +
              its("class.type_underscored") { should == "echo" }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              field :message do
         | 
| 16 | 
            +
                it_should_be_required
         | 
| 17 | 
            +
                it_should_be_typed_as_string
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "should respond to #create_response" do
         | 
| 21 | 
            +
                request.create_response.should be_a(Warden::Protocol::EchoResponse)
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            describe Warden::Protocol::EchoResponse do
         | 
| 26 | 
            +
              subject(:response) do
         | 
| 27 | 
            +
                described_class.new(:message => "here's a snowman: ☃")
         | 
| 28 | 
            +
              end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              its("class.type_camelized") { should == "Echo" }
         | 
| 33 | 
            +
              its("class.type_underscored") { should == "echo" }
         | 
| 34 | 
            +
             | 
| 35 | 
            +
              it { should be_ok }
         | 
| 36 | 
            +
              it { should_not be_error }
         | 
| 37 | 
            +
             | 
| 38 | 
            +
              field :message do
         | 
| 39 | 
            +
                it_should_be_required
         | 
| 40 | 
            +
                it_should_be_typed_as_string
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
            end
         | 
    
        data/spec/error_spec.rb
    ADDED
    
    | @@ -0,0 +1,33 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::ErrorResponse do
         | 
| 6 | 
            +
              subject(:response) do
         | 
| 7 | 
            +
                described_class.new
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              it { should_not be_ok }
         | 
| 13 | 
            +
              it { should be_error }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              field :message do
         | 
| 16 | 
            +
                it_should_be_optional
         | 
| 17 | 
            +
                it_should_be_typed_as_string
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              field :data do
         | 
| 21 | 
            +
                it_should_be_optional
         | 
| 22 | 
            +
                it_should_be_typed_as_string
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              field :backtrace do
         | 
| 26 | 
            +
                it_should_be_optional
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                it "should allow one or more entries" do
         | 
| 29 | 
            +
                  subject.backtrace = ["a", "b"]
         | 
| 30 | 
            +
                  subject.should be_valid
         | 
| 31 | 
            +
                end
         | 
| 32 | 
            +
              end
         | 
| 33 | 
            +
            end
         | 
    
        data/spec/info_spec.rb
    ADDED
    
    | @@ -0,0 +1,122 @@ | |
| 1 | 
            +
            # coding: UTF-8
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Warden::Protocol::InfoRequest do
         | 
| 6 | 
            +
              subject(:request) do
         | 
| 7 | 
            +
                described_class.new(:handle => "handle")
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it_should_behave_like "wrappable request"
         | 
| 11 | 
            +
             | 
| 12 | 
            +
              its("class.type_camelized") { should == "Info" }
         | 
| 13 | 
            +
              its("class.type_underscored") { should == "info" }
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              field :handle do
         | 
| 16 | 
            +
                it_should_be_required
         | 
| 17 | 
            +
                it_should_be_typed_as_string
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "should respond to #create_response" do
         | 
| 21 | 
            +
                request.create_response.should be_a(Warden::Protocol::InfoResponse)
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
            end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
            describe Warden::Protocol::InfoResponse::CpuStat do
         | 
| 26 | 
            +
              field :usage do
         | 
| 27 | 
            +
                it_should_be_optional
         | 
| 28 | 
            +
                it_should_be_typed_as_uint64
         | 
| 29 | 
            +
              end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
              field :user do
         | 
| 32 | 
            +
                it_should_be_optional
         | 
| 33 | 
            +
                it_should_be_typed_as_uint64
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              field :system do
         | 
| 37 | 
            +
                it_should_be_optional
         | 
| 38 | 
            +
                it_should_be_typed_as_uint64
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
            end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
            describe Warden::Protocol::InfoResponse::DiskStat do
         | 
| 43 | 
            +
              field :bytes_used do
         | 
| 44 | 
            +
                it_should_be_optional
         | 
| 45 | 
            +
                it_should_be_typed_as_uint64
         | 
| 46 | 
            +
              end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
              field :inodes_used do
         | 
| 49 | 
            +
                it_should_be_optional
         | 
| 50 | 
            +
                it_should_be_typed_as_uint64
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
            end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
            describe Warden::Protocol::InfoResponse do
         | 
| 55 | 
            +
              subject(:response) do
         | 
| 56 | 
            +
                described_class.new
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
              it_should_behave_like "wrappable response"
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              its("class.type_camelized") { should == "Info" }
         | 
| 62 | 
            +
              its("class.type_underscored") { should == "info" }
         | 
| 63 | 
            +
             | 
| 64 | 
            +
              it { should be_ok }
         | 
| 65 | 
            +
              it { should_not be_error }
         | 
| 66 | 
            +
             | 
| 67 | 
            +
              field :state do
         | 
| 68 | 
            +
                it_should_be_optional
         | 
| 69 | 
            +
                it_should_be_typed_as_string
         | 
| 70 | 
            +
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              field :events do
         | 
| 73 | 
            +
                it_should_be_optional
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                it "should allow one or more events" do
         | 
| 76 | 
            +
                  subject.events = ["a", "b"]
         | 
| 77 | 
            +
                  subject.should be_valid
         | 
| 78 | 
            +
                end
         | 
| 79 | 
            +
              end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              field :host_ip do
         | 
| 82 | 
            +
                it_should_be_optional
         | 
| 83 | 
            +
                it_should_be_typed_as_string
         | 
| 84 | 
            +
              end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              field :container_ip do
         | 
| 87 | 
            +
                it_should_be_optional
         | 
| 88 | 
            +
                it_should_be_typed_as_string
         | 
| 89 | 
            +
              end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
              field :container_path do
         | 
| 92 | 
            +
                it_should_be_optional
         | 
| 93 | 
            +
                it_should_be_typed_as_string
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              field :cpu_stat do
         | 
| 97 | 
            +
                it_should_be_optional
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                it "should allow instances of CpuStat" do
         | 
| 100 | 
            +
                  subject.cpu_stat = Warden::Protocol::InfoResponse::CpuStat.new
         | 
| 101 | 
            +
                  subject.should be_valid
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
              end
         | 
| 104 | 
            +
             | 
| 105 | 
            +
              field :disk_stat do
         | 
| 106 | 
            +
                it_should_be_optional
         | 
| 107 | 
            +
             | 
| 108 | 
            +
                it "should allow instances of DiskStat" do
         | 
| 109 | 
            +
                  subject.disk_stat = Warden::Protocol::InfoResponse::DiskStat.new
         | 
| 110 | 
            +
                  subject.should be_valid
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
              end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
              field :job_ids do
         | 
| 115 | 
            +
                it_should_be_optional
         | 
| 116 | 
            +
             | 
| 117 | 
            +
                it "should allow one or more job ids" do
         | 
| 118 | 
            +
                  subject.job_ids = [1, 2]
         | 
| 119 | 
            +
                  subject.should be_valid
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
              end
         | 
| 122 | 
            +
            end
         |