mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-06 19:06:42 +01:00
Change how TX per Batch is calculated in state API endpoint
This commit is contained in:
@@ -131,7 +131,7 @@ func TestUpdateNetworkInfo(t *testing.T) {
|
|||||||
func TestUpdateMetrics(t *testing.T) {
|
func TestUpdateMetrics(t *testing.T) {
|
||||||
// Update Metrics needs api.status.Network.LastBatch.BatchNum to be updated
|
// Update Metrics needs api.status.Network.LastBatch.BatchNum to be updated
|
||||||
lastBlock := tc.blocks[3]
|
lastBlock := tc.blocks[3]
|
||||||
lastBatchNum := common.BatchNum(3)
|
lastBatchNum := common.BatchNum(12)
|
||||||
currentSlotNum := int64(1)
|
currentSlotNum := int64(1)
|
||||||
err := api.UpdateNetworkInfo(lastBlock, lastBlock, lastBatchNum, currentSlotNum)
|
err := api.UpdateNetworkInfo(lastBlock, lastBlock, lastBatchNum, currentSlotNum)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@@ -162,7 +162,7 @@ func TestUpdateRecommendedFee(t *testing.T) {
|
|||||||
|
|
||||||
func TestGetState(t *testing.T) {
|
func TestGetState(t *testing.T) {
|
||||||
lastBlock := tc.blocks[3]
|
lastBlock := tc.blocks[3]
|
||||||
lastBatchNum := common.BatchNum(3)
|
lastBatchNum := common.BatchNum(12)
|
||||||
currentSlotNum := int64(1)
|
currentSlotNum := int64(1)
|
||||||
api.SetRollupVariables(tc.rollupVars)
|
api.SetRollupVariables(tc.rollupVars)
|
||||||
api.SetWDelayerVariables(tc.wdelayerVars)
|
api.SetWDelayerVariables(tc.wdelayerVars)
|
||||||
|
|||||||
@@ -952,11 +952,19 @@ func (hdb *HistoryDB) GetMetricsAPI(lastBatchNum common.BatchNum) (*Metrics, err
|
|||||||
metricsTotals := &MetricsTotals{}
|
metricsTotals := &MetricsTotals{}
|
||||||
metrics := &Metrics{}
|
metrics := &Metrics{}
|
||||||
err = meddler.QueryRow(
|
err = meddler.QueryRow(
|
||||||
hdb.dbRead, metricsTotals, `SELECT COUNT(tx.*) as total_txs,
|
hdb.dbRead, metricsTotals, `SELECT
|
||||||
COALESCE (MIN(tx.batch_num), 0) as batch_num, COALESCE (MIN(block.timestamp),
|
COALESCE (MIN(batch.batch_num), 0) as batch_num,
|
||||||
NOW()) AS min_timestamp, COALESCE (MAX(block.timestamp), NOW()) AS max_timestamp
|
COALESCE (MIN(block.timestamp), NOW()) AS min_timestamp,
|
||||||
FROM tx INNER JOIN block ON tx.eth_block_num = block.eth_block_num
|
COALESCE (MAX(block.timestamp), NOW()) AS max_timestamp
|
||||||
WHERE block.timestamp >= NOW() - INTERVAL '24 HOURS';`)
|
FROM batch INNER JOIN block ON batch.eth_block_num = block.eth_block_num
|
||||||
|
WHERE block.timestamp >= NOW() - INTERVAL '24 HOURS' and batch.batch_num <= $1;`, lastBatchNum)
|
||||||
|
if err != nil {
|
||||||
|
return nil, tracerr.Wrap(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
err = meddler.QueryRow(
|
||||||
|
hdb.dbRead, metricsTotals, `SELECT COUNT(*) as total_txs
|
||||||
|
FROM tx WHERE tx.batch_num between $1 AND $2;`, metricsTotals.FirstBatchNum, lastBatchNum)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, tracerr.Wrap(err)
|
return nil, tracerr.Wrap(err)
|
||||||
}
|
}
|
||||||
@@ -979,10 +987,11 @@ func (hdb *HistoryDB) GetMetricsAPI(lastBatchNum common.BatchNum) (*Metrics, err
|
|||||||
err = meddler.QueryRow(
|
err = meddler.QueryRow(
|
||||||
hdb.dbRead, metricsTotals, `SELECT COUNT(*) AS total_batches,
|
hdb.dbRead, metricsTotals, `SELECT COUNT(*) AS total_batches,
|
||||||
COALESCE (SUM(total_fees_usd), 0) AS total_fees FROM batch
|
COALESCE (SUM(total_fees_usd), 0) AS total_fees FROM batch
|
||||||
WHERE batch_num > $1;`, metricsTotals.FirstBatchNum)
|
WHERE batch_num between $1 and $2;`, metricsTotals.FirstBatchNum, lastBatchNum)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, tracerr.Wrap(err)
|
return nil, tracerr.Wrap(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
if metricsTotals.TotalBatches > 0 {
|
if metricsTotals.TotalBatches > 0 {
|
||||||
metrics.BatchFrequency = seconds / float64(metricsTotals.TotalBatches)
|
metrics.BatchFrequency = seconds / float64(metricsTotals.TotalBatches)
|
||||||
} else {
|
} else {
|
||||||
|
|||||||
@@ -1175,16 +1175,12 @@ func TestGetMetricsAPI(t *testing.T) {
|
|||||||
res, err := historyDBWithACC.GetMetricsAPI(common.BatchNum(numBatches))
|
res, err := historyDBWithACC.GetMetricsAPI(common.BatchNum(numBatches))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
assert.Equal(t, float64(numTx)/float64(numBatches-1), res.TransactionsPerBatch)
|
assert.Equal(t, float64(numTx)/float64(numBatches), res.TransactionsPerBatch)
|
||||||
|
|
||||||
// Frequency is not exactly the desired one, some decimals may appear
|
// Frequency is not exactly the desired one, some decimals may appear
|
||||||
assert.GreaterOrEqual(t, res.BatchFrequency, float64(frequency))
|
// There is a -2 as time for first and last batch is not taken into account
|
||||||
assert.Less(t, res.BatchFrequency, float64(frequency+1))
|
assert.InEpsilon(t, float64(frequency)*float64(numBatches-2)/float64(numBatches), res.BatchFrequency, 0.01)
|
||||||
// Truncate frecuency into an int to do an exact check
|
assert.InEpsilon(t, float64(numTx)/float64(frequency*blockNum-frequency), res.TransactionsPerSecond, 0.01)
|
||||||
assert.Equal(t, frequency, int(res.BatchFrequency))
|
|
||||||
// This may also be different in some decimals
|
|
||||||
// Truncate it to the third decimal to compare
|
|
||||||
assert.Equal(t, math.Trunc((float64(numTx)/float64(frequency*blockNum-frequency))/0.001)*0.001, math.Trunc(res.TransactionsPerSecond/0.001)*0.001)
|
|
||||||
assert.Equal(t, int64(3), res.TotalAccounts)
|
assert.Equal(t, int64(3), res.TotalAccounts)
|
||||||
assert.Equal(t, int64(3), res.TotalBJJs)
|
assert.Equal(t, int64(3), res.TotalBJJs)
|
||||||
// Til does not set fees
|
// Til does not set fees
|
||||||
|
|||||||
Reference in New Issue
Block a user