Skip to content

Commit 9b0a458

Browse files
committed
EndToEnd test setup reduced to avoid flakes
1 parent d10a888 commit 9b0a458

File tree

1 file changed

+30
-51
lines changed

1 file changed

+30
-51
lines changed

observability-test/spanner.ts

Lines changed: 30 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -123,42 +123,45 @@ async function setup(
123123
});
124124
}
125125

126-
describe('EndToEnd', () => {
127-
let server: grpc.Server;
128-
let spanner: Spanner;
129-
let database: Database;
130-
let spannerMock: mock.MockSpanner;
131-
let traceExporter: typeof InMemorySpanExporter;
132-
let tracerProvider: typeof NodeTracerProvider;
133-
126+
describe('EndToEnd', async () => {
134127
const contextManager = new AsyncHooksContextManager();
135128
setGlobalContextManager(contextManager);
136-
137129
afterEach(() => {
138130
disableContextAndManager(contextManager);
139131
});
140132

141-
beforeEach(async () => {
142-
traceExporter = new InMemorySpanExporter();
143-
const sampler = new AlwaysOnSampler();
144-
tracerProvider = new NodeTracerProvider({
145-
sampler: sampler,
146-
exporter: traceExporter,
147-
});
148-
tracerProvider.addSpanProcessor(new SimpleSpanProcessor(traceExporter));
133+
const traceExporter = new InMemorySpanExporter();
134+
const sampler = new AlwaysOnSampler();
135+
const tracerProvider = new NodeTracerProvider({
136+
sampler: sampler,
137+
exporter: traceExporter,
138+
});
139+
tracerProvider.addSpanProcessor(new SimpleSpanProcessor(traceExporter));
149140

150-
const setupResult = await setup({
151-
tracerProvider: tracerProvider,
152-
enableExtendedTracing: false,
153-
});
141+
const setupResult = await setup({
142+
tracerProvider: tracerProvider,
143+
enableExtendedTracing: false,
144+
});
154145

155-
spanner = setupResult.spanner;
156-
server = setupResult.server;
157-
spannerMock = setupResult.spannerMock;
146+
const server = setupResult.server;
147+
const spannerMock = setupResult.spannerMock;
148+
const spanner = setupResult.spanner;
149+
const instance = spanner.instance('instance');
158150

159-
const instance = spanner.instance('instance');
160-
database = instance.database('database');
151+
after(async () => {
152+
spanner.close();
153+
await server.tryShutdown(() => {});
154+
});
161155

156+
afterEach(async () => {
157+
await tracerProvider.forceFlush();
158+
await traceExporter.reset();
159+
spannerMock.resetRequests();
160+
});
161+
162+
const database = instance.database('database');
163+
164+
beforeEach(async () => {
162165
// To deflake expectations of session creation, let's
163166
// issue out a warm-up request request that'll ensure
164167
// that the SessionPool is created deterministically.
@@ -168,16 +171,6 @@ describe('EndToEnd', () => {
168171
traceExporter.reset();
169172
});
170173

171-
afterEach(async () => {
172-
await tracerProvider.forceFlush();
173-
await tracerProvider.shutdown();
174-
traceExporter.reset();
175-
spannerMock.resetRequests();
176-
// Hot-fix, do not close spanner.
177-
// spanner.close();
178-
server.tryShutdown(() => {});
179-
});
180-
181174
describe('Database', () => {
182175
it('getSessions', async () => {
183176
const [rows] = await database.getSessions();
@@ -325,21 +318,7 @@ describe('EndToEnd', () => {
325318
database
326319
.runStream('SELECT 1')
327320
.on('data', row => {})
328-
.once('error', err => {
329-
// TODO: Examine why this error condition is triggered
330-
// after the test has finished running.
331-
console.log(`\x1b[31mRogue error: ${err}\x1b[00m`);
332-
/*
333-
// De-flake by ignoring grpc.status.CANCELLED as we've
334-
// seen on the Github test runners, due to timing.
335-
const grpcErr = err as grpc.ServiceError;
336-
if (!grpcErr) {
337-
assert.ifError(err);
338-
} else if (grpcErr.code != grpc.status.CANCELLED) {
339-
assert.ifError(err);
340-
}
341-
*/
342-
})
321+
.once('error', assert.ifError)
343322
.on('end', () => {
344323
traceExporter.forceFlush();
345324
const spans = traceExporter.getFinishedSpans();

0 commit comments

Comments
 (0)