Skip to content

Commit 7880e5a

Browse files
fix(tron): correctly setup port mapping (#2019)
There is a bug in the tron implementation of CTF where a custom port mapping is not possible, this means when running in CI , we are forced to use port 9090 instead of port generated by freePort.
1 parent 2445eb2 commit 7880e5a

File tree

1 file changed

+14
-4
lines changed
  • framework/components/blockchain

1 file changed

+14
-4
lines changed

framework/components/blockchain/tron.go

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
"time"
99

1010
"github.com/docker/docker/api/types/container"
11+
"github.com/docker/go-connections/nat"
1112

1213
"github.com/smartcontractkit/chainlink-testing-framework/framework"
1314

@@ -59,7 +60,8 @@ func newTron(in *Input) (*Output, error) {
5960
ctx := context.Background()
6061

6162
containerName := framework.DefaultTCName("blockchain-node")
62-
bindPort := fmt.Sprintf("%s/tcp", in.Port)
63+
// Tron container always listens on port 9090 internally
64+
containerPort := fmt.Sprintf("%s/tcp", DefaultTronPort)
6365

6466
accounts, err := os.CreateTemp("", "accounts.json")
6567
if err != nil {
@@ -79,14 +81,22 @@ func newTron(in *Input) (*Output, error) {
7981
AlwaysPullImage: in.PullImage,
8082
Image: in.Image,
8183
Name: containerName,
82-
ExposedPorts: []string{bindPort},
84+
ExposedPorts: []string{containerPort},
8385
Networks: []string{framework.DefaultNetworkName},
8486
NetworkAliases: map[string][]string{
8587
framework.DefaultNetworkName: {containerName},
8688
},
8789
Labels: framework.DefaultTCLabels(),
8890
HostConfigModifier: func(h *container.HostConfig) {
89-
h.PortBindings = framework.MapTheSamePort(bindPort)
91+
// Map user-provided host port to container's default port (9090)
92+
h.PortBindings = nat.PortMap{
93+
nat.Port(containerPort): []nat.PortBinding{
94+
{
95+
HostIP: "0.0.0.0",
96+
HostPort: in.Port,
97+
},
98+
},
99+
}
90100
framework.ResourceLimitsFunc(h, in.ContainerResources)
91101
},
92102
WaitingFor: wait.ForLog("Mnemonic").WithPollInterval(200 * time.Millisecond).WithStartupTimeout(1 * time.Minute),
@@ -121,7 +131,7 @@ func newTron(in *Input) (*Output, error) {
121131
Nodes: []*Node{
122132
{
123133
ExternalHTTPUrl: fmt.Sprintf("http://%s:%s", host, in.Port),
124-
InternalHTTPUrl: fmt.Sprintf("http://%s:%s", containerName, in.Port),
134+
InternalHTTPUrl: fmt.Sprintf("http://%s:%s", containerName, DefaultTronPort),
125135
},
126136
},
127137
}, nil

0 commit comments

Comments
 (0)