Improve Testing for Insert, add a query function

This commit is contained in:
Abdul Rabbani 2022-03-22 15:49:30 -04:00
parent 73f46a59ef
commit ce66532fcf
7 changed files with 40 additions and 9 deletions

View File

@ -500,3 +500,7 @@ func (sdi *StateDiffIndexer) Close() error {
func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error { func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error {
return nil return nil
} }
func (sdi *StateDiffIndexer) QueryDb(queryString string) (string, error) {
return "", nil
}

View File

@ -482,3 +482,7 @@ func (sdi *StateDiffIndexer) Close() error {
func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error { func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error {
return nil return nil
} }
func (sdi *StateDiffIndexer) QueryDb(queryString string) (string, error) {
return "", nil
}

View File

@ -554,7 +554,7 @@ func (sdi *StateDiffIndexer) Close() error {
return sdi.dbWriter.Close() return sdi.dbWriter.Close()
} }
// CLEAN UP!! // Update the known gaps table with the gap information.
func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error { func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error {
knownGap := models.KnownGapsModel{ knownGap := models.KnownGapsModel{
StartingBlockNumber: startingBlockNumber.String(), StartingBlockNumber: startingBlockNumber.String(),
@ -567,3 +567,16 @@ func (sdi *StateDiffIndexer) PushKnownGaps(startingBlockNumber *big.Int, endingB
} }
return nil return nil
} }
// This is a simple wrapper function which will run QueryRow on the DB
func (sdi *StateDiffIndexer) QueryDb(queryString string) (string, error) {
var name string
err := sdi.dbWriter.db.QueryRow(context.Background(), queryString).Scan(&name)
// err := sdi.dbWriter.db.QueryRow(context.Background(), "SELECT ename FROM emp ORDER BY sal DESC LIMIT 1;").Scan(&name)
if err != nil {
return "", err
}
fmt.Println(name)
return name, nil
}

View File

@ -118,22 +118,28 @@ func tearDown(t *testing.T) {
} }
func TestKnownGapsUpsert(t *testing.T) { func TestKnownGapsUpsert(t *testing.T) {
var blockNumber int64 = 111 var startBlockNumber int64 = 111
startBlock := big.NewInt(blockNumber) var endBlockNumber int64 = 121
endBlock := big.NewInt(blockNumber + 10)
ind, err := setupDb(t) ind, err := setupDb(t)
if err != nil { if err != nil {
t.Fatal(err) t.Fatal(err)
} }
require.NoError(t, err) require.NoError(t, err)
testKnownGapsUpsert(t, startBlockNumber, endBlockNumber, ind)
//str, err := ind.QueryDb("SELECT MAX(block_number) FROM eth.header_cids") // Figure out the string.
queryString := fmt.Sprintf("SELECT starting_block_number from eth.known_gaps WHERE starting_block_number = %d AND ending_block_number = %d", startBlockNumber, endBlockNumber)
_, queryErr := ind.QueryDb(queryString) // Figure out the string.
require.NoError(t, queryErr)
}
func testKnownGapsUpsert(t *testing.T, startBlockNumber int64, endBlockNumber int64, ind interfaces.StateDiffIndexer) {
startBlock := big.NewInt(startBlockNumber)
endBlock := big.NewInt(endBlockNumber)
processGapError := ind.PushKnownGaps(startBlock, endBlock, false, 1) processGapError := ind.PushKnownGaps(startBlock, endBlock, false, 1)
if processGapError != nil { if processGapError != nil {
t.Fatal(processGapError) t.Fatal(processGapError)
} }
// Read data from the database!
// And compare
require.NoError(t, processGapError) require.NoError(t, processGapError)
} }

View File

@ -101,7 +101,8 @@ func (db *DB) InsertIPLDsStm() string {
return `INSERT INTO public.blocks (key, data) VALUES (unnest($1::TEXT[]), unnest($2::BYTEA[])) ON CONFLICT (key) DO NOTHING` return `INSERT INTO public.blocks (key, data) VALUES (unnest($1::TEXT[]), unnest($2::BYTEA[])) ON CONFLICT (key) DO NOTHING`
} }
// InsertKnownGapsStm satisfies the sql.Statements interface
func (db *DB) InsertKnownGapsStm() string { func (db *DB) InsertKnownGapsStm() string {
return `INSERT INTO eth.known_gaps (starting_block_number, ending_block_number, checked_out, processing_key) VALUES ($1, $2, $3, $4)` return `INSERT INTO eth.known_gaps (starting_block_number, ending_block_number, checked_out, processing_key) VALUES ($1, $2, $3, $4) ON CONFLICT (starting_block_number) DO NOTHING`
//return `INSERT INTO eth.known_gaps (starting_block_number, ending_block_number, checked_out, processing_key) VALUES (1, 2, true, 1)` //return `INSERT INTO eth.known_gaps (starting_block_number, ending_block_number, checked_out, processing_key) VALUES (1, 2, true, 1)`
} }

View File

@ -184,6 +184,8 @@ func (w *Writer) upsertStorageCID(tx Tx, storageCID models.StorageNodeModel) err
return nil return nil
} }
// Upserts known gaps to the DB.
// INSERT INTO eth.known_gaps (starting_block_number, ending_block_number, checked_out, processing_key) VALUES ($1, $2, $3, $4)
func (w *Writer) upsertKnownGaps(knownGaps models.KnownGapsModel) error { func (w *Writer) upsertKnownGaps(knownGaps models.KnownGapsModel) error {
_, err := w.db.Exec(context.Background(), w.db.InsertKnownGapsStm(), _, err := w.db.Exec(context.Background(), w.db.InsertKnownGapsStm(),
knownGaps.StartingBlockNumber, knownGaps.EndingBlockNumber, knownGaps.CheckedOut, knownGaps.ProcessingKey) knownGaps.StartingBlockNumber, knownGaps.EndingBlockNumber, knownGaps.CheckedOut, knownGaps.ProcessingKey)

View File

@ -33,6 +33,7 @@ type StateDiffIndexer interface {
PushCodeAndCodeHash(tx Batch, codeAndCodeHash sdtypes.CodeAndCodeHash) error PushCodeAndCodeHash(tx Batch, codeAndCodeHash sdtypes.CodeAndCodeHash) error
ReportDBMetrics(delay time.Duration, quit <-chan bool) ReportDBMetrics(delay time.Duration, quit <-chan bool)
PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error PushKnownGaps(startingBlockNumber *big.Int, endingBlockNumber *big.Int, checkedOut bool, processingKey int64) error
QueryDb(queryString string) (string, error)
io.Closer io.Closer
} }