device: add up/down stress test
Signed-off-by: Jason A. Donenfeld <Jason@zx2c4.com>
This commit is contained in:
parent
d9d547a3f3
commit
7258a8973d
|
@ -7,9 +7,11 @@ package device
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bytes"
|
"bytes"
|
||||||
|
"encoding/hex"
|
||||||
"errors"
|
"errors"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io/ioutil"
|
"io/ioutil"
|
||||||
|
"math/rand"
|
||||||
"net"
|
"net"
|
||||||
"runtime"
|
"runtime"
|
||||||
"runtime/pprof"
|
"runtime/pprof"
|
||||||
|
@ -196,6 +198,39 @@ func TestTwoDevicePing(t *testing.T) {
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func TestUpDown(t *testing.T) {
|
||||||
|
goroutineLeakCheck(t)
|
||||||
|
const itrials = 200
|
||||||
|
const otrials = 10
|
||||||
|
|
||||||
|
for n := 0; n < otrials; n++ {
|
||||||
|
pair := genTestPair(t)
|
||||||
|
for i := range pair {
|
||||||
|
for k := range pair[i].dev.peers.keyMap {
|
||||||
|
pair[i].dev.IpcSet(fmt.Sprintf("public_key=%s\npersistent_keepalive_interval=1\n", hex.EncodeToString(k[:])))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
var wg sync.WaitGroup
|
||||||
|
wg.Add(len(pair))
|
||||||
|
for i := range pair {
|
||||||
|
go func(d *Device) {
|
||||||
|
defer wg.Done()
|
||||||
|
for i := 0; i < itrials; i++ {
|
||||||
|
d.Up()
|
||||||
|
time.Sleep(time.Duration(rand.Intn(int(time.Nanosecond * (0x10000 - 1)))))
|
||||||
|
d.Down()
|
||||||
|
time.Sleep(time.Duration(rand.Intn(int(time.Nanosecond * (0x10000 - 1)))))
|
||||||
|
}
|
||||||
|
}(pair[i].dev)
|
||||||
|
}
|
||||||
|
wg.Wait()
|
||||||
|
for i := range pair {
|
||||||
|
pair[i].dev.Up()
|
||||||
|
pair[i].dev.Close()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestConcurrencySafety does other things concurrently with tunnel use.
|
// TestConcurrencySafety does other things concurrently with tunnel use.
|
||||||
// It is intended to be used with the race detector to catch data races.
|
// It is intended to be used with the race detector to catch data races.
|
||||||
func TestConcurrencySafety(t *testing.T) {
|
func TestConcurrencySafety(t *testing.T) {
|
||||||
|
|
Loading…
Reference in a new issue