@@ -10,6 +10,7 @@ import (
1010
1111 "github.com/block-vision/sui-go-sdk/models"
1212 "github.com/docker/docker/api/types/container"
13+ "github.com/docker/go-connections/nat"
1314 "github.com/go-resty/resty/v2"
1415 "github.com/testcontainers/testcontainers-go"
1516 "github.com/testcontainers/testcontainers-go/wait"
@@ -81,10 +82,9 @@ func defaultSui(in *Input) {
8182 if in .Image == "" {
8283 in .Image = "mysten/sui-tools:devnet"
8384 }
84- if in .Port ! = "" {
85- framework . L . Warn (). Msgf ( "'port' field is set but only default port can be used: %s" , DefaultSuiNodePort )
85+ if in .Port = = "" {
86+ in . Port = DefaultSuiNodePort
8687 }
87- in .Port = DefaultSuiNodePort
8888}
8989
9090func newSui (in * Input ) (* Output , error ) {
@@ -97,7 +97,8 @@ func newSui(in *Input) (*Output, error) {
9797 return nil , err
9898 }
9999
100- bindPort := fmt .Sprintf ("%s/tcp" , in .Port )
100+ // Sui container always listens on port 9000 internally
101+ containerPort := fmt .Sprintf ("%s/tcp" , DefaultSuiNodePort )
101102
102103 // default to amd64, unless otherwise specified
103104 imagePlatform := "linux/amd64"
@@ -107,15 +108,29 @@ func newSui(in *Input) (*Output, error) {
107108
108109 req := testcontainers.ContainerRequest {
109110 Image : in .Image ,
110- ExposedPorts : []string {in . Port , DefaultFaucetPort },
111+ ExposedPorts : []string {containerPort , DefaultFaucetPort },
111112 Name : containerName ,
112113 Labels : framework .DefaultTCLabels (),
113114 Networks : []string {framework .DefaultNetworkName },
114115 NetworkAliases : map [string ][]string {
115116 framework .DefaultNetworkName : {containerName },
116117 },
117118 HostConfigModifier : func (h * container.HostConfig ) {
118- h .PortBindings = framework .MapTheSamePort (bindPort , DefaultFaucetPort )
119+ // Map user-provided host port to container's default port (9000)
120+ h .PortBindings = nat.PortMap {
121+ nat .Port (containerPort ): []nat.PortBinding {
122+ {
123+ HostIP : "0.0.0.0" ,
124+ HostPort : in .Port ,
125+ },
126+ },
127+ nat .Port (DefaultFaucetPort ): []nat.PortBinding {
128+ {
129+ HostIP : "0.0.0.0" ,
130+ HostPort : DefaultFaucetPortNum ,
131+ },
132+ },
133+ }
119134 framework .ResourceLimitsFunc (h , in .ContainerResources )
120135 },
121136 ImagePlatform : imagePlatform ,
@@ -165,7 +180,7 @@ func newSui(in *Input) (*Output, error) {
165180 Nodes : []* Node {
166181 {
167182 ExternalHTTPUrl : fmt .Sprintf ("http://%s:%s" , host , in .Port ),
168- InternalHTTPUrl : fmt .Sprintf ("http://%s:%s" , containerName , in . Port ),
183+ InternalHTTPUrl : fmt .Sprintf ("http://%s:%s" , containerName , DefaultSuiNodePort ),
169184 },
170185 },
171186 }, nil
0 commit comments