mirror of
https://github.com/zrepl/zrepl.git
synced 2025-07-13 04:36:00 +02:00
platformtest: fix bandwidth-limiting-related panics (missing BucketCapacity in sender/receiver config)
panic while running test: invalid config`Ratelimit` field invalid: BucketCapacity must not be zero
main.runTestCase.func1.1
/home/cs/zrepl/zrepl/platformtest/harness/harness.go:190
runtime.gopanic
/home/cs/go1.13/src/runtime/panic.go:679
github.com/zrepl/zrepl/endpoint.NewSender
/home/cs/zrepl/zrepl/endpoint/endpoint.go:68
github.com/zrepl/zrepl/platformtest/tests.replicationInvocation.Do
/home/cs/zrepl/zrepl/platformtest/tests/replication.go:87
github.com/zrepl/zrepl/platformtest/tests.ReplicationFailingInitialParentProhibitsChildReplication
/home/cs/zrepl/zrepl/platformtest/tests/replication.go:925
main.runTestCase.func1
/home/cs/zrepl/zrepl/platformtest/harness/harness.go:193
main.runTestCase
/home/cs/zrepl/zrepl/platformtest/harness/harness.go:194
main.HarnessRun
/home/cs/zrepl/zrepl/platformtest/harness/harness.go:107
main.main
/home/cs/zrepl/zrepl/platformtest/harness/harness.go:42
runtime.main
/home/cs/go1.13/src/runtime/proc.go:203
runtime.goexit
/home/cs/go1.13/src/runtime/asm_amd64.s:1357
fixup for f5f269bfd5
(bandwidth limiting)
This commit is contained in:
@ -20,6 +20,7 @@ import (
|
|||||||
"github.com/zrepl/zrepl/replication/logic"
|
"github.com/zrepl/zrepl/replication/logic"
|
||||||
"github.com/zrepl/zrepl/replication/logic/pdu"
|
"github.com/zrepl/zrepl/replication/logic/pdu"
|
||||||
"github.com/zrepl/zrepl/replication/report"
|
"github.com/zrepl/zrepl/replication/report"
|
||||||
|
"github.com/zrepl/zrepl/util/bandwidthlimit"
|
||||||
"github.com/zrepl/zrepl/util/limitio"
|
"github.com/zrepl/zrepl/util/limitio"
|
||||||
"github.com/zrepl/zrepl/util/nodefault"
|
"github.com/zrepl/zrepl/util/nodefault"
|
||||||
"github.com/zrepl/zrepl/zfs"
|
"github.com/zrepl/zrepl/zfs"
|
||||||
@ -63,9 +64,10 @@ func (i replicationInvocation) Do(ctx *platformtest.Context) *report.Report {
|
|||||||
}
|
}
|
||||||
|
|
||||||
senderConfig := endpoint.SenderConfig{
|
senderConfig := endpoint.SenderConfig{
|
||||||
FSF: i.sfilter.AsFilter(),
|
FSF: i.sfilter.AsFilter(),
|
||||||
Encrypt: &nodefault.Bool{B: false},
|
Encrypt: &nodefault.Bool{B: false},
|
||||||
JobID: i.sjid,
|
JobID: i.sjid,
|
||||||
|
BandwidthLimit: bandwidthlimit.NoLimitConfig(),
|
||||||
}
|
}
|
||||||
if i.senderConfigHook != nil {
|
if i.senderConfigHook != nil {
|
||||||
i.senderConfigHook(&senderConfig)
|
i.senderConfigHook(&senderConfig)
|
||||||
@ -75,6 +77,7 @@ func (i replicationInvocation) Do(ctx *platformtest.Context) *report.Report {
|
|||||||
JobID: i.rjid,
|
JobID: i.rjid,
|
||||||
AppendClientIdentity: false,
|
AppendClientIdentity: false,
|
||||||
RootWithoutClientComponent: mustDatasetPath(i.rfsRoot),
|
RootWithoutClientComponent: mustDatasetPath(i.rfsRoot),
|
||||||
|
BandwidthLimit: bandwidthlimit.NoLimitConfig(),
|
||||||
}
|
}
|
||||||
if i.receiverConfigHook != nil {
|
if i.receiverConfigHook != nil {
|
||||||
i.receiverConfigHook(&receiverConfig)
|
i.receiverConfigHook(&receiverConfig)
|
||||||
|
@ -18,6 +18,13 @@ type Config struct {
|
|||||||
BucketCapacity int64
|
BucketCapacity int64
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func NoLimitConfig() Config {
|
||||||
|
return Config{
|
||||||
|
Max: -1,
|
||||||
|
BucketCapacity: -1,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
func ValidateConfig(conf Config) error {
|
func ValidateConfig(conf Config) error {
|
||||||
if conf.BucketCapacity == 0 {
|
if conf.BucketCapacity == 0 {
|
||||||
return errors.New("BucketCapacity must not be zero")
|
return errors.New("BucketCapacity must not be zero")
|
||||||
|
19
util/bandwidthlimit/bandwidthlimit_test.go
Normal file
19
util/bandwidthlimit/bandwidthlimit_test.go
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
package bandwidthlimit
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/require"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestNoLimitConfig(t *testing.T) {
|
||||||
|
|
||||||
|
conf := NoLimitConfig()
|
||||||
|
|
||||||
|
err := ValidateConfig(conf)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.NotPanics(t, func() {
|
||||||
|
_ = WrapperFromConfig(conf)
|
||||||
|
})
|
||||||
|
}
|
Reference in New Issue
Block a user