thrift 0.9.0 → 0.9.1
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 +15 -0
- data/ext/binary_protocol_accelerated.c +19 -3
- data/ext/compact_protocol.c +21 -7
- data/ext/constants.h +1 -5
- data/ext/extconf.rb +1 -1
- data/ext/protocol.c +0 -185
- data/ext/protocol.h +0 -20
- data/ext/struct.c +0 -3
- data/ext/thrift_native.c +1 -11
- data/lib/thrift.rb +1 -0
- data/lib/thrift/exceptions.rb +3 -0
- data/lib/thrift/protocol/base_protocol.rb +87 -10
- data/lib/thrift/protocol/binary_protocol.rb +13 -5
- data/lib/thrift/protocol/compact_protocol.rb +14 -7
- data/lib/thrift/protocol/json_protocol.rb +19 -15
- data/lib/thrift/server/mongrel_http_server.rb +2 -0
- data/lib/thrift/server/thin_http_server.rb +91 -0
- data/lib/thrift/struct.rb +1 -1
- data/lib/thrift/struct_union.rb +2 -2
- data/lib/thrift/transport/http_client_transport.rb +4 -1
- data/spec/base_protocol_spec.rb +65 -7
- data/spec/binary_protocol_spec_shared.rb +30 -0
- data/spec/compact_protocol_spec.rb +1 -3
- data/spec/http_client_spec.rb +49 -0
- data/spec/json_protocol_spec.rb +2 -2
- data/spec/thin_http_server_spec.rb +140 -0
- data/spec/union_spec.rb +13 -1
- metadata +113 -93
- data/benchmark/gen-rb/benchmark_constants.rb +0 -11
- data/benchmark/gen-rb/benchmark_service.rb +0 -80
- data/benchmark/gen-rb/benchmark_types.rb +0 -10
- data/spec/gen-rb/nonblocking_service.rb +0 -272
- data/spec/gen-rb/thrift_spec_constants.rb +0 -11
- data/spec/gen-rb/thrift_spec_types.rb +0 -538
- data/spec/mongrel_http_server_spec.rb +0 -114
- data/test/debug_proto/gen-rb/debug_proto_test_constants.rb +0 -274
- data/test/debug_proto/gen-rb/debug_proto_test_types.rb +0 -761
- data/test/debug_proto/gen-rb/empty_service.rb +0 -24
- data/test/debug_proto/gen-rb/inherited.rb +0 -79
- data/test/debug_proto/gen-rb/reverse_order_service.rb +0 -82
- data/test/debug_proto/gen-rb/service_for_exception_with_a_map.rb +0 -81
- data/test/debug_proto/gen-rb/srv.rb +0 -330
    
        data/spec/base_protocol_spec.rb
    CHANGED
    
    | @@ -33,14 +33,21 @@ describe 'BaseProtocol' do | |
| 33 33 | 
             
                  @prot.trans.should eql(@trans)
         | 
| 34 34 | 
             
                end
         | 
| 35 35 |  | 
| 36 | 
            -
                it  | 
| 36 | 
            +
                it 'should write out a field nicely (deprecated write_field signature)' do
         | 
| 37 37 | 
             
                  @prot.should_receive(:write_field_begin).with('field', 'type', 'fid').ordered
         | 
| 38 | 
            -
                  @prot.should_receive(:write_type).with('type', 'value').ordered
         | 
| 38 | 
            +
                  @prot.should_receive(:write_type).with({:name => 'field', :type => 'type'}, 'value').ordered
         | 
| 39 39 | 
             
                  @prot.should_receive(:write_field_end).ordered
         | 
| 40 40 | 
             
                  @prot.write_field('field', 'type', 'fid', 'value')
         | 
| 41 41 | 
             
                end
         | 
| 42 42 |  | 
| 43 | 
            -
                it  | 
| 43 | 
            +
                it 'should write out a field nicely' do
         | 
| 44 | 
            +
                  @prot.should_receive(:write_field_begin).with('field', 'type', 'fid').ordered
         | 
| 45 | 
            +
                  @prot.should_receive(:write_type).with({:name => 'field', :type => 'type', :binary => false}, 'value').ordered
         | 
| 46 | 
            +
                  @prot.should_receive(:write_field_end).ordered
         | 
| 47 | 
            +
                  @prot.write_field({:name => 'field', :type => 'type', :binary => false}, 'fid', 'value')
         | 
| 48 | 
            +
                end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                it 'should write out the different types (deprecated write_type signature)' do
         | 
| 44 51 | 
             
                  @prot.should_receive(:write_bool).with('bool').ordered
         | 
| 45 52 | 
             
                  @prot.should_receive(:write_byte).with('byte').ordered
         | 
| 46 53 | 
             
                  @prot.should_receive(:write_double).with('double').ordered
         | 
| @@ -60,11 +67,37 @@ describe 'BaseProtocol' do | |
| 60 67 | 
             
                  @prot.write_type(Thrift::Types::STRUCT, struct)
         | 
| 61 68 | 
             
                  # all other types are not implemented
         | 
| 62 69 | 
             
                  [Thrift::Types::STOP, Thrift::Types::VOID, Thrift::Types::MAP, Thrift::Types::SET, Thrift::Types::LIST].each do |type|
         | 
| 63 | 
            -
                     | 
| 70 | 
            +
                    expect { @prot.write_type(type, type.to_s) }.to raise_error(NotImplementedError)
         | 
| 71 | 
            +
                  end
         | 
| 72 | 
            +
                end
         | 
| 73 | 
            +
             | 
| 74 | 
            +
                it 'should write out the different types' do
         | 
| 75 | 
            +
                  @prot.should_receive(:write_bool).with('bool').ordered
         | 
| 76 | 
            +
                  @prot.should_receive(:write_byte).with('byte').ordered
         | 
| 77 | 
            +
                  @prot.should_receive(:write_double).with('double').ordered
         | 
| 78 | 
            +
                  @prot.should_receive(:write_i16).with('i16').ordered
         | 
| 79 | 
            +
                  @prot.should_receive(:write_i32).with('i32').ordered
         | 
| 80 | 
            +
                  @prot.should_receive(:write_i64).with('i64').ordered
         | 
| 81 | 
            +
                  @prot.should_receive(:write_string).with('string').ordered
         | 
| 82 | 
            +
                  @prot.should_receive(:write_binary).with('binary').ordered
         | 
| 83 | 
            +
                  struct = mock('Struct')
         | 
| 84 | 
            +
                  struct.should_receive(:write).with(@prot).ordered
         | 
| 85 | 
            +
                  @prot.write_type({:type => Thrift::Types::BOOL}, 'bool')
         | 
| 86 | 
            +
                  @prot.write_type({:type => Thrift::Types::BYTE}, 'byte')
         | 
| 87 | 
            +
                  @prot.write_type({:type => Thrift::Types::DOUBLE}, 'double')
         | 
| 88 | 
            +
                  @prot.write_type({:type => Thrift::Types::I16}, 'i16')
         | 
| 89 | 
            +
                  @prot.write_type({:type => Thrift::Types::I32}, 'i32')
         | 
| 90 | 
            +
                  @prot.write_type({:type => Thrift::Types::I64}, 'i64')
         | 
| 91 | 
            +
                  @prot.write_type({:type => Thrift::Types::STRING}, 'string')
         | 
| 92 | 
            +
                  @prot.write_type({:type => Thrift::Types::STRING, :binary => true}, 'binary')
         | 
| 93 | 
            +
                  @prot.write_type({:type => Thrift::Types::STRUCT}, struct)
         | 
| 94 | 
            +
                  # all other types are not implemented
         | 
| 95 | 
            +
                  [Thrift::Types::STOP, Thrift::Types::VOID, Thrift::Types::MAP, Thrift::Types::SET, Thrift::Types::LIST].each do |type|
         | 
| 96 | 
            +
                    expect { @prot.write_type({:type => type}, type.to_s) }.to raise_error(NotImplementedError)
         | 
| 64 97 | 
             
                  end
         | 
| 65 98 | 
             
                end
         | 
| 66 99 |  | 
| 67 | 
            -
                it  | 
| 100 | 
            +
                it 'should read the different types (deprecated read_type signature)' do
         | 
| 68 101 | 
             
                  @prot.should_receive(:read_bool).ordered
         | 
| 69 102 | 
             
                  @prot.should_receive(:read_byte).ordered
         | 
| 70 103 | 
             
                  @prot.should_receive(:read_i16).ordered
         | 
| @@ -80,8 +113,33 @@ describe 'BaseProtocol' do | |
| 80 113 | 
             
                  @prot.read_type(Thrift::Types::DOUBLE)
         | 
| 81 114 | 
             
                  @prot.read_type(Thrift::Types::STRING)
         | 
| 82 115 | 
             
                  # all other types are not implemented
         | 
| 83 | 
            -
                  [Thrift::Types::STOP, Thrift::Types::VOID, Thrift::Types::MAP, | 
| 84 | 
            -
             | 
| 116 | 
            +
                  [Thrift::Types::STOP, Thrift::Types::VOID, Thrift::Types::MAP,
         | 
| 117 | 
            +
                   Thrift::Types::SET, Thrift::Types::LIST, Thrift::Types::STRUCT].each do |type|
         | 
| 118 | 
            +
                    expect { @prot.read_type(type) }.to raise_error(NotImplementedError)
         | 
| 119 | 
            +
                  end
         | 
| 120 | 
            +
                end
         | 
| 121 | 
            +
             | 
| 122 | 
            +
                it 'should read the different types' do
         | 
| 123 | 
            +
                  @prot.should_receive(:read_bool).ordered
         | 
| 124 | 
            +
                  @prot.should_receive(:read_byte).ordered
         | 
| 125 | 
            +
                  @prot.should_receive(:read_i16).ordered
         | 
| 126 | 
            +
                  @prot.should_receive(:read_i32).ordered
         | 
| 127 | 
            +
                  @prot.should_receive(:read_i64).ordered
         | 
| 128 | 
            +
                  @prot.should_receive(:read_double).ordered
         | 
| 129 | 
            +
                  @prot.should_receive(:read_string).ordered
         | 
| 130 | 
            +
                  @prot.should_receive(:read_binary).ordered
         | 
| 131 | 
            +
                  @prot.read_type({:type => Thrift::Types::BOOL})
         | 
| 132 | 
            +
                  @prot.read_type({:type => Thrift::Types::BYTE})
         | 
| 133 | 
            +
                  @prot.read_type({:type => Thrift::Types::I16})
         | 
| 134 | 
            +
                  @prot.read_type({:type => Thrift::Types::I32})
         | 
| 135 | 
            +
                  @prot.read_type({:type => Thrift::Types::I64})
         | 
| 136 | 
            +
                  @prot.read_type({:type => Thrift::Types::DOUBLE})
         | 
| 137 | 
            +
                  @prot.read_type({:type => Thrift::Types::STRING})
         | 
| 138 | 
            +
                  @prot.read_type({:type => Thrift::Types::STRING, :binary => true})
         | 
| 139 | 
            +
                  # all other types are not implemented
         | 
| 140 | 
            +
                  [Thrift::Types::STOP, Thrift::Types::VOID, Thrift::Types::MAP,
         | 
| 141 | 
            +
                   Thrift::Types::SET, Thrift::Types::LIST, Thrift::Types::STRUCT].each do |type|
         | 
| 142 | 
            +
                    expect { @prot.read_type({:type => type}) }.to raise_error(NotImplementedError)
         | 
| 85 143 | 
             
                  end
         | 
| 86 144 | 
             
                end
         | 
| 87 145 |  | 
| @@ -219,6 +219,14 @@ shared_examples_for 'a binary protocol' do | |
| 219 219 | 
             
                  a.encoding.should == Encoding::BINARY
         | 
| 220 220 | 
             
                  a.unpack('C*').should == [0x00, 0x00, 0x00, 0x07, 0x61, 0x62, 0x63, 0x20, 0xE2, 0x82, 0xAC]
         | 
| 221 221 | 
             
                end
         | 
| 222 | 
            +
             | 
| 223 | 
            +
                it 'should write a binary string' do
         | 
| 224 | 
            +
                  buffer = [0, 1, 2, 3].pack('C*')
         | 
| 225 | 
            +
                  @prot.write_binary(buffer)
         | 
| 226 | 
            +
                  a = @trans.read(@trans.available)
         | 
| 227 | 
            +
                  a.encoding.should == Encoding::BINARY
         | 
| 228 | 
            +
                  a.unpack('C*').should == [0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x02, 0x03]
         | 
| 229 | 
            +
                end
         | 
| 222 230 | 
             
              else
         | 
| 223 231 | 
             
                it 'should write a string' do
         | 
| 224 232 | 
             
                  str = 'abc'
         | 
| @@ -226,6 +234,13 @@ shared_examples_for 'a binary protocol' do | |
| 226 234 | 
             
                  a = @trans.read(@trans.available)
         | 
| 227 235 | 
             
                  a.unpack('C*').should == [0x00, 0x00, 0x00, 0x03, 0x61, 0x62, 0x63]
         | 
| 228 236 | 
             
                end
         | 
| 237 | 
            +
             | 
| 238 | 
            +
                it 'should write a binary string' do
         | 
| 239 | 
            +
                  buffer = [0, 1, 2, 3].pack('C*')
         | 
| 240 | 
            +
                  @prot.write_binary(buffer)
         | 
| 241 | 
            +
                  a = @trans.read(@trans.available)
         | 
| 242 | 
            +
                  a.unpack('C*').should == [0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x02, 0x03]
         | 
| 243 | 
            +
                end
         | 
| 229 244 | 
             
              end
         | 
| 230 245 |  | 
| 231 246 | 
             
              it "should error gracefully when trying to write a nil string" do
         | 
| @@ -342,6 +357,14 @@ shared_examples_for 'a binary protocol' do | |
| 342 357 | 
             
                  a.should == "\u20AC".encode('UTF-8')
         | 
| 343 358 | 
             
                  a.encoding.should == Encoding::UTF_8
         | 
| 344 359 | 
             
                end
         | 
| 360 | 
            +
             | 
| 361 | 
            +
                it 'should read a binary string' do
         | 
| 362 | 
            +
                  buffer = [0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x02, 0x03].pack('C*')
         | 
| 363 | 
            +
                  @trans.write(buffer)
         | 
| 364 | 
            +
                  a = @prot.read_binary
         | 
| 365 | 
            +
                  a.should == [0x00, 0x01, 0x02, 0x03].pack('C*')
         | 
| 366 | 
            +
                  a.encoding.should == Encoding::BINARY
         | 
| 367 | 
            +
                end
         | 
| 345 368 | 
             
              else
         | 
| 346 369 | 
             
                it 'should read a string' do
         | 
| 347 370 | 
             
                  # i32 of value 3, followed by three characters/UTF-8 bytes 'a', 'b', 'c'
         | 
| @@ -349,6 +372,13 @@ shared_examples_for 'a binary protocol' do | |
| 349 372 | 
             
                  @trans.write(buffer)
         | 
| 350 373 | 
             
                  @prot.read_string.should == 'abc'
         | 
| 351 374 | 
             
                end
         | 
| 375 | 
            +
             | 
| 376 | 
            +
                it 'should read a binary string' do
         | 
| 377 | 
            +
                  buffer = [0x00, 0x00, 0x00, 0x04, 0x00, 0x01, 0x02, 0x03].pack('C*')
         | 
| 378 | 
            +
                  @trans.write(buffer)
         | 
| 379 | 
            +
                  a = @prot.read_binary
         | 
| 380 | 
            +
                  a.should == [0x00, 0x01, 0x02, 0x03].pack('C*')
         | 
| 381 | 
            +
                end
         | 
| 352 382 | 
             
              end
         | 
| 353 383 |  | 
| 354 384 | 
             
              it "should perform a complete rpc with no args or return" do
         | 
| @@ -134,12 +134,10 @@ describe Thrift::CompactProtocol do | |
| 134 134 | 
             
              end
         | 
| 135 135 |  | 
| 136 136 | 
             
              def writer(sym)
         | 
| 137 | 
            -
                sym = sym == :binary ? :string : sym
         | 
| 138 137 | 
             
                "write_#{sym.to_s}"
         | 
| 139 138 | 
             
              end
         | 
| 140 139 |  | 
| 141 140 | 
             
              def reader(sym)
         | 
| 142 | 
            -
                sym = sym == :binary ? :string : sym
         | 
| 143 141 | 
             
                "read_#{sym.to_s}"
         | 
| 144 142 | 
             
              end
         | 
| 145 | 
            -
            end
         | 
| 143 | 
            +
            end
         | 
    
        data/spec/http_client_spec.rb
    CHANGED
    
    | @@ -68,4 +68,53 @@ describe 'Thrift::HTTPClientTransport' do | |
| 68 68 | 
             
                  @client.flush
         | 
| 69 69 | 
             
                end
         | 
| 70 70 | 
             
              end
         | 
| 71 | 
            +
             | 
| 72 | 
            +
              describe 'ssl enabled' do
         | 
| 73 | 
            +
                before(:each) do
         | 
| 74 | 
            +
                  @service_path = "/path/to/service?param=value"
         | 
| 75 | 
            +
                  @server_uri = "https://my.domain.com"
         | 
| 76 | 
            +
                end
         | 
| 77 | 
            +
             | 
| 78 | 
            +
                it "should use SSL for https" do
         | 
| 79 | 
            +
                  client = Thrift::HTTPClientTransport.new("#{@server_uri}#{@service_path}")
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                  client.write "test"
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  Net::HTTP.should_receive(:new).with("my.domain.com", 443).and_return do
         | 
| 84 | 
            +
                    mock("Net::HTTP").tap do |http|
         | 
| 85 | 
            +
                      http.should_receive(:use_ssl=).with(true)
         | 
| 86 | 
            +
                      http.should_receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_PEER)
         | 
| 87 | 
            +
                      http.should_receive(:post).with(@service_path, "test",
         | 
| 88 | 
            +
                          "Content-Type" => "application/x-thrift").and_return do
         | 
| 89 | 
            +
                        mock("Net::HTTPOK").tap do |response|
         | 
| 90 | 
            +
                          response.should_receive(:body).and_return "data"
         | 
| 91 | 
            +
                        end
         | 
| 92 | 
            +
                      end
         | 
| 93 | 
            +
                    end
         | 
| 94 | 
            +
                  end
         | 
| 95 | 
            +
                  client.flush
         | 
| 96 | 
            +
                  client.read(4).should == "data"
         | 
| 97 | 
            +
                end
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                it "should set SSL verify mode when specified" do
         | 
| 100 | 
            +
                  client = Thrift::HTTPClientTransport.new("#{@server_uri}#{@service_path}",
         | 
| 101 | 
            +
                      :ssl_verify_mode => OpenSSL::SSL::VERIFY_NONE)
         | 
| 102 | 
            +
             | 
| 103 | 
            +
                  client.write "test"
         | 
| 104 | 
            +
                  Net::HTTP.should_receive(:new).with("my.domain.com", 443).and_return do
         | 
| 105 | 
            +
                    mock("Net::HTTP").tap do |http|
         | 
| 106 | 
            +
                      http.should_receive(:use_ssl=).with(true)
         | 
| 107 | 
            +
                      http.should_receive(:verify_mode=).with(OpenSSL::SSL::VERIFY_NONE)
         | 
| 108 | 
            +
                      http.should_receive(:post).with(@service_path, "test",
         | 
| 109 | 
            +
                          "Content-Type" => "application/x-thrift").and_return do
         | 
| 110 | 
            +
                        mock("Net::HTTPOK").tap do |response|
         | 
| 111 | 
            +
                          response.should_receive(:body).and_return "data"
         | 
| 112 | 
            +
                        end
         | 
| 113 | 
            +
                      end
         | 
| 114 | 
            +
                    end
         | 
| 115 | 
            +
                  end
         | 
| 116 | 
            +
                  client.flush
         | 
| 117 | 
            +
                  client.read(4).should == "data"
         | 
| 118 | 
            +
                end
         | 
| 119 | 
            +
              end
         | 
| 71 120 | 
             
            end
         | 
    
        data/spec/json_protocol_spec.rb
    CHANGED
    
    | @@ -435,8 +435,8 @@ describe 'JsonProtocol' do | |
| 435 435 | 
             
                end
         | 
| 436 436 |  | 
| 437 437 | 
             
                it "should read set begin" do
         | 
| 438 | 
            -
                  @trans.write("[")
         | 
| 439 | 
            -
                  @prot.read_set_begin.should ==  | 
| 438 | 
            +
                  @trans.write("[\"rec\",2\"\"")
         | 
| 439 | 
            +
                  @prot.read_set_begin.should == [12, 2]
         | 
| 440 440 | 
             
                end
         | 
| 441 441 |  | 
| 442 442 | 
             
                it "should read set end" do
         | 
| @@ -0,0 +1,140 @@ | |
| 1 | 
            +
            #
         | 
| 2 | 
            +
            # Licensed to the Apache Software Foundation (ASF) under one
         | 
| 3 | 
            +
            # or more contributor license agreements. See the NOTICE file
         | 
| 4 | 
            +
            # distributed with this work for additional information
         | 
| 5 | 
            +
            # regarding copyright ownership. The ASF licenses this file
         | 
| 6 | 
            +
            # to you under the Apache License, Version 2.0 (the
         | 
| 7 | 
            +
            # "License"); you may not use this file except in compliance
         | 
| 8 | 
            +
            # with the License. You may obtain a copy of the License at
         | 
| 9 | 
            +
            #
         | 
| 10 | 
            +
            #   http://www.apache.org/licenses/LICENSE-2.0
         | 
| 11 | 
            +
            #
         | 
| 12 | 
            +
            # Unless required by applicable law or agreed to in writing,
         | 
| 13 | 
            +
            # software distributed under the License is distributed on an
         | 
| 14 | 
            +
            # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
         | 
| 15 | 
            +
            # KIND, either express or implied. See the License for the
         | 
| 16 | 
            +
            # specific language governing permissions and limitations
         | 
| 17 | 
            +
            # under the License.
         | 
| 18 | 
            +
            #
         | 
| 19 | 
            +
             | 
| 20 | 
            +
            require 'spec_helper'
         | 
| 21 | 
            +
            require 'rack/test'
         | 
| 22 | 
            +
             | 
| 23 | 
            +
            describe Thrift::ThinHTTPServer do
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              let(:processor) { mock('processor') }
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              describe "#initialize" do
         | 
| 28 | 
            +
             | 
| 29 | 
            +
                context "when using the defaults" do
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                  it "binds to port 80, with host 0.0.0.0, a path of '/'" do
         | 
| 32 | 
            +
                    Thin::Server.should_receive(:new).with('0.0.0.0', 80, an_instance_of(Rack::Builder))
         | 
| 33 | 
            +
                    Thrift::ThinHTTPServer.new(processor)
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  it 'creates a ThinHTTPServer::RackApplicationContext' do
         | 
| 37 | 
            +
                    Thrift::ThinHTTPServer::RackApplication.should_receive(:for).with("/", processor, an_instance_of(Thrift::BinaryProtocolFactory)).and_return(anything)
         | 
| 38 | 
            +
                    Thrift::ThinHTTPServer.new(processor)
         | 
| 39 | 
            +
                  end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                  it "uses the BinaryProtocolFactory" do
         | 
| 42 | 
            +
                    Thrift::BinaryProtocolFactory.should_receive(:new)
         | 
| 43 | 
            +
                    Thrift::ThinHTTPServer.new(processor)
         | 
| 44 | 
            +
                  end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
                end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                context "when using the options" do
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                  it 'accepts :ip, :port, :path' do
         | 
| 51 | 
            +
                    ip = "192.168.0.1"
         | 
| 52 | 
            +
                    port = 3000
         | 
| 53 | 
            +
                    path = "/thin"
         | 
| 54 | 
            +
                    Thin::Server.should_receive(:new).with(ip, port, an_instance_of(Rack::Builder))
         | 
| 55 | 
            +
                    Thrift::ThinHTTPServer.new(processor,
         | 
| 56 | 
            +
                                       :ip => ip,
         | 
| 57 | 
            +
                                       :port => port,
         | 
| 58 | 
            +
                                       :path => path)
         | 
| 59 | 
            +
                  end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
                  it 'creates a ThinHTTPServer::RackApplicationContext with a different protocol factory' do
         | 
| 62 | 
            +
                    Thrift::ThinHTTPServer::RackApplication.should_receive(:for).with("/", processor, an_instance_of(Thrift::JsonProtocolFactory)).and_return(anything)
         | 
| 63 | 
            +
                    Thrift::ThinHTTPServer.new(processor,
         | 
| 64 | 
            +
                                       :protocol_factory => Thrift::JsonProtocolFactory.new)
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              describe "#serve" do
         | 
| 72 | 
            +
             | 
| 73 | 
            +
                it 'starts the Thin server' do
         | 
| 74 | 
            +
                  underlying_thin_server = mock('thin server', :start => true)
         | 
| 75 | 
            +
                  Thin::Server.stub(:new).and_return(underlying_thin_server)
         | 
| 76 | 
            +
             | 
| 77 | 
            +
                  thin_thrift_server = Thrift::ThinHTTPServer.new(processor)
         | 
| 78 | 
            +
             | 
| 79 | 
            +
                  underlying_thin_server.should_receive(:start)
         | 
| 80 | 
            +
                  thin_thrift_server.serve
         | 
| 81 | 
            +
                end
         | 
| 82 | 
            +
              end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
            end
         | 
| 85 | 
            +
             | 
| 86 | 
            +
            describe Thrift::ThinHTTPServer::RackApplication do
         | 
| 87 | 
            +
              include Rack::Test::Methods
         | 
| 88 | 
            +
             | 
| 89 | 
            +
              let(:processor) { mock('processor') }
         | 
| 90 | 
            +
              let(:protocol_factory) { mock('protocol factory') }
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              def app
         | 
| 93 | 
            +
                Thrift::ThinHTTPServer::RackApplication.for("/", processor, protocol_factory)
         | 
| 94 | 
            +
              end
         | 
| 95 | 
            +
             | 
| 96 | 
            +
              context "404 response" do
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                it 'receives a non-POST' do
         | 
| 99 | 
            +
                  header('Content-Type', "application/x-thrift")
         | 
| 100 | 
            +
                  get "/"
         | 
| 101 | 
            +
                  last_response.status.should be 404
         | 
| 102 | 
            +
                end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                it 'receives a header other than application/x-thrift' do
         | 
| 105 | 
            +
                  header('Content-Type', "application/json")
         | 
| 106 | 
            +
                  post "/"
         | 
| 107 | 
            +
                  last_response.status.should be 404
         | 
| 108 | 
            +
                end
         | 
| 109 | 
            +
             | 
| 110 | 
            +
              end
         | 
| 111 | 
            +
             | 
| 112 | 
            +
              context "200 response" do
         | 
| 113 | 
            +
             | 
| 114 | 
            +
                before do
         | 
| 115 | 
            +
                  protocol_factory.stub(:get_protocol)
         | 
| 116 | 
            +
                  processor.stub(:process)
         | 
| 117 | 
            +
                end
         | 
| 118 | 
            +
             | 
| 119 | 
            +
                it 'creates an IOStreamTransport' do
         | 
| 120 | 
            +
                  header('Content-Type', "application/x-thrift")
         | 
| 121 | 
            +
                  Thrift::IOStreamTransport.should_receive(:new).with(an_instance_of(Rack::Lint::InputWrapper), an_instance_of(Rack::Response))
         | 
| 122 | 
            +
                  post "/"
         | 
| 123 | 
            +
                end
         | 
| 124 | 
            +
             | 
| 125 | 
            +
                it 'fetches the right protocol based on the Transport' do
         | 
| 126 | 
            +
                  header('Content-Type', "application/x-thrift")
         | 
| 127 | 
            +
                  protocol_factory.should_receive(:get_protocol).with(an_instance_of(Thrift::IOStreamTransport))
         | 
| 128 | 
            +
                  post "/"
         | 
| 129 | 
            +
                end
         | 
| 130 | 
            +
             | 
| 131 | 
            +
                it 'status code 200' do
         | 
| 132 | 
            +
                  header('Content-Type', "application/x-thrift")
         | 
| 133 | 
            +
                  post "/"
         | 
| 134 | 
            +
                  last_response.ok?.should be_true
         | 
| 135 | 
            +
                end
         | 
| 136 | 
            +
             | 
| 137 | 
            +
              end
         | 
| 138 | 
            +
             | 
| 139 | 
            +
            end
         | 
| 140 | 
            +
             | 
    
        data/spec/union_spec.rb
    CHANGED
    
    | @@ -93,7 +93,7 @@ describe 'Union' do | |
| 93 93 | 
             
                  lambda { union.some_characters }.should raise_error(RuntimeError, "some_characters is not union's set field.")
         | 
| 94 94 | 
             
                end
         | 
| 95 95 |  | 
| 96 | 
            -
                it "should serialize correctly" do
         | 
| 96 | 
            +
                it "should serialize to binary correctly" do
         | 
| 97 97 | 
             
                  trans = Thrift::MemoryBufferTransport.new
         | 
| 98 98 | 
             
                  proto = Thrift::BinaryProtocol.new(trans)
         | 
| 99 99 |  | 
| @@ -105,6 +105,18 @@ describe 'Union' do | |
| 105 105 | 
             
                  other_union.should == union
         | 
| 106 106 | 
             
                end
         | 
| 107 107 |  | 
| 108 | 
            +
                it "should serialize to json correctly" do
         | 
| 109 | 
            +
                  trans = Thrift::MemoryBufferTransport.new
         | 
| 110 | 
            +
                  proto = Thrift::JsonProtocol.new(trans)
         | 
| 111 | 
            +
             | 
| 112 | 
            +
                  union = SpecNamespace::My_union.new(:integer32, 25)
         | 
| 113 | 
            +
                  union.write(proto)
         | 
| 114 | 
            +
             | 
| 115 | 
            +
                  other_union = SpecNamespace::My_union.new(:integer32, 25)
         | 
| 116 | 
            +
                  other_union.read(proto)
         | 
| 117 | 
            +
                  other_union.should == union
         | 
| 118 | 
            +
                end
         | 
| 119 | 
            +
             | 
| 108 120 | 
             
                it "should raise when validating unset union" do
         | 
| 109 121 | 
             
                  union = SpecNamespace::My_union.new
         | 
| 110 122 | 
             
                  lambda { union.validate }.should raise_error(StandardError, "Union fields are not set.")
         | 
    
        metadata
    CHANGED
    
    | @@ -1,72 +1,106 @@ | |
| 1 | 
            -
            --- !ruby/object:Gem::Specification | 
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: thrift
         | 
| 3 | 
            -
            version: !ruby/object:Gem::Version | 
| 4 | 
            -
               | 
| 5 | 
            -
              segments: 
         | 
| 6 | 
            -
              - 0
         | 
| 7 | 
            -
              - 9
         | 
| 8 | 
            -
              - 0
         | 
| 9 | 
            -
              version: 0.9.0
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.9.1
         | 
| 10 5 | 
             
            platform: ruby
         | 
| 11 | 
            -
            authors: | 
| 6 | 
            +
            authors:
         | 
| 12 7 | 
             
            - Thrift Developers
         | 
| 13 8 | 
             
            autorequire: 
         | 
| 14 9 | 
             
            bindir: bin
         | 
| 15 10 | 
             
            cert_chain: []
         | 
| 16 | 
            -
             | 
| 17 | 
            -
             | 
| 18 | 
            -
             | 
| 19 | 
            -
             | 
| 20 | 
            -
             | 
| 21 | 
            -
             | 
| 22 | 
            -
                 | 
| 23 | 
            -
             | 
| 24 | 
            -
             | 
| 25 | 
            -
                    segments: 
         | 
| 26 | 
            -
                    - 0
         | 
| 27 | 
            -
                    version: "0"
         | 
| 28 | 
            -
              requirement: *id001
         | 
| 29 | 
            -
              name: rake
         | 
| 30 | 
            -
              prerelease: false
         | 
| 11 | 
            +
            date: 2013-08-22 00:00:00.000000000 Z
         | 
| 12 | 
            +
            dependencies:
         | 
| 13 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 14 | 
            +
              name: rspec
         | 
| 15 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 16 | 
            +
                requirements:
         | 
| 17 | 
            +
                - - ~>
         | 
| 18 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 19 | 
            +
                    version: 2.10.0
         | 
| 31 20 | 
             
              type: :development
         | 
| 32 | 
            -
             | 
| 33 | 
            -
              version_requirements:  | 
| 34 | 
            -
                requirements: | 
| 21 | 
            +
              prerelease: false
         | 
| 22 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 23 | 
            +
                requirements:
         | 
| 35 24 | 
             
                - - ~>
         | 
| 36 | 
            -
                  - !ruby/object:Gem::Version | 
| 37 | 
            -
                    segments: 
         | 
| 38 | 
            -
                    - 2
         | 
| 39 | 
            -
                    - 10
         | 
| 40 | 
            -
                    - 0
         | 
| 25 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 41 26 | 
             
                    version: 2.10.0
         | 
| 42 | 
            -
             | 
| 43 | 
            -
              name:  | 
| 27 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 28 | 
            +
              name: rack
         | 
| 29 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 30 | 
            +
                requirements:
         | 
| 31 | 
            +
                - - ~>
         | 
| 32 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 33 | 
            +
                    version: 1.5.2
         | 
| 34 | 
            +
              type: :development
         | 
| 35 | 
            +
              prerelease: false
         | 
| 36 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 37 | 
            +
                requirements:
         | 
| 38 | 
            +
                - - ~>
         | 
| 39 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 40 | 
            +
                    version: 1.5.2
         | 
| 41 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 42 | 
            +
              name: rack-test
         | 
| 43 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 44 | 
            +
                requirements:
         | 
| 45 | 
            +
                - - ~>
         | 
| 46 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 47 | 
            +
                    version: 0.6.2
         | 
| 48 | 
            +
              type: :development
         | 
| 44 49 | 
             
              prerelease: false
         | 
| 50 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ~>
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: 0.6.2
         | 
| 55 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 56 | 
            +
              name: thin
         | 
| 57 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 58 | 
            +
                requirements:
         | 
| 59 | 
            +
                - - ~>
         | 
| 60 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 61 | 
            +
                    version: 1.5.0
         | 
| 45 62 | 
             
              type: :development
         | 
| 46 | 
            -
            - !ruby/object:Gem::Dependency 
         | 
| 47 | 
            -
              version_requirements: &id003 !ruby/object:Gem::Requirement 
         | 
| 48 | 
            -
                requirements: 
         | 
| 49 | 
            -
                - - "="
         | 
| 50 | 
            -
                  - !ruby/object:Gem::Version 
         | 
| 51 | 
            -
                    segments: 
         | 
| 52 | 
            -
                    - 1
         | 
| 53 | 
            -
                    - 2
         | 
| 54 | 
            -
                    - 0
         | 
| 55 | 
            -
                    - pre
         | 
| 56 | 
            -
                    - 2
         | 
| 57 | 
            -
                    version: 1.2.0.pre2
         | 
| 58 | 
            -
              requirement: *id003
         | 
| 59 | 
            -
              name: mongrel
         | 
| 60 63 | 
             
              prerelease: false
         | 
| 64 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 65 | 
            +
                requirements:
         | 
| 66 | 
            +
                - - ~>
         | 
| 67 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 68 | 
            +
                    version: 1.5.0
         | 
| 69 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 70 | 
            +
              name: bundler
         | 
| 71 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 72 | 
            +
                requirements:
         | 
| 73 | 
            +
                - - ~>
         | 
| 74 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 75 | 
            +
                    version: 1.3.1
         | 
| 76 | 
            +
              type: :development
         | 
| 77 | 
            +
              prerelease: false
         | 
| 78 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 79 | 
            +
                requirements:
         | 
| 80 | 
            +
                - - ~>
         | 
| 81 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 82 | 
            +
                    version: 1.3.1
         | 
| 83 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 84 | 
            +
              name: rake
         | 
| 85 | 
            +
              requirement: !ruby/object:Gem::Requirement
         | 
| 86 | 
            +
                requirements:
         | 
| 87 | 
            +
                - - ! '>='
         | 
| 88 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 89 | 
            +
                    version: '0'
         | 
| 61 90 | 
             
              type: :development
         | 
| 91 | 
            +
              prerelease: false
         | 
| 92 | 
            +
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 93 | 
            +
                requirements:
         | 
| 94 | 
            +
                - - ! '>='
         | 
| 95 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 96 | 
            +
                    version: '0'
         | 
| 62 97 | 
             
            description: Ruby bindings for the Apache Thrift RPC system
         | 
| 63 | 
            -
            email: | 
| 98 | 
            +
            email:
         | 
| 64 99 | 
             
            - dev@thrift.apache.org
         | 
| 65 100 | 
             
            executables: []
         | 
| 66 | 
            -
             | 
| 67 | 
            -
            extensions: 
         | 
| 101 | 
            +
            extensions:
         | 
| 68 102 | 
             
            - ext/extconf.rb
         | 
| 69 | 
            -
            extra_rdoc_files: | 
| 103 | 
            +
            extra_rdoc_files:
         | 
| 70 104 | 
             
            - CHANGELOG
         | 
| 71 105 | 
             
            - README
         | 
| 72 106 | 
             
            - ext/binary_protocol_accelerated.c
         | 
| @@ -104,6 +138,7 @@ extra_rdoc_files: | |
| 104 138 | 
             
            - lib/thrift/server/mongrel_http_server.rb
         | 
| 105 139 | 
             
            - lib/thrift/server/nonblocking_server.rb
         | 
| 106 140 | 
             
            - lib/thrift/server/simple_server.rb
         | 
| 141 | 
            +
            - lib/thrift/server/thin_http_server.rb
         | 
| 107 142 | 
             
            - lib/thrift/server/thread_pool_server.rb
         | 
| 108 143 | 
             
            - lib/thrift/server/threaded_server.rb
         | 
| 109 144 | 
             
            - lib/thrift/struct.rb
         | 
| @@ -123,7 +158,7 @@ extra_rdoc_files: | |
| 123 158 | 
             
            - lib/thrift/types.rb
         | 
| 124 159 | 
             
            - lib/thrift/union.rb
         | 
| 125 160 | 
             
            - lib/thrift.rb
         | 
| 126 | 
            -
            files: | 
| 161 | 
            +
            files:
         | 
| 127 162 | 
             
            - lib/thrift/bytes.rb
         | 
| 128 163 | 
             
            - lib/thrift/client.rb
         | 
| 129 164 | 
             
            - lib/thrift/core_ext/fixnum.rb
         | 
| @@ -141,6 +176,7 @@ files: | |
| 141 176 | 
             
            - lib/thrift/server/mongrel_http_server.rb
         | 
| 142 177 | 
             
            - lib/thrift/server/nonblocking_server.rb
         | 
| 143 178 | 
             
            - lib/thrift/server/simple_server.rb
         | 
| 179 | 
            +
            - lib/thrift/server/thin_http_server.rb
         | 
| 144 180 | 
             
            - lib/thrift/server/thread_pool_server.rb
         | 
| 145 181 | 
             
            - lib/thrift/server/threaded_server.rb
         | 
| 146 182 | 
             
            - lib/thrift/struct.rb
         | 
| @@ -169,12 +205,8 @@ files: | |
| 169 205 | 
             
            - spec/client_spec.rb
         | 
| 170 206 | 
             
            - spec/compact_protocol_spec.rb
         | 
| 171 207 | 
             
            - spec/exception_spec.rb
         | 
| 172 | 
            -
            - spec/gen-rb/nonblocking_service.rb
         | 
| 173 | 
            -
            - spec/gen-rb/thrift_spec_constants.rb
         | 
| 174 | 
            -
            - spec/gen-rb/thrift_spec_types.rb
         | 
| 175 208 | 
             
            - spec/http_client_spec.rb
         | 
| 176 209 | 
             
            - spec/json_protocol_spec.rb
         | 
| 177 | 
            -
            - spec/mongrel_http_server_spec.rb
         | 
| 178 210 | 
             
            - spec/nonblocking_server_spec.rb
         | 
| 179 211 | 
             
            - spec/processor_spec.rb
         | 
| 180 212 | 
             
            - spec/serializer_spec.rb
         | 
| @@ -185,6 +217,7 @@ files: | |
| 185 217 | 
             
            - spec/spec_helper.rb
         | 
| 186 218 | 
             
            - spec/struct_nested_containers_spec.rb
         | 
| 187 219 | 
             
            - spec/struct_spec.rb
         | 
| 220 | 
            +
            - spec/thin_http_server_spec.rb
         | 
| 188 221 | 
             
            - spec/ThriftSpec.thrift
         | 
| 189 222 | 
             
            - spec/types_spec.rb
         | 
| 190 223 | 
             
            - spec/union_spec.rb
         | 
| @@ -209,50 +242,43 @@ files: | |
| 209 242 | 
             
            - ext/strlcpy.h
         | 
| 210 243 | 
             
            - ext/struct.h
         | 
| 211 244 | 
             
            - ext/extconf.rb
         | 
| 212 | 
            -
             | 
| 245 | 
            +
            - benchmark/benchmark.rb
         | 
| 246 | 
            +
            - benchmark/Benchmark.thrift
         | 
| 247 | 
            +
            - benchmark/client.rb
         | 
| 248 | 
            +
            - benchmark/server.rb
         | 
| 249 | 
            +
            - benchmark/thin_server.rb
         | 
| 213 250 | 
             
            homepage: http://thrift.apache.org
         | 
| 214 | 
            -
            licenses: | 
| 251 | 
            +
            licenses:
         | 
| 215 252 | 
             
            - Apache 2.0
         | 
| 253 | 
            +
            metadata: {}
         | 
| 216 254 | 
             
            post_install_message: 
         | 
| 217 | 
            -
            rdoc_options: | 
| 255 | 
            +
            rdoc_options:
         | 
| 218 256 | 
             
            - --line-numbers
         | 
| 219 257 | 
             
            - --inline-source
         | 
| 220 258 | 
             
            - --title
         | 
| 221 259 | 
             
            - Thrift
         | 
| 222 260 | 
             
            - --main
         | 
| 223 261 | 
             
            - README
         | 
| 224 | 
            -
            require_paths: | 
| 262 | 
            +
            require_paths:
         | 
| 225 263 | 
             
            - lib
         | 
| 226 264 | 
             
            - ext
         | 
| 227 | 
            -
            required_ruby_version: !ruby/object:Gem::Requirement | 
| 228 | 
            -
              requirements: | 
| 229 | 
            -
              - -  | 
| 230 | 
            -
                - !ruby/object:Gem::Version | 
| 231 | 
            -
                   | 
| 232 | 
            -
             | 
| 233 | 
            -
             | 
| 234 | 
            -
             | 
| 235 | 
            -
             | 
| 236 | 
            -
             | 
| 237 | 
            -
                - !ruby/object:Gem::Version 
         | 
| 238 | 
            -
                  segments: 
         | 
| 239 | 
            -
                  - 0
         | 
| 240 | 
            -
                  version: "0"
         | 
| 265 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 266 | 
            +
              requirements:
         | 
| 267 | 
            +
              - - ! '>='
         | 
| 268 | 
            +
                - !ruby/object:Gem::Version
         | 
| 269 | 
            +
                  version: '0'
         | 
| 270 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 271 | 
            +
              requirements:
         | 
| 272 | 
            +
              - - ! '>='
         | 
| 273 | 
            +
                - !ruby/object:Gem::Version
         | 
| 274 | 
            +
                  version: '0'
         | 
| 241 275 | 
             
            requirements: []
         | 
| 242 | 
            -
             | 
| 243 276 | 
             
            rubyforge_project: thrift
         | 
| 244 | 
            -
            rubygems_version:  | 
| 277 | 
            +
            rubygems_version: 2.0.6
         | 
| 245 278 | 
             
            signing_key: 
         | 
| 246 | 
            -
            specification_version:  | 
| 279 | 
            +
            specification_version: 4
         | 
| 247 280 | 
             
            summary: Ruby bindings for Apache Thrift
         | 
| 248 | 
            -
            test_files: | 
| 249 | 
            -
            - test/debug_proto/gen-rb/debug_proto_test_constants.rb
         | 
| 250 | 
            -
            - test/debug_proto/gen-rb/debug_proto_test_types.rb
         | 
| 251 | 
            -
            - test/debug_proto/gen-rb/empty_service.rb
         | 
| 252 | 
            -
            - test/debug_proto/gen-rb/inherited.rb
         | 
| 253 | 
            -
            - test/debug_proto/gen-rb/reverse_order_service.rb
         | 
| 254 | 
            -
            - test/debug_proto/gen-rb/service_for_exception_with_a_map.rb
         | 
| 255 | 
            -
            - test/debug_proto/gen-rb/srv.rb
         | 
| 281 | 
            +
            test_files:
         | 
| 256 282 | 
             
            - spec/base_protocol_spec.rb
         | 
| 257 283 | 
             
            - spec/base_transport_spec.rb
         | 
| 258 284 | 
             
            - spec/binary_protocol_accelerated_spec.rb
         | 
| @@ -262,12 +288,8 @@ test_files: | |
| 262 288 | 
             
            - spec/client_spec.rb
         | 
| 263 289 | 
             
            - spec/compact_protocol_spec.rb
         | 
| 264 290 | 
             
            - spec/exception_spec.rb
         | 
| 265 | 
            -
            - spec/gen-rb/nonblocking_service.rb
         | 
| 266 | 
            -
            - spec/gen-rb/thrift_spec_constants.rb
         | 
| 267 | 
            -
            - spec/gen-rb/thrift_spec_types.rb
         | 
| 268 291 | 
             
            - spec/http_client_spec.rb
         | 
| 269 292 | 
             
            - spec/json_protocol_spec.rb
         | 
| 270 | 
            -
            - spec/mongrel_http_server_spec.rb
         | 
| 271 293 | 
             
            - spec/nonblocking_server_spec.rb
         | 
| 272 294 | 
             
            - spec/processor_spec.rb
         | 
| 273 295 | 
             
            - spec/serializer_spec.rb
         | 
| @@ -278,6 +300,7 @@ test_files: | |
| 278 300 | 
             
            - spec/spec_helper.rb
         | 
| 279 301 | 
             
            - spec/struct_nested_containers_spec.rb
         | 
| 280 302 | 
             
            - spec/struct_spec.rb
         | 
| 303 | 
            +
            - spec/thin_http_server_spec.rb
         | 
| 281 304 | 
             
            - spec/ThriftSpec.thrift
         | 
| 282 305 | 
             
            - spec/types_spec.rb
         | 
| 283 306 | 
             
            - spec/union_spec.rb
         | 
| @@ -285,8 +308,5 @@ test_files: | |
| 285 308 | 
             
            - benchmark/benchmark.rb
         | 
| 286 309 | 
             
            - benchmark/Benchmark.thrift
         | 
| 287 310 | 
             
            - benchmark/client.rb
         | 
| 288 | 
            -
            - benchmark/gen-rb/benchmark_constants.rb
         | 
| 289 | 
            -
            - benchmark/gen-rb/benchmark_service.rb
         | 
| 290 | 
            -
            - benchmark/gen-rb/benchmark_types.rb
         | 
| 291 311 | 
             
            - benchmark/server.rb
         | 
| 292 312 | 
             
            - benchmark/thin_server.rb
         |