Files
indra/pkg/engine/dispatcher_test.go
херетик 7037155b3a change default to quic, remove security layer
we have a scheme already for encryption based on sessions and node identity keys
2023-05-18 13:39:17 +01:00

93 lines
2.1 KiB
Go

package engine
import (
"context"
"net/netip"
"os"
"testing"
"time"
"github.com/multiformats/go-multiaddr"
"git-indra.lan/indra-labs/indra/pkg/crypto"
"git-indra.lan/indra-labs/indra/pkg/engine/node"
"git-indra.lan/indra-labs/indra/pkg/engine/transport"
log2 "git-indra.lan/indra-labs/indra/pkg/proc/log"
)
func TestEngine_Dispatcher(t *testing.T) {
log2.SetLogLevel(log2.Trace)
var e error
const nTotal = 26
ctx, cancel := context.WithCancel(context.Background())
var listeners []*transport.Listener
var keys []*crypto.Keys
var nodes []*node.Node
var engines []*Engine
var seed string
for i := 0; i < nTotal; i++ {
var k *crypto.Keys
if k, e = crypto.GenerateKeys(); fails(e) {
t.FailNow()
}
keys = append(keys, k)
var l *transport.Listener
dataPath, err := os.MkdirTemp(os.TempDir(), "badger")
if err != nil {
t.FailNow()
}
if l, e = transport.NewListener(seed, transport.LocalhostZeroIPv4QUIC,
dataPath, k, ctx, transport.DefaultMTU); fails(e) {
os.RemoveAll(dataPath)
t.FailNow()
}
sa := transport.GetHostAddress(l.Host)
if i == 0 {
seed = sa
}
listeners = append(listeners, l)
var addr netip.AddrPort
var ma multiaddr.Multiaddr
if ma, e = multiaddr.NewMultiaddr(sa); fails(e) {
os.RemoveAll(dataPath)
t.FailNow()
}
var ip, port string
if ip, e = ma.ValueForProtocol(multiaddr.P_IP4); fails(e) {
// we specified ipv4 previously.
os.RemoveAll(dataPath)
t.FailNow()
}
//if port, e = ma.ValueForProtocol(multiaddr.P_TCP); fails(e) {
if port, e = ma.ValueForProtocol(multiaddr.P_UDP); fails(e) {
os.RemoveAll(dataPath)
t.FailNow()
}
//}
if addr, e = netip.ParseAddrPort(ip + ":" + port); fails(e) {
os.RemoveAll(dataPath)
t.FailNow()
}
var nod *node.Node
if nod, _ = node.NewNode(&addr, k, nil, 50000); fails(e) {
os.RemoveAll(dataPath)
t.FailNow()
}
nodes = append(nodes, nod)
var eng *Engine
if eng, e = NewEngine(Params{
Listener: l,
Keys: k,
Node: nod,
}); fails(e) {
os.RemoveAll(dataPath)
t.FailNow()
}
engines = append(engines, eng)
defer os.RemoveAll(dataPath)
}
time.Sleep(time.Second * 2)
cancel()
}