rpc: change the type of BlockFilter.Primary from int to byte
BlockFilter has PrinaryIndex of int type while block.Block structure itself has PrimaryIndex of byte. It's needed to prevent changing filters field type and all associated subscriptions logic on server side. Refs #3241. Signed-off-by: Ekaterina Pavlova <ekt@morphbits.io>
This commit is contained in:
parent
9015215228
commit
275e814271
7 changed files with 26 additions and 26 deletions
|
@ -67,11 +67,11 @@ omitted if empty).
|
||||||
|
|
||||||
Recognized stream names:
|
Recognized stream names:
|
||||||
* `block_added`
|
* `block_added`
|
||||||
Filter: `primary` as an integer with primary (speaker) node index from
|
Filter: `primary` as an integer with a valid range of 0-255 with
|
||||||
ConsensusData and/or `since` field as an integer value with block
|
primary (speaker) node index from ConsensusData and/or `since` field as
|
||||||
index starting from which new block notifications will be received and/or
|
an integer value with block index starting from which new block
|
||||||
`till` field as an integer values containing block index till which new
|
notifications will be received and/or `till` field as an integer values
|
||||||
block notifications will be received.
|
containing block index till which new block notifications will be received.
|
||||||
* `header_of_added_block`
|
* `header_of_added_block`
|
||||||
Filter: `primary` as an integer with primary (speaker) node index from
|
Filter: `primary` as an integer with primary (speaker) node index from
|
||||||
ConsensusData and/or `since` field as an integer value with header
|
ConsensusData and/or `since` field as an integer value with header
|
||||||
|
|
|
@ -11,7 +11,7 @@ type (
|
||||||
// since/till the specified index inclusively). nil value treated as missing
|
// since/till the specified index inclusively). nil value treated as missing
|
||||||
// filter.
|
// filter.
|
||||||
BlockFilter struct {
|
BlockFilter struct {
|
||||||
Primary *int `json:"primary,omitempty"`
|
Primary *byte `json:"primary,omitempty"`
|
||||||
Since *uint32 `json:"since,omitempty"`
|
Since *uint32 `json:"since,omitempty"`
|
||||||
Till *uint32 `json:"till,omitempty"`
|
Till *uint32 `json:"till,omitempty"`
|
||||||
}
|
}
|
||||||
|
@ -56,7 +56,7 @@ func (f *BlockFilter) Copy() *BlockFilter {
|
||||||
}
|
}
|
||||||
var res = new(BlockFilter)
|
var res = new(BlockFilter)
|
||||||
if f.Primary != nil {
|
if f.Primary != nil {
|
||||||
res.Primary = new(int)
|
res.Primary = new(byte)
|
||||||
*res.Primary = *f.Primary
|
*res.Primary = *f.Primary
|
||||||
}
|
}
|
||||||
if f.Since != nil {
|
if f.Since != nil {
|
||||||
|
|
|
@ -16,12 +16,12 @@ func TestBlockFilterCopy(t *testing.T) {
|
||||||
tf = bf.Copy()
|
tf = bf.Copy()
|
||||||
require.Equal(t, bf, tf)
|
require.Equal(t, bf, tf)
|
||||||
|
|
||||||
bf.Primary = new(int)
|
bf.Primary = new(byte)
|
||||||
*bf.Primary = 42
|
*bf.Primary = 42
|
||||||
|
|
||||||
tf = bf.Copy()
|
tf = bf.Copy()
|
||||||
require.Equal(t, bf, tf)
|
require.Equal(t, bf, tf)
|
||||||
*bf.Primary = 100500
|
*bf.Primary = 100
|
||||||
require.NotEqual(t, bf, tf)
|
require.NotEqual(t, bf, tf)
|
||||||
|
|
||||||
bf.Since = new(uint32)
|
bf.Since = new(uint32)
|
||||||
|
|
|
@ -42,7 +42,7 @@ func Matches(f Comparator, r Container) bool {
|
||||||
} else {
|
} else {
|
||||||
b = &r.EventPayload().(*block.Block).Header
|
b = &r.EventPayload().(*block.Block).Header
|
||||||
}
|
}
|
||||||
primaryOk := filt.Primary == nil || *filt.Primary == int(b.PrimaryIndex)
|
primaryOk := filt.Primary == nil || *filt.Primary == b.PrimaryIndex
|
||||||
sinceOk := filt.Since == nil || *filt.Since <= b.Index
|
sinceOk := filt.Since == nil || *filt.Since <= b.Index
|
||||||
tillOk := filt.Till == nil || b.Index <= *filt.Till
|
tillOk := filt.Till == nil || b.Index <= *filt.Till
|
||||||
return primaryOk && sinceOk && tillOk
|
return primaryOk && sinceOk && tillOk
|
||||||
|
|
|
@ -40,8 +40,8 @@ func (c testContainer) EventPayload() any {
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestMatches(t *testing.T) {
|
func TestMatches(t *testing.T) {
|
||||||
primary := 1
|
primary := byte(1)
|
||||||
badPrimary := 2
|
badPrimary := byte(2)
|
||||||
index := uint32(5)
|
index := uint32(5)
|
||||||
badHigherIndex := uint32(6)
|
badHigherIndex := uint32(6)
|
||||||
badLowerIndex := index - 1
|
badLowerIndex := index - 1
|
||||||
|
|
|
@ -381,7 +381,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
{"block header primary",
|
{"block header primary",
|
||||||
func(t *testing.T, wsc *WSClient) {
|
func(t *testing.T, wsc *WSClient) {
|
||||||
primary := 3
|
primary := byte(3)
|
||||||
_, err := wsc.ReceiveHeadersOfAddedBlocks(&neorpc.BlockFilter{Primary: &primary}, make(chan *block.Header))
|
_, err := wsc.ReceiveHeadersOfAddedBlocks(&neorpc.BlockFilter{Primary: &primary}, make(chan *block.Header))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
},
|
},
|
||||||
|
@ -389,7 +389,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, 3, *filt.Primary)
|
require.Equal(t, byte(3), *filt.Primary)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Since)
|
require.Equal(t, (*uint32)(nil), filt.Since)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Till)
|
require.Equal(t, (*uint32)(nil), filt.Till)
|
||||||
},
|
},
|
||||||
|
@ -404,7 +404,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, (*int)(nil), filt.Primary)
|
require.Equal(t, (*byte)(nil), filt.Primary)
|
||||||
require.Equal(t, uint32(3), *filt.Since)
|
require.Equal(t, uint32(3), *filt.Since)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Till)
|
require.Equal(t, (*uint32)(nil), filt.Till)
|
||||||
},
|
},
|
||||||
|
@ -419,7 +419,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, (*int)(nil), filt.Primary)
|
require.Equal(t, (*byte)(nil), filt.Primary)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Since)
|
require.Equal(t, (*uint32)(nil), filt.Since)
|
||||||
require.Equal(t, (uint32)(3), *filt.Till)
|
require.Equal(t, (uint32)(3), *filt.Till)
|
||||||
},
|
},
|
||||||
|
@ -428,7 +428,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
func(t *testing.T, wsc *WSClient) {
|
func(t *testing.T, wsc *WSClient) {
|
||||||
var (
|
var (
|
||||||
since uint32 = 3
|
since uint32 = 3
|
||||||
primary = 2
|
primary = byte(2)
|
||||||
till uint32 = 5
|
till uint32 = 5
|
||||||
)
|
)
|
||||||
_, err := wsc.ReceiveHeadersOfAddedBlocks(&neorpc.BlockFilter{
|
_, err := wsc.ReceiveHeadersOfAddedBlocks(&neorpc.BlockFilter{
|
||||||
|
@ -442,14 +442,14 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, 2, *filt.Primary)
|
require.Equal(t, byte(2), *filt.Primary)
|
||||||
require.Equal(t, uint32(3), *filt.Since)
|
require.Equal(t, uint32(3), *filt.Since)
|
||||||
require.Equal(t, uint32(5), *filt.Till)
|
require.Equal(t, uint32(5), *filt.Till)
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
{"blocks primary",
|
{"blocks primary",
|
||||||
func(t *testing.T, wsc *WSClient) {
|
func(t *testing.T, wsc *WSClient) {
|
||||||
primary := 3
|
primary := byte(3)
|
||||||
_, err := wsc.ReceiveBlocks(&neorpc.BlockFilter{Primary: &primary}, make(chan *block.Block))
|
_, err := wsc.ReceiveBlocks(&neorpc.BlockFilter{Primary: &primary}, make(chan *block.Block))
|
||||||
require.NoError(t, err)
|
require.NoError(t, err)
|
||||||
},
|
},
|
||||||
|
@ -457,7 +457,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, 3, *filt.Primary)
|
require.Equal(t, byte(3), *filt.Primary)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Since)
|
require.Equal(t, (*uint32)(nil), filt.Since)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Till)
|
require.Equal(t, (*uint32)(nil), filt.Till)
|
||||||
},
|
},
|
||||||
|
@ -472,7 +472,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, (*int)(nil), filt.Primary)
|
require.Equal(t, (*byte)(nil), filt.Primary)
|
||||||
require.Equal(t, uint32(3), *filt.Since)
|
require.Equal(t, uint32(3), *filt.Since)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Till)
|
require.Equal(t, (*uint32)(nil), filt.Till)
|
||||||
},
|
},
|
||||||
|
@ -487,7 +487,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, (*int)(nil), filt.Primary)
|
require.Equal(t, (*byte)(nil), filt.Primary)
|
||||||
require.Equal(t, (*uint32)(nil), filt.Since)
|
require.Equal(t, (*uint32)(nil), filt.Since)
|
||||||
require.Equal(t, (uint32)(3), *filt.Till)
|
require.Equal(t, (uint32)(3), *filt.Till)
|
||||||
},
|
},
|
||||||
|
@ -496,7 +496,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
func(t *testing.T, wsc *WSClient) {
|
func(t *testing.T, wsc *WSClient) {
|
||||||
var (
|
var (
|
||||||
since uint32 = 3
|
since uint32 = 3
|
||||||
primary = 2
|
primary = byte(2)
|
||||||
till uint32 = 5
|
till uint32 = 5
|
||||||
)
|
)
|
||||||
_, err := wsc.ReceiveBlocks(&neorpc.BlockFilter{
|
_, err := wsc.ReceiveBlocks(&neorpc.BlockFilter{
|
||||||
|
@ -510,7 +510,7 @@ func TestWSFilteredSubscriptions(t *testing.T) {
|
||||||
param := p.Value(1)
|
param := p.Value(1)
|
||||||
filt := new(neorpc.BlockFilter)
|
filt := new(neorpc.BlockFilter)
|
||||||
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
require.NoError(t, json.Unmarshal(param.RawMessage, filt))
|
||||||
require.Equal(t, 2, *filt.Primary)
|
require.Equal(t, byte(2), *filt.Primary)
|
||||||
require.Equal(t, uint32(3), *filt.Since)
|
require.Equal(t, uint32(3), *filt.Since)
|
||||||
require.Equal(t, uint32(5), *filt.Till)
|
require.Equal(t, uint32(5), *filt.Till)
|
||||||
},
|
},
|
||||||
|
|
|
@ -2113,9 +2113,9 @@ func TestWSClient_SubscriptionsCompat(t *testing.T) {
|
||||||
blocks := getTestBlocks(t)
|
blocks := getTestBlocks(t)
|
||||||
bCount := uint32(0)
|
bCount := uint32(0)
|
||||||
|
|
||||||
getData := func(t *testing.T) (*block.Block, int, util.Uint160, string, string) {
|
getData := func(t *testing.T) (*block.Block, byte, util.Uint160, string, string) {
|
||||||
b1 := blocks[bCount]
|
b1 := blocks[bCount]
|
||||||
primary := int(b1.PrimaryIndex)
|
primary := b1.PrimaryIndex
|
||||||
tx := b1.Transactions[0]
|
tx := b1.Transactions[0]
|
||||||
sender := tx.Sender()
|
sender := tx.Sender()
|
||||||
ntfName := "Transfer"
|
ntfName := "Transfer"
|
||||||
|
|
Loading…
Reference in a new issue