]> Cypherpunks.ru repositories - govpn.git/blob - transport_test.go
2a56750dfce6a87a91856e8615fb0270bd003c2e
[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         addr, _ = net.ResolveUDPAddr("udp", "[::1]:1")
21         peerId = IDDecode("ffffffffffffffffffffffffffffffff")
22         peer = newPeer(addr, *peerId, 128, new([KeySize]byte))
23         plaintext = make([]byte, 789)
24         ready = make(chan struct{})
25         go func() {
26                 for {
27                         <-ready
28                 }
29         }()
30 }
31
32 type Dummy struct{}
33
34 func (d *Dummy) WriteTo(b []byte, addr net.Addr) (int, error) {
35         ciphertext = b
36         return len(b), nil
37 }
38
39 func (d *Dummy) Write(p []byte) (n int, err error) {
40         return len(p), nil
41 }
42
43 func BenchmarkEnc(b *testing.B) {
44         b.ResetTimer()
45         for i := 0; i < b.N; i++ {
46                 peer.NonceOur = 128
47                 peer.EthProcess(plaintext, dummy, ready)
48         }
49 }
50
51 func BenchmarkDec(b *testing.B) {
52         peer.EthProcess(plaintext, dummy, ready)
53         peer = newPeer(addr, *peerId, 128, new([KeySize]byte))
54         b.ResetTimer()
55         for i := 0; i < b.N; i++ {
56                 if !peer.UDPProcess(ciphertext, dummy, ready) {
57                         b.Fail()
58                 }
59         }
60 }