mirror of https://github.com/poanetwork/gecko.git
55 lines
1.2 KiB
Go
55 lines
1.2 KiB
Go
// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
|
|
// See the file LICENSE for licensing terms.
|
|
|
|
package snowball
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/ava-labs/gecko/ids"
|
|
"github.com/prometheus/client_golang/prometheus"
|
|
)
|
|
|
|
func TestByzantine(t *testing.T) {
|
|
params := Parameters{
|
|
Metrics: prometheus.NewRegistry(),
|
|
K: 1, Alpha: 1, BetaVirtuous: 3, BetaRogue: 5,
|
|
}
|
|
|
|
byzFactory := ByzantineFactory{}
|
|
byz := byzFactory.New()
|
|
byz.Initialize(params, Blue)
|
|
|
|
if ret := byz.Parameters(); ret != params {
|
|
t.Fatalf("Should have returned the correct params")
|
|
}
|
|
|
|
byz.Add(Green)
|
|
|
|
if pref := byz.Preference(); !pref.Equals(Blue) {
|
|
t.Fatalf("Wrong preference, expected %s returned %s", Blue, pref)
|
|
}
|
|
|
|
oneGreen := ids.Bag{}
|
|
oneGreen.Add(Green)
|
|
byz.RecordPoll(oneGreen)
|
|
|
|
if pref := byz.Preference(); !pref.Equals(Blue) {
|
|
t.Fatalf("Wrong preference, expected %s returned %s", Blue, pref)
|
|
}
|
|
|
|
byz.RecordUnsuccessfulPoll()
|
|
|
|
if pref := byz.Preference(); !pref.Equals(Blue) {
|
|
t.Fatalf("Wrong preference, expected %s returned %s", Blue, pref)
|
|
}
|
|
|
|
if final := byz.Finalized(); !final {
|
|
t.Fatalf("Should be marked as accepted")
|
|
}
|
|
|
|
if str := byz.String(); str != Blue.String() {
|
|
t.Fatalf("Wrong string, expected %s returned %s", Blue, str)
|
|
}
|
|
}
|