Skip to content

Commit

Permalink
revert Cached API Response
Browse files Browse the repository at this point in the history
  • Loading branch information
Yashk767 committed May 17, 2023
1 parent 6b962cf commit cc800a8
Show file tree
Hide file tree
Showing 7 changed files with 60 additions and 176 deletions.
97 changes: 0 additions & 97 deletions cache/cache.go

This file was deleted.

53 changes: 21 additions & 32 deletions utils/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,6 @@ package utils
import (
"errors"
"net/http"
"razor/cache"
"razor/core"
"time"

"io/ioutil"
Expand All @@ -15,41 +13,32 @@ import (
"github.com/gocolly/colly"
)

func (*UtilsStruct) GetDataFromAPI(url string, localCache *cache.LocalCache) ([]byte, error) {
func (*UtilsStruct) GetDataFromAPI(url string) ([]byte, error) {
client := http.Client{
Timeout: time.Duration(HTTPTimeout) * time.Second,
}
cachedData, err := localCache.Read(url)
var body []byte
err := retry.Do(
func() error {
response, err := client.Get(url)
if err != nil {
return err
}
defer response.Body.Close()
if response.StatusCode != 200 {
log.Errorf("API: %s responded with status code %d", url, response.StatusCode)
return errors.New("unable to reach API")
}
body, err = IOInterface.ReadAll(response.Body)
if err != nil {
return err
}
return nil
}, retry.Attempts(2), retry.Delay(time.Second*2))
if err != nil {
var body []byte
err := retry.Do(
func() error {
response, err := client.Get(url)
if err != nil {
return err
}
defer response.Body.Close()
if response.StatusCode != 200 {
log.Errorf("API: %s responded with status code %d", url, response.StatusCode)
return errors.New("unable to reach API")
}
body, err = IOInterface.ReadAll(response.Body)
if err != nil {
return err
}
return nil
}, retry.Attempts(2), retry.Delay(time.Second*2))
if err != nil {
return nil, err
}
dataToCache := cache.Data{
Result: body,
}
localCache.Update(dataToCache, url, time.Now().Add(time.Second*time.Duration(core.StateLength)).Unix())
return body, nil
return nil, err
}
log.Debugf("Getting Data for URL %s from local cache...", url)
return cachedData.Result, nil
return body, nil
}

func (*UtilsStruct) GetDataFromJSON(jsonObject map[string]interface{}, selector string) (interface{}, error) {
Expand Down
6 changes: 2 additions & 4 deletions utils/api_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,9 @@ package utils

import (
"errors"
"razor/cache"
"razor/utils/mocks"
"reflect"
"testing"
"time"

"github.com/stretchr/testify/mock"
)
Expand Down Expand Up @@ -100,8 +98,8 @@ func TestGetDataFromAPI(t *testing.T) {
utils := StartRazor(optionsPackageStruct)

ioMock.On("ReadAll", mock.Anything).Return(tt.args.body, tt.args.bodyErr)
localCache := cache.NewLocalCache(time.Second * 10)
got, err := utils.GetDataFromAPI(tt.args.url, localCache)

got, err := utils.GetDataFromAPI(tt.args.url)
if (err != nil) != tt.wantErr {
t.Errorf("GetDataFromAPI() error = %v, wantErr %v", err, tt.wantErr)
return
Expand Down
14 changes: 6 additions & 8 deletions utils/asset.go
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,6 @@ import (
"errors"
"math/big"
"os"
"razor/cache"
"razor/core"
"razor/core/types"
"razor/path"
Expand Down Expand Up @@ -210,16 +209,15 @@ func (*UtilsStruct) Aggregate(client *ethclient.Client, previousEpoch uint32, co
if len(jobs) == 0 {
return nil, errors.New("no jobs present in the collection")
}
localCache := cache.NewLocalCache(time.Second * time.Duration(core.StateLength))
dataToCommit, weight, err := UtilsInterface.GetDataToCommitFromJobs(jobs, localCache)

dataToCommit, weight, err := UtilsInterface.GetDataToCommitFromJobs(jobs)
if err != nil || len(dataToCommit) == 0 {
prevCommitmentData, err := UtilsInterface.FetchPreviousValue(client, previousEpoch, collection.Id)
if err != nil {
return nil, err
}
return prevCommitmentData, nil
}
localCache.StopCleanup()
return performAggregation(dataToCommit, weight, collection.AggregationMethod)
}

Expand Down Expand Up @@ -254,13 +252,13 @@ func (*UtilsStruct) GetActiveCollection(client *ethclient.Client, collectionId u
return collection, nil
}

func (*UtilsStruct) GetDataToCommitFromJobs(jobs []bindings.StructsJob, localCache *cache.LocalCache) ([]*big.Int, []uint8, error) {
func (*UtilsStruct) GetDataToCommitFromJobs(jobs []bindings.StructsJob) ([]*big.Int, []uint8, error) {
var (
data []*big.Int
weight []uint8
)
for _, job := range jobs {
dataToAppend, err := UtilsInterface.GetDataToCommitFromJob(job, localCache)
dataToAppend, err := UtilsInterface.GetDataToCommitFromJob(job)
if err != nil {
continue
}
Expand All @@ -271,7 +269,7 @@ func (*UtilsStruct) GetDataToCommitFromJobs(jobs []bindings.StructsJob, localCac
return data, weight, nil
}

func (*UtilsStruct) GetDataToCommitFromJob(job bindings.StructsJob, localCache *cache.LocalCache) (*big.Int, error) {
func (*UtilsStruct) GetDataToCommitFromJob(job bindings.StructsJob) (*big.Int, error) {
var parsedJSON map[string]interface{}
var (
response []byte
Expand All @@ -282,7 +280,7 @@ func (*UtilsStruct) GetDataToCommitFromJob(job bindings.StructsJob, localCache *
var parsedData interface{}
if job.SelectorType == 0 {
start := time.Now()
response, apiErr = UtilsInterface.GetDataFromAPI(job.Url, localCache)
response, apiErr = UtilsInterface.GetDataFromAPI(job.Url)
if apiErr != nil {
log.Errorf("Error in fetching data from API %s: %v", job.Url, apiErr)
return nil, apiErr
Expand Down
11 changes: 5 additions & 6 deletions utils/asset_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ import (
"io/fs"
"math/big"
"os"
"razor/cache"
"razor/core/types"
"razor/path"
pathMocks "razor/path/mocks"
Expand Down Expand Up @@ -182,7 +181,7 @@ func TestAggregate(t *testing.T) {
utils := StartRazor(optionsPackageStruct)

utilsMock.On("GetActiveJob", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("uint16")).Return(tt.args.activeJob, tt.args.activeJobErr)
utilsMock.On("GetDataToCommitFromJobs", mock.Anything, mock.Anything).Return(tt.args.dataToCommit, tt.args.weight, tt.args.dataToCommitErr)
utilsMock.On("GetDataToCommitFromJobs", mock.Anything).Return(tt.args.dataToCommit, tt.args.weight, tt.args.dataToCommitErr)
utilsMock.On("FetchPreviousValue", mock.AnythingOfType("*ethclient.Client"), mock.AnythingOfType("uint32"), mock.AnythingOfType("uint16")).Return(tt.args.prevCommitmentData, tt.args.prevCommitmentDataErr)
pathUtilsMock.On("GetJobFilePath").Return(tt.args.assetFilePath, tt.args.assetFilePathErr)
osUtilsMock.On("Stat", mock.Anything).Return(fileInfo, tt.args.statErr)
Expand Down Expand Up @@ -631,9 +630,9 @@ func TestGetDataToCommitFromJobs(t *testing.T) {

pathMock.On("GetJobFilePath").Return(tt.args.jobPath, tt.args.jobPathErr)
utilsMock.On("ReadJSONData", mock.AnythingOfType("string")).Return(tt.args.overrideJobData, tt.args.overrideJobDataErr)
utilsMock.On("GetDataToCommitFromJob", mock.Anything, mock.Anything).Return(tt.args.dataToAppend, tt.args.dataToAppendErr)
utilsMock.On("GetDataToCommitFromJob", mock.Anything).Return(tt.args.dataToAppend, tt.args.dataToAppendErr)

got, _, err := utils.GetDataToCommitFromJobs(jobsArray, &cache.LocalCache{})
got, _, err := utils.GetDataToCommitFromJobs(jobsArray)
if (err != nil) != tt.wantErr {
t.Errorf("GetDataToCommitFromJobs() error = %v, wantErr %v", err, tt.wantErr)
return
Expand Down Expand Up @@ -786,12 +785,12 @@ func TestGetDataToCommitFromJob(t *testing.T) {
}
utils := StartRazor(optionsPackageStruct)

utilsMock.On("GetDataFromAPI", mock.AnythingOfType("string"), mock.Anything).Return(tt.args.response, tt.args.responseErr)
utilsMock.On("GetDataFromAPI", mock.AnythingOfType("string")).Return(tt.args.response, tt.args.responseErr)
utilsMock.On("GetDataFromJSON", mock.Anything, mock.AnythingOfType("string")).Return(tt.args.parsedData, tt.args.parsedDataErr)
utilsMock.On("GetDataFromXHTML", mock.AnythingOfType("string"), mock.AnythingOfType("string")).Return(tt.args.dataPoint, tt.args.dataPointErr)
utilsMock.On("ConvertToNumber", mock.Anything).Return(tt.args.datum, tt.args.datumErr)

got, err := utils.GetDataToCommitFromJob(tt.args.job, &cache.LocalCache{})
got, err := utils.GetDataToCommitFromJob(tt.args.job)
if (err != nil) != tt.wantErr {
t.Errorf("GetDataToCommitFromJob() error = %v, wantErr %v", err, tt.wantErr)
return
Expand Down
7 changes: 3 additions & 4 deletions utils/interface.go
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@ import (
"io/fs"
"math/big"
"os"
"razor/cache"
"razor/core/types"
"razor/pkg/bindings"
"time"
Expand Down Expand Up @@ -113,8 +112,8 @@ type Utils interface {
GetCollection(client *ethclient.Client, collectionId uint16) (bindings.StructsCollection, error)
GetActiveCollection(client *ethclient.Client, collectionId uint16) (bindings.StructsCollection, error)
Aggregate(client *ethclient.Client, previousEpoch uint32, collection bindings.StructsCollection) (*big.Int, error)
GetDataToCommitFromJobs(jobs []bindings.StructsJob, localCache *cache.LocalCache) ([]*big.Int, []uint8, error)
GetDataToCommitFromJob(job bindings.StructsJob, localCache *cache.LocalCache) (*big.Int, error)
GetDataToCommitFromJobs(jobs []bindings.StructsJob) ([]*big.Int, []uint8, error)
GetDataToCommitFromJob(job bindings.StructsJob) (*big.Int, error)
GetAssignedCollections(client *ethclient.Client, numActiveCollections uint16, seed []byte) (map[int]bool, []*big.Int, error)
GetLeafIdOfACollection(client *ethclient.Client, collectionId uint16) (uint16, error)
GetCollectionIdFromIndex(client *ethclient.Client, medianIndex uint16) (uint16, error)
Expand All @@ -124,7 +123,7 @@ type Utils interface {
GetJobs(client *ethclient.Client) ([]bindings.StructsJob, error)
GetAllCollections(client *ethclient.Client) ([]bindings.StructsCollection, error)
GetActiveCollectionIds(client *ethclient.Client) ([]uint16, error)
GetDataFromAPI(url string, localCache *cache.LocalCache) ([]byte, error)
GetDataFromAPI(url string) ([]byte, error)
GetDataFromJSON(jsonObject map[string]interface{}, selector string) (interface{}, error)
HandleOfficialJobsFromJSONFile(client *ethclient.Client, collection bindings.StructsCollection, dataString string) ([]bindings.StructsJob, []uint16)
GetDataFromXHTML(url string, selector string) (string, error)
Expand Down
Loading

0 comments on commit cc800a8

Please sign in to comment.