From 82001883bd8313075882eedb5e33789c5871241e Mon Sep 17 00:00:00 2001 From: Brian Warner Date: Wed, 24 Jun 2020 21:33:36 -0700 Subject: [PATCH] feat(transform-metering): add balance-getters to refillFacet --- packages/transform-metering/src/meter.js | 4 ++++ packages/transform-metering/test/test-meter.js | 15 +++++++++++++++ 2 files changed, 19 insertions(+) diff --git a/packages/transform-metering/src/meter.js b/packages/transform-metering/src/meter.js index 6d07ebccc20..587b235a569 100644 --- a/packages/transform-metering/src/meter.js +++ b/packages/transform-metering/src/meter.js @@ -24,6 +24,7 @@ const makeCounter = initBalance => { }; counter.reset = (newBalance = undefined) => (balance = newBalance === undefined ? initBalance : newBalance); + counter.getBalance = () => balance; return counter; }; @@ -202,6 +203,9 @@ export function makeMeter(budgets = {}) { stack: makeResetter(stackCounter), compute: makeResetter(computeCounter), combined: makeResetter(combinedCounter), + getAllocateBalance: allocateCounter.getBalance, + getComputeBalance: computeCounter.getBalance, + getCombinedBalance: combinedCounter.getBalance, }; // Create the internal meter object. diff --git a/packages/transform-metering/test/test-meter.js b/packages/transform-metering/test/test-meter.js index 9e40db45928..407e9e03a87 100644 --- a/packages/transform-metering/test/test-meter.js +++ b/packages/transform-metering/test/test-meter.js @@ -107,3 +107,18 @@ test('meter running', async t => { t.end(); } }); + +test('getBalance', async t => { + try { + const { meter, refillFacet } = makeMeter({ budgetCompute: 10 }); + t.equal(refillFacet.getComputeBalance(), 10); + meter[c.METER_COMPUTE](3); + t.equal(refillFacet.getComputeBalance(), 7); + t.equal(refillFacet.getAllocateBalance(), c.DEFAULT_COMBINED_METER); + t.equal(refillFacet.getCombinedBalance(), c.DEFAULT_COMBINED_METER); + } catch (e) { + t.isNot(e, e, 'unexpected exception'); + } finally { + t.end(); + } +});