diff --git a/pkg/datastore/postgres/repositories/block_repository_test.go b/pkg/datastore/postgres/repositories/block_repository_test.go index a3850190..c0542066 100644 --- a/pkg/datastore/postgres/repositories/block_repository_test.go +++ b/pkg/datastore/postgres/repositories/block_repository_test.go @@ -159,11 +159,12 @@ var _ = Describe("Saving blocks", func() { }) It("saves one uncle associated to the block", func() { + fakeUncle := fakes.GetFakeUncle(common.BytesToHash([]byte{1, 2, 3}).String(), "100000") block := core.Block{ Hash: fakes.FakeHash.String(), Number: 123, Transactions: []core.TransactionModel{fakes.FakeTransaction}, - Uncles: []core.Uncle{fakes.GetFakeUncle(common.BytesToHash([]byte{1, 2, 3}).String(), "100000")}, + Uncles: []core.Uncle{fakeUncle}, UnclesReward: "156250000000000000", } @@ -179,20 +180,20 @@ var _ = Describe("Saving blocks", func() { err := db.Get(&uncleModel, `SELECT hash, reward, miner, raw, block_timestamp FROM uncles WHERE block_id = $1 AND hash = $2`, id, common.BytesToHash([]byte{1, 2, 3}).Hex()) Expect(err).ToNot(HaveOccurred()) - Expect(uncleModel.Hash).To(Equal(common.BytesToHash([]byte{1, 2, 3}).Hex())) - Expect(uncleModel.Reward).To(Equal("100000")) - Expect(uncleModel.Miner).To(Equal(fakes.FakeAddress.Hex())) - Expect(uncleModel.Timestamp).To(Equal("111111111")) + Expect(uncleModel.Hash).To(Equal(fakeUncle.Hash)) + Expect(uncleModel.Reward).To(Equal(fakeUncle.Reward)) + Expect(uncleModel.Miner).To(Equal(fakeUncle.Miner)) + Expect(uncleModel.Timestamp).To(Equal(fakeUncle.Timestamp)) }) It("saves two uncles associated to the block", func() { + fakeUncleOne := fakes.GetFakeUncle(common.BytesToHash([]byte{1, 2, 3}).String(), "100000") + fakeUncleTwo := fakes.GetFakeUncle(common.BytesToHash([]byte{3, 2, 1}).String(), "90000") block := core.Block{ Hash: fakes.FakeHash.String(), Number: 123, Transactions: []core.TransactionModel{fakes.FakeTransaction}, - Uncles: []core.Uncle{ - fakes.GetFakeUncle(common.BytesToHash([]byte{1, 2, 3}).String(), "100000"), - fakes.GetFakeUncle(common.BytesToHash([]byte{3, 2, 1}).String(), "90000")}, + Uncles: []core.Uncle{fakeUncleOne, fakeUncleTwo}, UnclesReward: "312500000000000000", } @@ -210,18 +211,18 @@ var _ = Describe("Saving blocks", func() { err := db.Get(&uncleModel, `SELECT hash, reward, miner, raw, block_timestamp FROM uncles WHERE block_id = $1 AND hash = $2`, id, common.BytesToHash([]byte{1, 2, 3}).Hex()) Expect(err).ToNot(HaveOccurred()) - Expect(uncleModel.Hash).To(Equal(common.BytesToHash([]byte{1, 2, 3}).Hex())) - Expect(uncleModel.Reward).To(Equal("100000")) - Expect(uncleModel.Miner).To(Equal(fakes.FakeAddress.Hex())) - Expect(uncleModel.Timestamp).To(Equal("111111111")) + Expect(uncleModel.Hash).To(Equal(fakeUncleOne.Hash)) + Expect(uncleModel.Reward).To(Equal(fakeUncleOne.Reward)) + Expect(uncleModel.Miner).To(Equal(fakeUncleOne.Miner)) + Expect(uncleModel.Timestamp).To(Equal(fakeUncleOne.Timestamp)) err = db.Get(&uncleModel, `SELECT hash, reward, miner, raw, block_timestamp FROM uncles WHERE block_id = $1 AND hash = $2`, id, common.BytesToHash([]byte{3, 2, 1}).Hex()) Expect(err).ToNot(HaveOccurred()) - Expect(uncleModel.Hash).To(Equal(common.BytesToHash([]byte{3, 2, 1}).Hex())) - Expect(uncleModel.Reward).To(Equal("90000")) - Expect(uncleModel.Miner).To(Equal(fakes.FakeAddress.Hex())) - Expect(uncleModel.Timestamp).To(Equal("111111111")) + Expect(uncleModel.Hash).To(Equal(fakeUncleTwo.Hash)) + Expect(uncleModel.Reward).To(Equal(fakeUncleTwo.Reward)) + Expect(uncleModel.Miner).To(Equal(fakeUncleTwo.Miner)) + Expect(uncleModel.Timestamp).To(Equal(fakeUncleTwo.Timestamp)) }) It(`replaces blocks and transactions associated to the block diff --git a/pkg/datastore/postgres/repositories/checked_headers_repository_test.go b/pkg/datastore/postgres/repositories/checked_headers_repository_test.go index 613432b7..cef5978c 100644 --- a/pkg/datastore/postgres/repositories/checked_headers_repository_test.go +++ b/pkg/datastore/postgres/repositories/checked_headers_repository_test.go @@ -154,13 +154,11 @@ var _ = Describe("Checked Headers repository", func() { Describe("when ending block is specified", func() { It("excludes headers that are out of range", func() { headers, err := repo.UncheckedHeaders(startingBlockNumber, endingBlockNumber, uncheckedCheckCount) - Expect(err).NotTo(HaveOccurred()) - // doesn't include outOfRangeBlockNumber - Expect(len(headers)).To(Equal(3)) - Expect(headers[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber))) - Expect(headers[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber))) - Expect(headers[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber))) + + headerBlockNumbers := getBlockNumbers(headers) + Expect(headerBlockNumbers).To(ConsistOf(startingBlockNumber, middleBlockNumber, endingBlockNumber)) + Expect(headerBlockNumbers).NotTo(ContainElement(outOfRangeBlockNumber)) }) It("excludes headers that have been checked more than the check count", func() { @@ -168,12 +166,11 @@ var _ = Describe("Checked Headers repository", func() { Expect(err).NotTo(HaveOccurred()) headers, err := repo.UncheckedHeaders(startingBlockNumber, endingBlockNumber, uncheckedCheckCount) - Expect(err).NotTo(HaveOccurred()) - // doesn't include middleBlockNumber - Expect(len(headers)).To(Equal(2)) - Expect(headers[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber))) - Expect(headers[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber))) + + headerBlockNumbers := getBlockNumbers(headers) + Expect(headerBlockNumbers).To(ConsistOf(startingBlockNumber, endingBlockNumber)) + Expect(headerBlockNumbers).NotTo(ContainElement(middleBlockNumber)) }) It("does not exclude headers that have been checked less than the check count", func() { @@ -181,12 +178,10 @@ var _ = Describe("Checked Headers repository", func() { Expect(err).NotTo(HaveOccurred()) headers, err := repo.UncheckedHeaders(startingBlockNumber, endingBlockNumber, recheckCheckCount) - Expect(err).NotTo(HaveOccurred()) - Expect(len(headers)).To(Equal(3)) - Expect(headers[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber))) - Expect(headers[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber))) - Expect(headers[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber))) + + headerBlockNumbers := getBlockNumbers(headers) + Expect(headerBlockNumbers).To(ConsistOf(startingBlockNumber, middleBlockNumber, endingBlockNumber)) }) It("only returns headers associated with the current node", func() { @@ -198,20 +193,15 @@ var _ = Describe("Checked Headers repository", func() { Expect(err).NotTo(HaveOccurred()) } - Expect(err).NotTo(HaveOccurred()) nodeOneMissingHeaders, err := repo.UncheckedHeaders(startingBlockNumber, endingBlockNumber, uncheckedCheckCount) Expect(err).NotTo(HaveOccurred()) - Expect(len(nodeOneMissingHeaders)).To(Equal(3)) - Expect(nodeOneMissingHeaders[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber))) - Expect(nodeOneMissingHeaders[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber))) - Expect(nodeOneMissingHeaders[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber))) + nodeOneHeaderBlockNumbers := getBlockNumbers(nodeOneMissingHeaders) + Expect(nodeOneHeaderBlockNumbers).To(ConsistOf(startingBlockNumber, middleBlockNumber, endingBlockNumber)) nodeTwoMissingHeaders, err := repoTwo.UncheckedHeaders(startingBlockNumber, endingBlockNumber+10, uncheckedCheckCount) Expect(err).NotTo(HaveOccurred()) - Expect(len(nodeTwoMissingHeaders)).To(Equal(3)) - Expect(nodeTwoMissingHeaders[0].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10))) - Expect(nodeTwoMissingHeaders[1].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10))) - Expect(nodeTwoMissingHeaders[2].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10))) + nodeTwoHeaderBlockNumbers := getBlockNumbers(nodeTwoMissingHeaders) + Expect(nodeTwoHeaderBlockNumbers).To(ConsistOf(startingBlockNumber+10, middleBlockNumber+10, endingBlockNumber+10)) }) }) @@ -220,13 +210,10 @@ var _ = Describe("Checked Headers repository", func() { It("includes all non-checked headers when ending block is -1 ", func() { headers, err := repo.UncheckedHeaders(startingBlockNumber, endingBlock, uncheckedCheckCount) - Expect(err).NotTo(HaveOccurred()) - Expect(len(headers)).To(Equal(4)) - Expect(headers[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[3].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(middleBlockNumber), Equal(outOfRangeBlockNumber))) + + headerBlockNumbers := getBlockNumbers(headers) + Expect(headerBlockNumbers).To(ConsistOf(startingBlockNumber, middleBlockNumber, endingBlockNumber, outOfRangeBlockNumber)) }) It("excludes headers that have been checked more than the check count", func() { @@ -234,13 +221,11 @@ var _ = Describe("Checked Headers repository", func() { Expect(err).NotTo(HaveOccurred()) headers, err := repo.UncheckedHeaders(startingBlockNumber, endingBlock, uncheckedCheckCount) - Expect(err).NotTo(HaveOccurred()) - // doesn't include middleBlockNumber - Expect(len(headers)).To(Equal(3)) - Expect(headers[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) + + headerBlockNumbers := getBlockNumbers(headers) + Expect(headerBlockNumbers).To(ConsistOf(startingBlockNumber, endingBlockNumber, outOfRangeBlockNumber)) + Expect(headerBlockNumbers).NotTo(ContainElement(middleBlockNumber)) }) It("does not exclude headers that have been checked less than the check count", func() { @@ -248,13 +233,10 @@ var _ = Describe("Checked Headers repository", func() { Expect(err).NotTo(HaveOccurred()) headers, err := repo.UncheckedHeaders(startingBlockNumber, endingBlock, recheckCheckCount) - Expect(err).NotTo(HaveOccurred()) - Expect(len(headers)).To(Equal(4)) - Expect(headers[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(headers[3].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) + + headerBlockNumbers := getBlockNumbers(headers) + Expect(headerBlockNumbers).To(ConsistOf(startingBlockNumber, middleBlockNumber, endingBlockNumber, outOfRangeBlockNumber)) }) It("only returns headers associated with the current node", func() { @@ -266,23 +248,24 @@ var _ = Describe("Checked Headers repository", func() { Expect(err).NotTo(HaveOccurred()) } - Expect(err).NotTo(HaveOccurred()) nodeOneMissingHeaders, err := repo.UncheckedHeaders(startingBlockNumber, endingBlock, uncheckedCheckCount) Expect(err).NotTo(HaveOccurred()) - Expect(len(nodeOneMissingHeaders)).To(Equal(4)) - Expect(nodeOneMissingHeaders[0].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(nodeOneMissingHeaders[1].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(nodeOneMissingHeaders[2].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) - Expect(nodeOneMissingHeaders[3].BlockNumber).To(Or(Equal(startingBlockNumber), Equal(middleBlockNumber), Equal(endingBlockNumber), Equal(outOfRangeBlockNumber))) + nodeOneBlockNumbers := getBlockNumbers(nodeOneMissingHeaders) + Expect(nodeOneBlockNumbers).To(ConsistOf(startingBlockNumber, middleBlockNumber, endingBlockNumber, outOfRangeBlockNumber)) nodeTwoMissingHeaders, err := repoTwo.UncheckedHeaders(startingBlockNumber, endingBlock, uncheckedCheckCount) Expect(err).NotTo(HaveOccurred()) - Expect(len(nodeTwoMissingHeaders)).To(Equal(4)) - Expect(nodeTwoMissingHeaders[0].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10), Equal(outOfRangeBlockNumber+10))) - Expect(nodeTwoMissingHeaders[1].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10), Equal(outOfRangeBlockNumber+10))) - Expect(nodeTwoMissingHeaders[2].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10), Equal(outOfRangeBlockNumber+10))) - Expect(nodeTwoMissingHeaders[3].BlockNumber).To(Or(Equal(startingBlockNumber+10), Equal(middleBlockNumber+10), Equal(endingBlockNumber+10), Equal(outOfRangeBlockNumber+10))) + nodeTwoBlockNumbers := getBlockNumbers(nodeTwoMissingHeaders) + Expect(nodeTwoBlockNumbers).To(ConsistOf(startingBlockNumber+10, middleBlockNumber+10, endingBlockNumber+10, outOfRangeBlockNumber+10)) }) }) }) }) + +func getBlockNumbers(headers []core.Header) []int64 { + var headerBlockNumbers []int64 + for _, header := range headers { + headerBlockNumbers = append(headerBlockNumbers, header.BlockNumber) + } + return headerBlockNumbers +} diff --git a/pkg/datastore/postgres/repositories/full_sync_log_repository_test.go b/pkg/datastore/postgres/repositories/full_sync_log_repository_test.go index 981c242a..508b442a 100644 --- a/pkg/datastore/postgres/repositories/full_sync_log_repository_test.go +++ b/pkg/datastore/postgres/repositories/full_sync_log_repository_test.go @@ -161,7 +161,6 @@ var _ = Describe("Full sync log Repository", func() { }) It("saves the logs attached to a receipt", func() { - logs := []core.FullSyncLog{{ Address: "0x8a4774fe82c63484afef97ca8d89a6ea5e21f973", BlockNumber: 4745407, @@ -215,7 +214,7 @@ var _ = Describe("Full sync log Repository", func() { Expect(err).NotTo(HaveOccurred()) expected := logs[1:] - Expect(retrievedLogs).To(Equal(expected)) + Expect(retrievedLogs).To(ConsistOf(expected)) }) }) }) diff --git a/pkg/fakes/data.go b/pkg/fakes/data.go index 3c6b7046..2865a29b 100644 --- a/pkg/fakes/data.go +++ b/pkg/fakes/data.go @@ -32,7 +32,7 @@ var ( FakeAddress = common.HexToAddress("0x" + RandomString(40)) FakeError = errors.New("failed") FakeHash = common.BytesToHash([]byte{1, 2, 3, 4, 5}) - fakeTimestamp = int64(111111111) + fakeTimestamp = rand.Int63() ) var rawFakeHeader, _ = json.Marshal(types.Header{})