|
2 | 2 |
|
3 | 3 | require 'spec_helper' |
4 | 4 |
|
5 | | -require 'opentelemetry' |
| 5 | +require 'opentelemetry-sdk' |
6 | 6 |
|
| 7 | +# rubocop:disable RSpec/VerifiedDoubles |
7 | 8 | describe Mongo::Tracing::OpenTelemetry::CommandTracer do |
8 | | - let(:otel_tracer) { double('OpenTelemetry::Trace::Tracer') } |
9 | | - let(:parent_tracer) { double('Mongo::Tracing::OpenTelemetry::Tracer') } |
| 9 | + let(:otel_tracer) { instance_double(OpenTelemetry::Trace::Tracer) } |
| 10 | + let(:parent_tracer) { instance_double(Mongo::Tracing::OpenTelemetry::Tracer) } |
10 | 11 | let(:query_text_max_length) { 0 } |
11 | 12 | let(:command_tracer) do |
12 | 13 | described_class.new(otel_tracer, parent_tracer, query_text_max_length: query_text_max_length) |
13 | 14 | end |
14 | | - let(:lsid_value) { "55dcab94-2c82-445a-a7f2-5ce50213b753" } |
| 15 | + let(:lsid_value) { '55dcab94-2c82-445a-a7f2-5ce50213b753' } |
15 | 16 |
|
16 | 17 | let(:connection) do |
17 | | - double('Mongo::Server::Connection', |
18 | | - id: 123, |
19 | | - address: double('Address', host: 'localhost', port: 27_017), |
20 | | - transport: :tcp, |
21 | | - server: double('Server', |
22 | | - description: double('Description', server_connection_id: 456))) |
| 18 | + instance_double(Mongo::Server::Connection, |
| 19 | + id: 123, |
| 20 | + address: instance_double(Mongo::Address, host: 'localhost', port: 27_017), |
| 21 | + transport: :tcp, |
| 22 | + server: instance_double(Mongo::Server, |
| 23 | + description: instance_double(Mongo::Server::Description, |
| 24 | + server_connection_id: 456))) |
23 | 25 | end |
24 | 26 |
|
25 | 27 | let(:message) do |
26 | | - double('Mongo::Protocol::Message', |
27 | | - documents: [ document ], |
28 | | - payload: { 'command' => document }) |
| 28 | + double( |
| 29 | + 'message', |
| 30 | + documents: [ document ], |
| 31 | + payload: { 'command' => document } |
| 32 | + ) |
29 | 33 | end |
30 | 34 |
|
31 | 35 | let(:document) do |
|
37 | 41 | } |
38 | 42 | end |
39 | 43 |
|
40 | | - let(:operation_context) { double('Mongo::Operation::Context') } |
| 44 | + let(:operation_context) { instance_double(Mongo::Operation::Context) } |
41 | 45 |
|
42 | 46 | describe '#initialize' do |
43 | 47 | it 'sets the otel_tracer' do |
|
62 | 66 | end |
63 | 67 |
|
64 | 68 | describe '#trace_command' do |
65 | | - let(:span) { double('OpenTelemetry::Trace::Span', finish: nil, set_attribute: nil) } |
66 | | - let(:context) { double('OpenTelemetry::Context') } |
67 | | - let(:result) { double('Result', has_cursor_id?: false, successful?: true) } |
| 69 | + let(:span) { instance_double(OpenTelemetry::Trace::Span, finish: nil, set_attribute: nil) } |
| 70 | + let(:context) { instance_double(Mongo::Operation::Context) } |
| 71 | + let(:result) { instance_double(Mongo::Operation::Result, has_cursor_id?: false, successful?: true) } |
68 | 72 |
|
69 | 73 | before do |
70 | 74 | allow(otel_tracer).to receive(:start_span).and_return(span) |
|
100 | 104 |
|
101 | 105 | context 'when result has cursor_id' do |
102 | 106 | let(:result) do |
103 | | - double('Result', has_cursor_id?: true, cursor_id: 789, successful?: true) |
| 107 | + instance_double(Mongo::Operation::Result, has_cursor_id?: true, cursor_id: 789, successful?: true) |
104 | 108 | end |
105 | 109 |
|
106 | 110 | it 'sets the cursor_id attribute' do |
|
111 | 115 |
|
112 | 116 | context 'when result has zero cursor_id' do |
113 | 117 | let(:result) do |
114 | | - double('Result', has_cursor_id?: true, cursor_id: 0, successful?: true) |
| 118 | + instance_double(Mongo::Operation::Result, has_cursor_id?: true, cursor_id: 0, successful?: true) |
115 | 119 | end |
116 | 120 |
|
117 | 121 | it 'does not set the cursor_id attribute' do |
|
251 | 255 | context 'with getMore command' do |
252 | 256 | let(:document) do |
253 | 257 | { |
254 | | - 'getMore' => double('BSON::Int64', value: 999), |
| 258 | + 'getMore' => BSON::Int64.new(999), |
255 | 259 | 'collection' => 'users', |
256 | 260 | '$db' => 'test_db' |
257 | 261 | } |
|
267 | 271 | { |
268 | 272 | 'find' => 'users', |
269 | 273 | '$db' => 'test_db', |
270 | | - 'txnNumber' => double('BSON::Int64', value: 42) |
| 274 | + 'txnNumber' => BSON::Int64.new(42) |
271 | 275 | } |
272 | 276 | end |
273 | 277 |
|
|
390 | 394 | subject { command_tracer.send(:cursor_id, message) } |
391 | 395 |
|
392 | 396 | context 'with getMore command' do |
393 | | - let(:document) { { 'getMore' => double('BSON::Int64', value: 999) } } |
| 397 | + let(:document) { { 'getMore' => BSON::Int64.new(999) } } |
394 | 398 |
|
395 | 399 | it 'returns the cursor ID' do |
396 | 400 | expect(subject).to eq(999) |
|
430 | 434 | subject { command_tracer.send(:txn_number, message) } |
431 | 435 |
|
432 | 436 | context 'with txnNumber present' do |
433 | | - let(:document) { { 'find' => 'users', 'txnNumber' => double('BSON::Int64', value: 42) } } |
| 437 | + let(:document) { { 'find' => 'users', 'txnNumber' => BSON::Int64.new(42) } } |
434 | 438 |
|
435 | 439 | it 'returns the transaction number' do |
436 | 440 | expect(subject).to eq(42) |
|
509 | 513 | end |
510 | 514 | end |
511 | 515 | end |
| 516 | +# rubocop:enable RSpec/VerifiedDoubles |
0 commit comments