@@ -37,21 +37,19 @@ func defaultSolana(in *Input) {
3737 if in .Port == "" {
3838 in .Port = "8545"
3939 }
40- if in .WSPort == "" {
41- in .WSPort = "8546"
42- }
4340}
4441
4542func newSolana (in * Input ) (* Output , error ) {
4643 defaultSolana (in )
4744 ctx := context .Background ()
48- //wsPortNumberStr, err := wsPort(in.Port)
49- //if err != nil {
50- // return nil, err
51- //}
52- framework .L .Info ().Msg ("Creating solana container" )
45+ containerName := framework .DefaultTCName ("blockchain-node" )
46+ // Solana do not allow to set ws port, it just uses --rpc-port=N and sets WS as N+1 automatically
5347 bindPort := fmt .Sprintf ("%s/tcp" , in .Port )
54- containerName := framework .DefaultTCName ("blockchain-solana-node" )
48+ pp , err := strconv .Atoi (in .Port )
49+ if err != nil {
50+ return nil , fmt .Errorf ("in.Port is not a number" )
51+ }
52+ in .WSPort = strconv .Itoa (pp + 1 )
5553 wsBindPort := fmt .Sprintf ("%s/tcp" , in .WSPort )
5654
5755 configYml , err := os .CreateTemp ("" , "config.yml" )
@@ -78,7 +76,6 @@ func newSolana(in *Input) (*Output, error) {
7876 return nil , err
7977 }
8078
81- framework .L .Info ().Any ("Port" , in .Port ).Any ("WSPort" , in .WSPort ).Send ()
8279 req := testcontainers.ContainerRequest {
8380 AlwaysPullImage : in .PullImage ,
8481 Image : in .Image ,
@@ -117,16 +114,16 @@ func newSolana(in *Input) (*Output, error) {
117114 Files : []testcontainers.ContainerFile {
118115 {
119116 HostFilePath : configYml .Name (),
120- ContainerFilePath : "/data /config.yml" ,
117+ ContainerFilePath : "/root/.config/solana/cli /config.yml" ,
121118 FileMode : 0644 ,
122119 },
123120 {
124121 HostFilePath : idJSON .Name (),
125- ContainerFilePath : "/data /id.json" ,
122+ ContainerFilePath : "/root/.config/solana/cli /id.json" ,
126123 FileMode : 0644 ,
127124 },
128125 },
129- Entrypoint : []string {"sh" , "-c" , "solana-test-validator -C /data/config.yml --bind-address=0.0.0.0 --mint=" + in .PublicKey },
126+ Entrypoint : []string {"sh" , "-c" , fmt . Sprintf ( "mkdir -p /root/.config/solana/cli && solana-test-validator --rpc-port %s --mint %s" , in . Port , in .PublicKey ) },
130127 }
131128
132129 c , err := testcontainers .GenericContainer (ctx , testcontainers.GenericContainerRequest {
@@ -140,39 +137,18 @@ func newSolana(in *Input) (*Output, error) {
140137 if err != nil {
141138 return nil , err
142139 }
143- //mp, err := c.MappedPort(ctx, nat.Port(bindPort))
144- //if err != nil {
145- // return nil, err
146- //}
147- //wsmp, err := c.MappedPort(ctx, nat.Port(wsBindPort))
148- //if err != nil {
149- // return nil, err
150- //}
151-
152- framework .L .Info ().Msg ("Started Solana container" )
153140
154141 return & Output {
155142 UseCache : true ,
156- Family : "non-evm" ,
157- ChainID : in .ChainID ,
143+ Family : "solana" ,
158144 ContainerName : containerName ,
159145 Nodes : []* Node {
160146 {
161- HostWSUrl : fmt .Sprintf ("ws://%s:%s" , host , in .Port ),
162- HostHTTPUrl : fmt .Sprintf ("http://%s:%s" , host , in .WSPort ),
147+ HostWSUrl : fmt .Sprintf ("ws://%s:%s" , host , in .WSPort ),
148+ HostHTTPUrl : fmt .Sprintf ("http://%s:%s" , host , in .Port ),
163149 DockerInternalWSUrl : fmt .Sprintf ("ws://%s:%s" , containerName , in .WSPort ),
164150 DockerInternalHTTPUrl : fmt .Sprintf ("http://%s:%s" , containerName , in .Port ),
165151 },
166152 },
167153 }, nil
168154}
169-
170- func wsPort (rpcPort string ) (string , error ) {
171- wsPortNumber , err := strconv .Atoi (rpcPort )
172- if err != nil {
173- return "" , fmt .Errorf ("failed to convert port to integer: %w" , err )
174- }
175- wsPortNumber += 1 // Increment by 1
176- wsPortNumberStr := strconv .Itoa (wsPortNumber )
177- return wsPortNumberStr , nil
178- }
0 commit comments