forked from TrueCloudLab/frostfs-contract
[#151] netmap: allow to update config values in _deploy
Signed-off-by: Evgenii Stratonikov <evgeniy@nspcc.ru>
This commit is contained in:
parent
c957b9ca69
commit
c5e026c6e7
2 changed files with 31 additions and 18 deletions
|
@ -61,10 +61,6 @@ var (
|
|||
func _deploy(data interface{}, isUpdate bool) {
|
||||
ctx := storage.GetContext()
|
||||
|
||||
if isUpdate {
|
||||
return
|
||||
}
|
||||
|
||||
args := data.([]interface{})
|
||||
notaryDisabled := args[0].(bool)
|
||||
addrBalance := args[1].(interop.Hash160)
|
||||
|
@ -72,6 +68,22 @@ func _deploy(data interface{}, isUpdate bool) {
|
|||
keys := args[3].([]interop.PublicKey)
|
||||
config := args[4].([][]byte)
|
||||
|
||||
ln := len(config)
|
||||
if ln%2 != 0 {
|
||||
panic("_deploy: bad configuration")
|
||||
}
|
||||
|
||||
for i := 0; i < ln/2; i++ {
|
||||
key := config[i*2]
|
||||
val := config[i*2+1]
|
||||
|
||||
setConfig(ctx, key, val)
|
||||
}
|
||||
|
||||
if isUpdate {
|
||||
return
|
||||
}
|
||||
|
||||
if len(addrBalance) != 20 || len(addrContainer) != 20 {
|
||||
panic("init: incorrect length of contract script hash")
|
||||
}
|
||||
|
@ -101,18 +113,6 @@ func _deploy(data interface{}, isUpdate bool) {
|
|||
runtime.Log("netmap contract notary disabled")
|
||||
}
|
||||
|
||||
ln := len(config)
|
||||
if ln%2 != 0 {
|
||||
panic("init: bad configuration")
|
||||
}
|
||||
|
||||
for i := 0; i < ln/2; i++ {
|
||||
key := config[i*2]
|
||||
val := config[i*2+1]
|
||||
|
||||
setConfig(ctx, key, val)
|
||||
}
|
||||
|
||||
runtime.Log("netmap contract initialized")
|
||||
}
|
||||
|
||||
|
|
|
@ -6,9 +6,11 @@ import (
|
|||
"testing"
|
||||
|
||||
"github.com/nspcc-dev/neo-go/pkg/core"
|
||||
"github.com/nspcc-dev/neo-go/pkg/encoding/bigint"
|
||||
"github.com/nspcc-dev/neo-go/pkg/util"
|
||||
"github.com/nspcc-dev/neo-go/pkg/vm/stackitem"
|
||||
"github.com/nspcc-dev/neo-go/pkg/wallet"
|
||||
"github.com/nspcc-dev/neofs-contract/container"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
|
@ -24,7 +26,7 @@ func deployNetmapContract(t *testing.T, bc *core.Blockchain, addrBalance, addrCo
|
|||
return DeployContract(t, bc, netmapPath, args)
|
||||
}
|
||||
|
||||
func prepareNetmapContract(t *testing.T, bc *core.Blockchain) util.Uint160 {
|
||||
func prepareNetmapContract(t *testing.T, bc *core.Blockchain, config ...interface{}) util.Uint160 {
|
||||
addrNNS := DeployContract(t, bc, nnsPath, nil)
|
||||
|
||||
ctrNetmap, err := ContractInfo(CommitteeAcc.Contract.ScriptHash(), netmapPath)
|
||||
|
@ -38,7 +40,18 @@ func prepareNetmapContract(t *testing.T, bc *core.Blockchain) util.Uint160 {
|
|||
|
||||
deployContainerContract(t, bc, ctrNetmap.Hash, ctrBalance.Hash, addrNNS)
|
||||
deployBalanceContract(t, bc, ctrNetmap.Hash, ctrContainer.Hash)
|
||||
return deployNetmapContract(t, bc, ctrBalance.Hash, ctrContainer.Hash, "ContainerFee", []byte{})
|
||||
return deployNetmapContract(t, bc, ctrBalance.Hash, ctrContainer.Hash, config...)
|
||||
}
|
||||
|
||||
func TestDeploySetConfig(t *testing.T) {
|
||||
bc := NewChain(t)
|
||||
h := prepareNetmapContract(t, bc, "SomeKey", "TheValue", container.AliasFeeKey, int64(123))
|
||||
|
||||
tx := PrepareInvoke(t, bc, CommitteeAcc, h, "config", "SomeKey")
|
||||
CheckTestInvoke(t, bc, tx, "TheValue")
|
||||
|
||||
tx = PrepareInvoke(t, bc, CommitteeAcc, h, "config", container.AliasFeeKey)
|
||||
CheckTestInvoke(t, bc, tx, bigint.ToBytes(big.NewInt(123)))
|
||||
}
|
||||
|
||||
func dummyNodeInfo(acc *wallet.Account) []byte {
|
||||
|
|
Loading…
Reference in a new issue