@@ -1010,52 +1010,43 @@ describe('ObservabilityOptions injection and propagation', async () => {
10101010 } ) ;
10111011} ) ;
10121012
1013- describe ( 'Regression tests for fixed bugs' , ( ) => {
1014- it ( 'async/await correctly parents trace spans' , async ( ) => {
1015- // See https://github.com/googleapis/nodejs-spanner/issues/2146.
1016- const traceExporter = new InMemorySpanExporter ( ) ;
1017- const provider = new NodeTracerProvider ( {
1013+ describe ( 'Regression tests for fixed bugs' , async ( ) => {
1014+ let server : grpc . Server ;
1015+ let spanner : Spanner ;
1016+ let database : Database ;
1017+ let spannerMock : mock . MockSpanner ;
1018+ let traceExporter : typeof InMemorySpanExporter ;
1019+ let provider : typeof TracerProvider ;
1020+ let observabilityOptions : typeof ObservabilityOptions ;
1021+
1022+ beforeEach ( async ( ) => {
1023+ traceExporter = new InMemorySpanExporter ( ) ;
1024+ provider = new NodeTracerProvider ( {
10181025 sampler : new AlwaysOnSampler ( ) ,
10191026 exporter : traceExporter ,
10201027 } ) ;
10211028 provider . addSpanProcessor ( new SimpleSpanProcessor ( traceExporter ) ) ;
10221029
1023- const observabilityOptions : typeof ObservabilityOptions = {
1030+ observabilityOptions = {
10241031 tracerProvider : provider ,
10251032 enableExtendedTracing : true ,
10261033 } ;
10271034 const setupResult = await setup ( observabilityOptions ) ;
1028- const spanner = setupResult . spanner ;
1029- const server = setupResult . server ;
1030- const spannerMock = setupResult . spannerMock ;
1031-
1032- after ( async ( ) => {
1033- provider . shutdown ( ) ;
1034- spannerMock . resetRequests ( ) ;
1035- spanner . close ( ) ;
1036- server . tryShutdown ( ( ) => { } ) ;
1037- } ) ;
1038-
1039- async function main ( ) {
1040- const instance = spanner . instance ( 'testing' ) ;
1041- instance . _observabilityOptions = observabilityOptions ;
1042- const database = instance . database ( 'db-1' ) ;
1043-
1044- const query = {
1045- sql : selectSql ,
1046- } ;
1047-
1048- const [ rows ] = await database . run ( query ) ;
1049-
1050- rows . forEach ( row => {
1051- const json = row . toJSON ( ) ;
1052- } ) ;
1053-
1054- provider . forceFlush ( ) ;
1055- }
1035+ spanner = setupResult . spanner ;
1036+ server = setupResult . server ;
1037+ spannerMock = setupResult . spannerMock ;
1038+ } ) ;
10561039
1057- await main ( ) ;
1040+ afterEach ( async ( ) => {
1041+ traceExporter . reset ( ) ;
1042+ provider . shutdown ( ) ;
1043+ spannerMock . resetRequests ( ) ;
1044+ spanner . close ( ) ;
1045+ server . tryShutdown ( ( ) => { } ) ;
1046+ } ) ;
10581047
1048+ function assertAsyncAwaitExpectations ( ) {
1049+ // See https://github.com/googleapis/nodejs-spanner/issues/2146.
10591050 traceExporter . forceFlush ( ) ;
10601051 const spans = traceExporter . getFinishedSpans ( ) ;
10611052
@@ -1162,5 +1153,55 @@ describe('Regression tests for fixed bugs', () => {
11621153 expectedEventNames ,
11631154 `Unexpected events:\n\tGot: ${ actualEventNames } \n\tWant: ${ expectedEventNames } `
11641155 ) ;
1156+ }
1157+
1158+ it ( 'async/await correctly parents trace spans' , async ( ) => {
1159+ // See https://github.com/googleapis/nodejs-spanner/issues/2146.
1160+ async function main ( ) {
1161+ const instance = spanner . instance ( 'testing' ) ;
1162+ instance . _observabilityOptions = observabilityOptions ;
1163+ const database = instance . database ( 'db-1' ) ;
1164+
1165+ const query = {
1166+ sql : selectSql ,
1167+ } ;
1168+
1169+ const [ rows ] = await database . run ( query ) ;
1170+
1171+ rows . forEach ( row => {
1172+ const json = row . toJSON ( ) ;
1173+ } ) ;
1174+
1175+ provider . forceFlush ( ) ;
1176+ }
1177+
1178+ await main ( ) ;
1179+ assertAsyncAwaitExpectations ( ) ;
1180+ } ) ;
1181+
1182+ it ( 'callback correctly parents trace spans' , done => {
1183+ function main ( onComplete ) {
1184+ const instance = spanner . instance ( 'testing' ) ;
1185+ instance . _observabilityOptions = observabilityOptions ;
1186+ const database = instance . database ( 'db-1' ) ;
1187+
1188+ const query = {
1189+ sql : selectSql ,
1190+ } ;
1191+
1192+ database . run ( query , ( err , rows ) => {
1193+ rows . forEach ( row => {
1194+ const json = row . toJSON ( ) ;
1195+ } ) ;
1196+
1197+ provider . forceFlush ( ) ;
1198+ onComplete ( ) ;
1199+ } ) ;
1200+ }
1201+
1202+ main ( ( ) => {
1203+ assertAsyncAwaitExpectations ( ) ;
1204+ done ( ) ;
1205+ } ) ;
11651206 } ) ;
11661207} ) ;
0 commit comments