@@ -73,7 +73,7 @@ const {
7373 InMemorySpanExporter,
7474} = require ( '@opentelemetry/sdk-trace-node' ) ;
7575const { SimpleSpanProcessor} = require ( '@opentelemetry/sdk-trace-base' ) ;
76- const { startTrace} = require ( '../src/instrument' ) ;
76+ const { ObservabilityOptions , startTrace} = require ( '../src/instrument' ) ;
7777
7878function numberToEnglishWord ( num : number ) : string {
7979 switch ( num ) {
@@ -5061,6 +5061,62 @@ describe('Spanner with mock server', () => {
50615061 ) ;
50625062 } ) ;
50635063 } ) ;
5064+
5065+ it ( 'Plumb ObservabilityConfig into Spanner, Instance and Database' , ( ) => {
5066+ const exporter = new InMemorySpanExporter ( ) ;
5067+ const provider = new NodeTracerProvider ( {
5068+ sampler : new AlwaysOnSampler ( ) ,
5069+ exporter : exporter ,
5070+ } ) ;
5071+ provider . addSpanProcessor ( new SimpleSpanProcessor ( exporter ) ) ;
5072+
5073+ const observabilityConfig : typeof ObservabilityOptions = {
5074+ tracerProvider : provider ,
5075+ enableExtendedTracing : true ,
5076+ } ;
5077+ const spanner = new Spanner ( {
5078+ servicePath : 'localhost' ,
5079+ port,
5080+ sslCreds : grpc . credentials . createInsecure ( ) ,
5081+ observabilityConfig : observabilityConfig ,
5082+ } ) ;
5083+
5084+ // Ensure that the same observability configuration is set on the Spanner client.
5085+ assert . deepStrictEqual ( spanner . observabilityConfig , observabilityConfig ) ;
5086+
5087+ // Acquire a handle to the Instance through spanner.instance.
5088+ const instanceByHandle = spanner . instance ( 'instance' ) ;
5089+ assert . deepStrictEqual (
5090+ instanceByHandle . observabilityConfig ,
5091+ observabilityConfig
5092+ ) ;
5093+
5094+ // Create the Instance by means of a constructor directly.
5095+ const instanceByConstructor = new Instance ( spanner , 'myInstance' ) ;
5096+ assert . deepStrictEqual (
5097+ instanceByConstructor . observabilityConfig ,
5098+ observabilityConfig
5099+ ) ;
5100+
5101+ // Acquire a handle to the Database through instance.database.
5102+ const databaseByHandle = instanceByHandle . database ( 'database' ) ;
5103+ assert . deepStrictEqual (
5104+ databaseByHandle . observabilityConfig ,
5105+ observabilityConfig
5106+ ) ;
5107+
5108+ // Create the Database by means of a constructor directly.
5109+ const databaseByConstructor = new Database (
5110+ instanceByConstructor ,
5111+ 'myDatabase'
5112+ ) ;
5113+ assert . deepStrictEqual (
5114+ databaseByConstructor . observabilityConfig ,
5115+ observabilityConfig
5116+ ) ;
5117+
5118+ spanner . close ( ) ;
5119+ } ) ;
50645120} ) ;
50655121
50665122function executeSimpleUpdate (
0 commit comments