mirror of
				https://github.com/0glabs/0g-chain.git
				synced 2025-11-04 03:07:28 +00:00 
			
		
		
		
	* Use cosmossdk.io/errors for deprecated error methods * Update error registration with cosmossdk.io/errors * Use cosmossdk.io/math for deprecated sdk.Int alias * Fix modified proto file * Update sdk.Int usage in swap hooks * Update e2e test deprecated method usage
		
			
				
	
	
		
			217 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			217 lines
		
	
	
		
			6.7 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package v0_16
 | 
						|
 | 
						|
import (
 | 
						|
	"io/ioutil"
 | 
						|
	"path/filepath"
 | 
						|
	"testing"
 | 
						|
	"time"
 | 
						|
 | 
						|
	sdkmath "cosmossdk.io/math"
 | 
						|
	"github.com/cosmos/cosmos-sdk/codec"
 | 
						|
	sdk "github.com/cosmos/cosmos-sdk/types"
 | 
						|
	"github.com/stretchr/testify/suite"
 | 
						|
 | 
						|
	app "github.com/kava-labs/kava/app"
 | 
						|
	v015cdp "github.com/kava-labs/kava/x/cdp/legacy/v0_15"
 | 
						|
	v016cdp "github.com/kava-labs/kava/x/cdp/types"
 | 
						|
)
 | 
						|
 | 
						|
type migrateTestSuite struct {
 | 
						|
	suite.Suite
 | 
						|
 | 
						|
	addresses   []sdk.AccAddress
 | 
						|
	v15genstate v015cdp.GenesisState
 | 
						|
	cdc         codec.Codec
 | 
						|
	legacyCdc   *codec.LegacyAmino
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) SetupTest() {
 | 
						|
	app.SetSDKConfig()
 | 
						|
 | 
						|
	s.v15genstate = v015cdp.GenesisState{
 | 
						|
		Params:                    v015cdp.Params{},
 | 
						|
		CDPs:                      v015cdp.CDPs{},
 | 
						|
		Deposits:                  v015cdp.Deposits{},
 | 
						|
		StartingCdpID:             1,
 | 
						|
		DebtDenom:                 "usdx",
 | 
						|
		GovDenom:                  "ukava",
 | 
						|
		PreviousAccumulationTimes: v015cdp.GenesisAccumulationTimes{},
 | 
						|
		TotalPrincipals:           v015cdp.GenesisTotalPrincipals{},
 | 
						|
	}
 | 
						|
 | 
						|
	config := app.MakeEncodingConfig()
 | 
						|
	s.cdc = config.Marshaler
 | 
						|
 | 
						|
	legacyCodec := codec.NewLegacyAmino()
 | 
						|
	s.legacyCdc = legacyCodec
 | 
						|
 | 
						|
	_, accAddresses := app.GeneratePrivKeyAddressPairs(10)
 | 
						|
	s.addresses = accAddresses
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) TestMigrate_JSON() {
 | 
						|
	file := filepath.Join("testdata", "v15-cdp.json")
 | 
						|
	data, err := ioutil.ReadFile(file)
 | 
						|
	s.Require().NoError(err)
 | 
						|
	err = s.legacyCdc.UnmarshalJSON(data, &s.v15genstate)
 | 
						|
	s.Require().NoError(err)
 | 
						|
	genstate := Migrate(s.v15genstate)
 | 
						|
	actual := s.cdc.MustMarshalJSON(genstate)
 | 
						|
 | 
						|
	file = filepath.Join("testdata", "v16-cdp.json")
 | 
						|
	expected, err := ioutil.ReadFile(file)
 | 
						|
	s.Require().NoError(err)
 | 
						|
	s.Require().JSONEq(string(expected), string(actual))
 | 
						|
}
 | 
						|
 | 
						|
func (s *migrateTestSuite) TestMigrate_GenState() {
 | 
						|
	s.v15genstate = v015cdp.GenesisState{
 | 
						|
		StartingCdpID: 2,
 | 
						|
		DebtDenom:     "usdx",
 | 
						|
		GovDenom:      "ukava",
 | 
						|
		Params: v015cdp.Params{
 | 
						|
			CollateralParams: v015cdp.CollateralParams{
 | 
						|
				{
 | 
						|
					Denom:                            "xrp",
 | 
						|
					Type:                             "xrp-a",
 | 
						|
					LiquidationRatio:                 sdk.MustNewDecFromStr("2.0"),
 | 
						|
					DebtLimit:                        sdk.NewInt64Coin("usdx", 500000000000),
 | 
						|
					StabilityFee:                     sdk.MustNewDecFromStr("1.012"),
 | 
						|
					LiquidationPenalty:               sdk.MustNewDecFromStr("0.05"),
 | 
						|
					AuctionSize:                      sdkmath.NewInt(70),
 | 
						|
					SpotMarketID:                     "xrp:usd",
 | 
						|
					LiquidationMarketID:              "xrp:usd",
 | 
						|
					KeeperRewardPercentage:           sdk.MustNewDecFromStr("0.01"),
 | 
						|
					CheckCollateralizationIndexCount: sdkmath.NewInt(10),
 | 
						|
					ConversionFactor:                 sdkmath.NewInt(6),
 | 
						|
				},
 | 
						|
			},
 | 
						|
			DebtParam: v015cdp.DebtParam{
 | 
						|
				Denom:            "usdx",
 | 
						|
				ReferenceAsset:   "usd",
 | 
						|
				ConversionFactor: sdkmath.NewInt(6),
 | 
						|
				DebtFloor:        sdkmath.NewInt(100),
 | 
						|
			},
 | 
						|
			GlobalDebtLimit:         sdk.NewInt64Coin("usdx", 1000000000000),
 | 
						|
			SurplusAuctionThreshold: sdkmath.NewInt(6),
 | 
						|
			SurplusAuctionLot:       sdkmath.NewInt(7),
 | 
						|
			DebtAuctionThreshold:    sdkmath.NewInt(8),
 | 
						|
			DebtAuctionLot:          sdkmath.NewInt(9),
 | 
						|
		},
 | 
						|
		CDPs: v015cdp.CDPs{
 | 
						|
			{
 | 
						|
				ID:              2,
 | 
						|
				Owner:           s.addresses[0],
 | 
						|
				Type:            "xrp-a",
 | 
						|
				Collateral:      sdk.NewCoin("xrp", sdkmath.NewInt(2123)),
 | 
						|
				Principal:       sdk.NewCoin("usdx", sdkmath.NewInt(100)),
 | 
						|
				AccumulatedFees: sdk.NewCoin("usdx", sdk.ZeroInt()),
 | 
						|
				FeesUpdated:     time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
				InterestFactor:  sdk.NewDec(1),
 | 
						|
			},
 | 
						|
		},
 | 
						|
		Deposits: v015cdp.Deposits{
 | 
						|
			{
 | 
						|
				CdpID:     1,
 | 
						|
				Depositor: s.addresses[0],
 | 
						|
				Amount:    sdk.NewCoin("usdx", sdkmath.NewInt(100)),
 | 
						|
			},
 | 
						|
			{
 | 
						|
				CdpID:     2,
 | 
						|
				Depositor: s.addresses[1],
 | 
						|
				Amount:    sdk.NewCoin("ukava", sdkmath.NewInt(1200)),
 | 
						|
			},
 | 
						|
		},
 | 
						|
		PreviousAccumulationTimes: v015cdp.GenesisAccumulationTimes{
 | 
						|
			{
 | 
						|
				CollateralType:           "usdx",
 | 
						|
				PreviousAccumulationTime: time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
				InterestFactor:           sdk.MustNewDecFromStr("0.02"),
 | 
						|
			},
 | 
						|
		},
 | 
						|
		TotalPrincipals: v015cdp.GenesisTotalPrincipals{
 | 
						|
			{
 | 
						|
				CollateralType: "usdx",
 | 
						|
				TotalPrincipal: sdkmath.NewInt(1200),
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	expected := v016cdp.GenesisState{
 | 
						|
		StartingCdpID: 2,
 | 
						|
		DebtDenom:     "usdx",
 | 
						|
		GovDenom:      "ukava",
 | 
						|
		Params: v016cdp.Params{
 | 
						|
			CollateralParams: v016cdp.CollateralParams{
 | 
						|
				{
 | 
						|
					Denom:                            "xrp",
 | 
						|
					Type:                             "xrp-a",
 | 
						|
					LiquidationRatio:                 sdk.MustNewDecFromStr("2.0"),
 | 
						|
					DebtLimit:                        sdk.NewInt64Coin("usdx", 500000000000),
 | 
						|
					StabilityFee:                     sdk.MustNewDecFromStr("1.012"),
 | 
						|
					LiquidationPenalty:               sdk.MustNewDecFromStr("0.05"),
 | 
						|
					AuctionSize:                      sdkmath.NewInt(70),
 | 
						|
					SpotMarketID:                     "xrp:usd",
 | 
						|
					LiquidationMarketID:              "xrp:usd",
 | 
						|
					KeeperRewardPercentage:           sdk.MustNewDecFromStr("0.01"),
 | 
						|
					CheckCollateralizationIndexCount: sdkmath.NewInt(10),
 | 
						|
					ConversionFactor:                 sdkmath.NewInt(6),
 | 
						|
				},
 | 
						|
			},
 | 
						|
			DebtParam: v016cdp.DebtParam{
 | 
						|
				Denom:            "usdx",
 | 
						|
				ReferenceAsset:   "usd",
 | 
						|
				ConversionFactor: sdkmath.NewInt(6),
 | 
						|
				DebtFloor:        sdkmath.NewInt(100),
 | 
						|
			},
 | 
						|
			GlobalDebtLimit:         sdk.NewInt64Coin("usdx", 1000000000000),
 | 
						|
			SurplusAuctionThreshold: sdkmath.NewInt(6),
 | 
						|
			SurplusAuctionLot:       sdkmath.NewInt(7),
 | 
						|
			DebtAuctionThreshold:    sdkmath.NewInt(8),
 | 
						|
			DebtAuctionLot:          sdkmath.NewInt(9),
 | 
						|
		},
 | 
						|
		CDPs: v016cdp.CDPs{
 | 
						|
			{
 | 
						|
				ID:              2,
 | 
						|
				Owner:           s.addresses[0],
 | 
						|
				Type:            "xrp-a",
 | 
						|
				Collateral:      sdk.NewCoin("xrp", sdkmath.NewInt(2123)),
 | 
						|
				Principal:       sdk.NewCoin("usdx", sdkmath.NewInt(100)),
 | 
						|
				AccumulatedFees: sdk.NewCoin("usdx", sdk.ZeroInt()),
 | 
						|
				FeesUpdated:     time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
				InterestFactor:  sdk.NewDec(1),
 | 
						|
			},
 | 
						|
		},
 | 
						|
		Deposits: v016cdp.Deposits{
 | 
						|
			{
 | 
						|
				CdpID:     1,
 | 
						|
				Depositor: s.addresses[0],
 | 
						|
				Amount:    sdk.NewCoin("usdx", sdkmath.NewInt(100)),
 | 
						|
			},
 | 
						|
			{
 | 
						|
				CdpID:     2,
 | 
						|
				Depositor: s.addresses[1],
 | 
						|
				Amount:    sdk.NewCoin("ukava", sdkmath.NewInt(1200)),
 | 
						|
			},
 | 
						|
		},
 | 
						|
		PreviousAccumulationTimes: v016cdp.GenesisAccumulationTimes{
 | 
						|
			{
 | 
						|
				CollateralType:           "usdx",
 | 
						|
				PreviousAccumulationTime: time.Date(2020, time.January, 1, 0, 0, 0, 0, time.UTC),
 | 
						|
				InterestFactor:           sdk.MustNewDecFromStr("0.02"),
 | 
						|
			},
 | 
						|
		},
 | 
						|
		TotalPrincipals: v016cdp.GenesisTotalPrincipals{
 | 
						|
			{
 | 
						|
				CollateralType: "usdx",
 | 
						|
				TotalPrincipal: sdkmath.NewInt(1200),
 | 
						|
			},
 | 
						|
		},
 | 
						|
	}
 | 
						|
	genState := Migrate(s.v15genstate)
 | 
						|
	s.Require().Equal(expected, *genState)
 | 
						|
}
 | 
						|
 | 
						|
func TestCdpMigrateTestSuite(t *testing.T) {
 | 
						|
	suite.Run(t, new(migrateTestSuite))
 | 
						|
}
 |