Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merge dev into liquid staking 19 04 22 #4000

Merged
merged 130 commits into from
Apr 19, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
130 commits
Select commit Hold shift + click to select a range
d08f523
- configuration value for sync process time used in the base bootstra…
iulianpascalau Mar 3, 2022
9fb5459
- fixed typo
iulianpascalau Mar 4, 2022
282bc5b
Merge branch 'master' into sync-process-wait-time-config
iulianpascalau Mar 4, 2022
def4f25
return node is starting for all api calls when needed
bogdan-rosianu Mar 7, 2022
e283657
Merge branch 'development' into EN-11729-node-is-starting-errors
bogdan-rosianu Mar 7, 2022
d4410dd
Merge branch 'development' into EN-11729-node-is-starting-errors
miiu96 Mar 10, 2022
49473fc
Merge branch 'development' into EN-11729-node-is-starting-errors
bogdan-rosianu Mar 14, 2022
783924f
small fix for loading data from storage in epoch start bootstrap
bogdan-rosianu Mar 14, 2022
2433a5b
EN-11730: use a context + predefined channel for get all leaves opera…
bogdan-rosianu Mar 14, 2022
b25aaf7
fix tests
bogdan-rosianu Mar 14, 2022
cf572e9
further tests fixes
bogdan-rosianu Mar 14, 2022
26c1c41
fixes after review
bogdan-rosianu Mar 14, 2022
2661d38
Merge branch 'development' into EN-11729-node-is-starting-errors
bogdan-rosianu Mar 14, 2022
0394c3e
fixes after merge
bogdan-rosianu Mar 14, 2022
a18fa36
fix race condition
bogdan-rosianu Mar 15, 2022
6ea1583
Merge branch 'development' into EN-11730-get-all-leaves-context
bogdan-rosianu Mar 15, 2022
1826d3a
fix failing unit test
bogdan-rosianu Mar 15, 2022
20d11dd
integrate ctx with timeout on api trie range endpoints
bogdan-rosianu Mar 15, 2022
df70402
Merge branch 'development' into EN-11730-get-all-leaves-context
bogdan-rosianu Mar 16, 2022
ccb8834
EN-11730: fixes after review
bogdan-rosianu Mar 16, 2022
543c385
Merge remote-tracking branch 'origin/EN-11730-get-all-leaves-context'…
bogdan-rosianu Mar 16, 2022
71b648a
fix after review
bogdan-rosianu Mar 16, 2022
d5d2e1d
Merge branch 'development' into small-fix-epoch-start-bootstrap-from-…
bogdan-rosianu Mar 16, 2022
266d792
Merge pull request #3898 from ElrondNetwork/small-fix-epoch-start-boo…
gabi-vuls Mar 17, 2022
de53976
integrate new vm parameters
sasurobert Mar 17, 2022
8744ac9
Merge branch 'development' into EN-11730-get-all-leaves-context
gabi-vuls Mar 17, 2022
c9f449e
Merge branch 'development' into EN-11729-node-is-starting-errors
bogdan-rosianu Mar 17, 2022
3a44a63
- miniblock body cache size tweak
iulianpascalau Mar 17, 2022
bc52905
proper release and comment
sasurobert Mar 18, 2022
e69854a
- tweaked more configs
iulianpascalau Mar 18, 2022
e731181
Merge pull request #3913 from ElrondNetwork/integrate-new-vm-params
sasurobert Mar 18, 2022
6a59d64
Merge branch 'development' into EN-11730-get-all-leaves-context
iulianpascalau Mar 18, 2022
a35ed26
Merge branch 'development' into EN-11729-node-is-starting-errors
bogdan-rosianu Mar 18, 2022
8c5a484
increased sleeps for ctx tests
bogdan-rosianu Mar 18, 2022
e43a33d
Merge remote-tracking branch 'origin/EN-11730-get-all-leaves-context'…
bogdan-rosianu Mar 18, 2022
c563557
Merge pull request #3884 from ElrondNetwork/EN-11729-node-is-starting…
bogdan-rosianu Mar 18, 2022
0d9245d
Merge branch 'development' into EN-11730-get-all-leaves-context
bogdan-rosianu Mar 18, 2022
d5b958a
Merge pull request #3900 from ElrondNetwork/EN-11730-get-all-leaves-c…
gabi-vuls Mar 18, 2022
93fbdac
Merge pull request #3914 from ElrondNetwork/config-tweak-2022.03.17
iulianpascalau Mar 18, 2022
9c7f430
Merge branch 'master' into update-dev-master-2022.03.18
iulianpascalau Mar 18, 2022
d03e213
Merge pull request #3918 from ElrondNetwork/update-dev-master-2022.03.18
iulianpascalau Mar 18, 2022
a924e8a
- fixed the epoch activations in transactions preprocessors
iulianpascalau Mar 18, 2022
f88c78a
- linter fixes
iulianpascalau Mar 18, 2022
34619b1
- fix after review
iulianpascalau Mar 18, 2022
6fa07c6
Merge pull request #3919 from ElrondNetwork/fix-tx-sorting
iulianpascalau Mar 20, 2022
65ae33d
Merge branch 'master' into update-master-dev-2022.03.21
iulianpascalau Mar 21, 2022
9c4a4dd
Merge pull request #3923 from ElrondNetwork/update-master-dev-2022.03.21
iulianpascalau Mar 21, 2022
9fbbb3e
fix invalid scheduled tx on epoch start
AdoAdoAdo Mar 21, 2022
d925016
process: fix unit test
AdoAdoAdo Mar 21, 2022
aa1f08b
epochStart: add a test for isScheduledIntermediateTx
AdoAdoAdo Mar 21, 2022
7ab4157
epochStart: renaming, cleanup test
AdoAdoAdo Mar 21, 2022
6acba69
- fixed transaction restore in cache
iulianpascalau Mar 21, 2022
a1d2472
- fixed comment
iulianpascalau Mar 21, 2022
20ca2e6
- fis after review: renaming
iulianpascalau Mar 22, 2022
38ed1e8
Merge pull request #3928 from ElrondNetwork/fix-epoch-start-with-inva…
iulianpascalau Mar 22, 2022
d6cba68
- integrated new pubsub repo
iulianpascalau Mar 24, 2022
06dbd47
- proper release
iulianpascalau Mar 24, 2022
9a1938a
Merge branch 'development' into sync-process-wait-time-config
iulianpascalau Mar 24, 2022
318d291
added log.Error on StartHttpServer with new method Type on Middleware…
sstanculeanu Mar 24, 2022
cb7b200
- fixed level db removal from batch by not using a hardcoded marker
iulianpascalau Mar 24, 2022
c5b8de9
reverted previous commit and added basic log error instead
sstanculeanu Mar 24, 2022
f31a074
Merge pull request #3933 from ElrondNetwork/new-pubsub-integration
iulianpascalau Mar 25, 2022
228d7d9
- fixes after review
iulianpascalau Mar 25, 2022
501f9b0
Merge branch 'development' into fix-level-db-batch-removal
iulianpascalau Mar 25, 2022
7afc6d1
Merge branch 'development' into sync-process-wait-time-config
gabi-vuls Mar 25, 2022
f7c499a
Merge pull request #3870 from ElrondNetwork/sync-process-wait-time-co…
iulianpascalau Mar 25, 2022
ead993a
Merge branch 'development' into avoid-silent-ignore-on-webserver
sstanculeanu Mar 28, 2022
be58960
Merge pull request #3934 from ElrondNetwork/avoid-silent-ignore-on-we…
sstanculeanu Mar 28, 2022
252f83d
Merge branch 'development' into fix-level-db-batch-removal
iulianpascalau Mar 28, 2022
50e761d
- switched to a disabled persister for intercepted trie nodes
iulianpascalau Mar 29, 2022
ba31891
- removed useless if check
iulianpascalau Mar 29, 2022
78b6665
- reverted more code
iulianpascalau Mar 29, 2022
7f01f7c
- removed empty line
iulianpascalau Mar 29, 2022
a17c66e
- turned off the intercepted trie nodes DB
iulianpascalau Mar 29, 2022
98ad934
- fixed prints in logger
iulianpascalau Mar 30, 2022
031580e
- reverted changes
iulianpascalau Mar 30, 2022
235dd0b
- fixed hash print
iulianpascalau Mar 30, 2022
7f4bfbd
Merge pull request #3935 from ElrondNetwork/fix-level-db-batch-removal
gabi-vuls Mar 30, 2022
a13730e
Merge pull request #3949 from ElrondNetwork/hotfix-disabled-persister…
iulianpascalau Mar 30, 2022
8e3eae0
use logger v1.0.7
bogdan-rosianu Mar 31, 2022
1b8ddc5
Merge pull request #3953 from ElrondNetwork/reference-logger-v-1-0-7
gabi-vuls Apr 1, 2022
c667a83
indexer v1.1.37
miiu96 Apr 4, 2022
86ca856
fix delegation sc logs
miiu96 Apr 4, 2022
aa45c4f
change log indetifier
miiu96 Apr 4, 2022
b4c17b6
Merge pull request #3958 from ElrondNetwork/master-with-latest-indexe…
iulianpascalau Apr 4, 2022
15017af
- golang ci linter fixes
iulianpascalau Apr 4, 2022
9596625
Merge branch 'master' into fix-delegation-sc-logs
miiu96 Apr 4, 2022
b230834
small fix
miiu96 Apr 4, 2022
94151bb
- removed golang ci linter cache
iulianpascalau Apr 4, 2022
17cbdcb
- concurrency 1
iulianpascalau Apr 4, 2022
11ebc7a
refactor
miiu96 Apr 5, 2022
6143f46
- compressed flags
iulianpascalau Apr 5, 2022
c41b8ef
fix address
miiu96 Apr 5, 2022
4c7adf3
- new golang ci linter version
iulianpascalau Apr 5, 2022
7005ad5
- latest golang ci linter version
iulianpascalau Apr 5, 2022
c8a4afe
- reverted code
iulianpascalau Apr 5, 2022
7a6607c
fix unDelegate log
miiu96 Apr 5, 2022
5d3e506
Merge pull request #3960 from ElrondNetwork/fix-golangci-linter
iulianpascalau Apr 5, 2022
8a83537
Merge branch 'master' into fix-delegation-sc-logs
miiu96 Apr 5, 2022
c14fbb4
small fix
miiu96 Apr 5, 2022
c13fbbc
Merge remote-tracking branch 'origin/fix-delegation-sc-logs' into fix…
miiu96 Apr 5, 2022
2cda7b0
add in topics contract address
miiu96 Apr 5, 2022
43d4d59
change indexer
miiu96 Apr 5, 2022
9fa6d93
Merge branch 'master' into master-compressed-flags-2022.04.05
iulianpascalau Apr 5, 2022
abaaf0f
proper release
miiu96 Apr 5, 2022
230ab16
Merge pull request #3959 from ElrondNetwork/fix-delegation-sc-logs
iulianpascalau Apr 6, 2022
f224104
Merge branch 'master' into merge-master-dev-2022.04.06
iulianpascalau Apr 6, 2022
b6f187a
Merge branch 'master' into master-compressed-flags-2022.04.05
iulianpascalau Apr 6, 2022
4d1f7cb
Merge pull request #3963 from ElrondNetwork/master-compressed-flags-2…
iulianpascalau Apr 6, 2022
5ce3de3
Merge branch 'master' into merge-master-dev-2022.04.06
iulianpascalau Apr 6, 2022
5724004
go mod tidy
miiu96 Apr 6, 2022
6b7edac
go sum
miiu96 Apr 6, 2022
81bd034
fix go sum
miiu96 Apr 6, 2022
807d01f
Merge pull request #3967 from ElrondNetwork/merge-master-dev-2022.04.06
gabi-vuls Apr 6, 2022
b7668c2
Merge pull request #3970 from ElrondNetwork/master-with-indexer-v1.1.40
miiu96 Apr 7, 2022
63a1884
Merge branch 'master' into merge-master-in-dev-07.04
miiu96 Apr 7, 2022
a0a0e36
new vm
sasurobert Apr 8, 2022
8a667b8
new vm
sasurobert Apr 8, 2022
387ff9c
proper release
sasurobert Apr 8, 2022
a8ce925
Merge pull request #3976 from ElrondNetwork/merge-master-in-dev-07.04
iulianpascalau Apr 8, 2022
913ff14
Merge branch 'development' into backwd-vm
popenta Apr 8, 2022
ad0fa0e
Merge pull request #3979 from ElrondNetwork/backwd-vm
iulianpascalau Apr 11, 2022
5ed2d0f
remove old trie storage
BeniaminDrasovean Apr 15, 2022
60c8061
notifier-go update: new version v1.1.0
ssd04 Apr 18, 2022
70d277d
Merge pull request #3994 from ElrondNetwork/notifier-go-update
ssd04 Apr 19, 2022
aae39bd
Merge branch 'development' into remove-old-trie-storage
BeniaminDrasovean Apr 19, 2022
fb3bf6d
Merge pull request #3991 from ElrondNetwork/remove-old-trie-storage
BeniaminDrasovean Apr 19, 2022
afe6273
Merge branch 'development' into merge-dev-into-liquid-staking-19-04-22
mariusmihaic Apr 19, 2022
e37991f
FIX: Merge conflict
mariusmihaic Apr 19, 2022
8d2f1d5
FIX: Build error
mariusmihaic Apr 19, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/golangci-lint.yml
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ jobs:
uses: golangci/golangci-lint-action@v2
with:
# Required: the version of golangci-lint is required and must be specified without patch version: we always use the latest patch version.
version: v1.29
version: v1.45.2

# Optional: working directory, useful for monorepos
# working-directory: somedir
Expand Down
5 changes: 3 additions & 2 deletions api/gin/webServer.go
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ func (ws *webServer) UpdateFacade(facade shared.FacadeHandler) error {
return nil
}

// CreateHttpServer will create a new instance of http.Server and populate it with all the routes
// StartHttpServer will create a new instance of http.Server and populate it with all the routes
func (ws *webServer) StartHttpServer() error {
ws.Lock()
defer ws.Unlock()
Expand All @@ -98,8 +98,9 @@ func (ws *webServer) StartHttpServer() error {
return err
}

for _, proc := range processors {
for idx, proc := range processors {
if check.IfNil(proc) {
log.Error("got nil middleware processor, skipping it...", "index", idx)
continue
}

Expand Down
70 changes: 65 additions & 5 deletions api/groups/networkGroup.go
Original file line number Diff line number Diff line change
Expand Up @@ -141,7 +141,19 @@ func NewNetworkGroup(facade networkFacadeHandler) (*networkGroup, error) {

// getNetworkConfig returns metrics related to the network configuration (shard independent)
func (ng *networkGroup) getNetworkConfig(c *gin.Context) {
configMetrics := ng.getFacade().StatusMetrics().ConfigMetrics()
configMetrics, err := ng.getFacade().StatusMetrics().ConfigMetrics()
if err != nil {
c.JSON(
http.StatusInternalServerError,
shared.GenericAPIResponse{
Data: nil,
Error: err.Error(),
Code: shared.ReturnCodeInternalError,
},
)
return
}

c.JSON(
http.StatusOK,
shared.GenericAPIResponse{
Expand All @@ -154,7 +166,19 @@ func (ng *networkGroup) getNetworkConfig(c *gin.Context) {

// getEnableEpochs returns metrics related to the activation epochs of the network
func (ng *networkGroup) getEnableEpochs(c *gin.Context) {
enableEpochsMetrics := ng.getFacade().StatusMetrics().EnableEpochsMetrics()
enableEpochsMetrics, err := ng.getFacade().StatusMetrics().EnableEpochsMetrics()
if err != nil {
c.JSON(
http.StatusInternalServerError,
shared.GenericAPIResponse{
Data: nil,
Error: err.Error(),
Code: shared.ReturnCodeInternalError,
},
)
return
}

c.JSON(
http.StatusOK,
shared.GenericAPIResponse{
Expand All @@ -167,7 +191,19 @@ func (ng *networkGroup) getEnableEpochs(c *gin.Context) {

// getNetworkStatus returns metrics related to the network status (shard specific)
func (ng *networkGroup) getNetworkStatus(c *gin.Context) {
networkMetrics := ng.getFacade().StatusMetrics().NetworkMetrics()
networkMetrics, err := ng.getFacade().StatusMetrics().NetworkMetrics()
if err != nil {
c.JSON(
http.StatusInternalServerError,
shared.GenericAPIResponse{
Data: nil,
Error: err.Error(),
Code: shared.ReturnCodeInternalError,
},
)
return
}

c.JSON(
http.StatusOK,
shared.GenericAPIResponse{
Expand All @@ -193,7 +229,19 @@ func (ng *networkGroup) economicsMetrics(c *gin.Context) {
return
}

metrics := ng.getFacade().StatusMetrics().EconomicsMetrics()
metrics, err := ng.getFacade().StatusMetrics().EconomicsMetrics()
if err != nil {
c.JSON(
http.StatusInternalServerError,
shared.GenericAPIResponse{
Data: nil,
Error: err.Error(),
Code: shared.ReturnCodeInternalError,
},
)
return
}

metrics[common.MetricTotalBaseStakedValue] = stakeValues.BaseStaked.String()
metrics[common.MetricTopUpValue] = stakeValues.TopUp.String()

Expand Down Expand Up @@ -317,7 +365,19 @@ func (ng *networkGroup) getESDTTokenSupply(c *gin.Context) {

// getRatingsConfig returns metrics related to ratings configuration
func (ng *networkGroup) getRatingsConfig(c *gin.Context) {
ratingsConfig := ng.getFacade().StatusMetrics().RatingsMetrics()
ratingsConfig, err := ng.getFacade().StatusMetrics().RatingsMetrics()
if err != nil {
c.JSON(
http.StatusInternalServerError,
shared.GenericAPIResponse{
Data: nil,
Error: err.Error(),
Code: shared.ReturnCodeInternalError,
},
)
return
}

c.JSON(
http.StatusOK,
shared.GenericAPIResponse{
Expand Down
196 changes: 196 additions & 0 deletions api/groups/networkGroup_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,12 @@ import (
apiErrors "github.com/ElrondNetwork/elrond-go/api/errors"
"github.com/ElrondNetwork/elrond-go/api/groups"
"github.com/ElrondNetwork/elrond-go/api/mock"
"github.com/ElrondNetwork/elrond-go/api/shared"
"github.com/ElrondNetwork/elrond-go/common"
"github.com/ElrondNetwork/elrond-go/config"
"github.com/ElrondNetwork/elrond-go/node/external"
"github.com/ElrondNetwork/elrond-go/statusHandler"
"github.com/ElrondNetwork/elrond-go/testscommon"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
Expand Down Expand Up @@ -60,6 +62,14 @@ type genesisNodesConfigData struct {
Nodes groups.GenesisNodesConfig `json:"nodes"`
}

type ratingsConfigResponse struct {
Data struct {
Config map[string]interface{} `json:"config"`
} `json:"data"`
Error string `json:"error"`
Code string `json:"code"`
}

func TestNetworkConfigMetrics_ShouldWork(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -90,6 +100,66 @@ func TestNetworkConfigMetrics_ShouldWork(t *testing.T) {
assert.True(t, keyAndValueFoundInResponse)
}

func TestGetNetworkConfig_ShouldReturnErrorIfFacadeReturnsError(t *testing.T) {
expectedErr := errors.New("i am an error")

facade := mock.FacadeStub{
StatusMetricsHandler: func() external.StatusMetricsHandler {
return &testscommon.StatusMetricsStub{
ConfigMetricsCalled: func() (map[string]interface{}, error) {
return nil, expectedErr
},
}
},
}

networkGroup, err := groups.NewNetworkGroup(&facade)
require.NoError(t, err)

ws := startWebServer(networkGroup, "network", getNetworkRoutesConfig())

req, _ := http.NewRequest("GET", "/network/config", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusInternalServerError, resp.Code)

response := &shared.GenericAPIResponse{}
loadResponse(resp.Body, response)

assert.Equal(t, expectedErr.Error(), response.Error)
}

func TestGetNetworkStatus_ShouldReturnErrorIfFacadeReturnsError(t *testing.T) {
expectedErr := errors.New("i am an error")

facade := mock.FacadeStub{
StatusMetricsHandler: func() external.StatusMetricsHandler {
return &testscommon.StatusMetricsStub{
NetworkMetricsCalled: func() (map[string]interface{}, error) {
return nil, expectedErr
},
}
},
}

networkGroup, err := groups.NewNetworkGroup(&facade)
require.NoError(t, err)

ws := startWebServer(networkGroup, "network", getNetworkRoutesConfig())

req, _ := http.NewRequest("GET", "/network/status", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusInternalServerError, resp.Code)

response := &shared.GenericAPIResponse{}
loadResponse(resp.Body, response)

assert.Equal(t, expectedErr.Error(), response.Error)
}

func TestNetworkStatusMetrics_ShouldWork(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -155,6 +225,39 @@ func TestEconomicsMetrics_ShouldWork(t *testing.T) {
assert.True(t, keyAndValueFoundInResponse)
}

func TestGetEconomicValues_ShouldReturnErrorIfFacadeReturnsError(t *testing.T) {
expectedErr := errors.New("i am an error")

facade := mock.FacadeStub{
StatusMetricsHandler: func() external.StatusMetricsHandler {
return &testscommon.StatusMetricsStub{
EconomicsMetricsCalled: func() (map[string]interface{}, error) {
return nil, expectedErr
},
}
},
GetTotalStakedValueHandler: func() (*api.StakeValues, error) {
return nil, nil
},
}

networkGroup, err := groups.NewNetworkGroup(&facade)
require.NoError(t, err)

ws := startWebServer(networkGroup, "network", getNetworkRoutesConfig())

req, _ := http.NewRequest("GET", "/network/economics", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusInternalServerError, resp.Code)

response := &shared.GenericAPIResponse{}
loadResponse(resp.Body, response)

assert.Equal(t, expectedErr.Error(), response.Error)
}

func TestEconomicsMetrics_CannotGetStakeValues(t *testing.T) {
statusMetricsProvider := statusHandler.NewStatusMetrics()
key := common.MetricTotalSupply
Expand Down Expand Up @@ -387,6 +490,36 @@ func TestDelegatedInfo_CannotGetDelegatedList(t *testing.T) {
assert.True(t, strings.Contains(respStr, expectedError.Error()))
}

func TestGetEnableEpochs_ShouldReturnErrorIfFacadeReturnsError(t *testing.T) {
expectedErr := errors.New("i am an error")

facade := mock.FacadeStub{
StatusMetricsHandler: func() external.StatusMetricsHandler {
return &testscommon.StatusMetricsStub{
EnableEpochsMetricsCalled: func() (map[string]interface{}, error) {
return nil, expectedErr
},
}
},
}

networkGroup, err := groups.NewNetworkGroup(&facade)
require.NoError(t, err)

ws := startWebServer(networkGroup, "network", getNetworkRoutesConfig())

req, _ := http.NewRequest("GET", "/network/enable-epochs", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusInternalServerError, resp.Code)

response := &shared.GenericAPIResponse{}
loadResponse(resp.Body, response)

assert.Equal(t, expectedErr.Error(), response.Error)
}

func TestGetEnableEpochs_ShouldWork(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -444,6 +577,68 @@ func TestGetESDTTotalSupply_InternalError(t *testing.T) {
require.True(t, keyAndValueInResponse)
}

func TestGetNetworkRatings_ShouldReturnErrorIfFacadeReturnsError(t *testing.T) {
expectedErr := errors.New("i am an error")

facade := mock.FacadeStub{
StatusMetricsHandler: func() external.StatusMetricsHandler {
return &testscommon.StatusMetricsStub{
RatingsMetricsCalled: func() (map[string]interface{}, error) {
return nil, expectedErr
},
}
},
}

networkGroup, err := groups.NewNetworkGroup(&facade)
require.NoError(t, err)

ws := startWebServer(networkGroup, "network", getNetworkRoutesConfig())

req, _ := http.NewRequest("GET", "/network/ratings", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusInternalServerError, resp.Code)

response := &shared.GenericAPIResponse{}
loadResponse(resp.Body, response)

assert.Equal(t, expectedErr.Error(), response.Error)
}

func TestGetNetworkRatings_ShouldWork(t *testing.T) {
expectedMap := map[string]interface{}{
"key0": "val0",
}

facade := mock.FacadeStub{
StatusMetricsHandler: func() external.StatusMetricsHandler {
return &testscommon.StatusMetricsStub{
RatingsMetricsCalled: func() (map[string]interface{}, error) {
return expectedMap, nil
},
}
},
}

networkGroup, err := groups.NewNetworkGroup(&facade)
require.NoError(t, err)

ws := startWebServer(networkGroup, "network", getNetworkRoutesConfig())

req, _ := http.NewRequest("GET", "/network/ratings", nil)
resp := httptest.NewRecorder()
ws.ServeHTTP(resp, req)

assert.Equal(t, http.StatusOK, resp.Code)

response := &ratingsConfigResponse{}
loadResponse(resp.Body, response)

assert.Equal(t, expectedMap, response.Data.Config)
}

func TestGetESDTTotalSupply(t *testing.T) {
t.Parallel()

Expand Down Expand Up @@ -567,6 +762,7 @@ func getNetworkRoutesConfig() config.ApiRoutesConfig {
{Name: "/delegated-info", Open: true},
{Name: "/esdt/supply/:token", Open: true},
{Name: "/genesis-nodes", Open: true},
{Name: "/ratings", Open: true},
},
},
},
Expand Down