Skip to content

Commit

Permalink
RPC API: ensure hash field included in batches json (#1684)
Browse files Browse the repository at this point in the history
(cherry picked from commit 0fd3773)
  • Loading branch information
BedrockSquirrel authored and tudor-malene committed Dec 8, 2023
1 parent 1ecd222 commit 36f6999
Show file tree
Hide file tree
Showing 4 changed files with 71 additions and 0 deletions.
2 changes: 2 additions & 0 deletions go/common/headers.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,6 +47,7 @@ type BatchHeader struct {
}

type batchHeaderEncoding struct {
Hash common.Hash `json:"hash"`
ParentHash L2BatchHash `json:"parentHash"`
Root common.Hash `json:"stateRoot"`
TxHash common.Hash `json:"transactionsRoot"`
Expand All @@ -72,6 +73,7 @@ type batchHeaderEncoding struct {
// MarshalJSON custom marshals the BatchHeader into a json
func (b *BatchHeader) MarshalJSON() ([]byte, error) {
return json.Marshal(batchHeaderEncoding{
b.Hash(),
b.ParentHash,
b.Root,
b.TxHash,
Expand Down
41 changes: 41 additions & 0 deletions integration/networktest/actions/publicdata/tenscan_data.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
package publicdata

import (
"context"
"fmt"

"github.com/ten-protocol/go-ten/go/common"
"github.com/ten-protocol/go-ten/go/obsclient"
"github.com/ten-protocol/go-ten/integration/networktest"
"github.com/ten-protocol/go-ten/integration/networktest/actions"
)

// VerifyBatchesDataAction tests the batches data RPC endpoint
func VerifyBatchesDataAction() networktest.Action {
return actions.VerifyOnlyAction(func(ctx context.Context, network networktest.NetworkConnector) error {
client, err := obsclient.Dial(network.ValidatorRPCAddress(0))
if err != nil {
return err
}

pagination := common.QueryPagination{
Offset: 0,
Size: 20,
}
batchListing, err := client.GetBatchesListing(&pagination)
if err != nil {
return err
}
if len(batchListing.BatchesData) != 20 {
return fmt.Errorf("expected 20 batches, got %d", len(batchListing.BatchesData))
}
if batchListing.Total <= 10 {
return fmt.Errorf("expected more than 10 batches, got %d", batchListing.Total)
}
if batchListing.BatchesData[0].Number.Cmp(batchListing.BatchesData[1].Number) < 0 {
return fmt.Errorf("expected batches to be sorted by height descending")
}

return nil
})
}
24 changes: 24 additions & 0 deletions integration/networktest/tests/tenscan/tenscan_rpc_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package tenscan

import (
"testing"

"github.com/ten-protocol/go-ten/integration/networktest"
"github.com/ten-protocol/go-ten/integration/networktest/actions"
"github.com/ten-protocol/go-ten/integration/networktest/actions/publicdata"
"github.com/ten-protocol/go-ten/integration/networktest/env"
)

// Verify and debug the RPC endpoints that Tenscan relies on for data in various environments

func TestRPC(t *testing.T) {
networktest.TestOnlyRunsInIDE(t)
networktest.Run(
"tenscan-rpc-data",
t,
env.LocalDevNetwork(),
actions.Series(
publicdata.VerifyBatchesDataAction(),
),
)
}
4 changes: 4 additions & 0 deletions integration/obscuroscan/obscuroscan_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -136,6 +136,10 @@ func TestObscuroscan(t *testing.T) {
assert.NoError(t, err)
assert.LessOrEqual(t, 9, len(batchlistingObj.Result.BatchesData))
assert.LessOrEqual(t, uint64(9), batchlistingObj.Result.Total)
// check results are descending order (latest first)
assert.LessOrEqual(t, batchlistingObj.Result.BatchesData[1].Number.Cmp(batchlistingObj.Result.BatchesData[0].Number), 0)
// check "hash" field is included in json response
assert.Contains(t, string(body), "\"hash\"")

statusCode, body, err = fasthttp.Get(nil, fmt.Sprintf("%s/items/blocks/?offset=0&size=10", serverAddress))
assert.NoError(t, err)
Expand Down

0 comments on commit 36f6999

Please sign in to comment.