Skip to content

fix: updated span kind to CLIENT for ack and modack rpc spans #2029

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Open
wants to merge 3 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions src/telemetry-tracing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -515,7 +515,7 @@ export class PubsubSpans {
const span: Span = getTracer().startSpan(
`${subInfo.subId ?? subInfo.subName} ack`,
{
kind: SpanKind.CONSUMER,
kind: SpanKind.CLIENT,
attributes: spanAttributes,
links,
},
Expand Down Expand Up @@ -563,7 +563,7 @@ export class PubsubSpans {
const span: Span = getTracer().startSpan(
`${subInfo.subId ?? subInfo.subName} ${type}`,
{
kind: SpanKind.CONSUMER,
kind: SpanKind.CLIENT,
attributes: spanAttributes,
links,
},
Expand Down
82 changes: 82 additions & 0 deletions test/telemetry-tracing.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
import {SpanKind} from '@opentelemetry/api';
import sinon = require('sinon');
import {PubsubMessage} from '../src/publisher';
import {Duration} from '../src/temporal'

Check failure on line 26 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `;`

describe('OpenTelemetryTracer', () => {
beforeEach(() => {
Expand Down Expand Up @@ -287,6 +288,7 @@
firstSpan.attributes['messaging.destination.name'],
tests.topicInfo.topicId,
);
assert.strictEqual(firstSpan.attributes['messaging.operation'], 'create')

Check failure on line 291 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `;`
assert.strictEqual(
firstSpan.attributes['messaging.system'],
'gcp_pubsub',
Expand Down Expand Up @@ -342,6 +344,7 @@
assert.ok(parentReadSpan && childReadSpan);

assert.strictEqual(childReadSpan.name, 'sub subscribe');
assert.strictEqual(childReadSpan.attributes['messaging.operation'], 'receive')

Check failure on line 347 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Replace `childReadSpan.attributes['messaging.operation'],·'receive')` with `⏎········childReadSpan.attributes['messaging.operation'],⏎········'receive',⏎······);`
assert.strictEqual(
childReadSpan.attributes['messaging.destination.name'],
'sub',
Expand Down Expand Up @@ -380,5 +383,84 @@
assert.strictEqual(publishReadSpan.links.length, 1);
assert.strictEqual(childReadSpan.links.length, 1);
});

it('creates ack rpc span', () => {
const message: PubsubMessage = {};
const topicName = 'projects/test/topics/topicfoo';
const subName = 'subTest'

Check failure on line 390 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `;`
const producerSpan = otel.PubsubSpans.createPublisherSpan(
message,
topicName,
'test'

Check failure on line 394 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `,`
) as trace.Span;
const span = otel.PubsubSpans.createAckRpcSpan(
[producerSpan],
subName,
'tests'

Check failure on line 399 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `,`
);
assert.ok(span);
producerSpan.end();
span.end();

const spans = exporter.getFinishedSpans();
assert.strictEqual(spans.length, 2);

const firstSpan = spans.pop();
assert.ok(firstSpan);
assert.strictEqual(firstSpan.kind, SpanKind.CLIENT);
assert.strictEqual(firstSpan.name, `${subName} ack`);
assert.strictEqual(
firstSpan.attributes['messaging.destination.name'],
subName

Check failure on line 414 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `,`
);
assert.strictEqual(firstSpan.attributes['messaging.operation'], 'receive');

Check failure on line 416 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Replace `firstSpan.attributes['messaging.operation'],·'receive'` with `⏎········firstSpan.attributes['messaging.operation'],⏎········'receive',⏎······`
assert.strictEqual(firstSpan.attributes['messaging.batch.message_count'], 1);

Check failure on line 417 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Replace `firstSpan.attributes['messaging.batch.message_count'],·1` with `⏎········firstSpan.attributes['messaging.batch.message_count'],⏎········1,⏎······`
assert.strictEqual(
firstSpan.attributes['messaging.system'],
'gcp_pubsub'

Check failure on line 420 in test/telemetry-tracing.ts

View workflow job for this annotation

GitHub Actions / lint

Insert `,`
);
});

it('creates modack rpc span', () => {
const message: PubsubMessage = {};
const topicName = 'projects/test/topics/topicfoo';
const subName = 'subTest'
const producerSpan = otel.PubsubSpans.createPublisherSpan(
message,
topicName,
'test'
) as trace.Span;
const span = otel.PubsubSpans.createModackRpcSpan(
[producerSpan],
subName,
'modack',
'test',
Duration.from({ seconds: 1 }),
true
);
assert.ok(span);
producerSpan.end();
span.end();

const spans = exporter.getFinishedSpans();
assert.strictEqual(spans.length, 2);

const firstSpan = spans.pop();
assert.ok(firstSpan);
assert.strictEqual(firstSpan.kind, SpanKind.CLIENT);
assert.strictEqual(firstSpan.name, `${subName} modack`);
assert.strictEqual(
firstSpan.attributes['messaging.destination.name'],
subName
);
assert.strictEqual(firstSpan.attributes['messaging.operation'], 'receive');
assert.strictEqual(firstSpan.attributes['messaging.gcp_pubsub.message.ack_deadline_seconds'], 1);
assert.strictEqual(firstSpan.attributes['messaging.gcp_pubsub.is_receipt_modack'], true)
assert.strictEqual(
firstSpan.attributes['messaging.system'],
'gcp_pubsub'
);
});
});

});
Loading