@@ -190,9 +190,9 @@ func (suite *EthereumContractTestSuite) TestDirectInvokeMethod() {
190190 Location : fftypes .JSONAnyPtrBytes (locationBytes ),
191191 Method : simpleStorageFFIGet (),
192192 }
193- res , err = suite .testState .client1 .QueryContractMethod (suite .T (), queryContractRequest )
193+ queryRes , err : = suite .testState .client1 .QueryContractMethod (suite .T (), queryContractRequest )
194194 assert .NoError (suite .T (), err )
195- resJSON , err := json .Marshal (res )
195+ resJSON , err := json .Marshal (queryRes )
196196 assert .NoError (suite .T (), err )
197197 assert .Equal (suite .T (), `{"output":"2"}` , string (resJSON ))
198198 suite .testState .client1 .DeleteContractListener (suite .T (), listener .ID )
@@ -232,7 +232,18 @@ func (suite *EthereumContractTestSuite) TestFFIInvokeMethod() {
232232 assert .NoError (suite .T (), err )
233233 assert .NotNil (suite .T (), res )
234234
235- time .Sleep (1 * time .Second ) // Wait for the operation to be processed
235+ // Wait for the operation to succeed before idempotency check
236+ // If the operation never succeeds, the larger test timeout will fail
237+ for {
238+ suite .T ().Logf ("Waiting for invoke operation to succeed: %s" , res .ID .String ())
239+ op := suite .testState .client1 .GetOperation (suite .T (), res .ID .String ())
240+ if op .Status == core .OpStatusSucceeded {
241+ suite .T ().Logf ("Invoke operation succeeded: %s" , res .ID .String ())
242+ break
243+ }
244+ time .Sleep (100 * time .Millisecond )
245+ suite .T ().Logf ("Retrying, invoke operation status: %s" , op .Status )
246+ }
236247
237248 // Idempotency check
238249 _ , err = suite .testState .client1 .InvokeContractMethod (suite .T (), invokeContractRequest , 409 )
@@ -256,9 +267,9 @@ func (suite *EthereumContractTestSuite) TestFFIInvokeMethod() {
256267 Interface : suite .interfaceID ,
257268 MethodPath : "get" ,
258269 }
259- res , err = suite .testState .client1 .QueryContractMethod (suite .T (), queryContractRequest )
270+ queryRes , err : = suite .testState .client1 .QueryContractMethod (suite .T (), queryContractRequest )
260271 assert .NoError (suite .T (), err )
261- resJSON , err := json .Marshal (res )
272+ resJSON , err := json .Marshal (queryRes )
262273 assert .NoError (suite .T (), err )
263274 assert .Equal (suite .T (), `{"output":"42"}` , string (resJSON ))
264275 suite .testState .client1 .DeleteContractListener (suite .T (), listener .ID )
0 commit comments