From 0df928efa9290d9b7f03ec3935c8666f3ff3c069 Mon Sep 17 00:00:00 2001 From: ryanml Date: Mon, 12 Jul 2021 10:14:54 -0700 Subject: [PATCH] Using current time in place of block timestamp for completion time metric (#11483) --- app/scripts/controllers/transactions/index.js | 27 +++++-------------- .../controllers/transactions/index.test.js | 24 +++++++++++++++++ 2 files changed, 30 insertions(+), 21 deletions(-) diff --git a/app/scripts/controllers/transactions/index.js b/app/scripts/controllers/transactions/index.js index 3f6948f06..cfc11c335 100644 --- a/app/scripts/controllers/transactions/index.js +++ b/app/scripts/controllers/transactions/index.js @@ -669,15 +669,12 @@ export default class TransactionController extends EventEmitter { this._markNonceDuplicatesDropped(txId); const { submittedTime } = txMeta; - const { blockNumber } = txReceipt; const metricsParams = { gas_used: gasUsed }; - const completionTime = await this._getTransactionCompletionTime( - blockNumber, - submittedTime, - ); - if (completionTime) { - metricsParams.completion_time = completionTime; + if (submittedTime) { + metricsParams.completion_time = this._getTransactionCompletionTime( + submittedTime, + ); } if (txReceipt.status === '0x0') { @@ -1105,20 +1102,8 @@ export default class TransactionController extends EventEmitter { }); } - async _getTransactionCompletionTime(blockNumber, submittedTime) { - const transactionBlock = await this.query.getBlockByNumber( - blockNumber.toString(16), - false, - ); - - if (!transactionBlock) { - return ''; - } - - return new BigNumber(transactionBlock.timestamp, 10) - .minus(submittedTime / 1000) - .round() - .toString(10); + _getTransactionCompletionTime(submittedTime) { + return Math.round((Date.now() - submittedTime) / 1000).toString(); } _failTransaction(txId, error) { diff --git a/app/scripts/controllers/transactions/index.test.js b/app/scripts/controllers/transactions/index.test.js index d016a80e2..45d7afc65 100644 --- a/app/scripts/controllers/transactions/index.test.js +++ b/app/scripts/controllers/transactions/index.test.js @@ -1386,4 +1386,28 @@ describe('Transaction Controller', function () { ); }); }); + + describe('#_getTransactionCompletionTime', function () { + let nowStub; + + beforeEach(function () { + nowStub = sinon.stub(Date, 'now').returns(1625782016341); + }); + + afterEach(function () { + nowStub.restore(); + }); + + it('calculates completion time (one)', function () { + const submittedTime = 1625781997397; + const result = txController._getTransactionCompletionTime(submittedTime); + assert.equal(result, '19'); + }); + + it('calculates completion time (two)', function () { + const submittedTime = 1625781995397; + const result = txController._getTransactionCompletionTime(submittedTime); + assert.equal(result, '21'); + }); + }); });