Merge pull request #156 from vulcanize/contract-watcher-init
Enable contractWatcher without prior headerSync
This commit is contained in:
commit
7be070fcea
@ -78,11 +78,10 @@ var _ = Describe("contractWatcher headerSync transformer", func() {
|
||||
Expect(c.Address).To(Equal(tusdAddr))
|
||||
})
|
||||
|
||||
It("Fails to initialize if first and block cannot be fetched from vDB headers table", func() {
|
||||
It("initializes when no headers available in db", func() {
|
||||
t := transformer.NewTransformer(test_helpers.TusdConfig, blockChain, db)
|
||||
err = t.Init()
|
||||
Expect(err).To(HaveOccurred())
|
||||
Expect(err.Error()).To(ContainSubstring("no rows in result set"))
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
})
|
||||
|
||||
It("Does nothing if nothing if no addresses are configured", func() {
|
||||
|
@ -17,6 +17,7 @@
|
||||
package transformer
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
"errors"
|
||||
"fmt"
|
||||
"strings"
|
||||
@ -124,7 +125,11 @@ func (tr *Transformer) Init() error {
|
||||
// Get first block and most recent block number in the header repo
|
||||
firstBlock, retrieveErr := tr.Retriever.RetrieveFirstBlock()
|
||||
if retrieveErr != nil {
|
||||
return fmt.Errorf("error retrieving first block: %s", retrieveErr.Error())
|
||||
if retrieveErr == sql.ErrNoRows {
|
||||
firstBlock = 0
|
||||
} else {
|
||||
return fmt.Errorf("error retrieving first block: %s", retrieveErr.Error())
|
||||
}
|
||||
}
|
||||
|
||||
// Set to specified range if it falls within the bounds
|
||||
|
@ -17,6 +17,7 @@
|
||||
package transformer_test
|
||||
|
||||
import (
|
||||
"database/sql"
|
||||
. "github.com/onsi/ginkgo"
|
||||
. "github.com/onsi/gomega"
|
||||
|
||||
@ -101,7 +102,17 @@ var _ = Describe("Transformer", func() {
|
||||
Expect(c.Address).To(Equal(fakeAddress))
|
||||
})
|
||||
|
||||
It("Fails to initialize if first block cannot be fetched from vDB headers table", func() {
|
||||
It("uses first block from config if vDB headers table has no rows", func() {
|
||||
blockRetriever := &fakes.MockHeaderSyncBlockRetriever{}
|
||||
blockRetriever.FirstBlockErr = sql.ErrNoRows
|
||||
t := getFakeTransformer(blockRetriever, &fakes.MockParser{}, &fakes.MockPoller{})
|
||||
|
||||
err := t.Init()
|
||||
|
||||
Expect(err).ToNot(HaveOccurred())
|
||||
})
|
||||
|
||||
It("returns error if fetching first block fails for other reason", func() {
|
||||
blockRetriever := &fakes.MockHeaderSyncBlockRetriever{}
|
||||
blockRetriever.FirstBlockErr = fakes.FakeError
|
||||
t := getFakeTransformer(blockRetriever, &fakes.MockParser{}, &fakes.MockPoller{})
|
||||
|
Loading…
Reference in New Issue
Block a user