forked from TrueCloudLab/frostfs-node
[#280] ir: Add balance processor unit tests
Signed-off-by: Dmitrii Stepanov <d.stepanov@yadro.com>
This commit is contained in:
parent
e89fa7f69f
commit
686f01bce5
2 changed files with 96 additions and 2 deletions
90
pkg/innerring/processors/balance/handlers_test.go
Normal file
90
pkg/innerring/processors/balance/handlers_test.go
Normal file
|
@ -0,0 +1,90 @@
|
||||||
|
package balance
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
"time"
|
||||||
|
|
||||||
|
frostfscontract "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/client/frostfs"
|
||||||
|
balanceEvent "git.frostfs.info/TrueCloudLab/frostfs-node/pkg/morph/event/balance"
|
||||||
|
"git.frostfs.info/TrueCloudLab/frostfs-node/pkg/util/logger/test"
|
||||||
|
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestProcessorCallsFrostFSContractForLockEvent(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
as := &testAlphabetState{
|
||||||
|
isAlphabet: true,
|
||||||
|
}
|
||||||
|
conv := &testPresicionConverter{}
|
||||||
|
cl := &testFrostFSContractClient{}
|
||||||
|
bsc := util.Uint160{100}
|
||||||
|
|
||||||
|
processor, err := New(&Params{
|
||||||
|
Log: test.NewLogger(t, true),
|
||||||
|
PoolSize: 2,
|
||||||
|
FrostFSClient: cl,
|
||||||
|
BalanceSC: bsc,
|
||||||
|
AlphabetState: as,
|
||||||
|
Converter: conv,
|
||||||
|
})
|
||||||
|
require.NoError(t, err, "failed to create processor")
|
||||||
|
|
||||||
|
processor.handleLock(balanceEvent.Lock{})
|
||||||
|
|
||||||
|
for processor.pool.Running() > 0 {
|
||||||
|
time.Sleep(10 * time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.Equal(t, 1, cl.chequeCalls, "invalid Cheque calls")
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestProcessorDoesntCallFrostFSContractIfNotAlphabet(t *testing.T) {
|
||||||
|
t.Parallel()
|
||||||
|
as := &testAlphabetState{}
|
||||||
|
conv := &testPresicionConverter{}
|
||||||
|
cl := &testFrostFSContractClient{}
|
||||||
|
bsc := util.Uint160{100}
|
||||||
|
|
||||||
|
processor, err := New(&Params{
|
||||||
|
Log: test.NewLogger(t, true),
|
||||||
|
PoolSize: 2,
|
||||||
|
FrostFSClient: cl,
|
||||||
|
BalanceSC: bsc,
|
||||||
|
AlphabetState: as,
|
||||||
|
Converter: conv,
|
||||||
|
})
|
||||||
|
require.NoError(t, err, "failed to create processor")
|
||||||
|
|
||||||
|
processor.handleLock(balanceEvent.Lock{})
|
||||||
|
|
||||||
|
for processor.pool.Running() > 0 {
|
||||||
|
time.Sleep(10 * time.Millisecond)
|
||||||
|
}
|
||||||
|
|
||||||
|
require.Equal(t, 0, cl.chequeCalls, "invalid Cheque calls")
|
||||||
|
}
|
||||||
|
|
||||||
|
type testAlphabetState struct {
|
||||||
|
isAlphabet bool
|
||||||
|
}
|
||||||
|
|
||||||
|
func (s *testAlphabetState) IsAlphabet() bool {
|
||||||
|
return s.isAlphabet
|
||||||
|
}
|
||||||
|
|
||||||
|
type testPresicionConverter struct {
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *testPresicionConverter) ToFixed8(v int64) int64 {
|
||||||
|
return v
|
||||||
|
}
|
||||||
|
|
||||||
|
type testFrostFSContractClient struct {
|
||||||
|
chequeCalls int
|
||||||
|
}
|
||||||
|
|
||||||
|
func (c *testFrostFSContractClient) Cheque(p frostfscontract.ChequePrm) error {
|
||||||
|
c.chequeCalls++
|
||||||
|
return nil
|
||||||
|
}
|
|
@ -25,11 +25,15 @@ type (
|
||||||
ToFixed8(int64) int64
|
ToFixed8(int64) int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FrostFSClient interface {
|
||||||
|
Cheque(p frostfscontract.ChequePrm) error
|
||||||
|
}
|
||||||
|
|
||||||
// Processor of events produced by balance contract in the morphchain.
|
// Processor of events produced by balance contract in the morphchain.
|
||||||
Processor struct {
|
Processor struct {
|
||||||
log *logger.Logger
|
log *logger.Logger
|
||||||
pool *ants.Pool
|
pool *ants.Pool
|
||||||
frostfsClient *frostfscontract.Client
|
frostfsClient FrostFSClient
|
||||||
balanceSC util.Uint160
|
balanceSC util.Uint160
|
||||||
alphabetState AlphabetState
|
alphabetState AlphabetState
|
||||||
converter PrecisionConverter
|
converter PrecisionConverter
|
||||||
|
@ -39,7 +43,7 @@ type (
|
||||||
Params struct {
|
Params struct {
|
||||||
Log *logger.Logger
|
Log *logger.Logger
|
||||||
PoolSize int
|
PoolSize int
|
||||||
FrostFSClient *frostfscontract.Client
|
FrostFSClient FrostFSClient
|
||||||
BalanceSC util.Uint160
|
BalanceSC util.Uint160
|
||||||
AlphabetState AlphabetState
|
AlphabetState AlphabetState
|
||||||
Converter PrecisionConverter
|
Converter PrecisionConverter
|
||||||
|
|
Loading…
Reference in a new issue