Files
wireguard-go/helper_test.go
T

86 lines
1.5 KiB
Go
Raw Normal View History

2018-05-03 15:04:00 +02:00
/* SPDX-License-Identifier: GPL-2.0
*
* Copyright (C) 2017-2018 Jason A. Donenfeld <Jason@zx2c4.com>. All Rights Reserved.
2018-05-19 00:34:56 +02:00
* Copyright (C) 2017-2018 Mathias N. Hall-Andersen <mathias@hall-andersen.dk>.
2018-05-03 15:04:00 +02:00
*/
2017-06-28 23:45:45 +02:00
package main
import (
"bytes"
2017-11-17 17:25:45 +01:00
"os"
2017-06-28 23:45:45 +02:00
"testing"
)
/* Helpers for writing unit tests
*/
type DummyTUN struct {
name string
2017-07-02 15:28:38 +02:00
mtu int
2017-06-28 23:45:45 +02:00
packets chan []byte
2017-08-11 16:18:20 +02:00
events chan TUNEvent
2017-06-28 23:45:45 +02:00
}
2017-11-17 17:25:45 +01:00
func (tun *DummyTUN) File() *os.File {
return nil
}
2018-05-13 19:35:11 +02:00
func (tun *DummyTUN) Name() (string, error) {
return tun.name, nil
2017-06-28 23:45:45 +02:00
}
2017-07-12 23:11:49 +02:00
func (tun *DummyTUN) MTU() (int, error) {
return tun.mtu, nil
2017-06-28 23:45:45 +02:00
}
2018-02-02 20:45:25 +01:00
func (tun *DummyTUN) Write(d []byte, offset int) (int, error) {
tun.packets <- d[offset:]
2017-06-28 23:45:45 +02:00
return len(d), nil
}
2017-08-11 16:18:20 +02:00
func (tun *DummyTUN) Close() error {
return nil
}
func (tun *DummyTUN) Events() chan TUNEvent {
return tun.events
}
2018-02-02 20:45:25 +01:00
func (tun *DummyTUN) Read(d []byte, offset int) (int, error) {
2017-06-28 23:45:45 +02:00
t := <-tun.packets
2018-02-02 20:45:25 +01:00
copy(d[offset:], t)
2017-06-28 23:45:45 +02:00
return len(t), nil
}
func CreateDummyTUN(name string) (TUNDevice, error) {
var dummy DummyTUN
2017-06-30 14:41:08 +02:00
dummy.mtu = 0
2017-06-28 23:45:45 +02:00
dummy.packets = make(chan []byte, 100)
return &dummy, nil
}
func assertNil(t *testing.T, err error) {
if err != nil {
t.Fatal(err)
}
}
func assertEqual(t *testing.T, a []byte, b []byte) {
if bytes.Compare(a, b) != 0 {
t.Fatal(a, "!=", b)
}
}
func randDevice(t *testing.T) *Device {
sk, err := newPrivateKey()
if err != nil {
t.Fatal(err)
}
tun, _ := CreateDummyTUN("dummy")
2017-11-17 17:25:45 +01:00
logger := NewLogger(LogLevelError, "")
device := NewDevice(tun, logger)
2017-06-28 23:45:45 +02:00
device.SetPrivateKey(sk)
return device
}