|
105 | 105 | end |
106 | 106 |
|
107 | 107 | describe '.attributes' do |
108 | | - let(:attributes) { { 'db.statement' => 'foobar' } } |
| 108 | + let(:attributes) { { 'db.query.text' => 'foobar' } } |
109 | 109 |
|
110 | 110 | it 'returns an empty hash by default' do |
111 | 111 | _(OpenTelemetry::Instrumentation::Trilogy.attributes).must_equal({}) |
|
139 | 139 |
|
140 | 140 | _(span.name).must_equal 'select' |
141 | 141 | _(span.attributes['db.namespace']).must_equal(database) |
142 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 142 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
143 | 143 | _(span.attributes['db.query.text']).must_equal 'SELECT ?' |
144 | 144 | _(span.attributes['server.address']).must_equal(host) |
145 | 145 | end |
|
150 | 150 |
|
151 | 151 | _(span.name).must_equal 'explain' |
152 | 152 | _(span.attributes['db.namespace']).must_equal(database) |
153 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 153 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
154 | 154 | _(span.attributes['db.query.text']).must_equal 'EXPLAIN SELECT ?' |
155 | 155 | end |
156 | 156 |
|
|
161 | 161 |
|
162 | 162 | _(span.name).must_equal 'mysql' |
163 | 163 | _(span.attributes['db.namespace']).must_equal(database) |
164 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 164 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
165 | 165 | _(span.attributes['db.query.text']).must_equal 'DESELECT ?' |
166 | 166 | end |
167 | 167 | end |
|
174 | 174 |
|
175 | 175 | _(span.name).must_equal 'connect' |
176 | 176 | _(span.attributes['db.namespace']).must_equal(database) |
177 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 177 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
178 | 178 | _(span.attributes['server.address']).must_equal(host) |
179 | 179 | end |
180 | 180 | end |
|
189 | 189 |
|
190 | 190 | _(span.name).must_equal 'ping' |
191 | 191 | _(span.attributes['db.namespace']).must_equal(database) |
192 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 192 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
193 | 193 | end |
194 | 194 | end |
195 | 195 |
|
|
199 | 199 |
|
200 | 200 | _(span.name).must_equal 'select' |
201 | 201 | _(span.attributes['db.namespace']).must_equal(database) |
202 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 202 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
203 | 203 | _(span.attributes['db.query.text']).must_equal 'select @@hostname' |
204 | 204 | _(span.attributes['server.address']).must_equal(host) |
205 | 205 |
|
|
209 | 209 |
|
210 | 210 | _(last_span.name).must_equal 'select' |
211 | 211 | _(span.attributes['db.namespace']).must_equal(database) |
212 | | - _(last_span.attributes['db.system.name']).must_equal 'mysql' |
| 212 | + _(last_span.attributes['db.system.name.name']).must_equal 'mysql' |
213 | 213 | _(last_span.attributes['db.query.text']).must_equal 'SELECT ?' |
214 | 214 | _(last_span.attributes['server.address']).must_equal(host) |
215 | 215 | end |
|
230 | 230 |
|
231 | 231 | _(span.name).must_equal 'select' |
232 | 232 | _(span.attributes['db.namespace']).must_equal(database) |
233 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 233 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
234 | 234 | _(span.attributes['db.query.text']).must_equal 'select @@hostname' |
235 | 235 | _(span.attributes['server.address']).must_match(/sock/) |
236 | 236 |
|
|
240 | 240 |
|
241 | 241 | _(last_span.name).must_equal 'select' |
242 | 242 | _(span.attributes['db.namespace']).must_equal(database) |
243 | | - _(last_span.attributes['db.system.name']).must_equal 'mysql' |
| 243 | + _(last_span.attributes['db.system.name.name']).must_equal 'mysql' |
244 | 244 | _(last_span.attributes['db.query.text']).must_equal 'SELECT ?' |
245 | 245 | _(last_span.attributes['server.address']).wont_equal(/sock/) |
246 | 246 | _(last_span.attributes['server.address']).must_equal client.connected_host |
|
255 | 255 |
|
256 | 256 | _(span.name).must_equal 'select' |
257 | 257 | _(span.attributes['db.namespace']).must_equal(database) |
258 | | - _(span.attributes['db.system.name']).must_equal 'mysql' |
| 258 | + _(span.attributes['db.system.name.name']).must_equal 'mysql' |
259 | 259 | _(span.attributes['db.query.text']).must_equal 'SELECT INVALID' |
260 | 260 |
|
261 | 261 | _(span.status.code).must_equal( |
|
285 | 285 | describe 'when db_statement is set to obfuscate' do |
286 | 286 | let(:config) { { db_statement: :obfuscate } } |
287 | 287 |
|
288 | | - it 'obfuscates SQL parameters in db.statement' do |
| 288 | + it 'obfuscates SQL parameters in db.query.text' do |
289 | 289 | sql = 'SELECT * from users where users.id = 1 and users.email = "[email protected]"' |
290 | 290 | obfuscated_sql = 'SELECT * from users where users.id = ? and users.email = ?' |
291 | 291 | expect do |
|
296 | 296 | _(span.attributes['db.query.text']).must_equal obfuscated_sql |
297 | 297 | end |
298 | 298 |
|
299 | | - it 'encodes invalid byte sequences for db.statement' do |
| 299 | + it 'encodes invalid byte sequences for db.query.text' do |
300 | 300 | # \255 is off-limits https://en.wikipedia.org/wiki/UTF-8#Codepage_layout |
301 | 301 | sql = "SELECT * from users where users.id = 1 and users.email = '[email protected]\255'" |
302 | 302 | obfuscated_sql = 'SELECT * from users where users.id = ? and users.email = ?' |
|
319 | 319 | client.query(sql) |
320 | 320 | end.must_raise Trilogy::Error |
321 | 321 |
|
322 | | - _(span.attributes['db.statement']).must_equal obfuscated_sql |
| 322 | + _(span.attributes['db.query.text']).must_equal obfuscated_sql |
323 | 323 | end |
324 | 324 | end |
325 | 325 | end |
|
405 | 405 | describe 'when db_statement is set to omit' do |
406 | 406 | let(:config) { { db_statement: :omit } } |
407 | 407 |
|
408 | | - it 'does not include SQL statement as db.statement attribute' do |
| 408 | + it 'does not include SQL statement as db.query.text attribute' do |
409 | 409 | sql = 'SELECT * from users where users.id = 1 and users.email = "[email protected]"' |
410 | 410 | expect do |
411 | 411 | client.query(sql) |
|
418 | 418 |
|
419 | 419 | describe 'when db_statement is configured via environment variable' do |
420 | 420 | describe 'when db_statement set as omit' do |
421 | | - it 'omits db.statement attribute' do |
| 421 | + it 'omits db.query.text attribute' do |
422 | 422 | OpenTelemetry::TestHelpers.with_env('OTEL_RUBY_INSTRUMENTATION_TRILOGY_CONFIG_OPTS' => 'db_statement=omit;') do |
423 | 423 | instrumentation.instance_variable_set(:@installed, false) |
424 | 424 | instrumentation.install |
|
427 | 427 | client.query(sql) |
428 | 428 | end.must_raise Trilogy::Error |
429 | 429 |
|
430 | | - _(span.attributes['db.system']).must_equal 'mysql' |
| 430 | + _(span.attributes['db.system.name']).must_equal 'mysql' |
431 | 431 | _(span.name).must_equal 'select' |
432 | 432 | _(span.attributes['db.query.text']).must_be_nil |
433 | 433 | end |
434 | 434 | end |
435 | 435 | end |
436 | 436 |
|
437 | 437 | describe 'when db_statement set as obfuscate' do |
438 | | - it 'obfuscates SQL parameters in db.statement' do |
| 438 | + it 'obfuscates SQL parameters in db.query.text' do |
439 | 439 | OpenTelemetry::TestHelpers.with_env('OTEL_RUBY_INSTRUMENTATION_TRILOGY_CONFIG_OPTS' => 'db_statement=obfuscate;') do |
440 | 440 | instrumentation.instance_variable_set(:@installed, false) |
441 | 441 | instrumentation.install |
|
446 | 446 | client.query(sql) |
447 | 447 | end.must_raise Trilogy::Error |
448 | 448 |
|
449 | | - _(span.attributes['db.system']).must_equal 'mysql' |
| 449 | + _(span.attributes['db.system.name']).must_equal 'mysql' |
450 | 450 | _(span.name).must_equal 'select' |
451 | | - _(span.attributes['db.statement']).must_equal obfuscated_sql |
| 451 | + _(span.attributes['db.query.text']).must_equal obfuscated_sql |
452 | 452 | end |
453 | 453 | end |
454 | 454 | end |
455 | 455 |
|
456 | 456 | describe 'when db_statement is set differently than local config' do |
457 | 457 | let(:config) { { db_statement: :omit } } |
458 | 458 |
|
459 | | - it 'overrides local config and obfuscates SQL parameters in db.statement' do |
| 459 | + it 'overrides local config and obfuscates SQL parameters in db.query.text' do |
460 | 460 | OpenTelemetry::TestHelpers.with_env('OTEL_RUBY_INSTRUMENTATION_TRILOGY_CONFIG_OPTS' => 'db_statement=obfuscate') do |
461 | 461 | instrumentation.instance_variable_set(:@installed, false) |
462 | 462 | instrumentation.install |
|
467 | 467 | client.query(sql) |
468 | 468 | end.must_raise Trilogy::Error |
469 | 469 |
|
470 | | - _(span.attributes['db.system']).must_equal 'mysql' |
| 470 | + _(span.attributes['db.system.name']).must_equal 'mysql' |
471 | 471 | _(span.name).must_equal 'select' |
472 | | - _(span.attributes['db.statement']).must_equal obfuscated_sql |
| 472 | + _(span.attributes['db.query.text']).must_equal obfuscated_sql |
473 | 473 | end |
474 | 474 | end |
475 | 475 | end |
|
546 | 546 | instrumentation.install |
547 | 547 |
|
548 | 548 | sql = "SELECT * from users where users.id = 1 and users.email = '[email protected]'" |
549 | | - OpenTelemetry::Instrumentation::Trilogy.with_attributes('db.operation' => 'foo') do |
| 549 | + OpenTelemetry::Instrumentation::Trilogy.with_attributes('db.operation.name' => 'foo') do |
550 | 550 | expect do |
551 | 551 | client.query(sql) |
552 | 552 | end.must_raise Trilogy::Error |
|
556 | 556 | end |
557 | 557 | end |
558 | 558 |
|
559 | | - it 'sets span name to db name when db.operation is not set' do |
| 559 | + it 'sets span name to db name when db.operation.name is not set' do |
560 | 560 | OpenTelemetry::TestHelpers.with_env('OTEL_RUBY_INSTRUMENTATION_TRILOGY_CONFIG_OPTS' => 'span_name=db_operation_and_name') do |
561 | 561 | instrumentation.instance_variable_set(:@installed, false) |
562 | 562 | instrumentation.install |
|
579 | 579 | instrumentation.install |
580 | 580 |
|
581 | 581 | sql = "SELECT * from users where users.id = 1 and users.email = '[email protected]'" |
582 | | - OpenTelemetry::Instrumentation::Trilogy.with_attributes('db.operation' => 'foo') do |
| 582 | + OpenTelemetry::Instrumentation::Trilogy.with_attributes('db.operation.name' => 'foo') do |
583 | 583 | expect do |
584 | 584 | client.query(sql) |
585 | 585 | end.must_raise Trilogy::Error |
|
589 | 589 | end |
590 | 590 | end |
591 | 591 |
|
592 | | - it 'sets span name to mysql when db.operation is not set' do |
| 592 | + it 'sets span name to mysql when db.operation.name is not set' do |
593 | 593 | OpenTelemetry::TestHelpers.with_env('OTEL_RUBY_INSTRUMENTATION_TRILOGY_CONFIG_OPTS' => 'span_name=db_operation_and_name') do |
594 | 594 | instrumentation.instance_variable_set(:@installed, false) |
595 | 595 | instrumentation.install |
|
0 commit comments