@@ -17,7 +17,10 @@ import (
17
17
"github.com/stretchr/testify/require"
18
18
19
19
"github.com/stellar/go/support/log"
20
+ "github.com/stellar/wallet-backend/internal/db"
21
+ "github.com/stellar/wallet-backend/internal/db/dbtest"
20
22
"github.com/stellar/wallet-backend/internal/entities"
23
+ "github.com/stellar/wallet-backend/internal/metrics"
21
24
"github.com/stellar/wallet-backend/internal/utils"
22
25
)
23
26
@@ -32,9 +35,18 @@ func (e *errorReader) Close() error {
32
35
}
33
36
34
37
func TestSendRPCRequest (t * testing.T ) {
38
+ dbt := dbtest .Open (t )
39
+ defer dbt .Close ()
40
+
41
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
42
+ require .NoError (t , err )
43
+ defer dbConnectionPool .Close ()
44
+ sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
45
+ require .NoError (t , err )
46
+ metricsService := metrics .NewMetricsService (sqlxDB )
35
47
mockHTTPClient := utils.MockHTTPClient {}
36
48
rpcURL := "http://api.vibrantapp.com/soroban/rpc"
37
- rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient )
49
+ rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient , metricsService )
38
50
39
51
t .Run ("successful" , func (t * testing.T ) {
40
52
httpResponse := http.Response {
@@ -127,9 +139,18 @@ func TestSendRPCRequest(t *testing.T) {
127
139
}
128
140
129
141
func TestSendTransaction (t * testing.T ) {
142
+ dbt := dbtest .Open (t )
143
+ defer dbt .Close ()
144
+
145
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
146
+ require .NoError (t , err )
147
+ defer dbConnectionPool .Close ()
148
+ sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
149
+ require .NoError (t , err )
150
+ metricsService := metrics .NewMetricsService (sqlxDB )
130
151
mockHTTPClient := utils.MockHTTPClient {}
131
152
rpcURL := "http://api.vibrantapp.com/soroban/rpc"
132
- rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient )
153
+ rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient , metricsService )
133
154
134
155
t .Run ("successful" , func (t * testing.T ) {
135
156
transactionXDR := "AAAAAgAAAABYJgX6SmA2tGVDv3GXfOWbkeL869ahE0e5DG9HnXQw/QAAAGQAAjpnAAAAAQAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAEAAAAAAAAAAQAAAACxaDFEbbssZfrbRgFxTYIygITSQxsUpDmneN2gAZBEFQAAAAAAAAAABfXhAAAAAAAAAAAA"
@@ -188,9 +209,18 @@ func TestSendTransaction(t *testing.T) {
188
209
}
189
210
190
211
func TestGetTransaction (t * testing.T ) {
212
+ dbt := dbtest .Open (t )
213
+ defer dbt .Close ()
214
+
215
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
216
+ require .NoError (t , err )
217
+ defer dbConnectionPool .Close ()
218
+ sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
219
+ require .NoError (t , err )
220
+ metricsService := metrics .NewMetricsService (sqlxDB )
191
221
mockHTTPClient := utils.MockHTTPClient {}
192
222
rpcURL := "http://api.vibrantapp.com/soroban/rpc"
193
- rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient )
223
+ rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient , metricsService )
194
224
195
225
t .Run ("successful" , func (t * testing.T ) {
196
226
transactionHash := "6bc97bddc21811c626839baf4ab574f4f9f7ddbebb44d286ae504396d4e752da"
@@ -264,9 +294,18 @@ func TestGetTransaction(t *testing.T) {
264
294
}
265
295
266
296
func TestGetTransactions (t * testing.T ) {
297
+ dbt := dbtest .Open (t )
298
+ defer dbt .Close ()
299
+
300
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
301
+ require .NoError (t , err )
302
+ defer dbConnectionPool .Close ()
303
+ sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
304
+ require .NoError (t , err )
305
+ metricsService := metrics .NewMetricsService (sqlxDB )
267
306
mockHTTPClient := utils.MockHTTPClient {}
268
307
rpcURL := "http://api.vibrantapp.com/soroban/rpc"
269
- rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient )
308
+ rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient , metricsService )
270
309
271
310
t .Run ("rpc_request_fails" , func (t * testing.T ) {
272
311
mockHTTPClient .
@@ -327,9 +366,18 @@ func TestGetTransactions(t *testing.T) {
327
366
}
328
367
329
368
func TestSendGetHealth (t * testing.T ) {
369
+ dbt := dbtest .Open (t )
370
+ defer dbt .Close ()
371
+
372
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
373
+ require .NoError (t , err )
374
+ defer dbConnectionPool .Close ()
375
+ sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
376
+ require .NoError (t , err )
377
+ metricsService := metrics .NewMetricsService (sqlxDB )
330
378
mockHTTPClient := utils.MockHTTPClient {}
331
379
rpcURL := "http://api.vibrantapp.com/soroban/rpc"
332
- rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient )
380
+ rpcService , _ := NewRPCService (rpcURL , & mockHTTPClient , metricsService )
333
381
334
382
t .Run ("successful" , func (t * testing.T ) {
335
383
payload := map [string ]interface {}{
@@ -374,12 +422,19 @@ func TestSendGetHealth(t *testing.T) {
374
422
}
375
423
376
424
func TestTrackRPCServiceHealth_HealthyService (t * testing.T ) {
377
- ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
378
- defer cancel ()
425
+ dbt := dbtest .Open (t )
426
+ defer dbt .Close ()
427
+
428
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
429
+ require .NoError (t , err )
430
+ defer dbConnectionPool .Close ()
431
+ sqlxDB , err := dbConnectionPool .SqlxDB (context .Background ())
432
+ require .NoError (t , err )
433
+ metricsService := metrics .NewMetricsService (sqlxDB )
379
434
380
435
mockHTTPClient := & utils.MockHTTPClient {}
381
436
rpcURL := "http://test-url-track-rpc-service-health"
382
- rpcService , err := NewRPCService (rpcURL , mockHTTPClient )
437
+ rpcService , err := NewRPCService (rpcURL , mockHTTPClient , metricsService )
383
438
require .NoError (t , err )
384
439
385
440
healthResult := entities.RPCGetHealthResult {
@@ -390,6 +445,8 @@ func TestTrackRPCServiceHealth_HealthyService(t *testing.T) {
390
445
}
391
446
392
447
// Mock the HTTP response for GetHealth
448
+ ctx , cancel := context .WithTimeout (context .Background (), 5 * time .Second )
449
+ defer cancel ()
393
450
mockResponse := & http.Response {
394
451
Body : io .NopCloser (bytes .NewBuffer ([]byte (`{
395
452
"jsonrpc": "2.0",
@@ -419,14 +476,24 @@ func TestTrackRPCServiceHealth_HealthyService(t *testing.T) {
419
476
}
420
477
421
478
func TestTrackRPCServiceHealth_UnhealthyService (t * testing.T ) {
479
+ ctx , cancel := context .WithTimeout (context .Background (), 70 * time .Second )
480
+ defer cancel ()
481
+
482
+ dbt := dbtest .Open (t )
483
+ defer dbt .Close ()
484
+
485
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
486
+ require .NoError (t , err )
487
+ defer dbConnectionPool .Close ()
488
+ sqlxDB , err := dbConnectionPool .SqlxDB (ctx )
489
+ require .NoError (t , err )
490
+ metricsService := metrics .NewMetricsService (sqlxDB )
422
491
getLogs := log .DefaultLogger .StartTest (log .WarnLevel )
423
492
424
493
mockHTTPClient := & utils.MockHTTPClient {}
425
494
rpcURL := "http://test-url-track-rpc-service-health"
426
- rpcService , err := NewRPCService (rpcURL , mockHTTPClient )
495
+ rpcService , err := NewRPCService (rpcURL , mockHTTPClient , metricsService )
427
496
require .NoError (t , err )
428
- ctx , cancel := context .WithTimeout (context .Background (), 70 * time .Second )
429
- defer cancel ()
430
497
431
498
// Mock error response for GetHealth with a valid http.Response
432
499
mockResponse := & http.Response {
@@ -457,12 +524,22 @@ func TestTrackRPCServiceHealth_UnhealthyService(t *testing.T) {
457
524
}
458
525
459
526
func TestTrackRPCService_ContextCancelled (t * testing.T ) {
527
+ ctx , cancel := context .WithTimeout (context .Background (), 3 * time .Second )
528
+ defer cancel ()
529
+
530
+ dbt := dbtest .Open (t )
531
+ defer dbt .Close ()
532
+
533
+ dbConnectionPool , err := db .OpenDBConnectionPool (dbt .DSN )
534
+ require .NoError (t , err )
535
+ defer dbConnectionPool .Close ()
536
+ sqlxDB , err := dbConnectionPool .SqlxDB (ctx )
537
+ require .NoError (t , err )
538
+ metricsService := metrics .NewMetricsService (sqlxDB )
460
539
mockHTTPClient := & utils.MockHTTPClient {}
461
540
rpcURL := "http://test-url-track-rpc-service-health"
462
- rpcService , err := NewRPCService (rpcURL , mockHTTPClient )
541
+ rpcService , err := NewRPCService (rpcURL , mockHTTPClient , metricsService )
463
542
require .NoError (t , err )
464
- ctx , cancel := context .WithTimeout (context .Background (), 3 * time .Second )
465
- defer cancel ()
466
543
467
544
rpcService .TrackRPCServiceHealth (ctx )
468
545
0 commit comments