Skip to content

Commit 02e4c78

Browse files
0oM4REslam-Nawara
authored andcommitted
tests: add more test cases for the rewards
1 parent 2b5f964 commit 02e4c78

File tree

3 files changed

+94
-5
lines changed

3 files changed

+94
-5
lines changed

node-registrar/client/node_test.go

Lines changed: 36 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -197,7 +197,7 @@ func TestGetNodeCapacityRewards(t *testing.T) {
197197
request = getNodeCapacityRewardsWithStatusOK
198198
resp, err := c.GetNodeCapacityRewards(nodeID)
199199
require.NoError(err)
200-
require.Equal(resp, NodeCapacityReward{})
200+
require.Equal(NodeCapacityReward{}, resp)
201201
})
202202

203203
t.Run("get node rewards for non-existing node", func(t *testing.T) {
@@ -208,8 +208,41 @@ func TestGetNodeCapacityRewards(t *testing.T) {
208208

209209
t.Run("no reports available, status UnprocessableEntity", func(t *testing.T) {
210210
request = getNodeCapacityRewardsWithStatusUnprocessableEntity
211-
res, err := c.GetNodeCapacityRewards(1)
211+
res, err := c.GetNodeCapacityRewards(nodeID)
212212
require.Error(err)
213-
require.Equal(res, NodeCapacityReward{})
213+
require.Equal(NodeCapacityReward{}, res)
214+
215+
})
216+
217+
t.Run("node with partial uptime rewards calculation", func(t *testing.T) {
218+
request = getNodeCapacityRewardsWithPartialUptime
219+
res, err := c.GetNodeCapacityRewards(nodeID)
220+
require.NoError(err)
221+
expected := NodeCapacityReward{
222+
FarmerReward: 60.0,
223+
TfReward: 20.0,
224+
FpReward: 20.0,
225+
Total: 100.0,
226+
UpTimePercentage: 75.0,
227+
}
228+
require.Equal(expected, res)
229+
// Verify reward distribution percentages are correct
230+
require.InDelta(0.6, res.FarmerReward/res.Total, 0.001)
231+
require.InDelta(0.2, res.TfReward/res.Total, 0.001)
232+
require.InDelta(0.2, res.FpReward/res.Total, 0.001)
233+
})
234+
235+
t.Run("bad request due to invalid node ID format", func(t *testing.T) {
236+
request = getNodeCapacityRewardsWithBadRequest
237+
res, err := c.GetNodeCapacityRewards(nodeID)
238+
require.Error(err)
239+
require.Equal(NodeCapacityReward{}, res)
240+
})
241+
242+
t.Run("internal server error when calculating rewards", func(t *testing.T) {
243+
request = getNodeCapacityRewardsWithServerError
244+
res, err := c.GetNodeCapacityRewards(nodeID)
245+
require.Error(err)
246+
require.Equal(NodeCapacityReward{}, res)
214247
})
215248
}

node-registrar/client/utils_test.go

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,9 @@ const (
4747
getNodeCapacityRewardsWithStatusOK
4848
getNodeCapacityRewardsWithStatusNotFound
4949
getNodeCapacityRewardsWithStatusUnprocessableEntity
50+
getNodeCapacityRewardsWithPartialUptime
51+
getNodeCapacityRewardsWithBadRequest
52+
getNodeCapacityRewardsWithServerError
5053

5154
testMnemonic = "bottom drive obey lake curtain smoke basket hold race lonely fit walk"
5255

@@ -239,9 +242,31 @@ func serverHandler(r *http.Request, request, count int, require *require.Asserti
239242
case getNodeCapacityRewardsWithStatusUnprocessableEntity:
240243
require.Equal("/v1/nodes/1/rewards", r.URL.Path)
241244
require.Equal(http.MethodGet, r.Method)
242-
resp, err := json.Marshal(NodeCapacityReward{TfReward: 239843})
245+
return http.StatusUnprocessableEntity, nil
246+
247+
case getNodeCapacityRewardsWithPartialUptime:
248+
require.Equal("/v1/nodes/1/rewards", r.URL.Path)
249+
require.Equal(http.MethodGet, r.Method)
250+
resp, err := json.Marshal(NodeCapacityReward{
251+
FarmerReward: 60.0,
252+
TfReward: 20.0,
253+
FpReward: 20.0,
254+
Total: 100.0,
255+
UpTimePercentage: 75.0,
256+
})
243257
require.NoError(err)
244-
return http.StatusUnprocessableEntity, resp
258+
return http.StatusOK, resp
259+
260+
case getNodeCapacityRewardsWithBadRequest:
261+
require.Equal("/v1/nodes/1/rewards", r.URL.Path)
262+
require.Equal(http.MethodGet, r.Method)
263+
264+
return http.StatusBadRequest, nil
265+
266+
case getNodeCapacityRewardsWithServerError:
267+
require.Equal("/v1/nodes/1/rewards", r.URL.Path)
268+
require.Equal(http.MethodGet, r.Method)
269+
return http.StatusInternalServerError, nil
245270

246271
// unauthorized requests
247272
case newClientWithNoAccount,

node-registrar/test/main.go

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"log"
6+
7+
"github.com/threefoldtech/tfgrid4-sdk-go/node-registrar/client"
8+
)
9+
10+
func main() {
11+
// Create a new client with the registrar server URL
12+
registrarClient, err := client.NewRegistrarClient("http://localhost:8080/api/v1")
13+
if err != nil {
14+
log.Fatalf("Failed to create client: %v", err)
15+
}
16+
17+
// Get node capacity rewards by node ID
18+
nodeID := uint64(34) // Replace with actual node ID
19+
rewards, err := registrarClient.GetNodeCapacityRewards(nodeID)
20+
if err != nil {
21+
log.Fatalf("Failed to get node capacity rewards: %v", err)
22+
}
23+
24+
// Print the rewards information
25+
fmt.Printf("Node %d Rewards:\n", nodeID)
26+
fmt.Printf("Total: %f\n", rewards.Total)
27+
fmt.Printf("Farmer Reward: %f\n", rewards.FarmerReward)
28+
fmt.Printf("TF Reward: %f\n", rewards.TfReward)
29+
fmt.Printf("FP Reward: %f\n", rewards.FpReward)
30+
fmt.Printf("Uptime Percentage: %f%%\n", rewards.UpTimePercentage)
31+
}

0 commit comments

Comments
 (0)