Skip to content

Commit

Permalink
E2E Tests for Replacement RO Orders, allow all types of RO order repl…
Browse files Browse the repository at this point in the history
…acements (#949)

* take in account previous fill values in validation

* remove erroroneous validation, redo tests

* grammar and spelling
  • Loading branch information
jonfung-dydx authored Jan 12, 2024
1 parent 932307b commit b81fd5c
Show file tree
Hide file tree
Showing 5 changed files with 445 additions and 47 deletions.
15 changes: 8 additions & 7 deletions protocol/testutil/app/app.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,9 @@ package app
import (
"bytes"
"context"
"cosmossdk.io/log"
"cosmossdk.io/store/rootmulti"
storetypes "cosmossdk.io/store/types"
"encoding/json"
"errors"
"fmt"
cmtlog "github.com/cometbft/cometbft/libs/log"
dbm "github.com/cosmos/cosmos-db"
"math"
"math/rand"
"os"
Expand All @@ -20,6 +15,12 @@ import (
"testing"
"time"

"cosmossdk.io/log"
"cosmossdk.io/store/rootmulti"
storetypes "cosmossdk.io/store/types"
cmtlog "github.com/cometbft/cometbft/libs/log"
dbm "github.com/cosmos/cosmos-db"

tmcfg "github.com/cometbft/cometbft/config"
tmcli "github.com/cometbft/cometbft/libs/cli"
"github.com/cosmos/cosmos-sdk/client/flags"
Expand Down Expand Up @@ -1079,7 +1080,7 @@ func (tApp *TestApp) CheckTx(req abcitypes.RequestCheckTx) abcitypes.ResponseChe
require.Truef(
tApp.builder.t,
res.Code == parallelRes.Code && ((err == nil && parallelErr == nil) || (err != nil && parallelErr != nil)),
"Non-determinism detected during CheckTx, expected %+v with err %+v, got %+v with err %+v.",
"Parallel app non-determinism detected during CheckTx, expected %+v with err %+v, got %+v with err %+v.",
res,
err,
parallelRes,
Expand All @@ -1093,7 +1094,7 @@ func (tApp *TestApp) CheckTx(req abcitypes.RequestCheckTx) abcitypes.ResponseChe
require.Truef(
tApp.builder.t,
res.Code == crashingRes.Code && ((err == nil && crashingErr == nil) || (err != nil && crashingErr != nil)),
"Non-determinism detected during CheckTx, expected %+v with err %+v, got %+v with err %+v.",
"Crashing app non-determinism detected during CheckTx, expected %+v with err %+v, got %+v with err %+v.",
res,
err,
crashingRes,
Expand Down
92 changes: 92 additions & 0 deletions protocol/testutil/constants/orders.go
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,27 @@ var (
Subticks: 50,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 30},
}
Order_Alice_Num1_Id0_Clob0_Sell100_Price500000_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100,
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 20},
}
Order_Alice_Num1_Id0_Clob0_Sell100_Price51000_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100,
Subticks: 51_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 20},
}
Order_Alice_Num1_Id0_Clob0_Sell100_Price100000_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100,
Subticks: 1_000_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 20},
}
Order_Bob_Num0_Id0_Clob1_Sell10_Price15_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Bob_Num0, ClientId: 0, ClobPairId: 1},
Side: clobtypes.Order_SIDE_SELL,
Expand Down Expand Up @@ -610,6 +631,27 @@ var (
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num0_Id0_Clob0_Buy70_Price500000_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 70,
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num0_Id0_Clob0_Buy110_Price500000_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 110,
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num0_Id0_Clob0_Buy110_Price50000_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 110,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num0_Id0_Clob0_Buy10_Price500000_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Expand All @@ -624,6 +666,20 @@ var (
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 20},
}
Order_Carl_Num0_Id0_Clob0_Buy10_Price50000_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 10,
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 20},
}
Order_Carl_Num0_Id0_Clob0_Buy110_Price50000_GTB20 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 110,
Subticks: 500_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 20},
}
Order_Carl_Num0_Id2_Clob0_Sell5_Price10_GTB15 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num0, ClientId: 2, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Expand Down Expand Up @@ -1209,6 +1265,24 @@ var (
TimeInForce: clobtypes.Order_TIME_IN_FORCE_FILL_OR_KILL,
ReduceOnly: true,
}
Order_Alice_Num1_Id0_Clob0_Buy110_Price50000_GTB21_FOK_RO = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 110,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 21},
TimeInForce: clobtypes.Order_TIME_IN_FORCE_FILL_OR_KILL,
ReduceOnly: true,
}
Order_Alice_Num1_Id0_Clob0_Sell110_Price50000_GTB21_FOK_RO = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 110,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 21},
TimeInForce: clobtypes.Order_TIME_IN_FORCE_FILL_OR_KILL,
ReduceOnly: true,
}
Order_Alice_Num1_Id1_Clob0_Sell15_Price500000_GTB20_FOK_RO = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 1, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Expand Down Expand Up @@ -1264,6 +1338,24 @@ var (
TimeInForce: clobtypes.Order_TIME_IN_FORCE_IOC,
ReduceOnly: true,
}
Order_Alice_Num1_Id0_Clob0_Sell110_Price50000_GTB21_IOC_RO = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 110,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 21},
TimeInForce: clobtypes.Order_TIME_IN_FORCE_IOC,
ReduceOnly: true,
}
Order_Alice_Num1_Id0_Clob0_Buy110_Price50000_GTB21_IOC_RO = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Alice_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 110,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 21},
TimeInForce: clobtypes.Order_TIME_IN_FORCE_IOC,
ReduceOnly: true,
}

// Reduce-only orders.
Order_Alice_Num1_Id1_Clob0_Sell10_Price15_GTB20_RO = clobtypes.Order{
Expand Down
Loading

0 comments on commit b81fd5c

Please sign in to comment.