Sha256: 13bf1e27350892e326a76800a204bcad1abb883c9e207eb242ccfa43759f1926

Contents?: true

Size: 1.78 KB

Versions: 7

Compression:

Stored size: 1.78 KB

Contents

shared_examples_for "a method with a GRPC timeout" do |stub_class, method_name, expectation_target, *args|
  include GRPC::Core::TimeConsts

  context "#{stub_class} timeouts for #{method_name}" do
    let(:handler) { local_stub(stub_class, 5) }
    let(:client_stub) { handler.instance_variable_get "@stub"}
    it 'uses the timeout value' do
      deadline = from_relative_time(5)
      allow(handler).to receive(:deadline).with(nil).and_return(deadline)
      allow(handler).to receive(:deadline).with(5).and_return(deadline)

      expect(client_stub).to receive(expectation_target).with(anything, hash_including(deadline: deadline)).and_call_original

      handler.public_send(method_name, *args)
    end

    it "can have a seperate timeout passed in" do
      deadline = from_relative_time(1)
      allow(handler).to receive(:deadline).with(1).and_return(deadline)
      expect(client_stub).to receive(expectation_target).with(anything, hash_including(deadline: deadline)).and_call_original
      handler.public_send(method_name, *args, timeout: 1)
    end

    it 'raises a GRPC:DeadlineExceeded if the request takes too long' do
      handler = local_stub(stub_class, 0)
      expect {handler.public_send(method_name, *args)}.to raise_error(GRPC::DeadlineExceeded)
    end
  end
end

shared_examples_for "Etcdv3 instance using a timeout" do |command, *args|
  it "raises a GRPC::DeadlineExceeded exception when it takes too long"  do
    expect do
      test_args = args.dup
      test_kwargs = {timeout: 0}
      conn.public_send(command, *test_args, **test_kwargs)
    end.to raise_exception(GRPC::DeadlineExceeded)
  end
  it "accepts a timeout" do
    test_args = args.dup
    test_kwargs = {timeout: 10}
    expect{ conn.public_send(command, *test_args, **test_kwargs) }.to_not raise_exception
  end
end

Version data entries

7 entries across 7 versions & 2 rubygems

Version Path
rubypitaya-3.12.5 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/etcdv3-0.11.5/spec/helpers/shared_examples_for_timeout.rb
etcdv3-0.11.6 spec/helpers/shared_examples_for_timeout.rb
rubypitaya-3.12.4 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/etcdv3-0.11.5/spec/helpers/shared_examples_for_timeout.rb
rubypitaya-3.12.3 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/etcdv3-0.11.5/spec/helpers/shared_examples_for_timeout.rb
rubypitaya-3.12.2 ./lib/rubypitaya/app-template/vendor/bundle/ruby/3.1.0/gems/etcdv3-0.11.5/spec/helpers/shared_examples_for_timeout.rb
etcdv3-0.11.5 spec/helpers/shared_examples_for_timeout.rb
etcdv3-0.11.4 spec/helpers/shared_examples_for_timeout.rb