OSDN Git Service

versoin1.1.9 (#594)
[bytom/vapor.git] / p2p / discover / dht / dns_seeds_test.go
1 package dht
2
3 import (
4         "reflect"
5         "testing"
6
7         "github.com/davecgh/go-spew/spew"
8         "github.com/bytom/vapor/consensus"
9 )
10
11 var testnetAddr = []string{"1.2.3.4", "5.6.7.8"}
12 var mainnetAddr = []string{"11.22.33.44", "55.66.77.88"}
13 var errAddr = []string{"a.b.ab.abc", "55.66.77.88"}
14
15 func lookupHostNormal(host string) ([]string, error) {
16         switch host {
17         case consensus.MainNetParams.DNSSeeds[0]:
18                 return mainnetAddr, nil
19         case consensus.TestNetParams.DNSSeeds[0]:
20                 return testnetAddr, nil
21         }
22         return nil, nil
23 }
24
25 func lookupHostErrIP(host string) ([]string, error) {
26         return errAddr, nil
27 }
28
29 func TestQueryDNSSeeds(t *testing.T) {
30         testCases := []struct {
31                 chainID    string
32                 lookupHost func(host string) (addrs []string, err error)
33                 wantErr    error
34                 wantAddr   []string
35         }{
36                 {
37                         chainID:    "testnet",
38                         lookupHost: lookupHostNormal,
39                         wantErr:    nil,
40                         wantAddr:   []string{"1.2.3.4:56657", "5.6.7.8:56657"},
41                 },
42                 {
43                         chainID:    "mainnet",
44                         lookupHost: lookupHostNormal,
45                         wantErr:    nil,
46                         wantAddr:   []string{"11.22.33.44:56656", "55.66.77.88:56656"},
47                 },
48                 {
49                         chainID:    "solonet",
50                         lookupHost: lookupHostNormal,
51                         wantErr:    errDNSSeedsEmpty,
52                         wantAddr:   nil,
53                 },
54                 {
55                         chainID:    "testnet",
56                         lookupHost: lookupHostErrIP,
57                         wantErr:    errDNSTimeout,
58                         wantAddr:   nil,
59                 },
60         }
61
62         for i, tc := range testCases {
63                 consensus.ActiveNetParams = consensus.NetParams[tc.chainID]
64                 addresses, err := QueryDNSSeeds(tc.lookupHost)
65                 if err != tc.wantErr {
66                         t.Fatalf("test %d: error mismatch for query dns seed got %q want %q", i, err, tc.wantErr)
67                 }
68
69                 if !reflect.DeepEqual(addresses, tc.wantAddr) {
70                         t.Fatalf("test %d: result mismatch for query dns seed got %s want %s", i, spew.Sdump(addresses), spew.Sdump(tc.wantAddr))
71                 }
72         }
73 }