mirror of
https://github.com/ethereum/go-ethereum.git
synced 2026-08-20 10:52:25 +00:00
swarm/storage/feed/lookup: Add test to catch bad hint
This commit is contained in:
parent
d039f16d64
commit
1901255e78
1 changed files with 50 additions and 0 deletions
|
|
@ -196,6 +196,56 @@ func TestBadHint(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
// Tests whether the update is found when the bad hint is exactly below the last update
|
||||
func TestBadHintNextToUpdate(t *testing.T) {
|
||||
store := make(Store)
|
||||
readCount := 0
|
||||
|
||||
readFunc := makeReadFunc(store, &readCount)
|
||||
now := uint64(1533903729)
|
||||
var last *Data
|
||||
|
||||
/* the following loop places updates in the following epochs:
|
||||
Update# Time Base Level
|
||||
0 1200000000 1174405120 25
|
||||
1 1200000001 1191182336 24
|
||||
2 1200000002 1199570944 23
|
||||
3 1200000003 1199570944 22
|
||||
4 1200000004 1199570944 21
|
||||
|
||||
The situation we want to trigger is to give a bad hint exactly
|
||||
in T=1200000005, B=1199570944 and L=20, which is where the next
|
||||
update would have logically been.
|
||||
This affects only when the bad hint's base == previous update's base,
|
||||
in this case 1199570944
|
||||
|
||||
*/
|
||||
var epoch lookup.Epoch
|
||||
for i := uint64(0); i < 5; i++ {
|
||||
data := Data{
|
||||
Payload: i,
|
||||
Time: 0,
|
||||
}
|
||||
last = &data
|
||||
epoch = update(store, epoch, 1200000000+i, &data)
|
||||
}
|
||||
|
||||
// come up with some evil hint:
|
||||
// put it where the next update would have been
|
||||
badHint := lookup.Epoch{
|
||||
Level: 20,
|
||||
Time: 1200000005,
|
||||
}
|
||||
|
||||
value, err := lookup.Lookup(context.Background(), now, badHint, readFunc)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if value != last {
|
||||
t.Fatalf("Expected lookup to return the last written value: %v. Got %v", last, value)
|
||||
}
|
||||
}
|
||||
|
||||
func TestLookupFail(t *testing.T) {
|
||||
|
||||
store := make(Store)
|
||||
|
|
|
|||
Loading…
Reference in a new issue