Begin work on full device<->device unit-test

To simulate a full interaction between two WireGuard
instances without networking, using dummy instances of the interfaces
This commit is contained in:
Mathias Hall-Andersen
2018-03-08 16:44:27 +01:00
parent fd248c6cb1
commit 6cecaf3157
4 changed files with 142 additions and 1 deletions

50
bind_test.go Normal file
View File

@ -0,0 +1,50 @@
package main
import "errors"
type DummyDatagram struct {
msg []byte
endpoint Endpoint
world bool // better type
}
type DummyBind struct {
in6 chan DummyDatagram
ou6 chan DummyDatagram
in4 chan DummyDatagram
ou4 chan DummyDatagram
closed bool
}
func (b *DummyBind) SetMark(v uint32) error {
return nil
}
func (b *DummyBind) ReceiveIPv6(buff []byte) (int, Endpoint, error) {
datagram, ok := <-b.in6
if !ok {
return 0, nil, errors.New("closed")
}
copy(buff, datagram.msg)
return len(datagram.msg), datagram.endpoint, nil
}
func (b *DummyBind) ReceiveIPv4(buff []byte) (int, Endpoint, error) {
datagram, ok := <-b.in4
if !ok {
return 0, nil, errors.New("closed")
}
copy(buff, datagram.msg)
return len(datagram.msg), datagram.endpoint, nil
}
func (b *DummyBind) Close() error {
close(b.in6)
close(b.in4)
b.closed = true
return nil
}
func (b *DummyBind) Send(buff []byte, end Endpoint) error {
return nil
}