Skip to content

Commit 3d6aaf2

Browse files
committed
observability-test: isolate ObservabilityOptions injection tests
1 parent b69e3b9 commit 3d6aaf2

File tree

3 files changed

+76
-51
lines changed

3 files changed

+76
-51
lines changed

observability-test/spanner.ts

Lines changed: 70 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,7 @@ describe('EndToEnd', () => {
206206
});
207207

208208
const expectedSpanNames = [
209+
'CloudSpanner.Database.batchCreateSessions',
209210
'CloudSpanner.SessionPool.createSessions',
210211
'CloudSpanner.Database.getSnapshot',
211212
];
@@ -249,6 +250,7 @@ describe('EndToEnd', () => {
249250
});
250251

251252
const expectedSpanNames = [
253+
'CloudSpanner.Database.batchCreateSessions',
252254
'CloudSpanner.SessionPool.createSessions',
253255
'CloudSpanner.Database.getTransaction',
254256
];
@@ -293,6 +295,7 @@ describe('EndToEnd', () => {
293295
});
294296

295297
const expectedSpanNames = [
298+
'CloudSpanner.Database.batchCreateSessions',
296299
'CloudSpanner.SessionPool.createSessions',
297300
'CloudSpanner.Database.runStream',
298301
];
@@ -339,6 +342,7 @@ describe('EndToEnd', () => {
339342
});
340343

341344
const expectedSpanNames = [
345+
'CloudSpanner.Database.batchCreateSessions',
342346
'CloudSpanner.SessionPool.createSessions',
343347
'CloudSpanner.Database.runStream',
344348
'CloudSpanner.Database.run',
@@ -401,6 +405,7 @@ describe('EndToEnd', () => {
401405
});
402406

403407
const expectedSpanNames = [
408+
'CloudSpanner.Database.batchCreateSessions',
404409
'CloudSpanner.SessionPool.createSessions',
405410
'CloudSpanner.Database.runTransaction',
406411
];
@@ -445,6 +450,7 @@ describe('EndToEnd', () => {
445450
});
446451

447452
const expectedSpanNames = [
453+
'CloudSpanner.Database.batchCreateSessions',
448454
'CloudSpanner.SessionPool.createSessions',
449455
'CloudSpanner.Database.writeAtLeastOnce',
450456
];
@@ -488,6 +494,7 @@ describe('EndToEnd', () => {
488494
});
489495

490496
const expectedSpanNames = [
497+
'CloudSpanner.Database.batchCreateSessions',
491498
'CloudSpanner.SessionPool.createSessions',
492499
'CloudSpanner.Database.batchCreateSessions',
493500
];
@@ -515,46 +522,32 @@ describe('EndToEnd', () => {
515522
});
516523

517524
describe('ObservabilityOptions injection and propagation', async () => {
518-
const globalTraceExporter = new InMemorySpanExporter();
519-
const globalTracerProvider = new NodeTracerProvider({
520-
sampler: new AlwaysOnSampler(),
521-
exporter: globalTraceExporter,
522-
});
523-
globalTracerProvider.addSpanProcessor(
524-
new SimpleSpanProcessor(globalTraceExporter)
525-
);
526-
globalTracerProvider.register();
527-
528-
const injectedTraceExporter = new InMemorySpanExporter();
529-
const injectedTracerProvider = new NodeTracerProvider({
530-
sampler: new AlwaysOnSampler(),
531-
exporter: injectedTraceExporter,
532-
});
533-
injectedTracerProvider.addSpanProcessor(
534-
new SimpleSpanProcessor(injectedTraceExporter)
535-
);
536-
537-
const observabilityOptions: typeof ObservabilityOptions = {
538-
tracerProvider: injectedTracerProvider,
539-
enableExtendedTracing: true,
540-
};
541-
542-
const setupResult = await setup(observabilityOptions);
543-
const spanner = setupResult.spanner;
544-
const server = setupResult.server;
545-
const spannerMock = setupResult.spannerMock;
546-
547-
after(async () => {
548-
globalTraceExporter.reset();
549-
injectedTraceExporter.reset();
550-
await globalTracerProvider.shutdown();
551-
await injectedTracerProvider.shutdown();
552-
spannerMock.resetRequests();
553-
spanner.close();
554-
server.tryShutdown(() => {});
555-
});
525+
it('Passed into Spanner, Instance and Database', async () => {
526+
const traceExporter = new InMemorySpanExporter();
527+
const tracerProvider = new NodeTracerProvider({
528+
sampler: new AlwaysOnSampler(),
529+
exporter: traceExporter,
530+
});
531+
tracerProvider.addSpanProcessor(new SimpleSpanProcessor(traceExporter));
532+
533+
const observabilityOptions: typeof ObservabilityOptions = {
534+
tracerProvider: tracerProvider,
535+
enableExtendedTracing: true,
536+
};
537+
538+
const setupResult = await setup(observabilityOptions);
539+
const spanner = setupResult.spanner;
540+
const server = setupResult.server;
541+
const spannerMock = setupResult.spannerMock;
542+
543+
after(async () => {
544+
traceExporter.reset();
545+
await tracerProvider.shutdown();
546+
spannerMock.resetRequests();
547+
spanner.close();
548+
server.tryShutdown(() => {});
549+
});
556550

557-
it('Passed into Spanner, Instance and Database', done => {
558551
// Ensure that the same observability configuration is set on the Spanner client.
559552
assert.deepStrictEqual(spanner._observabilityOptions, observabilityOptions);
560553

@@ -588,11 +581,45 @@ describe('ObservabilityOptions injection and propagation', async () => {
588581
databaseByConstructor._observabilityOptions,
589582
observabilityOptions
590583
);
591-
592-
done();
593584
});
594585

595-
it('Propagates spans to the injected not global TracerProvider', done => {
586+
it('Propagates spans to the injected not global TracerProvider', async () => {
587+
const globalTraceExporter = new InMemorySpanExporter();
588+
const globalTracerProvider = new NodeTracerProvider({
589+
sampler: new AlwaysOnSampler(),
590+
exporter: globalTraceExporter,
591+
});
592+
globalTracerProvider.addSpanProcessor(
593+
new SimpleSpanProcessor(globalTraceExporter)
594+
);
595+
globalTracerProvider.register();
596+
597+
const injectedTraceExporter = new InMemorySpanExporter();
598+
const injectedTracerProvider = new NodeTracerProvider({
599+
sampler: new AlwaysOnSampler(),
600+
exporter: injectedTraceExporter,
601+
});
602+
injectedTracerProvider.addSpanProcessor(
603+
new SimpleSpanProcessor(injectedTraceExporter)
604+
);
605+
606+
const observabilityOptions: typeof ObservabilityOptions = {
607+
tracerProvider: injectedTracerProvider,
608+
enableExtendedTracing: true,
609+
};
610+
const setupResult = await setup(observabilityOptions);
611+
const spanner = setupResult.spanner;
612+
const server = setupResult.server;
613+
const spannerMock = setupResult.spannerMock;
614+
615+
after(async () => {
616+
injectedTraceExporter.reset();
617+
await injectedTracerProvider.shutdown();
618+
spannerMock.resetRequests();
619+
spanner.close();
620+
server.tryShutdown(() => {});
621+
});
622+
596623
const instance = spanner.instance('instance');
597624
const database = instance.database('database');
598625

@@ -628,6 +655,7 @@ describe('ObservabilityOptions injection and propagation', async () => {
628655
});
629656

630657
const expectedSpanNames = [
658+
'CloudSpanner.Database.batchCreateSessions',
631659
'CloudSpanner.SessionPool.createSessions',
632660
'CloudSpanner.Database.runStream',
633661
'CloudSpanner.Database.run',
@@ -652,8 +680,6 @@ describe('ObservabilityOptions injection and propagation', async () => {
652680
expectedEventNames,
653681
`Unexpected events:\n\tGot: ${actualEventNames}\n\tWant: ${expectedEventNames}`
654682
);
655-
656-
done();
657683
});
658684
});
659685
});

src/database.ts

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -450,14 +450,14 @@ class Database extends common.GrpcServiceObject {
450450
typeof poolOptions === 'function'
451451
? new (poolOptions as SessionPoolConstructor)(this, null)
452452
: new SessionPool(this, poolOptions);
453-
const concretePool = this.pool_ as SessionPool;
454-
if (concretePool) {
455-
concretePool._observabilityOptions = instance._observabilityOptions;
453+
const sessionPoolInstance = this.pool_ as SessionPool;
454+
if (sessionPoolInstance) {
455+
sessionPoolInstance._observabilityOptions =
456+
instance._observabilityOptions;
456457
}
457458
if (typeof poolOptions === 'object') {
458459
this.databaseRole = poolOptions.databaseRole || null;
459460
}
460-
this._observabilityOptions = instance._observabilityOptions;
461461
this.formattedName_ = formattedName_;
462462
this.instance = instance;
463463
this.resourceHeader_ = {
@@ -472,6 +472,7 @@ class Database extends common.GrpcServiceObject {
472472
Object.assign({}, queryOptions),
473473
Database.getEnvironmentQueryOptions()
474474
);
475+
this._observabilityOptions = instance._observabilityOptions;
475476
}
476477
/**
477478
* @typedef {array} SetDatabaseMetadataResponse

src/instance.ts

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1361,9 +1361,7 @@ class Instance extends common.GrpcServiceObject {
13611361
let databases: Database[] | null = null;
13621362
if (rowDatabases) {
13631363
databases = rowDatabases.map(database => {
1364-
const databaseInstance = self.database(database.name!, {
1365-
min: 0,
1366-
});
1364+
const databaseInstance = self.database(database.name!, {min: 0});
13671365
databaseInstance.metadata = database;
13681366
databaseInstance._observabilityOptions = this._observabilityOptions;
13691367
return databaseInstance;

0 commit comments

Comments
 (0)