Skip to content

Commit

Permalink
Merge branch 'sqrrrl-master'
Browse files Browse the repository at this point in the history
  • Loading branch information
sqrrrl committed Apr 3, 2017
2 parents 8ef5c84 + 48916bf commit c645e7d
Show file tree
Hide file tree
Showing 5 changed files with 40 additions and 4 deletions.
23 changes: 19 additions & 4 deletions lib/google/apis/core/base_service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -164,10 +164,10 @@ def batch(options = nil)
batch_command.options = request_options.merge(options)
apply_command_defaults(batch_command)
begin
Thread.current[:google_api_batch] = batch_command
start_batch(batch_command)
yield self
ensure
Thread.current[:google_api_batch] = nil
end_batch
end
batch_command.execute(client)
end
Expand Down Expand Up @@ -196,10 +196,10 @@ def batch_upload(options = nil)
batch_command.options = request_options.merge(options)
apply_command_defaults(batch_command)
begin
Thread.current[:google_api_batch] = batch_command
start_batch(batch_command)
yield self
ensure
Thread.current[:google_api_batch] = nil
end_batch
end
batch_command.execute(client)
end
Expand Down Expand Up @@ -347,6 +347,7 @@ def make_simple_command(method, path, options)
def execute_or_queue_command(command, &callback)
batch_command = current_batch
if batch_command
fail "Can not combine services in a batch" if Thread.current[:google_api_batch_service] != self
batch_command.add(command, &callback)
nil
else
Expand Down Expand Up @@ -374,6 +375,20 @@ def batch?
!current_batch.nil?
end

# Start a new thread-local batch context
# @param [Google::Apis::Core::BatchCommand] cmd
def start_batch(cmd)
fail "Batch already in progress" if batch?
Thread.current[:google_api_batch] = cmd
Thread.current[:google_api_batch_service] = self
end

# Clear thread-local batch context
def end_batch
Thread.current[:google_api_batch] = nil
Thread.current[:google_api_batch_service] = nil
end

# Create a new HTTP client
# @return [HTTPClient]
def new_client
Expand Down
1 change: 1 addition & 0 deletions lib/google/apis/generator/templates/service.rb.tmpl
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@ module Google
<% end -%>
def initialize
super('<%= api.root_url %>', '<%= api.service_path %>')
@batch_path = '<%= api.batch_path %>'
end
<% for api_method in api.all_methods -%>
<%= indent(include('method', :api_method => api_method, :api => api), 8) -%>
Expand Down
1 change: 1 addition & 0 deletions spec/fixtures/files/test_api.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"basePath": "/test/",
"rootUrl": "https://www.googleapis.com/",
"servicePath": "test/v1/",
"batchPath": "batch/test/v1",
"rpcPath": "/rpc",
"auth": {
"oauth2": {
Expand Down
14 changes: 14 additions & 0 deletions spec/google/apis/core/service_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,20 @@
end
end.to raise_error(Google::Apis::ClientError)
end

it 'should prevent mixing services in batch' do
expect do |b|
service.batch do |service|
command = service.send(:make_simple_command, :get, 'zoo/animals', {})
service.send(:execute_or_queue_command, command, &b)

service2 = service.dup
command2 = service.send(:make_simple_command, :get, 'zoo/animals', {})
service2.send(:execute_or_queue_command, command2, &b)
end
end.to raise_error

end
end

context 'with batch uploads' do
Expand Down
5 changes: 5 additions & 0 deletions spec/google/apis/generator/generator_spec.rb
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
puts generator.dump_api_names
tempdir = Dir.mktmpdir
generated_files.each do |key, content|
puts content
path = File.join(tempdir, key)
FileUtils.mkdir_p(File.dirname(path))
File.open(path, 'w') do |f|
Expand All @@ -47,6 +48,10 @@
expect(service.root_url.to_s).to eql('https://www.googleapis.com/')
end

it 'should set the batch path' do
expect(service.batch_path).to eql('batch/test/v1')
end

it 'should define global methods from discovery' do
expect(service.method(:query)).to_not be_nil
end
Expand Down

0 comments on commit c645e7d

Please sign in to comment.