diff --git a/framework/components/blockchain/sui.go b/framework/components/blockchain/sui.go index 936620c33..49e804a95 100644 --- a/framework/components/blockchain/sui.go +++ b/framework/components/blockchain/sui.go @@ -10,6 +10,7 @@ import ( "github.com/block-vision/sui-go-sdk/models" "github.com/docker/docker/api/types/container" + "github.com/docker/go-connections/nat" "github.com/go-resty/resty/v2" "github.com/testcontainers/testcontainers-go" "github.com/testcontainers/testcontainers-go/wait" @@ -81,10 +82,9 @@ func defaultSui(in *Input) { if in.Image == "" { in.Image = "mysten/sui-tools:devnet" } - if in.Port != "" { - framework.L.Warn().Msgf("'port' field is set but only default port can be used: %s", DefaultSuiNodePort) + if in.Port == "" { + in.Port = DefaultSuiNodePort } - in.Port = DefaultSuiNodePort } func newSui(in *Input) (*Output, error) { @@ -97,7 +97,8 @@ func newSui(in *Input) (*Output, error) { return nil, err } - bindPort := fmt.Sprintf("%s/tcp", in.Port) + // Sui container always listens on port 9000 internally + containerPort := fmt.Sprintf("%s/tcp", DefaultSuiNodePort) // default to amd64, unless otherwise specified imagePlatform := "linux/amd64" @@ -107,7 +108,7 @@ func newSui(in *Input) (*Output, error) { req := testcontainers.ContainerRequest{ Image: in.Image, - ExposedPorts: []string{in.Port, DefaultFaucetPort}, + ExposedPorts: []string{containerPort, DefaultFaucetPort}, Name: containerName, Labels: framework.DefaultTCLabels(), Networks: []string{framework.DefaultNetworkName}, @@ -115,7 +116,21 @@ func newSui(in *Input) (*Output, error) { framework.DefaultNetworkName: {containerName}, }, HostConfigModifier: func(h *container.HostConfig) { - h.PortBindings = framework.MapTheSamePort(bindPort, DefaultFaucetPort) + // Map user-provided host port to container's default port (9000) + h.PortBindings = nat.PortMap{ + nat.Port(containerPort): []nat.PortBinding{ + { + HostIP: "0.0.0.0", + HostPort: in.Port, + }, + }, + nat.Port(DefaultFaucetPort): []nat.PortBinding{ + { + HostIP: "0.0.0.0", + HostPort: DefaultFaucetPortNum, + }, + }, + } framework.ResourceLimitsFunc(h, in.ContainerResources) }, ImagePlatform: imagePlatform, @@ -165,7 +180,7 @@ func newSui(in *Input) (*Output, error) { Nodes: []*Node{ { ExternalHTTPUrl: fmt.Sprintf("http://%s:%s", host, in.Port), - InternalHTTPUrl: fmt.Sprintf("http://%s:%s", containerName, in.Port), + InternalHTTPUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultSuiNodePort), }, }, }, nil diff --git a/framework/examples/myproject/smoke_ton.toml b/framework/examples/myproject/smoke_ton.toml index 88a108d8d..a3675265f 100644 --- a/framework/examples/myproject/smoke_ton.toml +++ b/framework/examples/myproject/smoke_ton.toml @@ -1,6 +1,6 @@ [blockchain_a] type = "ton" - image = "ghcr.io/neodix42/mylocalton-docker:latest" + image = "ghcr.io/neodix42/mylocalton-docker:dev" port = "8000" [blockchain_a.custom_env]