mirror of
https://github.com/arnaucube/hermez-node.git
synced 2026-02-07 03:16:45 +01:00
ItemID to uint64 & check timestamp
This commit is contained in:
@@ -6,6 +6,7 @@ import (
|
||||
"math/big"
|
||||
"os"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
ethCommon "github.com/ethereum/go-ethereum/common"
|
||||
"github.com/hermeznetwork/hermez-node/common"
|
||||
@@ -55,6 +56,9 @@ func TestBlocks(t *testing.T) {
|
||||
test.WipeDB(historyDB.DB())
|
||||
// Generate fake blocks
|
||||
blocks := test.GenBlocks(fromBlock, toBlock)
|
||||
// Save timestamp of a block with UTC and change it without UTC
|
||||
timestamp := time.Now().Add(time.Second * 13)
|
||||
blocks[fromBlock].Timestamp = timestamp
|
||||
// Insert blocks into DB
|
||||
for i := 0; i < len(blocks); i++ {
|
||||
err := historyDB.AddBlock(&blocks[i])
|
||||
@@ -68,6 +72,11 @@ func TestBlocks(t *testing.T) {
|
||||
for i := range fetchedBlocks {
|
||||
assertEqualBlock(t, &blocks[i], &fetchedBlocks[i])
|
||||
}
|
||||
// Compare saved timestamp vs getted
|
||||
nameZoneUTC, offsetUTC := timestamp.UTC().Zone()
|
||||
zoneFetchedBlock, offsetFetchedBlock := fetchedBlocks[fromBlock].Timestamp.Zone()
|
||||
assert.Equal(t, nameZoneUTC, zoneFetchedBlock)
|
||||
assert.Equal(t, offsetUTC, offsetFetchedBlock)
|
||||
// Get blocks from the DB one by one
|
||||
for i := fromBlock; i < toBlock; i++ {
|
||||
fetchedBlock, err := historyDB.GetBlock(i)
|
||||
@@ -182,7 +191,7 @@ func TestTokens(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
tokens = append([]common.Token{ethToken}, tokens...)
|
||||
limit := uint(10)
|
||||
// Fetch tokens6
|
||||
// Fetch tokens
|
||||
fetchedTokens, _, err := historyDB.GetTokens(nil, nil, "", nil, &limit, OrderAsc)
|
||||
assert.NoError(t, err)
|
||||
// Compare fetched tokens vs generated tokens
|
||||
@@ -196,6 +205,24 @@ func TestTokens(t *testing.T) {
|
||||
assert.Nil(t, token.USD)
|
||||
assert.Nil(t, token.USDUpdate)
|
||||
}
|
||||
|
||||
// Update token value
|
||||
for i, token := range tokens {
|
||||
value := 1.01 * float64(i)
|
||||
assert.NoError(t, historyDB.UpdateTokenValue(token.Symbol, value))
|
||||
}
|
||||
// Fetch tokens
|
||||
fetchedTokens, _, err = historyDB.GetTokens(nil, nil, "", nil, &limit, OrderAsc)
|
||||
assert.NoError(t, err)
|
||||
// Compare fetched tokens vs generated tokens
|
||||
// All the tokens should have USDUpdate setted by the DB trigger
|
||||
for i, token := range fetchedTokens {
|
||||
value := 1.01 * float64(i)
|
||||
assert.Equal(t, value, *token.USD)
|
||||
nameZone, offset := token.USDUpdate.Zone()
|
||||
assert.Equal(t, "UTC", nameZone)
|
||||
assert.Equal(t, 0, offset)
|
||||
}
|
||||
}
|
||||
|
||||
func TestAccounts(t *testing.T) {
|
||||
|
||||
@@ -18,7 +18,7 @@ type TxAPI struct {
|
||||
// Generic
|
||||
IsL1 bool `meddler:"is_l1"`
|
||||
TxID common.TxID `meddler:"id"`
|
||||
ItemID int `meddler:"item_id"`
|
||||
ItemID uint64 `meddler:"item_id"`
|
||||
Type common.TxType `meddler:"type"`
|
||||
Position int `meddler:"position"`
|
||||
FromIdx *apitypes.HezIdx `meddler:"from_idx"`
|
||||
@@ -42,11 +42,11 @@ type TxAPI struct {
|
||||
Nonce *common.Nonce `meddler:"nonce"`
|
||||
// API extras
|
||||
Timestamp time.Time `meddler:"timestamp,utctime"`
|
||||
TotalItems int `meddler:"total_items"`
|
||||
FirstItem int `meddler:"first_item"`
|
||||
LastItem int `meddler:"last_item"`
|
||||
TotalItems uint64 `meddler:"total_items"`
|
||||
FirstItem uint64 `meddler:"first_item"`
|
||||
LastItem uint64 `meddler:"last_item"`
|
||||
TokenID common.TokenID `meddler:"token_id"`
|
||||
TokenItemID int `meddler:"token_item_id"`
|
||||
TokenItemID uint64 `meddler:"token_item_id"`
|
||||
TokenEthBlockNum int64 `meddler:"token_block"`
|
||||
TokenEthAddr ethCommon.Address `meddler:"eth_addr"`
|
||||
TokenName string `meddler:"name"`
|
||||
@@ -137,7 +137,7 @@ type txWrite struct {
|
||||
|
||||
// TokenWithUSD add USD info to common.Token
|
||||
type TokenWithUSD struct {
|
||||
ItemID int `json:"itemId" meddler:"item_id"`
|
||||
ItemID uint64 `json:"itemId" meddler:"item_id"`
|
||||
TokenID common.TokenID `json:"id" meddler:"token_id"`
|
||||
EthBlockNum int64 `json:"ethereumBlockNum" meddler:"eth_block_num"` // Ethereum block number in which this token was registered
|
||||
EthAddr ethCommon.Address `json:"ethereumAddress" meddler:"eth_addr"`
|
||||
@@ -146,15 +146,15 @@ type TokenWithUSD struct {
|
||||
Decimals uint64 `json:"decimals" meddler:"decimals"`
|
||||
USD *float64 `json:"USD" meddler:"usd"`
|
||||
USDUpdate *time.Time `json:"fiatUpdate" meddler:"usd_update,utctime"`
|
||||
TotalItems int `json:"-" meddler:"total_items"`
|
||||
FirstItem int `json:"-" meddler:"first_item"`
|
||||
LastItem int `json:"-" meddler:"last_item"`
|
||||
TotalItems uint64 `json:"-" meddler:"total_items"`
|
||||
FirstItem uint64 `json:"-" meddler:"first_item"`
|
||||
LastItem uint64 `json:"-" meddler:"last_item"`
|
||||
}
|
||||
|
||||
// ExitAPI is a representation of a exit with additional information
|
||||
// required by the API, and extracted by joining token table
|
||||
type ExitAPI struct {
|
||||
ItemID int `meddler:"item_id"`
|
||||
ItemID uint64 `meddler:"item_id"`
|
||||
BatchNum common.BatchNum `meddler:"batch_num"`
|
||||
AccountIdx apitypes.HezIdx `meddler:"account_idx"`
|
||||
MerkleProof *merkletree.CircomVerifierProof `meddler:"merkle_proof,json"`
|
||||
@@ -162,11 +162,11 @@ type ExitAPI struct {
|
||||
InstantWithdrawn *int64 `meddler:"instant_withdrawn"`
|
||||
DelayedWithdrawRequest *int64 `meddler:"delayed_withdraw_request"`
|
||||
DelayedWithdrawn *int64 `meddler:"delayed_withdrawn"`
|
||||
TotalItems int `meddler:"total_items"`
|
||||
FirstItem int `meddler:"first_item"`
|
||||
LastItem int `meddler:"last_item"`
|
||||
TotalItems uint64 `meddler:"total_items"`
|
||||
FirstItem uint64 `meddler:"first_item"`
|
||||
LastItem uint64 `meddler:"last_item"`
|
||||
TokenID common.TokenID `meddler:"token_id"`
|
||||
TokenItemID int `meddler:"token_item_id"`
|
||||
TokenItemID uint64 `meddler:"token_item_id"`
|
||||
TokenEthBlockNum int64 `meddler:"token_block"`
|
||||
TokenEthAddr ethCommon.Address `meddler:"eth_addr"`
|
||||
TokenName string `meddler:"name"`
|
||||
@@ -218,29 +218,29 @@ func (e ExitAPI) MarshalJSON() ([]byte, error) {
|
||||
// CoordinatorAPI is a representation of a coordinator with additional information
|
||||
// required by the API
|
||||
type CoordinatorAPI struct {
|
||||
ItemID int `json:"itemId" meddler:"item_id"`
|
||||
ItemID uint64 `json:"itemId" meddler:"item_id"`
|
||||
Bidder ethCommon.Address `json:"bidderAddr" meddler:"bidder_addr"`
|
||||
Forger ethCommon.Address `json:"forgerAddr" meddler:"forger_addr"`
|
||||
EthBlockNum int64 `json:"ethereumBlock" meddler:"eth_block_num"`
|
||||
URL string `json:"URL" meddler:"url"`
|
||||
TotalItems int `json:"-" meddler:"total_items"`
|
||||
FirstItem int `json:"-" meddler:"first_item"`
|
||||
LastItem int `json:"-" meddler:"last_item"`
|
||||
TotalItems uint64 `json:"-" meddler:"total_items"`
|
||||
FirstItem uint64 `json:"-" meddler:"first_item"`
|
||||
LastItem uint64 `json:"-" meddler:"last_item"`
|
||||
}
|
||||
|
||||
// AccountAPI is a representation of a account with additional information
|
||||
// required by the API
|
||||
type AccountAPI struct {
|
||||
ItemID int `meddler:"item_id"`
|
||||
ItemID uint64 `meddler:"item_id"`
|
||||
Idx apitypes.HezIdx `meddler:"idx"`
|
||||
BatchNum common.BatchNum `meddler:"batch_num"`
|
||||
PublicKey apitypes.HezBJJ `meddler:"bjj"`
|
||||
EthAddr apitypes.HezEthAddr `meddler:"eth_addr"`
|
||||
Nonce common.Nonce `meddler:"-"` // max of 40 bits used
|
||||
Balance *apitypes.BigIntStr `meddler:"-"` // max of 192 bits used
|
||||
TotalItems int `meddler:"total_items"`
|
||||
FirstItem int `meddler:"first_item"`
|
||||
LastItem int `meddler:"last_item"`
|
||||
TotalItems uint64 `meddler:"total_items"`
|
||||
FirstItem uint64 `meddler:"first_item"`
|
||||
LastItem uint64 `meddler:"last_item"`
|
||||
TokenID common.TokenID `meddler:"token_id"`
|
||||
TokenItemID int `meddler:"token_item_id"`
|
||||
TokenEthBlockNum int64 `meddler:"token_block"`
|
||||
@@ -280,7 +280,7 @@ func (account AccountAPI) MarshalJSON() ([]byte, error) {
|
||||
// BatchAPI is a representation of a batch with additional information
|
||||
// required by the API, and extracted by joining block table
|
||||
type BatchAPI struct {
|
||||
ItemID int `json:"itemId" meddler:"item_id"`
|
||||
ItemID uint64 `json:"itemId" meddler:"item_id"`
|
||||
BatchNum common.BatchNum `json:"batchNum" meddler:"batch_num"`
|
||||
EthBlockNum int64 `json:"ethereumBlockNum" meddler:"eth_block_num"`
|
||||
EthBlockHash ethCommon.Hash `json:"ethereumBlockHash" meddler:"hash"`
|
||||
@@ -293,9 +293,9 @@ type BatchAPI struct {
|
||||
ExitRoot apitypes.BigIntStr `json:"exitRoot" meddler:"exit_root"`
|
||||
ForgeL1TxsNum *int64 `json:"forgeL1TransactionsNum" meddler:"forge_l1_txs_num"`
|
||||
SlotNum int64 `json:"slotNum" meddler:"slot_num"`
|
||||
TotalItems int `json:"-" meddler:"total_items"`
|
||||
FirstItem int `json:"-" meddler:"first_item"`
|
||||
LastItem int `json:"-" meddler:"last_item"`
|
||||
TotalItems uint64 `json:"-" meddler:"total_items"`
|
||||
FirstItem uint64 `json:"-" meddler:"first_item"`
|
||||
LastItem uint64 `json:"-" meddler:"last_item"`
|
||||
}
|
||||
|
||||
// Network define status of the network
|
||||
@@ -319,7 +319,7 @@ type Metrics struct {
|
||||
// BidAPI is a representation of a bid with additional information
|
||||
// required by the API
|
||||
type BidAPI struct {
|
||||
ItemID int `json:"itemId" meddler:"item_id"`
|
||||
ItemID uint64 `json:"itemId" meddler:"item_id"`
|
||||
SlotNum int64 `json:"slotNum" meddler:"slot_num"`
|
||||
BidValue apitypes.BigIntStr `json:"bidValue" meddler:"bid_value"`
|
||||
EthBlockNum int64 `json:"ethereumBlockNum" meddler:"eth_block_num"`
|
||||
@@ -327,7 +327,7 @@ type BidAPI struct {
|
||||
Forger ethCommon.Address `json:"forgerAddr" meddler:"forger_addr"`
|
||||
URL string `json:"URL" meddler:"url"`
|
||||
Timestamp time.Time `json:"timestamp" meddler:"timestamp,utctime"`
|
||||
TotalItems int `json:"-" meddler:"total_items"`
|
||||
FirstItem int `json:"-" meddler:"first_item"`
|
||||
LastItem int `json:"-" meddler:"last_item"`
|
||||
TotalItems uint64 `json:"-" meddler:"total_items"`
|
||||
FirstItem uint64 `json:"-" meddler:"first_item"`
|
||||
LastItem uint64 `json:"-" meddler:"last_item"`
|
||||
}
|
||||
|
||||
@@ -90,6 +90,9 @@ func TestAddTxTest(t *testing.T) {
|
||||
assert.NoError(t, err)
|
||||
// assertReadTx(t, commonToRead(tx, tokens), fetchedTx)
|
||||
assertTx(t, tx, fetchedTx)
|
||||
nameZone, offset := fetchedTx.Timestamp.Zone()
|
||||
assert.Equal(t, "UTC", nameZone)
|
||||
assert.Equal(t, 0, offset)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -419,5 +422,8 @@ func TestAuth(t *testing.T) {
|
||||
assert.Equal(t, auths[i].BJJ, auth.BJJ)
|
||||
assert.Equal(t, auths[i].Signature, auth.Signature)
|
||||
assert.Equal(t, auths[i].Timestamp.Unix(), auths[i].Timestamp.Unix())
|
||||
nameZone, offset := auths[i].Timestamp.Zone()
|
||||
assert.Equal(t, "UTC", nameZone)
|
||||
assert.Equal(t, 0, offset)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -62,9 +62,9 @@ type PoolTxAPI struct {
|
||||
// Extra read fileds
|
||||
BatchNum *common.BatchNum `meddler:"batch_num"`
|
||||
Timestamp time.Time `meddler:"timestamp,utctime"`
|
||||
TotalItems int `meddler:"total_items"`
|
||||
TotalItems uint64 `meddler:"total_items"`
|
||||
TokenID common.TokenID `meddler:"token_id"`
|
||||
TokenItemID int `meddler:"token_item_id"`
|
||||
TokenItemID uint64 `meddler:"token_item_id"`
|
||||
TokenEthBlockNum int64 `meddler:"eth_block_num"`
|
||||
TokenEthAddr ethCommon.Address `meddler:"eth_addr"`
|
||||
TokenName string `meddler:"name"`
|
||||
|
||||
10
db/utils.go
10
db/utils.go
@@ -181,11 +181,11 @@ func SlicePtrsToSlice(slice interface{}) interface{} {
|
||||
|
||||
// Pagination give information on the items of a query
|
||||
type Pagination struct {
|
||||
TotalItems int `json:"totalItems"`
|
||||
FirstItem int `json:"firstItem"`
|
||||
LastItem int `json:"lastItem"`
|
||||
FirstReturnedItem int `json:"-"`
|
||||
LastReturnedItem int `json:"-"`
|
||||
TotalItems uint64 `json:"totalItems"`
|
||||
FirstItem uint64 `json:"firstItem"`
|
||||
LastItem uint64 `json:"lastItem"`
|
||||
FirstReturnedItem uint64 `json:"-"`
|
||||
LastReturnedItem uint64 `json:"-"`
|
||||
}
|
||||
|
||||
// Paginationer is an interface that allows getting pagination info on any struct
|
||||
|
||||
Reference in New Issue
Block a user