Skip to content
Open
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Lint
  • Loading branch information
hectorhdzg committed Dec 4, 2025
commit 59fc2fd4418832ba5a4aa09bfbf5cf543b6d7441
98 changes: 53 additions & 45 deletions api/test/common/proxy-implementations/proxy-meter.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -92,15 +92,18 @@ describe('ProxyMeter', () => {
it('creates observable counters that buffer callbacks before delegation', () => {
const meter = provider.getMeter('test');

const observableCounter = meter.createObservableCounter('observable-counter');
const observableCounter =
meter.createObservableCounter('observable-counter');
const observableUpDownCounter = meter.createObservableUpDownCounter(
'observable-up-down-counter'
);
const counterCallback = sandbox.stub();
const upDownCallback = sandbox.stub();

assert.doesNotThrow(() => observableCounter.addCallback(counterCallback));
assert.doesNotThrow(() => observableCounter.removeCallback(counterCallback));
assert.doesNotThrow(() =>
observableCounter.removeCallback(counterCallback)
);
assert.doesNotThrow(() =>
observableUpDownCounter.addCallback(upDownCallback)
);
Expand Down Expand Up @@ -333,7 +336,9 @@ describe('ProxyMeter', () => {
add: addStub,
} as UpDownCounter;
const delegateMeter = new NoopMeter();
sandbox.stub(delegateMeter, 'createUpDownCounter').returns(delegateUpDownCounter);
sandbox
.stub(delegateMeter, 'createUpDownCounter')
.returns(delegateUpDownCounter);

provider.setDelegate({
getMeter() {
Expand All @@ -347,7 +352,9 @@ describe('ProxyMeter', () => {

it('hydrates observable counters that were created before delegation', () => {
const meter = provider.getMeter('test');
const observableCounter = meter.createObservableCounter('pre-observable-counter');
const observableCounter = meter.createObservableCounter(
'pre-observable-counter'
);
const callback = sandbox.stub();
observableCounter.addCallback(callback);

Expand Down Expand Up @@ -458,36 +465,36 @@ describe('ProxyMeter', () => {
assert.strictEqual(registeredObservables[0], delegateObservable);
});

it('remaps proxy observables when registering batch callbacks after delegation', () => {
const meter = provider.getMeter('test');
const proxyObservable = meter.createObservableGauge('proxy-batch');
const callback = sandbox.stub();
const delegateObservable: ObservableGauge = {
addCallback: sandbox.stub(),
removeCallback: sandbox.stub(),
};
const delegateMeter = new NoopMeter();
sandbox
.stub(delegateMeter, 'createObservableGauge')
.returns(delegateObservable);
const addBatchStub = sandbox.stub(
delegateMeter,
'addBatchObservableCallback'
);

provider.setDelegate({
getMeter() {
return delegateMeter;
},
});

meter.addBatchObservableCallback(callback, [proxyObservable]);

sandbox.assert.calledOnce(addBatchStub);
const [, registeredObservables] = addBatchStub.firstCall.args;
assert.strictEqual(registeredObservables[0], delegateObservable);
it('remaps proxy observables when registering batch callbacks after delegation', () => {
const meter = provider.getMeter('test');
const proxyObservable = meter.createObservableGauge('proxy-batch');
const callback = sandbox.stub();
const delegateObservable: ObservableGauge = {
addCallback: sandbox.stub(),
removeCallback: sandbox.stub(),
};
const delegateMeter = new NoopMeter();
sandbox
.stub(delegateMeter, 'createObservableGauge')
.returns(delegateObservable);
const addBatchStub = sandbox.stub(
delegateMeter,
'addBatchObservableCallback'
);

provider.setDelegate({
getMeter() {
return delegateMeter;
},
});

meter.addBatchObservableCallback(callback, [proxyObservable]);

sandbox.assert.calledOnce(addBatchStub);
const [, registeredObservables] = addBatchStub.firstCall.args;
assert.strictEqual(registeredObservables[0], delegateObservable);
});

it('removes batch callbacks via the current delegate before delegation', () => {
const meter = provider.getMeter('test');
const observable = meter.createObservableGauge('batch');
Expand All @@ -512,18 +519,18 @@ describe('ProxyMeter', () => {
);
});

it('removes batch callbacks by delegating to the noop meter when unset', () => {
const meter = provider.getMeter('test');
const observable = meter.createObservableGauge('noop-batch');
const callback = sandbox.stub();
meter.addBatchObservableCallback(callback, [observable]);
it('removes batch callbacks by delegating to the noop meter when unset', () => {
const meter = provider.getMeter('test');
const observable = meter.createObservableGauge('noop-batch');
const callback = sandbox.stub();
meter.addBatchObservableCallback(callback, [observable]);

const noopSpy = sandbox.spy(NOOP_METER, 'removeBatchObservableCallback');
const noopSpy = sandbox.spy(NOOP_METER, 'removeBatchObservableCallback');

meter.removeBatchObservableCallback(callback, [observable]);
meter.removeBatchObservableCallback(callback, [observable]);

sandbox.assert.calledOnce(noopSpy);
});
sandbox.assert.calledOnce(noopSpy);
});
});

describe('proxy instrument internals', () => {
Expand Down Expand Up @@ -631,7 +638,10 @@ describe('ProxyMeter', () => {
} as Counter;
const delegateMeter = new NoopMeter();
sandbox.stub(delegateMeter, 'createCounter').returns(delegateCounter);
sandbox.stub(meter as unknown as { _flushPendingState: () => void }, '_flushPendingState');
sandbox.stub(
meter as unknown as { _flushPendingState: () => void },
'_flushPendingState'
);

provider.setDelegate({
getMeter() {
Expand All @@ -641,9 +651,7 @@ describe('ProxyMeter', () => {

counter.add(3);

sandbox.assert.calledOnce(
delegateMeter.createCounter as sinon.SinonStub
);
sandbox.assert.calledOnce(delegateMeter.createCounter as sinon.SinonStub);
sandbox.assert.calledOnce(delegateCounter.add as sinon.SinonStub);
});
});
Expand Down