100 lines
2.1 KiB
Go
100 lines
2.1 KiB
Go
package tests
|
|
|
|
import (
|
|
"bytes"
|
|
"lux/crypto"
|
|
"lux/net"
|
|
"lux/proto"
|
|
"testing"
|
|
)
|
|
|
|
func TestDgramChannel(t *testing.T) {
|
|
ks := crypto.NewLuxKeyStore("/tmp/keystore.dat")
|
|
|
|
keyA, _ := crypto.NewLuxKey(proto.LuxTypeHost)
|
|
ks.Put(keyA)
|
|
|
|
r := net.NewLuxRouter(keyA, ks)
|
|
err := r.CreateInboundChannel(net.LuxChannelInterior, "127.0.0.2:9979")
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
outbound, err := net.NewLuxOutboundChannel("127.0.0.2:9979", net.LuxChannelInterior)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
dgram := net.LuxDatagram{
|
|
Target: outbound.Address,
|
|
Payload: []byte{1, 2, 3, 4, 5, 6, 7, 8},
|
|
}
|
|
|
|
r.Start()
|
|
defer r.Stop()
|
|
|
|
outbound.Send(dgram)
|
|
|
|
recv := r.RecvDgram()
|
|
if !bytes.Equal(dgram.Payload, recv.Payload) {
|
|
t.Log(dgram)
|
|
t.Log(recv)
|
|
t.Log("payloads are not equal!")
|
|
}
|
|
}
|
|
|
|
func TestRouterSendRecv(t *testing.T) {
|
|
ks := crypto.NewLuxKeyStore("/tmp/keystore.dat")
|
|
|
|
keyA, _ := crypto.NewLuxKey(proto.LuxTypeHost)
|
|
ks.Put(keyA)
|
|
|
|
routerA := net.NewLuxRouter(keyA, ks)
|
|
if err := routerA.CreateInboundChannel(net.LuxChannelInterior, "127.0.0.2:9979"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
routerA.Start()
|
|
defer routerA.Stop()
|
|
|
|
t.Log("routerA routing table:")
|
|
t.Log(routerA.GetRoutes())
|
|
|
|
routerB := net.NewLuxRouter(keyA, ks)
|
|
if err := routerB.CreateOutboundRoute(keyA.Id, net.LuxChannelInterior, "127.0.0.2:9979"); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
routerB.Start()
|
|
defer routerB.Stop()
|
|
|
|
t.Log("routerB routing table:")
|
|
t.Log(routerB.GetRoutes())
|
|
|
|
payload := []byte{1, 2, 3, 4, 5, 6, 7, 8}
|
|
packet := net.LuxPacket{
|
|
Target: keyA.Id,
|
|
Type: 0x1234,
|
|
Buffer: proto.FromSlice(payload),
|
|
}
|
|
|
|
routerB.Send(packet)
|
|
newPacket, err := routerA.Recv()
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
|
|
if newPacket.ChannelType != net.LuxChannelInterior {
|
|
t.Fatal("newPacket.ChannelType != net.LuxChannelInterior")
|
|
}
|
|
if newPacket.Type != packet.Type {
|
|
t.Fatal("newPacket.Type != packet.Type")
|
|
}
|
|
if newPayload, _ := newPacket.Buffer.ReadNext(8); !bytes.Equal(newPayload, payload) {
|
|
t.Log(payload)
|
|
t.Log(newPacket.Buffer.AllBytes())
|
|
t.Fatal("payloads aren't equal!")
|
|
}
|
|
|
|
if len(routerA.GetRoutes()) != 1 {
|
|
t.Fatal("routerA does not contain new inbound route")
|
|
}
|
|
}
|