Skip to content

Commit c4f1136

Browse files
committed
tests: add more test cases for the rewards
1 parent 55e7ea8 commit c4f1136

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
@@ -201,7 +201,7 @@ func TestGetNodeCapacityRewards(t *testing.T) {
201201
request = getNodeCapacityRewardsWithStatusOK
202202
resp, err := c.GetNodeCapacityRewards(nodeID)
203203
require.NoError(err)
204-
require.Equal(resp, NodeCapacityReward{})
204+
require.Equal(NodeCapacityReward{}, resp)
205205
})
206206

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

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

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)