]> Cypherpunks.ru repositories - govpn.git/blob - transport_test.go
Smaller Emptiness, as 16 KiB is enough even for jumbo frames
[govpn.git] / transport_test.go
1 package govpn
2
3 import (
4         "net"
5         "testing"
6 )
7
8 var (
9         peer       *Peer
10         plaintext  []byte
11         ready      chan struct{}
12         dummy      = &Dummy{}
13         ciphertext []byte
14         addr       *net.UDPAddr
15         peerId     *PeerId
16 )
17
18 func init() {
19         MTU = 1500
20         Noncediff = 100
21         addr, _ = net.ResolveUDPAddr("udp", "[::1]:1")
22         peerId = IDDecode("ffffffffffffffffffffffffffffffff")
23         peer = newPeer(addr, *peerId, 128, new([KeySize]byte))
24         plaintext = make([]byte, 789)
25         ready = make(chan struct{})
26         go func() {
27                 for {
28                         <-ready
29                 }
30         }()
31 }
32
33 type Dummy struct{}
34
35 func (d *Dummy) WriteTo(b []byte, addr net.Addr) (int, error) {
36         ciphertext = b
37         return len(b), nil
38 }
39
40 func (d *Dummy) Write(p []byte) (n int, err error) {
41         return len(p), nil
42 }
43
44 func BenchmarkEnc(b *testing.B) {
45         b.ResetTimer()
46         for i := 0; i < b.N; i++ {
47                 peer.NonceOur = 128
48                 peer.EthProcess(plaintext, dummy, ready)
49         }
50 }
51
52 func BenchmarkDec(b *testing.B) {
53         peer.EthProcess(plaintext, dummy, ready)
54         peer = newPeer(addr, *peerId, 128, new([KeySize]byte))
55         b.ResetTimer()
56         for i := 0; i < b.N; i++ {
57                 if !peer.UDPProcess(ciphertext, dummy, ready) {
58                         b.Fail()
59                 }
60         }
61 }