Make price feed log persistence atomic per block

- Prevents marking header as checked if only one of several price feed
  logs is successfully persisted
This commit is contained in:
Rob Mulholand
2018-09-25 14:11:35 -05:00
parent ac362650db
commit 92525ca575
8 changed files with 54 additions and 43 deletions
@@ -22,14 +22,14 @@ import (
type MockPriceFeedConverter struct {
converterErr error
PassedLog types.Log
PassedLogs []types.Log
PassedHeaderID int64
}
func (converter *MockPriceFeedConverter) ToModel(log types.Log, headerID int64) (price_feeds.PriceFeedModel, error) {
converter.PassedLog = log
func (converter *MockPriceFeedConverter) ToModels(logs []types.Log, headerID int64) ([]price_feeds.PriceFeedModel, error) {
converter.PassedLogs = logs
converter.PassedHeaderID = headerID
return test_data.PriceFeedModel, converter.converterErr
return []price_feeds.PriceFeedModel{test_data.PriceFeedModel}, converter.converterErr
}
func (converter *MockPriceFeedConverter) SetConverterErr(e error) {
@@ -29,7 +29,7 @@ type MockPriceFeedRepository struct {
missingHeaders []core.Header
missingHeadersErr error
passedEndingBlockNumber int64
passedModel price_feeds.PriceFeedModel
passedModels []price_feeds.PriceFeedModel
passedStartingBlockNumber int64
}
@@ -49,9 +49,9 @@ func (repository *MockPriceFeedRepository) SetMissingHeaders(headers []core.Head
repository.missingHeaders = headers
}
func (repository *MockPriceFeedRepository) Create(headerID int64, model price_feeds.PriceFeedModel) error {
func (repository *MockPriceFeedRepository) Create(headerID int64, models []price_feeds.PriceFeedModel) error {
repository.createPassedHeaderID = headerID
repository.passedModel = model
repository.passedModels = models
return repository.createErr
}
@@ -66,9 +66,9 @@ func (repository *MockPriceFeedRepository) MissingHeaders(startingBlockNumber, e
return repository.missingHeaders, repository.missingHeadersErr
}
func (repository *MockPriceFeedRepository) AssertCreateCalledWith(headerID int64, model price_feeds.PriceFeedModel) {
func (repository *MockPriceFeedRepository) AssertCreateCalledWith(headerID int64, models []price_feeds.PriceFeedModel) {
Expect(repository.createPassedHeaderID).To(Equal(headerID))
Expect(repository.passedModel).To(Equal(model))
Expect(repository.passedModels).To(Equal(models))
}
func (repository *MockPriceFeedRepository) AssertMarkHeaderCheckedCalledWith(headerID int64) {