Skip to content

Commit 23be75d

Browse files
committed
x
1 parent ae3cb61 commit 23be75d

File tree

4 files changed

+1
-234
lines changed

4 files changed

+1
-234
lines changed

action/protocol/multichain/subchain/protocol_test.go

-55
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,10 @@ import (
1616
"github.com/stretchr/testify/assert"
1717
"github.com/stretchr/testify/require"
1818

19-
"github.com/iotexproject/iotex-core/action"
2019
"github.com/iotexproject/iotex-core/action/protocol"
2120
"github.com/iotexproject/iotex-core/blockchain"
2221
"github.com/iotexproject/iotex-core/config"
23-
"github.com/iotexproject/iotex-core/explorer/idl/explorer"
24-
"github.com/iotexproject/iotex-core/test/mock/mock_explorer"
2522
"github.com/iotexproject/iotex-core/test/testaddress"
26-
"github.com/iotexproject/iotex-core/testutil"
2723
)
2824

2925
func TestValidateDeposit(t *testing.T) {
@@ -35,57 +31,18 @@ func TestValidateDeposit(t *testing.T) {
3531
blockchain.InMemDaoOption(),
3632
)
3733
require.NoError(t, bc.Start(ctx))
38-
exp := mock_explorer.NewMockExplorer(ctrl)
39-
40-
p := NewProtocol(bc, exp)
41-
deposit := action.NewSettleDeposit(
42-
1,
43-
big.NewInt(1000),
44-
10000,
45-
testaddress.Addrinfo["alfa"].String(),
46-
testutil.TestGasLimit,
47-
big.NewInt(0),
48-
)
4934

5035
defer func() {
5136
require.NoError(t, bc.Stop(ctx))
5237
ctrl.Finish()
5338
}()
5439

55-
exp.EXPECT().GetDeposits(gomock.Any(), gomock.Any(), gomock.Any()).Return([]explorer.Deposit{}, nil).Times(1)
56-
err := p.validateDeposit(deposit, nil)
57-
require.Error(t, err)
58-
assert.True(t, strings.Contains(err.Error(), "deposits found instead of"))
59-
60-
exp.EXPECT().GetDeposits(gomock.Any(), gomock.Any(), gomock.Any()).Return([]explorer.Deposit{
61-
{
62-
Amount: "100",
63-
Address: testaddress.Addrinfo["alfa"].String(),
64-
Confirmed: false,
65-
},
66-
}, nil).Times(2)
67-
68-
err = p.validateDeposit(deposit, nil)
69-
assert.NoError(t, err)
70-
7140
ws, err := bc.GetFactory().NewWorkingSet()
7241
require.NoError(t, err)
7342
var depositIndex DepositIndex
7443
require.NoError(t, ws.PutState(depositAddress(10000), &depositIndex))
7544
bc.GetFactory().Commit(ws)
76-
err = p.validateDeposit(deposit, nil)
77-
require.Error(t, err)
78-
assert.True(t, strings.Contains(err.Error(), "is already settled"))
7945

80-
exp.EXPECT().GetDeposits(gomock.Any(), gomock.Any(), gomock.Any()).Return([]explorer.Deposit{
81-
{
82-
Amount: "100",
83-
Address: testaddress.Addrinfo["alfa"].String(),
84-
Confirmed: true,
85-
},
86-
}, nil).Times(1)
87-
err = p.validateDeposit(deposit, nil)
88-
require.Error(t, err)
8946
assert.True(t, strings.Contains(err.Error(), "is already confirmed"))
9047

9148
}
@@ -100,17 +57,6 @@ func TestMutateDeposit(t *testing.T) {
10057
blockchain.EnableExperimentalActions(),
10158
)
10259
require.NoError(t, bc.Start(ctx))
103-
exp := mock_explorer.NewMockExplorer(ctrl)
104-
105-
p := NewProtocol(bc, exp)
106-
deposit := action.NewSettleDeposit(
107-
1,
108-
big.NewInt(1000),
109-
10000,
110-
testaddress.Addrinfo["alfa"].String(),
111-
testutil.TestGasLimit,
112-
big.NewInt(0),
113-
)
11460

11561
defer func() {
11662
require.NoError(t, bc.Stop(ctx))
@@ -122,7 +68,6 @@ func TestMutateDeposit(t *testing.T) {
12268
})
12369
ws, err := bc.GetFactory().NewWorkingSet()
12470
require.NoError(t, err)
125-
require.NoError(t, p.mutateDeposit(ctx, deposit, ws))
12671
require.NoError(t, bc.GetFactory().Commit(ws))
12772

12873
account1, err := bc.GetFactory().AccountState(testaddress.Addrinfo["producer"].String())

consensus/scheme/rolldpos/rolldpos_test.go

-4
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,6 @@ import (
4444
"github.com/iotexproject/iotex-core/test/identityset"
4545
"github.com/iotexproject/iotex-core/test/mock/mock_actpool"
4646
"github.com/iotexproject/iotex-core/test/mock/mock_blockchain"
47-
"github.com/iotexproject/iotex-core/test/mock/mock_explorer"
4847
"github.com/iotexproject/iotex-core/test/testaddress"
4948
"github.com/iotexproject/iotex-core/testutil"
5049
)
@@ -115,12 +114,10 @@ func TestNewRollDPoS(t *testing.T) {
115114
return nil
116115
}).
117116
SetClock(clock.NewMock()).
118-
SetRootChainAPI(mock_explorer.NewMockExplorer(ctrl)).
119117
RegisterProtocol(rp).
120118
Build()
121119
assert.NoError(t, err)
122120
assert.NotNil(t, r)
123-
assert.NotNil(t, r.ctx.rootChainAPI)
124121
})
125122
t.Run("missing-dep", func(t *testing.T) {
126123
sk := identityset.PrivateKey(0)
@@ -345,7 +342,6 @@ func makeTestRollDPoSCtx(
345342
cfg.Genesis.BlockInterval,
346343
cfg.Consensus.RollDPoS.ToleratedOvertime,
347344
cfg.Genesis.TimeBasedRotation,
348-
nil,
349345
chain,
350346
actPool,
351347
rolldpos.NewProtocol(

consensus/scheme/rolldpos/subchain_test.go

-33
Original file line numberDiff line numberDiff line change
@@ -7,19 +7,15 @@
77
package rolldpos
88

99
import (
10-
"encoding/hex"
1110
"testing"
1211

1312
"github.com/golang/mock/gomock"
1413
"github.com/golang/protobuf/ptypes"
15-
"github.com/stretchr/testify/assert"
1614
"github.com/stretchr/testify/require"
1715

1816
"github.com/iotexproject/iotex-core/blockchain/block"
19-
explorerapi "github.com/iotexproject/iotex-core/explorer/idl/explorer"
2017
"github.com/iotexproject/iotex-core/pkg/version"
2118
"github.com/iotexproject/iotex-core/protogen/iotextypes"
22-
"github.com/iotexproject/iotex-core/test/mock/mock_explorer"
2319
"github.com/iotexproject/iotex-core/test/testaddress"
2420
)
2521

@@ -29,10 +25,7 @@ func TestPutBlockToParentChain(t *testing.T) {
2925
ctrl := gomock.NewController(t)
3026
defer ctrl.Finish()
3127

32-
addr := testaddress.Addrinfo["producer"].String()
3328
pubKey := testaddress.Keyinfo["producer"].PubKey
34-
priKey := testaddress.Keyinfo["producer"].PriKey
35-
subAddr := testaddress.Addrinfo["echo"].String()
3629
blk := block.Block{}
3730
blkpb := &iotextypes.Block{
3831
Header: &iotextypes.BlockHeader{
@@ -93,30 +86,4 @@ func TestPutBlockToParentChain(t *testing.T) {
9386
blkpb.Header.Core.TxRoot = txRoot[:]
9487
blk = block.Block{}
9588
require.NoError(t, blk.ConvertFromBlockPb(blkpb))
96-
97-
req := explorerapi.PutSubChainBlockRequest{
98-
Version: 1,
99-
Nonce: 100,
100-
SenderAddress: addr,
101-
SenderPubKey: pubKey.HexString(),
102-
GasLimit: 1000000,
103-
GasPrice: "10",
104-
SubChainAddress: subAddr,
105-
Height: 123456789,
106-
Roots: []explorerapi.PutSubChainBlockMerkelRoot{
107-
{
108-
Name: "tx",
109-
Value: hex.EncodeToString(txRoot[:]),
110-
},
111-
},
112-
Signature: "fe36ae0659698fe0c5a59cbd4fb29f69cb156a7956d6e9be85896ed6e8f2fcf13575750040aa18c437d0baf949964a7cea1574b4ee927074f29ccf6eb705cfbdce49244f9de72a00",
113-
}
114-
115-
exp := mock_explorer.NewMockExplorer(ctrl)
116-
exp.EXPECT().GetAddressDetails(addr).Return(explorerapi.AddressDetails{PendingNonce: 100}, nil).Times(1)
117-
exp.EXPECT().PutSubChainBlock(gomock.Any()).Times(1).Do(func(in explorerapi.PutSubChainBlockRequest) {
118-
assert.Equal(t, in.Height, req.Height)
119-
})
120-
121-
putBlockToParentChain(exp, req.SubChainAddress, priKey, addr, &blk)
12289
}

e2etest/multichain_test.go

+1-142
Original file line numberDiff line numberDiff line change
@@ -8,32 +8,17 @@ package e2etest
88

99
import (
1010
"context"
11-
"encoding/hex"
12-
"fmt"
1311
"io/ioutil"
14-
"math/big"
1512
"os"
1613
"testing"
1714
"time"
1815

1916
"github.com/iotexproject/iotex-core/test/identityset"
2017

21-
"github.com/pkg/errors"
22-
"github.com/stretchr/testify/assert"
23-
"github.com/stretchr/testify/require"
24-
"go.uber.org/zap"
25-
26-
"github.com/iotexproject/iotex-address/address"
27-
"github.com/iotexproject/iotex-core/action"
2818
"github.com/iotexproject/iotex-core/config"
29-
exp "github.com/iotexproject/iotex-core/explorer"
30-
"github.com/iotexproject/iotex-core/explorer/idl/explorer"
31-
"github.com/iotexproject/iotex-core/pkg/enc"
32-
"github.com/iotexproject/iotex-core/pkg/keypair"
33-
"github.com/iotexproject/iotex-core/pkg/log"
34-
"github.com/iotexproject/iotex-core/pkg/unit"
3519
"github.com/iotexproject/iotex-core/server/itx"
3620
"github.com/iotexproject/iotex-core/testutil"
21+
"github.com/stretchr/testify/require"
3722
)
3823

3924
func TestTwoChains(t *testing.T) {
@@ -65,140 +50,14 @@ func TestTwoChains(t *testing.T) {
6550
require.NoError(t, svr.Stop(ctx))
6651
}()
6752

68-
sk1, err := keypair.HexStringToPrivateKey(cfg.Chain.ProducerPrivKey)
69-
require.NoError(t, err)
70-
addr1, err := address.FromBytes(sk1.PublicKey().Hash())
71-
require.NoError(t, err)
72-
sk2, err := keypair.HexStringToPrivateKey("82a1556b2dbd0e3615e367edf5d3b90ce04346ec4d12ed71f67c70920ef9ac90")
7353
require.NoError(t, err)
74-
addr2, err := address.FromBytes(sk2.PublicKey().Hash())
75-
require.NoError(t, err)
76-
77-
mainChainClient := exp.NewExplorerProxy(
78-
fmt.Sprintf("http://127.0.0.1:%d", svr.ChainService(cfg.Chain.ID).Explorer().Port()),
79-
)
8054

8155
require.NoError(t, testutil.WaitUntil(time.Second, 20*time.Second, func() (bool, error) {
8256
return svr.ChainService(2) != nil, nil
8357
}))
8458

85-
require.NoError(t, testutil.WaitUntil(time.Second, 10*time.Second, func() (bool, error) {
86-
balanceStr, err := mainChainClient.GetAddressBalance(addr1.String())
87-
if err != nil {
88-
return false, err
89-
}
90-
balance, ok := big.NewInt(0).SetString(balanceStr, 10)
91-
if !ok {
92-
return false, errors.New("error when converting balance string to big int")
93-
}
94-
if balance.Cmp(big.NewInt(0).Mul(big.NewInt(1), big.NewInt(unit.Iotx))) < 0 {
95-
log.L().Info("Balance is not enough yet.", zap.String("balance", balance.String()))
96-
return false, nil
97-
}
98-
log.L().Info("Balance is already enough.", zap.String("balance", balance.String()))
99-
return true, nil
100-
}))
101-
10259
require.NoError(t, testutil.WaitUntil(time.Second, 20*time.Second, func() (bool, error) {
10360
return svr.ChainService(2) != nil, nil
10461
}))
10562

106-
details, err := mainChainClient.GetAddressDetails(addr1.String())
107-
require.NoError(t, err)
108-
createDeposit := action.NewCreateDeposit(
109-
uint64(details.Nonce)+1,
110-
2,
111-
big.NewInt(0).Mul(big.NewInt(1), big.NewInt(unit.Iotx)),
112-
addr2.String(),
113-
testutil.TestGasLimit,
114-
big.NewInt(0),
115-
)
116-
bd := &action.EnvelopeBuilder{}
117-
elp := bd.SetAction(createDeposit).
118-
SetNonce(uint64(details.Nonce) + 1).
119-
SetGasLimit(testutil.TestGasLimit).Build()
120-
selp, err := action.Sign(elp, sk1)
121-
require.NoError(t, err)
122-
123-
createRes, err := mainChainClient.CreateDeposit(explorer.CreateDepositRequest{
124-
Version: int64(createDeposit.Version()),
125-
Nonce: int64(createDeposit.Nonce()),
126-
ChainID: int64(createDeposit.ChainID()),
127-
SenderPubKey: createDeposit.SenderPublicKey().HexString(),
128-
Recipient: createDeposit.Recipient(),
129-
Amount: createDeposit.Amount().String(),
130-
Signature: hex.EncodeToString(selp.Signature()),
131-
GasLimit: int64(createDeposit.GasLimit()),
132-
GasPrice: createDeposit.GasPrice().String(),
133-
})
134-
require.NoError(t, err)
135-
136-
require.NoError(t, testutil.WaitUntil(time.Second, 20*time.Second, func() (bool, error) {
137-
_, err := mainChainClient.GetReceiptByExecutionID(createRes.Hash)
138-
return err == nil, nil
139-
}))
140-
141-
cd1, err := mainChainClient.GetCreateDeposit(createRes.Hash)
142-
require.NoError(t, err)
143-
cds, err := mainChainClient.GetCreateDepositsByAddress(addr1.String(), 0, 1)
144-
require.NoError(t, err)
145-
require.Equal(t, 1, len(cds))
146-
assert.Equal(t, cd1, cds[0])
147-
148-
receipt, err := mainChainClient.GetReceiptByExecutionID(createRes.Hash)
149-
require.NoError(t, err)
150-
value, err := hex.DecodeString(receipt.ReturnValue)
151-
require.NoError(t, err)
152-
index := enc.MachineEndian.Uint64(value)
153-
154-
subChainClient := exp.NewExplorerProxy(
155-
fmt.Sprintf("http://127.0.0.1:%d", svr.ChainService(cfg.Chain.ID).Explorer().Port()+1),
156-
)
157-
158-
details, err = subChainClient.GetAddressDetails(addr2.String())
159-
var nonce uint64
160-
if err != nil {
161-
nonce = 1
162-
} else {
163-
nonce = uint64(details.PendingNonce)
164-
}
165-
settleDeposit := action.NewSettleDeposit(
166-
nonce,
167-
big.NewInt(0).Mul(big.NewInt(1), big.NewInt(unit.Iotx)),
168-
index,
169-
addr2.String(),
170-
testutil.TestGasLimit,
171-
big.NewInt(0),
172-
)
173-
bd = &action.EnvelopeBuilder{}
174-
elp = bd.SetAction(settleDeposit).
175-
SetNonce(nonce).
176-
SetGasLimit(testutil.TestGasLimit).Build()
177-
selp, err = action.Sign(elp, sk1)
178-
require.NoError(t, err)
179-
180-
settleRes, err := subChainClient.SettleDeposit(explorer.SettleDepositRequest{
181-
Version: int64(settleDeposit.Version()),
182-
Nonce: int64(settleDeposit.Nonce()),
183-
SenderPubKey: settleDeposit.SenderPublicKey().HexString(),
184-
Recipient: settleDeposit.Recipient(),
185-
Amount: settleDeposit.Amount().String(),
186-
Index: int64(index),
187-
Signature: hex.EncodeToString(selp.Signature()),
188-
GasLimit: int64(settleDeposit.GasLimit()),
189-
GasPrice: settleDeposit.GasPrice().String(),
190-
})
191-
require.NoError(t, err)
192-
193-
require.NoError(t, testutil.WaitUntil(time.Second, 20*time.Second, func() (bool, error) {
194-
sd, err := subChainClient.GetSettleDeposit(settleRes.Hash)
195-
return err == nil && sd.IsPending == false, nil
196-
}))
197-
198-
sd1, err := subChainClient.GetSettleDeposit(settleRes.Hash)
199-
require.NoError(t, err)
200-
sds, err := subChainClient.GetSettleDepositsByAddress(settleDeposit.Recipient(), 0, 1)
201-
require.NoError(t, err)
202-
require.Equal(t, 1, len(sds))
203-
assert.Equal(t, sd1, sds[0])
20463
}

0 commit comments

Comments
 (0)