Skip to content
This repository has been archived by the owner on Nov 16, 2022. It is now read-only.

chain: Add in-before-resolve field for report data #1873

Merged
merged 3 commits into from
Jun 5, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@

### Chain

- (feat) [\#1873](https://github.com/bandprotocol/bandchain/pull/1873) Add `in-before-resolve` field in `Report` data structure.
- (feat) [\#1875](https://github.com/bandprotocol/bandchain/pull/1875) Add CLI and REST query interface for request.
- (chore) [\#1869](https://github.com/bandprotocol/bandchain/pull/1869) Update new schema and source code url for all oracle scripts
- (chore) [\#1864](https://github.com/bandprotocol/bandchain/pull/1864) Remove unused query types.
Expand Down
2 changes: 1 addition & 1 deletion chain/x/oracle/handler.go
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ func handleMsgReportData(ctx sdk.Context, k Keeper, m MsgReportData) (*sdk.Resul
if !k.IsReporter(ctx, m.Validator, m.Reporter) {
return nil, types.ErrReporterNotAuthorized
}
err := k.AddReport(ctx, m.RequestID, types.NewReport(m.Validator, m.RawReports))
err := k.AddReport(ctx, m.RequestID, types.NewReport(m.Validator, !k.HasResult(ctx, m.RequestID), m.RawReports))
if err != nil {
return nil, err
}
Expand Down
52 changes: 26 additions & 26 deletions chain/x/oracle/keeper/report_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ func TestHasReport(t *testing.T) {
// We should not have a report to request ID 42 from Alice without setting it.
require.False(t, k.HasReport(ctx, 42, Alice.ValAddress))
// After we set it, we should be able to find it.
k.SetReport(ctx, 42, types.NewReport(Alice.ValAddress, nil))
k.SetReport(ctx, 42, types.NewReport(Alice.ValAddress, true, nil))
require.True(t, k.HasReport(ctx, 42, Alice.ValAddress))
}

Expand All @@ -26,14 +26,14 @@ func TestAddReportSuccess(t *testing.T) {
k.SetRequest(ctx, 1, request)

err := k.AddReport(ctx, 1, types.NewReport(
Validator1.ValAddress, []types.RawReport{
Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
types.NewRawReport(10, 0, []byte("data2/1")),
},
))

require.NoError(t, err)
require.Equal(t, []types.Report{types.NewReport(Validator1.ValAddress, []types.RawReport{
require.Equal(t, []types.Report{types.NewReport(Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
types.NewRawReport(10, 0, []byte("data2/1")),
})}, k.GetReports(ctx, 1))
Expand All @@ -46,7 +46,7 @@ func TestReportOnInvalidRequest(t *testing.T) {
k.SetRequest(ctx, 1, request)

err := k.AddReport(ctx, 2, types.NewReport(
Validator1.ValAddress, []types.RawReport{
Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
types.NewRawReport(10, 0, []byte("data2/1")),
},
Expand All @@ -62,7 +62,7 @@ func TestReportByNotRequestedValidator(t *testing.T) {
k.SetRequest(ctx, 1, request)

err := k.AddReport(ctx, 1, types.NewReport(
Alice.ValAddress, []types.RawReport{
Alice.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
types.NewRawReport(10, 0, []byte("data2/1")),
},
Expand All @@ -78,15 +78,15 @@ func TestDuplicateReport(t *testing.T) {
k.SetRequest(ctx, 1, request)

err := k.AddReport(ctx, 1, types.NewReport(
Validator1.ValAddress, []types.RawReport{
Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
types.NewRawReport(10, 0, []byte("data2/1")),
},
))

require.NoError(t, err)
err = k.AddReport(ctx, 1, types.NewReport(
Validator1.ValAddress, []types.RawReport{
Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 0, []byte("new data 1")),
types.NewRawReport(10, 0, []byte("new data 2")),
},
Expand All @@ -101,7 +101,7 @@ func TestReportInvalidDataSourceCount(t *testing.T) {
k.SetRequest(ctx, 1, request)

err := k.AddReport(ctx, 1, types.NewReport(
Validator1.ValAddress, []types.RawReport{
Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
},
))
Expand All @@ -115,7 +115,7 @@ func TestReportInvalidExternalIDs(t *testing.T) {
k.SetRequest(ctx, 1, request)

err := k.AddReport(ctx, 1, types.NewReport(
Validator1.ValAddress, []types.RawReport{
Validator1.ValAddress, true, []types.RawReport{
types.NewRawReport(2, 1, []byte("data1/1")),
types.NewRawReport(11, 1, []byte("data1/1")),
},
Expand All @@ -126,11 +126,11 @@ func TestReportInvalidExternalIDs(t *testing.T) {
func TestGetReportCount(t *testing.T) {
_, ctx, k := createTestInput()

k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator1.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator2.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Alice.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Bob.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Carol.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator1.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator2.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Alice.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Bob.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Carol.ValAddress, true, []types.RawReport{}))

require.Equal(t, uint64(2), k.GetReportCount(ctx, types.RequestID(1)))
require.Equal(t, uint64(3), k.GetReportCount(ctx, types.RequestID(2)))
Expand All @@ -139,11 +139,11 @@ func TestGetReportCount(t *testing.T) {
func TestDeleteReports(t *testing.T) {
_, ctx, k := createTestInput()

k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator1.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator2.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Alice.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Bob.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Carol.ValAddress, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator1.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(1), types.NewReport(Validator2.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Alice.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Bob.ValAddress, true, []types.RawReport{}))
k.SetReport(ctx, types.RequestID(2), types.NewReport(Carol.ValAddress, true, []types.RawReport{}))

require.True(t, k.HasReport(ctx, types.RequestID(1), Validator1.ValAddress))
require.True(t, k.HasReport(ctx, types.RequestID(2), Alice.ValAddress))
Expand All @@ -165,11 +165,11 @@ func TestUpdateReportInfos(t *testing.T) {

// 2 Validators report
k.SetReport(ctx, types.RequestID(1), types.NewReport(
Validator1.ValAddress, []types.RawReport{},
Validator1.ValAddress, true, []types.RawReport{},
))

k.SetReport(ctx, types.RequestID(1), types.NewReport(
Validator2.ValAddress, []types.RawReport{},
Validator2.ValAddress, true, []types.RawReport{},
))

// Update report info
Expand All @@ -190,7 +190,7 @@ func TestUpdateReportInfos(t *testing.T) {

// Only Validator1 report
k.SetReport(ctx, types.RequestID(2), types.NewReport(
Validator1.ValAddress, []types.RawReport{},
Validator1.ValAddress, true, []types.RawReport{},
))

// Update report info
Expand All @@ -210,7 +210,7 @@ func TestUpdateReportInfos(t *testing.T) {
k.SetRequest(ctx, types.RequestID(3), request)
// Only Validator2 report
k.SetReport(ctx, types.RequestID(3), types.NewReport(
Validator2.ValAddress, []types.RawReport{},
Validator2.ValAddress, true, []types.RawReport{},
))

// Update report info
Expand Down Expand Up @@ -257,19 +257,19 @@ func TestGetJailedUpdateReportInfos(t *testing.T) {

// 2 Validators report
k.SetReport(ctx, types.RequestID(1), types.NewReport(
Validator1.ValAddress, []types.RawReport{},
Validator1.ValAddress, true, []types.RawReport{},
))

k.SetReport(ctx, types.RequestID(1), types.NewReport(
Validator2.ValAddress, []types.RawReport{},
Validator2.ValAddress, true, []types.RawReport{},
))
k.UpdateReportInfos(ctx, types.RequestID(1))

// Validator2 reported downed
for i := 2; i <= 5; i++ {
k.SetRequest(ctx, types.RequestID(i), request)
k.SetReport(ctx, types.RequestID(i), types.NewReport(
Validator1.ValAddress, []types.RawReport{},
Validator1.ValAddress, true, []types.RawReport{},
))
k.UpdateReportInfos(ctx, types.RequestID(i))
}
Expand Down
6 changes: 4 additions & 2 deletions chain/x/oracle/types/constructors.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.