Skip to content

Commit 9010697

Browse files
committed
refactor: code cleanup
1 parent 6f9a764 commit 9010697

11 files changed

Lines changed: 1242 additions & 856 deletions

File tree

Lines changed: 92 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,92 @@
1+
package blockchainapi
2+
3+
import (
4+
"math/big"
5+
"testing"
6+
7+
"github.com/MorpheusAIs/Morpheus-Lumerin-Node/proxy-router/internal/blockchainapi/structs"
8+
"github.com/MorpheusAIs/Morpheus-Lumerin-Node/proxy-router/internal/lib"
9+
)
10+
11+
func TestComputeSessionTokenAmount(t *testing.T) {
12+
makeBid := func(pricePerSecond int64) *structs.Bid {
13+
return &structs.Bid{
14+
PricePerSecond: &lib.BigInt{Int: *big.NewInt(pricePerSecond)},
15+
}
16+
}
17+
18+
tests := []struct {
19+
name string
20+
bid *structs.Bid
21+
duration *big.Int
22+
supply *big.Int
23+
budget *big.Int
24+
directPayment bool
25+
want *big.Int
26+
wantErr bool
27+
}{
28+
{
29+
name: "direct payment",
30+
bid: makeBid(100),
31+
duration: big.NewInt(3600),
32+
supply: big.NewInt(1_000_000),
33+
budget: big.NewInt(50_000),
34+
directPayment: true,
35+
want: big.NewInt(360_000),
36+
},
37+
{
38+
name: "staked",
39+
bid: makeBid(100),
40+
duration: big.NewInt(3600),
41+
supply: big.NewInt(1_000_000),
42+
budget: big.NewInt(50_000),
43+
directPayment: false,
44+
want: big.NewInt(7_200_000),
45+
},
46+
{
47+
name: "nil bid",
48+
bid: nil,
49+
duration: big.NewInt(3600),
50+
supply: big.NewInt(1_000_000),
51+
budget: big.NewInt(50_000),
52+
directPayment: false,
53+
wantErr: true,
54+
},
55+
{
56+
name: "zero budget",
57+
bid: makeBid(100),
58+
duration: big.NewInt(3600),
59+
supply: big.NewInt(1_000_000),
60+
budget: big.NewInt(0),
61+
directPayment: false,
62+
wantErr: true,
63+
},
64+
{
65+
name: "nil budget",
66+
bid: makeBid(100),
67+
duration: big.NewInt(3600),
68+
supply: big.NewInt(1_000_000),
69+
budget: nil,
70+
directPayment: false,
71+
wantErr: true,
72+
},
73+
}
74+
75+
for _, tt := range tests {
76+
t.Run(tt.name, func(t *testing.T) {
77+
got, err := computeSessionTokenAmount(tt.bid, tt.duration, tt.supply, tt.budget, tt.directPayment)
78+
if tt.wantErr {
79+
if err == nil {
80+
t.Fatalf("expected error, got result %s", got)
81+
}
82+
return
83+
}
84+
if err != nil {
85+
t.Fatalf("unexpected error: %v", err)
86+
}
87+
if got.Cmp(tt.want) != 0 {
88+
t.Errorf("got %s, want %s", got, tt.want)
89+
}
90+
})
91+
}
92+
}
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
package ethclient
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"fmt"
7+
"net/url"
8+
"testing"
9+
)
10+
11+
func TestShouldRetryRPCError(t *testing.T) {
12+
tests := []struct {
13+
name string
14+
err error
15+
expected bool
16+
}{
17+
{
18+
name: "nil error",
19+
err: nil,
20+
expected: false,
21+
},
22+
{
23+
name: "context canceled",
24+
err: context.Canceled,
25+
expected: false,
26+
},
27+
{
28+
name: "context deadline",
29+
err: context.DeadlineExceeded,
30+
expected: false,
31+
},
32+
{
33+
name: "rate limit text",
34+
err: fmt.Errorf("429 too many requests"),
35+
expected: true,
36+
},
37+
{
38+
name: "rate limit code",
39+
err: fmt.Errorf("-32005"),
40+
expected: true,
41+
},
42+
{
43+
name: "execution reverted",
44+
err: fmt.Errorf("execution reverted"),
45+
expected: false,
46+
},
47+
{
48+
name: "revert",
49+
err: fmt.Errorf("revert"),
50+
expected: false,
51+
},
52+
{
53+
name: "timeout",
54+
err: fmt.Errorf("connection timeout"),
55+
expected: true,
56+
},
57+
{
58+
name: "connection refused",
59+
err: fmt.Errorf("connection refused"),
60+
expected: true,
61+
},
62+
{
63+
name: "connection reset",
64+
err: fmt.Errorf("connection reset"),
65+
expected: true,
66+
},
67+
{
68+
name: "eof",
69+
err: fmt.Errorf("eof"),
70+
expected: true,
71+
},
72+
{
73+
name: "cloudflare block",
74+
err: fmt.Errorf("just a moment"),
75+
expected: true,
76+
},
77+
{
78+
name: "quota exceeded",
79+
err: fmt.Errorf("quota exceeded"),
80+
expected: true,
81+
},
82+
{
83+
name: "insufficient funds",
84+
err: fmt.Errorf("insufficient funds for gas"),
85+
expected: false,
86+
},
87+
{
88+
name: "usage limit",
89+
err: fmt.Errorf("usage limit"),
90+
expected: true,
91+
},
92+
{
93+
name: "method not found code",
94+
err: fmt.Errorf("-32601"),
95+
expected: true,
96+
},
97+
{
98+
name: "json syntax error",
99+
err: &json.SyntaxError{},
100+
expected: false,
101+
},
102+
{
103+
name: "url error",
104+
err: &url.Error{Op: "Get", URL: "http://example.com", Err: fmt.Errorf("dial failed")},
105+
expected: true,
106+
},
107+
}
108+
109+
for _, tt := range tests {
110+
t.Run(tt.name, func(t *testing.T) {
111+
got := shouldRetryRPCError(tt.err)
112+
if got != tt.expected {
113+
t.Errorf("shouldRetryRPCError(%v) = %v, want %v", tt.err, got, tt.expected)
114+
}
115+
})
116+
}
117+
}

0 commit comments

Comments
 (0)