Skip to content

Commit 7eabd3d

Browse files
committed
finish tests
1 parent ae90638 commit 7eabd3d

File tree

2 files changed

+101
-53
lines changed

2 files changed

+101
-53
lines changed

packages/baggage-log-record-processor/src/baggage-log-record-processor.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -60,7 +60,6 @@ export class BaggageLogRecordProcessor implements LogRecordProcessor {
6060
.filter(entry => this._keyPredicate(entry[0]))
6161
.forEach(entry => logRecord.setAttribute(entry[0], entry[1].value));
6262
}
63-
6463
}
6564

6665
/**

packages/baggage-log-record-processor/test/baggage-log-record-processor.test.ts

Lines changed: 101 additions & 52 deletions
Original file line numberDiff line numberDiff line change
@@ -16,72 +16,121 @@
1616

1717
import { BaggageLogRecordProcessor } from '../src/baggage-log-record-processor';
1818
import { ALLOW_ALL_BAGGAGE_KEYS } from '../src/types';
19-
import { propagation, ROOT_CONTEXT, diag, DiagLogLevel, DiagConsoleLogger } from '@opentelemetry/api';
20-
import { logs } from '@opentelemetry/api-logs';
21-
import { LoggerProvider, LogRecord, InMemoryLogRecordExporter, SimpleLogRecordProcessor } from '@opentelemetry/sdk-logs';
22-
import { LoggerProviderSharedState } from '@opentelemetry/sdk-logs/build/src/internal/LoggerProviderSharedState';
19+
import { propagation, ROOT_CONTEXT } from '@opentelemetry/api';
20+
import {
21+
InMemoryLogRecordExporter,
22+
LoggerProvider,
23+
SimpleLogRecordProcessor,
24+
} from '@opentelemetry/sdk-logs';
2325
import { expect } from 'expect';
2426

25-
describe('BaggageLogRecordProcessor with all keys filter', () => {
26-
const baggageProcessor = new BaggageLogRecordProcessor(ALLOW_ALL_BAGGAGE_KEYS);
27-
27+
describe('BaggageLogRecordProcessor with all keys', () => {
28+
const baggageProcessor = new BaggageLogRecordProcessor(
29+
ALLOW_ALL_BAGGAGE_KEYS
30+
);
2831
const bag = propagation.createBaggage({
2932
brand: { value: 'samsonite' },
33+
color: { value: 'blue' },
3034
});
31-
const expectedAttrs = {
32-
brand: 'samsonite',
33-
};
34-
35-
let logRecord: LogRecord;
36-
3735

38-
beforeEach(() => {
36+
it('onEmit adds current Baggage entries to a log record as attributes', () => {
3937
const loggerProvider = new LoggerProvider();
40-
const memoryLogExporter = new InMemoryLogRecordExporter();
38+
const exporter = new InMemoryLogRecordExporter();
39+
loggerProvider.addLogRecordProcessor(baggageProcessor);
4140
loggerProvider.addLogRecordProcessor(
42-
new SimpleLogRecordProcessor(memoryLogExporter)
41+
new SimpleLogRecordProcessor(exporter)
4342
);
44-
logs.setGlobalLoggerProvider(loggerProvider);
45-
46-
diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.INFO);
47-
diag.info('info message');
48-
49-
const logRecords = memoryLogExporter.getFinishedLogRecords();
50-
console.log(logRecords); // <<< Returning no logs
51-
logRecord = new LogRecord(
52-
new LoggerProviderSharedState(
53-
logRecords[0].resource,
54-
100,
55-
{attributeValueLengthLimit: 100, attributeCountLimit: 100}
56-
),
57-
logRecords[0].instrumentationScope,
58-
logRecords[0]
43+
const logger = loggerProvider.getLogger('my-logger');
44+
const ctx = propagation.setBaggage(ROOT_CONTEXT, bag);
45+
46+
logger.emit({
47+
body: 'my log body',
48+
context: ctx,
49+
});
50+
51+
const logRecords = exporter.getFinishedLogRecords();
52+
expect(logRecords.length).toBe(1);
53+
expect(logRecords[0].attributes).toEqual({
54+
brand: 'samsonite',
55+
color: 'blue',
56+
});
57+
});
58+
59+
it('forceFlush is a no-op and does not throw error', async () => {
60+
await expect(baggageProcessor.forceFlush()).resolves.not.toThrow();
61+
});
62+
63+
it('shutdown is a no-op and does not throw error', async () => {
64+
await expect(baggageProcessor.shutdown()).resolves.not.toThrow();
65+
});
66+
});
67+
68+
describe('BaggageLogRecordProcessor startWith key filter', () => {
69+
const baggageProcessor = new BaggageLogRecordProcessor((key: string) =>
70+
key.startsWith('brand')
71+
);
72+
const bag = propagation.createBaggage({
73+
brand: { value: 'samsonite' },
74+
color: { value: 'blue' },
75+
});
76+
77+
it('onEmit adds current filtered by startWith Baggage entries to a log record as attributes', () => {
78+
const loggerProvider = new LoggerProvider();
79+
const exporter = new InMemoryLogRecordExporter();
80+
loggerProvider.addLogRecordProcessor(baggageProcessor);
81+
loggerProvider.addLogRecordProcessor(
82+
new SimpleLogRecordProcessor(exporter)
5983
);
60-
loggerProvider.getLogger('baggage-testing').emit(logRecord);
61-
62-
// logRecord = {
63-
// ...logRecords[0],
64-
// totalAttributesCount: 0,
65-
// _isReadonly: false,
66-
// _logRecordLimits: 100,
67-
// setAttribute:
68-
// // severityNumber: 5,
69-
// // severityText: 'debug',
70-
// // body: 'log message',
71-
// // attributes: {},
72-
// // hrTime: [1609504210, 150000000],
73-
// // hrTimeObserved: [1609504210, 150000000],
74-
// };
75-
84+
const logger = loggerProvider.getLogger('my-logger');
85+
const ctx = propagation.setBaggage(ROOT_CONTEXT, bag);
86+
87+
logger.emit({
88+
body: 'my log body',
89+
context: ctx,
90+
});
91+
92+
const logRecords = exporter.getFinishedLogRecords();
93+
expect(logRecords.length).toBe(1);
94+
expect(logRecords[0].attributes).toEqual({ brand: 'samsonite' });
7695
});
7796

78-
it('onEmit adds current Baggage entries to a log record as attributes', () => {
79-
expect(logRecord.attributes).toEqual({});
97+
it('forceFlush is a no-op and does not throw error', async () => {
98+
await expect(baggageProcessor.forceFlush()).resolves.not.toThrow();
99+
});
100+
101+
it('shutdown is a no-op and does not throw error', async () => {
102+
await expect(baggageProcessor.shutdown()).resolves.not.toThrow();
103+
});
104+
});
105+
106+
describe('BaggageLogRecordProcessor with regex key filter', () => {
107+
const regex = new RegExp('^col.+');
108+
const baggageProcessor = new BaggageLogRecordProcessor((key: string) =>
109+
regex.test(key)
110+
);
111+
const bag = propagation.createBaggage({
112+
brand: { value: 'samsonite' },
113+
color: { value: 'blue' },
114+
});
115+
116+
it('onEmit adds current filtered by regex Baggage entries to a log record as attributes', () => {
117+
const loggerProvider = new LoggerProvider();
118+
const exporter = new InMemoryLogRecordExporter();
119+
loggerProvider.addLogRecordProcessor(baggageProcessor);
120+
loggerProvider.addLogRecordProcessor(
121+
new SimpleLogRecordProcessor(exporter)
122+
);
123+
const logger = loggerProvider.getLogger('my-logger');
80124
const ctx = propagation.setBaggage(ROOT_CONTEXT, bag);
81-
82-
baggageProcessor.onEmit(logRecord, ctx);
83125

84-
expect(logRecord.attributes).toEqual(expectedAttrs);
126+
logger.emit({
127+
body: 'my log body',
128+
context: ctx,
129+
});
130+
131+
const logRecords = exporter.getFinishedLogRecords();
132+
expect(logRecords.length).toBe(1);
133+
expect(logRecords[0].attributes).toEqual({ color: 'blue' });
85134
});
86135

87136
it('forceFlush is a no-op and does not throw error', async () => {

0 commit comments

Comments
 (0)