[#421] governance: Add list update functions for inner ring

Signed-off-by: Alex Vanin <alexey@nspcc.ru>
This commit is contained in:
Alex Vanin 2021-03-24 18:31:01 +03:00 committed by Alex Vanin
parent 6339a115dc
commit f4e39678f1
2 changed files with 80 additions and 1 deletions

View file

@ -52,6 +52,56 @@ func TestNewAlphabetList(t *testing.T) {
})
}
func TestUpdateInnerRing(t *testing.T) {
k, err := generateKeys(6)
require.NoError(t, err)
t.Run("same keys", func(t *testing.T) {
ir := k[:3]
before := k[1:3]
after := keys.PublicKeys{k[2], k[1]}
list, err := updateInnerRing(ir, before, after)
require.NoError(t, err)
sort.Sort(ir)
sort.Sort(list)
require.True(t, equalPublicKeyLists(ir, list))
})
t.Run("unknown keys", func(t *testing.T) {
ir := k[:3]
before := k[3:4]
after := k[4:5]
list, err := updateInnerRing(ir, before, after)
require.NoError(t, err)
require.True(t, equalPublicKeyLists(ir, list))
})
t.Run("different size", func(t *testing.T) {
ir := k[:3]
before := k[1:3]
after := k[4:5]
_, err = updateInnerRing(ir, before, after)
require.Error(t, err)
})
t.Run("new list", func(t *testing.T) {
ir := k[:3]
before := k[1:3]
after := k[4:6]
exp := keys.PublicKeys{k[0], k[4], k[5]}
list, err := updateInnerRing(ir, before, after)
require.NoError(t, err)
require.True(t, equalPublicKeyLists(exp, list))
})
}
func generateKeys(n int) (keys.PublicKeys, error) {
pubKeys := make(keys.PublicKeys, 0, n)