Skip to content

Commit 9222c10

Browse files
authored
Merge branch 'master' into peter/update-vote-agg-irrecoverable
2 parents 552d1e6 + 4cabd39 commit 9222c10

36 files changed

+411
-367
lines changed

engine/access/rest/websockets/controller.go

+1-1
Original file line numberDiff line numberDiff line change
@@ -578,7 +578,7 @@ func (c *Controller) writeResponse(ctx context.Context, response interface{}) {
578578
func wrapErrorMessage(code int, message string, action string, subscriptionID string) models.BaseMessageResponse {
579579
return models.BaseMessageResponse{
580580
SubscriptionID: subscriptionID,
581-
Error: models.ErrorMessage{
581+
Error: &models.ErrorMessage{
582582
Code: code,
583583
Message: message,
584584
},

engine/access/rest/websockets/data_providers/account_statuses_provider.go

+10-9
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import (
99
"google.golang.org/grpc/status"
1010

1111
"github.com/onflow/flow-go/engine/access/rest/http/request"
12-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
12+
"github.com/onflow/flow-go/engine/access/rest/websockets/data_providers/models"
13+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
1314
"github.com/onflow/flow-go/engine/access/state_stream"
1415
"github.com/onflow/flow-go/engine/access/state_stream/backend"
1516
"github.com/onflow/flow-go/engine/access/subscription"
@@ -43,7 +44,7 @@ func NewAccountStatusesDataProvider(
4344
stateStreamApi state_stream.API,
4445
subscriptionID string,
4546
topic string,
46-
arguments models.Arguments,
47+
arguments wsmodels.Arguments,
4748
send chan<- interface{},
4849
chain flow.Chain,
4950
eventFilterConfig state_stream.EventFilterConfig,
@@ -126,12 +127,12 @@ func (p *AccountStatusesDataProvider) handleResponse() func(accountStatusesRespo
126127
return status.Errorf(codes.Internal, "message index already incremented to %d", messageIndex.Value())
127128
}
128129

129-
var accountStatusesPayload models.AccountStatusesResponse
130-
accountStatusesPayload.Build(accountStatusesResponse, index)
131-
132-
var response models.BaseDataProvidersResponse
133-
response.Build(p.ID(), p.Topic(), &accountStatusesPayload)
134-
130+
accountStatusesPayload := models.NewAccountStatusesResponse(accountStatusesResponse, index)
131+
response := models.BaseDataProvidersResponse{
132+
SubscriptionID: p.ID(),
133+
Topic: p.Topic(),
134+
Payload: accountStatusesPayload,
135+
}
135136
p.send <- &response
136137

137138
return nil
@@ -140,7 +141,7 @@ func (p *AccountStatusesDataProvider) handleResponse() func(accountStatusesRespo
140141

141142
// parseAccountStatusesArguments validates and initializes the account statuses arguments.
142143
func parseAccountStatusesArguments(
143-
arguments models.Arguments,
144+
arguments wsmodels.Arguments,
144145
chain flow.Chain,
145146
eventFilterConfig state_stream.EventFilterConfig,
146147
) (accountStatusesArguments, error) {

engine/access/rest/websockets/data_providers/account_statuses_provider_test.go

+9-14
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import (
1212
"github.com/stretchr/testify/require"
1313
"github.com/stretchr/testify/suite"
1414

15-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
15+
"github.com/onflow/flow-go/engine/access/rest/websockets/data_providers/models"
16+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
1617
"github.com/onflow/flow-go/engine/access/state_stream"
1718
"github.com/onflow/flow-go/engine/access/state_stream/backend"
1819
ssmock "github.com/onflow/flow-go/engine/access/state_stream/mock"
@@ -98,7 +99,7 @@ func (s *AccountStatusesProviderSuite) TestAccountStatusesDataProvider_StateStre
9899
nil,
99100
"dummy-id",
100101
topic,
101-
models.Arguments{},
102+
wsmodels.Arguments{},
102103
send,
103104
s.chain,
104105
state_stream.DefaultEventFilterConfig,
@@ -117,7 +118,7 @@ func (s *AccountStatusesProviderSuite) subscribeAccountStatusesDataProviderTestC
117118
return []testType{
118119
{
119120
name: "SubscribeAccountStatusesFromStartBlockID happy path",
120-
arguments: models.Arguments{
121+
arguments: wsmodels.Arguments{
121122
"start_block_id": s.rootBlock.ID().String(),
122123
"event_types": []string{string(flow.EventAccountCreated)},
123124
"account_addresses": []string{unittest.AddressFixture().String()},
@@ -134,7 +135,7 @@ func (s *AccountStatusesProviderSuite) subscribeAccountStatusesDataProviderTestC
134135
},
135136
{
136137
name: "SubscribeAccountStatusesFromStartHeight happy path",
137-
arguments: models.Arguments{
138+
arguments: wsmodels.Arguments{
138139
"start_block_height": strconv.FormatUint(s.rootBlock.Header.Height, 10),
139140
"event_types": []string{string(flow.EventAccountCreated)},
140141
"account_addresses": []string{unittest.AddressFixture().String()},
@@ -151,7 +152,7 @@ func (s *AccountStatusesProviderSuite) subscribeAccountStatusesDataProviderTestC
151152
},
152153
{
153154
name: "SubscribeAccountStatusesFromLatestBlock happy path",
154-
arguments: models.Arguments{
155+
arguments: wsmodels.Arguments{
155156
"event_types": []string{string(flow.EventAccountCreated)},
156157
"account_addresses": []string{unittest.AddressFixture().String()},
157158
},
@@ -191,12 +192,10 @@ func (s *AccountStatusesProviderSuite) expectedAccountStatusesResponses(backendR
191192
expectedResponses := make([]interface{}, len(backendResponses))
192193

193194
for i, resp := range backendResponses {
194-
var expectedResponsePayload models.AccountStatusesResponse
195-
expectedResponsePayload.Build(resp, uint64(i))
196-
195+
expectedResponsePayload := models.NewAccountStatusesResponse(resp, uint64(i))
197196
expectedResponses[i] = &models.BaseDataProvidersResponse{
198197
Topic: AccountStatusesTopic,
199-
Payload: &expectedResponsePayload,
198+
Payload: expectedResponsePayload,
200199
}
201200
}
202201

@@ -206,10 +205,6 @@ func (s *AccountStatusesProviderSuite) expectedAccountStatusesResponses(backendR
206205
// TestAccountStatusesDataProvider_InvalidArguments tests the behavior of the account statuses data provider
207206
// when invalid arguments are provided. It verifies that appropriate errors are returned
208207
// for missing or conflicting arguments.
209-
// This test covers the test cases:
210-
// 1. Providing both 'start_block_id' and 'start_block_height' simultaneously.
211-
// 2. Invalid 'start_block_id' argument.
212-
// 3. Invalid 'start_block_height' argument.
213208
func (s *AccountStatusesProviderSuite) TestAccountStatusesDataProvider_InvalidArguments() {
214209
ctx := context.Background()
215210
send := make(chan interface{})
@@ -342,7 +337,7 @@ func invalidAccountStatusesArgumentsTestCases() []testErrType {
342337
return []testErrType{
343338
{
344339
name: "provide both 'start_block_id' and 'start_block_height' arguments",
345-
arguments: models.Arguments{
340+
arguments: wsmodels.Arguments{
346341
"start_block_id": unittest.BlockFixture().ID().String(),
347342
"start_block_height": fmt.Sprintf("%d", unittest.BlockFixture().Header.Height),
348343
"event_types": []string{state_stream.CoreEventAccountCreated},

engine/access/rest/websockets/data_providers/base_provider.go

+4-4
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,15 @@ package data_providers
33
import (
44
"context"
55

6-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
6+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
77
"github.com/onflow/flow-go/engine/access/subscription"
88
)
99

1010
// baseDataProvider holds common objects for the provider
1111
type baseDataProvider struct {
1212
subscriptionID string
1313
topic string
14-
arguments models.Arguments
14+
arguments wsmodels.Arguments
1515
cancel context.CancelFunc
1616
send chan<- interface{}
1717
subscription subscription.Subscription
@@ -21,7 +21,7 @@ type baseDataProvider struct {
2121
func newBaseDataProvider(
2222
subscriptionID string,
2323
topic string,
24-
arguments models.Arguments,
24+
arguments wsmodels.Arguments,
2525
cancel context.CancelFunc,
2626
send chan<- interface{},
2727
subscription subscription.Subscription,
@@ -47,7 +47,7 @@ func (b *baseDataProvider) Topic() string {
4747
}
4848

4949
// Arguments returns the arguments associated with the data provider.
50-
func (b *baseDataProvider) Arguments() models.Arguments {
50+
func (b *baseDataProvider) Arguments() wsmodels.Arguments {
5151
return b.arguments
5252
}
5353

engine/access/rest/websockets/data_providers/block_digests_provider.go

+9-11
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,8 @@ import (
88

99
"github.com/onflow/flow-go/access"
1010
"github.com/onflow/flow-go/engine/access/rest/http/request"
11-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
11+
"github.com/onflow/flow-go/engine/access/rest/websockets/data_providers/models"
12+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
1213
"github.com/onflow/flow-go/engine/access/subscription"
1314
"github.com/onflow/flow-go/model/flow"
1415
)
@@ -30,7 +31,7 @@ func NewBlockDigestsDataProvider(
3031
api access.API,
3132
subscriptionID string,
3233
topic string,
33-
arguments models.Arguments,
34+
arguments wsmodels.Arguments,
3435
send chan<- interface{},
3536
) (*BlockDigestsDataProvider, error) {
3637
p := &BlockDigestsDataProvider{
@@ -65,15 +66,12 @@ func (p *BlockDigestsDataProvider) Run() error {
6566
return subscription.HandleSubscription(
6667
p.subscription,
6768
subscription.HandleResponse(p.send, func(b *flow.BlockDigest) (interface{}, error) {
68-
var block models.BlockDigest
69-
block.Build(b)
70-
71-
var response models.BaseDataProvidersResponse
72-
response.Build(
73-
p.ID(),
74-
p.Topic(),
75-
&block,
76-
)
69+
blockDigest := models.NewBlockDigest(b)
70+
response := models.BaseDataProvidersResponse{
71+
SubscriptionID: p.ID(),
72+
Topic: p.Topic(),
73+
Payload: blockDigest,
74+
}
7775

7876
return &response, nil
7977
}),

engine/access/rest/websockets/data_providers/block_digests_provider_test.go

+7-13
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import (
99
"github.com/stretchr/testify/suite"
1010

1111
"github.com/onflow/flow-go/engine/access/rest/common/parser"
12-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
12+
"github.com/onflow/flow-go/engine/access/rest/websockets/data_providers/models"
13+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
1314
statestreamsmock "github.com/onflow/flow-go/engine/access/state_stream/mock"
1415
"github.com/onflow/flow-go/model/flow"
1516
)
@@ -52,20 +53,17 @@ func (s *BlockDigestsProviderSuite) validBlockDigestsArgumentsTestCases() []test
5253
expectedResponses := make([]interface{}, len(s.blocks))
5354
for i, b := range s.blocks {
5455
blockDigest := flow.NewBlockDigest(b.Header.ID(), b.Header.Height, b.Header.Timestamp)
55-
56-
var block models.BlockDigest
57-
block.Build(blockDigest)
58-
56+
blockDigestPayload := models.NewBlockDigest(blockDigest)
5957
expectedResponses[i] = &models.BaseDataProvidersResponse{
6058
Topic: BlockDigestsTopic,
61-
Payload: &block,
59+
Payload: blockDigestPayload,
6260
}
6361
}
6462

6563
return []testType{
6664
{
6765
name: "happy path with start_block_id argument",
68-
arguments: models.Arguments{
66+
arguments: wsmodels.Arguments{
6967
"start_block_id": s.rootBlock.ID().String(),
7068
"block_status": parser.Finalized,
7169
},
@@ -81,7 +79,7 @@ func (s *BlockDigestsProviderSuite) validBlockDigestsArgumentsTestCases() []test
8179
},
8280
{
8381
name: "happy path with start_block_height argument",
84-
arguments: models.Arguments{
82+
arguments: wsmodels.Arguments{
8583
"start_block_height": strconv.FormatUint(s.rootBlock.Header.Height, 10),
8684
"block_status": parser.Finalized,
8785
},
@@ -97,7 +95,7 @@ func (s *BlockDigestsProviderSuite) validBlockDigestsArgumentsTestCases() []test
9795
},
9896
{
9997
name: "happy path without any start argument",
100-
arguments: models.Arguments{
98+
arguments: wsmodels.Arguments{
10199
"block_status": parser.Finalized,
102100
},
103101
setupBackend: func(sub *statestreamsmock.Subscription) {
@@ -124,10 +122,6 @@ func (s *BlocksProviderSuite) requireBlockDigest(actual interface{}, expected in
124122
// TestBlockDigestsDataProvider_InvalidArguments tests the behavior of the block digests data provider
125123
// when invalid arguments are provided. It verifies that appropriate errors are returned
126124
// for missing or conflicting arguments.
127-
// This test covers the test cases:
128-
// 1. Missing 'block_status' argument.
129-
// 2. Invalid 'block_status' argument.
130-
// 3. Providing both 'start_block_id' and 'start_block_height' simultaneously.
131125
func (s *BlockDigestsProviderSuite) TestBlockDigestsDataProvider_InvalidArguments() {
132126
ctx := context.Background()
133127
send := make(chan interface{})

engine/access/rest/websockets/data_providers/block_headers_provider.go

+8-8
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ import (
99
"github.com/onflow/flow-go/access"
1010
commonmodels "github.com/onflow/flow-go/engine/access/rest/common/models"
1111
"github.com/onflow/flow-go/engine/access/rest/http/request"
12-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
12+
"github.com/onflow/flow-go/engine/access/rest/websockets/data_providers/models"
13+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
1314
"github.com/onflow/flow-go/engine/access/subscription"
1415
"github.com/onflow/flow-go/model/flow"
1516
)
@@ -31,7 +32,7 @@ func NewBlockHeadersDataProvider(
3132
api access.API,
3233
subscriptionID string,
3334
topic string,
34-
arguments models.Arguments,
35+
arguments wsmodels.Arguments,
3536
send chan<- interface{},
3637
) (*BlockHeadersDataProvider, error) {
3738
p := &BlockHeadersDataProvider{
@@ -69,12 +70,11 @@ func (p *BlockHeadersDataProvider) Run() error {
6970
var header commonmodels.BlockHeader
7071
header.Build(h)
7172

72-
var response models.BaseDataProvidersResponse
73-
response.Build(
74-
p.ID(),
75-
p.Topic(),
76-
&header,
77-
)
73+
response := models.BaseDataProvidersResponse{
74+
SubscriptionID: p.ID(),
75+
Topic: p.Topic(),
76+
Payload: &header,
77+
}
7878

7979
return &response, nil
8080
}),

engine/access/rest/websockets/data_providers/block_headers_provider_test.go

+5-8
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,8 @@ import (
1010

1111
commonmodels "github.com/onflow/flow-go/engine/access/rest/common/models"
1212
"github.com/onflow/flow-go/engine/access/rest/common/parser"
13-
"github.com/onflow/flow-go/engine/access/rest/websockets/models"
13+
"github.com/onflow/flow-go/engine/access/rest/websockets/data_providers/models"
14+
wsmodels "github.com/onflow/flow-go/engine/access/rest/websockets/models"
1415
statestreamsmock "github.com/onflow/flow-go/engine/access/state_stream/mock"
1516
"github.com/onflow/flow-go/model/flow"
1617
)
@@ -64,7 +65,7 @@ func (s *BlockHeadersProviderSuite) validBlockHeadersArgumentsTestCases() []test
6465
return []testType{
6566
{
6667
name: "happy path with start_block_id argument",
67-
arguments: models.Arguments{
68+
arguments: wsmodels.Arguments{
6869
"start_block_id": s.rootBlock.ID().String(),
6970
"block_status": parser.Finalized,
7071
},
@@ -80,7 +81,7 @@ func (s *BlockHeadersProviderSuite) validBlockHeadersArgumentsTestCases() []test
8081
},
8182
{
8283
name: "happy path with start_block_height argument",
83-
arguments: models.Arguments{
84+
arguments: wsmodels.Arguments{
8485
"start_block_height": strconv.FormatUint(s.rootBlock.Header.Height, 10),
8586
"block_status": parser.Finalized,
8687
},
@@ -96,7 +97,7 @@ func (s *BlockHeadersProviderSuite) validBlockHeadersArgumentsTestCases() []test
9697
},
9798
{
9899
name: "happy path without any start argument",
99-
arguments: models.Arguments{
100+
arguments: wsmodels.Arguments{
100101
"block_status": parser.Finalized,
101102
},
102103
setupBackend: func(sub *statestreamsmock.Subscription) {
@@ -123,10 +124,6 @@ func (s *BlockHeadersProviderSuite) requireBlockHeader(actual interface{}, expec
123124
// TestBlockHeadersDataProvider_InvalidArguments tests the behavior of the block headers data provider
124125
// when invalid arguments are provided. It verifies that appropriate errors are returned
125126
// for missing or conflicting arguments.
126-
// This test covers the test cases:
127-
// 1. Missing 'block_status' argument.
128-
// 2. Invalid 'block_status' argument.
129-
// 3. Providing both 'start_block_id' and 'start_block_height' simultaneously.
130127
func (s *BlockHeadersProviderSuite) TestBlockHeadersDataProvider_InvalidArguments() {
131128
ctx := context.Background()
132129
send := make(chan interface{})

0 commit comments

Comments
 (0)