mirror of
https://github.com/scroll-tech/scroll.git
synced 2026-01-09 14:08:03 -05:00
test: add testcontainers (#1217)
Co-authored-by: liuyuecai <liuyuecai@360.cn>
This commit is contained in:
@@ -60,6 +60,7 @@ require (
|
|||||||
github.com/holiman/uint256 v1.2.4 // indirect
|
github.com/holiman/uint256 v1.2.4 // indirect
|
||||||
github.com/huin/goupnp v1.3.0 // indirect
|
github.com/huin/goupnp v1.3.0 // indirect
|
||||||
github.com/iden3/go-iden3-crypto v0.0.15 // indirect
|
github.com/iden3/go-iden3-crypto v0.0.15 // indirect
|
||||||
|
github.com/jackc/pgx/v5 v5.5.4 // indirect
|
||||||
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
|
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
github.com/jinzhu/now v1.1.5 // indirect
|
github.com/jinzhu/now v1.1.5 // indirect
|
||||||
|
|||||||
@@ -184,8 +184,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI
|
|||||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||||
github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=
|
github.com/jackc/pgx/v5 v5.5.4 h1:Xp2aQS8uXButQdnCMWNmvx6UysWQQC+u1EoizjguY+8=
|
||||||
github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
|
github.com/jackc/pgx/v5 v5.5.4/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
|
||||||
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
||||||
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
||||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ require (
|
|||||||
github.com/stretchr/testify v1.9.0
|
github.com/stretchr/testify v1.9.0
|
||||||
github.com/testcontainers/testcontainers-go v0.29.1
|
github.com/testcontainers/testcontainers-go v0.29.1
|
||||||
github.com/testcontainers/testcontainers-go/modules/compose v0.29.1
|
github.com/testcontainers/testcontainers-go/modules/compose v0.29.1
|
||||||
|
github.com/testcontainers/testcontainers-go/modules/postgres v0.29.1
|
||||||
github.com/urfave/cli/v2 v2.25.7
|
github.com/urfave/cli/v2 v2.25.7
|
||||||
gorm.io/driver/postgres v1.5.0
|
gorm.io/driver/postgres v1.5.0
|
||||||
gorm.io/gorm v1.25.5
|
gorm.io/gorm v1.25.5
|
||||||
@@ -127,7 +128,7 @@ require (
|
|||||||
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
github.com/inconshreveable/mousetrap v1.1.0 // indirect
|
||||||
github.com/jackc/pgpassfile v1.0.0 // indirect
|
github.com/jackc/pgpassfile v1.0.0 // indirect
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect
|
||||||
github.com/jackc/pgx/v5 v5.5.0 // indirect
|
github.com/jackc/pgx/v5 v5.5.4 // indirect
|
||||||
github.com/jackc/puddle/v2 v2.2.1 // indirect
|
github.com/jackc/puddle/v2 v2.2.1 // indirect
|
||||||
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
|
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
|
||||||
github.com/jinzhu/inflection v1.0.0 // indirect
|
github.com/jinzhu/inflection v1.0.0 // indirect
|
||||||
|
|||||||
@@ -382,8 +382,8 @@ github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5ey
|
|||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||||
github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8=
|
github.com/jackc/pgx/v5 v5.3.0/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8=
|
||||||
github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=
|
github.com/jackc/pgx/v5 v5.5.4 h1:Xp2aQS8uXButQdnCMWNmvx6UysWQQC+u1EoizjguY+8=
|
||||||
github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
|
github.com/jackc/pgx/v5 v5.5.4/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
|
||||||
github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
github.com/jackc/puddle/v2 v2.2.0/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
||||||
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
||||||
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
||||||
@@ -682,6 +682,8 @@ github.com/testcontainers/testcontainers-go v0.29.1 h1:z8kxdFlovA2y97RWx98v/TQ+t
|
|||||||
github.com/testcontainers/testcontainers-go v0.29.1/go.mod h1:SnKnKQav8UcgtKqjp/AD8bE1MqZm+3TDb/B8crE3XnI=
|
github.com/testcontainers/testcontainers-go v0.29.1/go.mod h1:SnKnKQav8UcgtKqjp/AD8bE1MqZm+3TDb/B8crE3XnI=
|
||||||
github.com/testcontainers/testcontainers-go/modules/compose v0.29.1 h1:47ipPM+s+ltCDOP3Sa1j95AkNb+z+WGiHLDbLU8ixuc=
|
github.com/testcontainers/testcontainers-go/modules/compose v0.29.1 h1:47ipPM+s+ltCDOP3Sa1j95AkNb+z+WGiHLDbLU8ixuc=
|
||||||
github.com/testcontainers/testcontainers-go/modules/compose v0.29.1/go.mod h1:Sqh+Ef2ESdbJQjTJl57UOkEHkOc7gXvQLg1b5xh6f1Y=
|
github.com/testcontainers/testcontainers-go/modules/compose v0.29.1/go.mod h1:Sqh+Ef2ESdbJQjTJl57UOkEHkOc7gXvQLg1b5xh6f1Y=
|
||||||
|
github.com/testcontainers/testcontainers-go/modules/postgres v0.29.1 h1:hTn3MzhR9w4btwfzr/NborGCaeNZG0MPBpufeDj10KA=
|
||||||
|
github.com/testcontainers/testcontainers-go/modules/postgres v0.29.1/go.mod h1:YsWyy+pHDgvGdi0axGOx6CGXWsE6eqSaApyd1FYYSSc=
|
||||||
github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c=
|
github.com/theupdateframework/notary v0.7.0 h1:QyagRZ7wlSpjT5N2qQAh/pN+DVqgekv4DzbAiAiEL3c=
|
||||||
github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw=
|
github.com/theupdateframework/notary v0.7.0/go.mod h1:c9DRxcmhHmVLDay4/2fUYdISnHqbFDGRSlXPO0AhYWw=
|
||||||
github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA=
|
github.com/tilt-dev/fsnotify v1.4.8-0.20220602155310-fff9c274a375 h1:QB54BJwA6x8QU9nHY3xJSZR2kX9bgpZekRKGkLTmEXA=
|
||||||
|
|||||||
176
common/testcontainers/testcontainers.go
Normal file
176
common/testcontainers/testcontainers.go
Normal file
@@ -0,0 +1,176 @@
|
|||||||
|
package testcontainers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"fmt"
|
||||||
|
"log"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
"github.com/scroll-tech/go-ethereum/ethclient"
|
||||||
|
"github.com/testcontainers/testcontainers-go"
|
||||||
|
"github.com/testcontainers/testcontainers-go/modules/postgres"
|
||||||
|
"github.com/testcontainers/testcontainers-go/wait"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TestcontainerApps testcontainers struct
|
||||||
|
type TestcontainerApps struct {
|
||||||
|
postgresContainer *postgres.PostgresContainer
|
||||||
|
l1GethContainer *testcontainers.DockerContainer
|
||||||
|
l2GethContainer *testcontainers.DockerContainer
|
||||||
|
|
||||||
|
// common time stamp in nanoseconds.
|
||||||
|
Timestamp int
|
||||||
|
}
|
||||||
|
|
||||||
|
// NewTestcontainerApps returns new instance of TestcontainerApps struct
|
||||||
|
func NewTestcontainerApps() *TestcontainerApps {
|
||||||
|
timestamp := time.Now().Nanosecond()
|
||||||
|
return &TestcontainerApps{
|
||||||
|
Timestamp: timestamp,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartPostgresContainer starts a postgres container
|
||||||
|
func (t *TestcontainerApps) StartPostgresContainer() error {
|
||||||
|
if t.postgresContainer != nil && t.postgresContainer.IsRunning() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
postgresContainer, err := postgres.RunContainer(context.Background(),
|
||||||
|
testcontainers.WithImage("postgres"),
|
||||||
|
postgres.WithDatabase("test_db"),
|
||||||
|
postgres.WithPassword("123456"),
|
||||||
|
testcontainers.WithWaitStrategy(
|
||||||
|
wait.ForLog("database system is ready to accept connections").WithOccurrence(2).WithStartupTimeout(5*time.Second)),
|
||||||
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("failed to start postgres container: %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
t.postgresContainer = postgresContainer
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartL1GethContainer starts a L1Geth container
|
||||||
|
func (t *TestcontainerApps) StartL1GethContainer() error {
|
||||||
|
if t.l1GethContainer != nil && t.l1GethContainer.IsRunning() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
req := testcontainers.ContainerRequest{
|
||||||
|
Image: "scroll_l1geth",
|
||||||
|
ExposedPorts: []string{"8546/tcp", "8545/tcp"},
|
||||||
|
WaitingFor: wait.ForHTTP("/").WithPort("8545").WithStartupTimeout(100 * time.Second),
|
||||||
|
Cmd: []string{"--log.debug", "ANY"},
|
||||||
|
}
|
||||||
|
genericContainerReq := testcontainers.GenericContainerRequest{
|
||||||
|
ContainerRequest: req,
|
||||||
|
Started: true,
|
||||||
|
}
|
||||||
|
container, err := testcontainers.GenericContainer(context.Background(), genericContainerReq)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("failed to start scroll_l1geth container: %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
t.l1GethContainer, _ = container.(*testcontainers.DockerContainer)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// StartL2GethContainer starts a L2Geth container
|
||||||
|
func (t *TestcontainerApps) StartL2GethContainer() error {
|
||||||
|
if t.l2GethContainer != nil && t.l2GethContainer.IsRunning() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
req := testcontainers.ContainerRequest{
|
||||||
|
Image: "scroll_l2geth",
|
||||||
|
ExposedPorts: []string{"8546/tcp", "8545/tcp"},
|
||||||
|
WaitingFor: wait.ForHTTP("/").WithPort("8545").WithStartupTimeout(100 * time.Second),
|
||||||
|
}
|
||||||
|
genericContainerReq := testcontainers.GenericContainerRequest{
|
||||||
|
ContainerRequest: req,
|
||||||
|
Started: true,
|
||||||
|
}
|
||||||
|
container, err := testcontainers.GenericContainer(context.Background(), genericContainerReq)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("failed to start scroll_l2geth container: %s", err)
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
t.l2GethContainer, _ = container.(*testcontainers.DockerContainer)
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetDBEndPoint returns the endpoint of the running postgres container
|
||||||
|
func (t *TestcontainerApps) GetDBEndPoint() (string, error) {
|
||||||
|
if t.postgresContainer == nil || !t.postgresContainer.IsRunning() {
|
||||||
|
return "", fmt.Errorf("postgres is not running")
|
||||||
|
}
|
||||||
|
return t.postgresContainer.ConnectionString(context.Background(), "sslmode=disable")
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetL1GethEndPoint returns the endpoint of the running L1Geth container
|
||||||
|
func (t *TestcontainerApps) GetL1GethEndPoint() (string, error) {
|
||||||
|
if t.l1GethContainer == nil || !t.l1GethContainer.IsRunning() {
|
||||||
|
return "", fmt.Errorf("l1 geth is not running")
|
||||||
|
}
|
||||||
|
endpoint, err := t.l1GethContainer.PortEndpoint(context.Background(), "8546/tcp", "ws")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return endpoint, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetL2GethEndPoint returns the endpoint of the running L2Geth container
|
||||||
|
func (t *TestcontainerApps) GetL2GethEndPoint() (string, error) {
|
||||||
|
if t.l2GethContainer == nil || !t.l2GethContainer.IsRunning() {
|
||||||
|
return "", fmt.Errorf("l2 geth is not running")
|
||||||
|
}
|
||||||
|
endpoint, err := t.l2GethContainer.PortEndpoint(context.Background(), "8546/tcp", "ws")
|
||||||
|
if err != nil {
|
||||||
|
return "", err
|
||||||
|
}
|
||||||
|
return endpoint, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetL1GethClient returns a ethclient by dialing running L1Geth
|
||||||
|
func (t *TestcontainerApps) GetL1GethClient() (*ethclient.Client, error) {
|
||||||
|
endpoint, err := t.GetL1GethEndPoint()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
client, err := ethclient.Dial(endpoint)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return client, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// GetL2GethClient returns a ethclient by dialing running L2Geth
|
||||||
|
func (t *TestcontainerApps) GetL2GethClient() (*ethclient.Client, error) {
|
||||||
|
endpoint, err := t.GetL2GethEndPoint()
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
client, err := ethclient.Dial(endpoint)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
return client, nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Free stops all running containers
|
||||||
|
func (t *TestcontainerApps) Free() {
|
||||||
|
ctx := context.Background()
|
||||||
|
if t.postgresContainer != nil && t.postgresContainer.IsRunning() {
|
||||||
|
if err := t.postgresContainer.Terminate(ctx); err != nil {
|
||||||
|
log.Printf("failed to stop postgres container: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if t.l1GethContainer != nil && t.l1GethContainer.IsRunning() {
|
||||||
|
if err := t.l1GethContainer.Terminate(ctx); err != nil {
|
||||||
|
log.Printf("failed to stop scroll_l1geth container: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if t.l2GethContainer != nil && t.l2GethContainer.IsRunning() {
|
||||||
|
if err := t.l2GethContainer.Terminate(ctx); err != nil {
|
||||||
|
log.Printf("failed to stop scroll_l2geth container: %s", err)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
54
common/testcontainers/testcontainers_test.go
Normal file
54
common/testcontainers/testcontainers_test.go
Normal file
@@ -0,0 +1,54 @@
|
|||||||
|
package testcontainers
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/scroll-tech/go-ethereum/ethclient"
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
)
|
||||||
|
|
||||||
|
// TestNewTestcontainerApps tests NewTestcontainerApps
|
||||||
|
func TestNewTestcontainerApps(t *testing.T) {
|
||||||
|
var (
|
||||||
|
err error
|
||||||
|
endpoint string
|
||||||
|
client *ethclient.Client
|
||||||
|
)
|
||||||
|
|
||||||
|
// test start testcontainers
|
||||||
|
testApps := NewTestcontainerApps()
|
||||||
|
assert.NoError(t, testApps.StartPostgresContainer())
|
||||||
|
endpoint, err = testApps.GetDBEndPoint()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, endpoint)
|
||||||
|
|
||||||
|
assert.NoError(t, testApps.StartL1GethContainer())
|
||||||
|
endpoint, err = testApps.GetL1GethEndPoint()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, endpoint)
|
||||||
|
client, err = testApps.GetL1GethClient()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotNil(t, client)
|
||||||
|
|
||||||
|
assert.NoError(t, testApps.StartL2GethContainer())
|
||||||
|
endpoint, err = testApps.GetL2GethEndPoint()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotEmpty(t, endpoint)
|
||||||
|
client, err = testApps.GetL2GethClient()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
assert.NotNil(t, client)
|
||||||
|
|
||||||
|
// test free testcontainers
|
||||||
|
testApps.Free()
|
||||||
|
endpoint, err = testApps.GetDBEndPoint()
|
||||||
|
assert.EqualError(t, err, "postgres is not running")
|
||||||
|
assert.Empty(t, endpoint)
|
||||||
|
|
||||||
|
endpoint, err = testApps.GetL1GethEndPoint()
|
||||||
|
assert.EqualError(t, err, "l1 geth is not running")
|
||||||
|
assert.Empty(t, endpoint)
|
||||||
|
|
||||||
|
endpoint, err = testApps.GetL2GethEndPoint()
|
||||||
|
assert.EqualError(t, err, "l2 geth is not running")
|
||||||
|
assert.Empty(t, endpoint)
|
||||||
|
}
|
||||||
@@ -20,6 +20,7 @@ require (
|
|||||||
github.com/docker/go-connections v0.5.0 // indirect
|
github.com/docker/go-connections v0.5.0 // indirect
|
||||||
github.com/go-stack/stack v1.8.1 // indirect
|
github.com/go-stack/stack v1.8.1 // indirect
|
||||||
github.com/google/uuid v1.6.0 // indirect
|
github.com/google/uuid v1.6.0 // indirect
|
||||||
|
github.com/jackc/pgx/v5 v5.5.4 // indirect
|
||||||
github.com/klauspost/compress v1.17.4 // indirect
|
github.com/klauspost/compress v1.17.4 // indirect
|
||||||
github.com/kr/pretty v0.3.1 // indirect
|
github.com/kr/pretty v0.3.1 // indirect
|
||||||
github.com/mattn/go-sqlite3 v1.14.16 // indirect
|
github.com/mattn/go-sqlite3 v1.14.16 // indirect
|
||||||
@@ -31,7 +32,6 @@ require (
|
|||||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 // indirect
|
||||||
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
go.opentelemetry.io/otel/trace v1.24.0 // indirect
|
||||||
go.uber.org/multierr v1.11.0 // indirect
|
go.uber.org/multierr v1.11.0 // indirect
|
||||||
golang.org/x/crypto v0.17.0 // indirect
|
|
||||||
golang.org/x/mod v0.16.0 // indirect
|
golang.org/x/mod v0.16.0 // indirect
|
||||||
golang.org/x/sync v0.6.0 // indirect
|
golang.org/x/sync v0.6.0 // indirect
|
||||||
golang.org/x/sys v0.17.0 // indirect
|
golang.org/x/sys v0.17.0 // indirect
|
||||||
|
|||||||
@@ -58,8 +58,8 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI
|
|||||||
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg=
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk=
|
||||||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM=
|
||||||
github.com/jackc/pgx/v5 v5.5.0 h1:NxstgwndsTRy7eq9/kqYc/BZh5w2hHJV86wjvO+1xPw=
|
github.com/jackc/pgx/v5 v5.5.4 h1:Xp2aQS8uXButQdnCMWNmvx6UysWQQC+u1EoizjguY+8=
|
||||||
github.com/jackc/pgx/v5 v5.5.0/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA=
|
github.com/jackc/pgx/v5 v5.5.4/go.mod h1:ez9gk+OAat140fv9ErkZDYFWmXLfV+++K0uAOiwgm1A=
|
||||||
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk=
|
||||||
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4=
|
||||||
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
|
github.com/jmoiron/sqlx v1.3.5 h1:vFFPA71p1o5gAeqtEAwLU4dnX2napprKtHr7PYIcN3g=
|
||||||
|
|||||||
@@ -780,8 +780,6 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w=
|
|||||||
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk=
|
||||||
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
|
github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo=
|
||||||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
||||||
github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk=
|
|
||||||
github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
|
||||||
github.com/ferranbt/fastssz v0.1.2 h1:Dky6dXlngF6Qjc+EfDipAkE83N5I5DE68bY6O0VLNPk=
|
github.com/ferranbt/fastssz v0.1.2 h1:Dky6dXlngF6Qjc+EfDipAkE83N5I5DE68bY6O0VLNPk=
|
||||||
github.com/ferranbt/fastssz v0.1.2/go.mod h1:X5UPrE2u1UJjxHA8X54u04SBwdAQjG2sFtWs39YxyWs=
|
github.com/ferranbt/fastssz v0.1.2/go.mod h1:X5UPrE2u1UJjxHA8X54u04SBwdAQjG2sFtWs39YxyWs=
|
||||||
github.com/fjl/gencodec v0.0.0-20220412091415-8bb9e558978c h1:CndMRAH4JIwxbW8KYq6Q+cGWcGHz0FjGR3QqcInWcW0=
|
github.com/fjl/gencodec v0.0.0-20220412091415-8bb9e558978c h1:CndMRAH4JIwxbW8KYq6Q+cGWcGHz0FjGR3QqcInWcW0=
|
||||||
@@ -1492,8 +1490,6 @@ github.com/scroll-tech/go-ethereum v1.10.14-0.20230306131930-03b4de32b78b/go.mod
|
|||||||
github.com/scroll-tech/go-ethereum v1.10.14-0.20230321020420-127af384ed04/go.mod h1:jH8c08L9K8Hieaf0r/ur2P/cpesn4dFhmLm2Mmoi8kI=
|
github.com/scroll-tech/go-ethereum v1.10.14-0.20230321020420-127af384ed04/go.mod h1:jH8c08L9K8Hieaf0r/ur2P/cpesn4dFhmLm2Mmoi8kI=
|
||||||
github.com/scroll-tech/go-ethereum v1.10.14-0.20230802095950-4b2bbf6225e7/go.mod h1:DiN3p2inoXOxGffxSswDKqWjQ7bU+Mp0c9v0XQXKmaA=
|
github.com/scroll-tech/go-ethereum v1.10.14-0.20230802095950-4b2bbf6225e7/go.mod h1:DiN3p2inoXOxGffxSswDKqWjQ7bU+Mp0c9v0XQXKmaA=
|
||||||
github.com/scroll-tech/go-ethereum v1.10.14-0.20230829000527-f883dcdc21fc/go.mod h1:DiN3p2inoXOxGffxSswDKqWjQ7bU+Mp0c9v0XQXKmaA=
|
github.com/scroll-tech/go-ethereum v1.10.14-0.20230829000527-f883dcdc21fc/go.mod h1:DiN3p2inoXOxGffxSswDKqWjQ7bU+Mp0c9v0XQXKmaA=
|
||||||
github.com/scroll-tech/go-ethereum v1.10.14-0.20240326144132-0f0cd99f7a2e h1:FcoK0rykAWI+5E7cQM6ALRLd5CmjBTHRvJztRBH2xeM=
|
|
||||||
github.com/scroll-tech/go-ethereum v1.10.14-0.20240326144132-0f0cd99f7a2e/go.mod h1:7Rz2bh9pn42rGuxjh51CG7HL9SKMG3ZugJkL3emdZx8=
|
|
||||||
github.com/scroll-tech/zktrie v0.6.0/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
|
github.com/scroll-tech/zktrie v0.6.0/go.mod h1:XvNo7vAk8yxNyTjBDj5WIiFzYW4bx/gJ78+NK6Zn6Uk=
|
||||||
github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
github.com/segmentio/kafka-go v0.1.0/go.mod h1:X6itGqS9L4jDletMsxZ7Dz+JFWxM6JHfPOCvTvk+EJo=
|
||||||
github.com/segmentio/kafka-go v0.2.0 h1:HtCSf6B4gN/87yc5qTl7WsxPKQIIGXLPPM1bMCPOsoY=
|
github.com/segmentio/kafka-go v0.2.0 h1:HtCSf6B4gN/87yc5qTl7WsxPKQIIGXLPPM1bMCPOsoY=
|
||||||
@@ -1740,8 +1736,6 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH
|
|||||||
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU=
|
||||||
golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E=
|
golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5 h1:rxKZ2gOnYxjfmakvUUqh9Gyb6KXfrj7JWTxORTYqb0E=
|
||||||
golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
golang.org/x/exp v0.0.0-20220426173459-3bcf042a4bf5/go.mod h1:lgLbSvA5ygNOMpwM/9anMpWVlVJ7Z+cHWq/eFuinpGE=
|
||||||
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea h1:vLCWI/yYrdEHyN2JzIzPO3aaQJHQdp89IZBA/+azVC4=
|
|
||||||
golang.org/x/exp v0.0.0-20230510235704-dd950f8aeaea/go.mod h1:V1LtkGg67GoY2N1AnLN78QLrzxkLyJw7RJb1gzOOz9w=
|
|
||||||
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
|
golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k=
|
||||||
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
|
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa h1:FRnLl4eNAQl8hwxVVC17teOw8kdjVDVAiFMtgUdTSRQ=
|
||||||
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
|
golang.org/x/exp v0.0.0-20231110203233-9a3e6036ecaa/go.mod h1:zk2irFbV9DP96SEBUUAy67IdHUaZuSnrz1n472HUCLE=
|
||||||
@@ -1771,6 +1765,7 @@ golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzB
|
|||||||
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
|
golang.org/x/mod v0.11.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||||
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
|
||||||
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||||
@@ -1955,6 +1950,7 @@ golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc
|
|||||||
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||||
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA=
|
||||||
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
|
||||||
|
golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA=
|
||||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||||
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
|
golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s=
|
||||||
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58=
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import (
|
|||||||
|
|
||||||
"scroll-tech/common/cmd"
|
"scroll-tech/common/cmd"
|
||||||
"scroll-tech/common/docker"
|
"scroll-tech/common/docker"
|
||||||
|
"scroll-tech/common/testcontainers"
|
||||||
"scroll-tech/common/utils"
|
"scroll-tech/common/utils"
|
||||||
|
|
||||||
"scroll-tech/rollup/internal/config"
|
"scroll-tech/rollup/internal/config"
|
||||||
@@ -17,7 +18,9 @@ import (
|
|||||||
// MockApp mockApp-test client manager.
|
// MockApp mockApp-test client manager.
|
||||||
type MockApp struct {
|
type MockApp struct {
|
||||||
Config *config.Config
|
Config *config.Config
|
||||||
base *docker.App
|
// TODO field willl be replaced by testApps
|
||||||
|
base *docker.App
|
||||||
|
testApps *testcontainers.TestcontainerApps
|
||||||
|
|
||||||
mockApps map[utils.MockAppName]docker.AppAPI
|
mockApps map[utils.MockAppName]docker.AppAPI
|
||||||
|
|
||||||
@@ -27,9 +30,8 @@ type MockApp struct {
|
|||||||
args []string
|
args []string
|
||||||
}
|
}
|
||||||
|
|
||||||
// NewRollupApp return a new rollupApp manager, name mush be one them.
|
// NewRollupApp TODO function will be replaced by NewRollupApp2
|
||||||
func NewRollupApp(base *docker.App, file string) *MockApp {
|
func NewRollupApp(base *docker.App, file string) *MockApp {
|
||||||
|
|
||||||
rollupFile := fmt.Sprintf("/tmp/%d_rollup-config.json", base.Timestamp)
|
rollupFile := fmt.Sprintf("/tmp/%d_rollup-config.json", base.Timestamp)
|
||||||
rollupApp := &MockApp{
|
rollupApp := &MockApp{
|
||||||
base: base,
|
base: base,
|
||||||
@@ -44,6 +46,22 @@ func NewRollupApp(base *docker.App, file string) *MockApp {
|
|||||||
return rollupApp
|
return rollupApp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// NewRollupApp2 return a new rollupApp manager, name mush be one them.
|
||||||
|
func NewRollupApp2(testApps *testcontainers.TestcontainerApps, file string) *MockApp {
|
||||||
|
rollupFile := fmt.Sprintf("/tmp/%d_rollup-config.json", testApps.Timestamp)
|
||||||
|
rollupApp := &MockApp{
|
||||||
|
testApps: testApps,
|
||||||
|
mockApps: make(map[utils.MockAppName]docker.AppAPI),
|
||||||
|
originFile: file,
|
||||||
|
rollupFile: rollupFile,
|
||||||
|
args: []string{"--log.debug", "--config", rollupFile},
|
||||||
|
}
|
||||||
|
if err := rollupApp.MockConfig2(true); err != nil {
|
||||||
|
panic(err)
|
||||||
|
}
|
||||||
|
return rollupApp
|
||||||
|
}
|
||||||
|
|
||||||
// RunApp run rollup-test child process by multi parameters.
|
// RunApp run rollup-test child process by multi parameters.
|
||||||
func (b *MockApp) RunApp(t *testing.T, name utils.MockAppName, args ...string) {
|
func (b *MockApp) RunApp(t *testing.T, name utils.MockAppName, args ...string) {
|
||||||
if !(name == utils.EventWatcherApp ||
|
if !(name == utils.EventWatcherApp ||
|
||||||
@@ -78,7 +96,7 @@ func (b *MockApp) Free() {
|
|||||||
_ = os.Remove(b.rollupFile)
|
_ = os.Remove(b.rollupFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
// MockConfig creates a new rollup config.
|
// MockConfig TODO function will be replaced by MockConfig2
|
||||||
func (b *MockApp) MockConfig(store bool) error {
|
func (b *MockApp) MockConfig(store bool) error {
|
||||||
base := b.base
|
base := b.base
|
||||||
// Load origin rollup config file.
|
// Load origin rollup config file.
|
||||||
@@ -104,3 +122,41 @@ func (b *MockApp) MockConfig(store bool) error {
|
|||||||
}
|
}
|
||||||
return os.WriteFile(b.rollupFile, data, 0600)
|
return os.WriteFile(b.rollupFile, data, 0600)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// MockConfig2 creates a new rollup config.
|
||||||
|
func (b *MockApp) MockConfig2(store bool) error {
|
||||||
|
// Load origin rollup config file.
|
||||||
|
cfg, err := config.NewConfig(b.originFile)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
|
l1GethEndpoint, err := b.testApps.GetL1GethEndPoint()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
l2GethEndpoint, err := b.testApps.GetL2GethEndPoint()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
dbEndpoint, err := b.testApps.GetDBEndPoint()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
cfg.L1Config.Endpoint = l1GethEndpoint
|
||||||
|
cfg.L1Config.RelayerConfig.SenderConfig.Endpoint = l2GethEndpoint
|
||||||
|
cfg.L2Config.Endpoint = l2GethEndpoint
|
||||||
|
cfg.L2Config.RelayerConfig.SenderConfig.Endpoint = l1GethEndpoint
|
||||||
|
cfg.DBConfig.DSN = dbEndpoint
|
||||||
|
b.Config = cfg
|
||||||
|
|
||||||
|
if !store {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
// Store changed rollup config into a temp file.
|
||||||
|
data, err := json.Marshal(b.Config)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return os.WriteFile(b.rollupFile, data, 0600)
|
||||||
|
}
|
||||||
|
|||||||
@@ -26,11 +26,12 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
|
"scroll-tech/database/migrate"
|
||||||
|
|
||||||
"scroll-tech/common/database"
|
"scroll-tech/common/database"
|
||||||
"scroll-tech/common/docker"
|
"scroll-tech/common/docker"
|
||||||
dockercompose "scroll-tech/common/docker-compose/l1"
|
dockercompose "scroll-tech/common/docker-compose/l1"
|
||||||
"scroll-tech/common/types"
|
"scroll-tech/common/types"
|
||||||
"scroll-tech/database/migrate"
|
|
||||||
|
|
||||||
bridgeAbi "scroll-tech/rollup/abi"
|
bridgeAbi "scroll-tech/rollup/abi"
|
||||||
"scroll-tech/rollup/internal/config"
|
"scroll-tech/rollup/internal/config"
|
||||||
|
|||||||
@@ -12,13 +12,14 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
|
"scroll-tech/database/migrate"
|
||||||
|
|
||||||
"scroll-tech/common/database"
|
"scroll-tech/common/database"
|
||||||
"scroll-tech/common/docker"
|
"scroll-tech/common/docker"
|
||||||
"scroll-tech/common/types"
|
"scroll-tech/common/types"
|
||||||
"scroll-tech/common/types/encoding"
|
"scroll-tech/common/types/encoding"
|
||||||
"scroll-tech/common/types/encoding/codecv0"
|
"scroll-tech/common/types/encoding/codecv0"
|
||||||
"scroll-tech/common/types/encoding/codecv1"
|
"scroll-tech/common/types/encoding/codecv1"
|
||||||
"scroll-tech/database/migrate"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
|||||||
@@ -11,6 +11,13 @@ import (
|
|||||||
"testing"
|
"testing"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"scroll-tech/database/migrate"
|
||||||
|
|
||||||
|
"scroll-tech/common/database"
|
||||||
|
dockercompose "scroll-tech/common/docker-compose/l1"
|
||||||
|
tc "scroll-tech/common/testcontainers"
|
||||||
|
"scroll-tech/common/utils"
|
||||||
|
|
||||||
"github.com/gin-gonic/gin"
|
"github.com/gin-gonic/gin"
|
||||||
"github.com/scroll-tech/go-ethereum/accounts/abi/bind"
|
"github.com/scroll-tech/go-ethereum/accounts/abi/bind"
|
||||||
"github.com/scroll-tech/go-ethereum/common"
|
"github.com/scroll-tech/go-ethereum/common"
|
||||||
@@ -22,19 +29,12 @@ import (
|
|||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
|
|
||||||
"scroll-tech/common/database"
|
|
||||||
"scroll-tech/common/docker"
|
|
||||||
dockercompose "scroll-tech/common/docker-compose/l1"
|
|
||||||
"scroll-tech/common/utils"
|
|
||||||
|
|
||||||
"scroll-tech/database/migrate"
|
|
||||||
|
|
||||||
bcmd "scroll-tech/rollup/cmd"
|
bcmd "scroll-tech/rollup/cmd"
|
||||||
"scroll-tech/rollup/mock_bridge"
|
"scroll-tech/rollup/mock_bridge"
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
base *docker.App
|
testApps *tc.TestcontainerApps
|
||||||
rollupApp *bcmd.MockApp
|
rollupApp *bcmd.MockApp
|
||||||
posL1TestEnv *dockercompose.PoSL1TestEnv
|
posL1TestEnv *dockercompose.PoSL1TestEnv
|
||||||
|
|
||||||
@@ -47,11 +47,14 @@ var (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func setupDB(t *testing.T) *gorm.DB {
|
func setupDB(t *testing.T) *gorm.DB {
|
||||||
|
dsn, err := testApps.GetDBEndPoint()
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
cfg := &database.Config{
|
cfg := &database.Config{
|
||||||
DSN: base.DBConfig.DSN,
|
DSN: dsn,
|
||||||
DriverName: base.DBConfig.DriverName,
|
DriverName: "postgres",
|
||||||
MaxOpenNum: base.DBConfig.MaxOpenNum,
|
MaxOpenNum: 200,
|
||||||
MaxIdleNum: base.DBConfig.MaxIdleNum,
|
MaxIdleNum: 20,
|
||||||
}
|
}
|
||||||
db, err := database.InitDB(cfg)
|
db, err := database.InitDB(cfg)
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
@@ -62,22 +65,17 @@ func setupDB(t *testing.T) *gorm.DB {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func TestMain(m *testing.M) {
|
func TestMain(m *testing.M) {
|
||||||
base = docker.NewDockerApp()
|
defer func() {
|
||||||
defer base.Free()
|
if testApps != nil {
|
||||||
|
testApps.Free()
|
||||||
rollupApp = bcmd.NewRollupApp(base, "../conf/config.json")
|
}
|
||||||
defer rollupApp.Free()
|
if rollupApp != nil {
|
||||||
|
rollupApp.Free()
|
||||||
var err error
|
}
|
||||||
posL1TestEnv, err = dockercompose.NewPoSL1TestEnv()
|
if posL1TestEnv != nil {
|
||||||
if err != nil {
|
posL1TestEnv.Stop()
|
||||||
log.Crit("failed to create PoS L1 test environment", "err", err)
|
}
|
||||||
}
|
}()
|
||||||
if err := posL1TestEnv.Start(); err != nil {
|
|
||||||
log.Crit("failed to start PoS L1 test environment", "err", err)
|
|
||||||
}
|
|
||||||
defer posL1TestEnv.Stop()
|
|
||||||
|
|
||||||
m.Run()
|
m.Run()
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,19 +84,26 @@ func setupEnv(t *testing.T) {
|
|||||||
glogger.Verbosity(log.LvlInfo)
|
glogger.Verbosity(log.LvlInfo)
|
||||||
log.Root().SetHandler(glogger)
|
log.Root().SetHandler(glogger)
|
||||||
|
|
||||||
var err error
|
var (
|
||||||
|
err error
|
||||||
|
l1GethChainID *big.Int
|
||||||
|
)
|
||||||
|
|
||||||
|
posL1TestEnv, err = dockercompose.NewPoSL1TestEnv()
|
||||||
|
assert.NoError(t, err, "failed to create PoS L1 test environment")
|
||||||
|
assert.NoError(t, posL1TestEnv.Start(), "failed to start PoS L1 test environment")
|
||||||
|
|
||||||
|
testApps = tc.NewTestcontainerApps()
|
||||||
|
assert.NoError(t, testApps.StartPostgresContainer())
|
||||||
|
assert.NoError(t, testApps.StartL1GethContainer())
|
||||||
|
assert.NoError(t, testApps.StartL2GethContainer())
|
||||||
|
rollupApp = bcmd.NewRollupApp2(testApps, "../conf/config.json")
|
||||||
|
|
||||||
l1Client, err = posL1TestEnv.L1Client()
|
l1Client, err = posL1TestEnv.L1Client()
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
chainID, err := l1Client.ChainID(context.Background())
|
l2Client, err = testApps.GetL2GethClient()
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
l1Auth, err = bind.NewKeyedTransactorWithChainID(rollupApp.Config.L2Config.RelayerConfig.CommitSenderPrivateKey, chainID)
|
l1GethChainID, err = l1Client.ChainID(context.Background())
|
||||||
assert.NoError(t, err)
|
|
||||||
rollupApp.Config.L1Config.Endpoint = posL1TestEnv.Endpoint()
|
|
||||||
rollupApp.Config.L2Config.RelayerConfig.SenderConfig.Endpoint = posL1TestEnv.Endpoint()
|
|
||||||
|
|
||||||
base.RunImages(t)
|
|
||||||
|
|
||||||
l2Client, err = base.L2Client()
|
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
|
|
||||||
l1Cfg, l2Cfg := rollupApp.Config.L1Config, rollupApp.Config.L2Config
|
l1Cfg, l2Cfg := rollupApp.Config.L1Config, rollupApp.Config.L2Config
|
||||||
@@ -107,6 +112,11 @@ func setupEnv(t *testing.T) {
|
|||||||
l2Cfg.Confirmations = 0
|
l2Cfg.Confirmations = 0
|
||||||
l2Cfg.RelayerConfig.SenderConfig.Confirmations = 0
|
l2Cfg.RelayerConfig.SenderConfig.Confirmations = 0
|
||||||
|
|
||||||
|
l1Auth, err = bind.NewKeyedTransactorWithChainID(rollupApp.Config.L2Config.RelayerConfig.CommitSenderPrivateKey, l1GethChainID)
|
||||||
|
assert.NoError(t, err)
|
||||||
|
rollupApp.Config.L1Config.Endpoint = posL1TestEnv.Endpoint()
|
||||||
|
rollupApp.Config.L2Config.RelayerConfig.SenderConfig.Endpoint = posL1TestEnv.Endpoint()
|
||||||
|
|
||||||
port, err := rand.Int(rand.Reader, big.NewInt(10000))
|
port, err := rand.Int(rand.Reader, big.NewInt(10000))
|
||||||
assert.NoError(t, err)
|
assert.NoError(t, err)
|
||||||
svrPort := strconv.FormatInt(port.Int64()+40000, 10)
|
svrPort := strconv.FormatInt(port.Int64()+40000, 10)
|
||||||
|
|||||||
@@ -4,9 +4,10 @@ import (
|
|||||||
"context"
|
"context"
|
||||||
"encoding/json"
|
"encoding/json"
|
||||||
"fmt"
|
"fmt"
|
||||||
"scroll-tech/common/types/encoding"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"scroll-tech/common/types/encoding"
|
||||||
|
|
||||||
"github.com/scroll-tech/go-ethereum/log"
|
"github.com/scroll-tech/go-ethereum/log"
|
||||||
"gorm.io/gorm"
|
"gorm.io/gorm"
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user