dnsseeder/dnsseed/setup_test.go

97 lines
2.3 KiB
Go

package dnsseed
import (
"testing"
"time"
"github.com/coredns/caddy"
"github.com/zcashfoundation/dnsseeder/zcash/network"
)
// TestSetup tests the various things that should be parsed by setup.
func TestSetup(t *testing.T) {
tt := []struct {
config string
validConfig bool
magic network.Network
interval time.Duration
bootstrap []string
ttl uint32
}{
{`dnsseed`, false, 0, 0, []string{}, 0},
{`dnsseed mainnet`, false, 0, 0, []string{}, 0},
{`dnsseed { }`, false, 0, 0, []string{}, 0},
{`dnsseed { network }`, false, 0, 0, []string{}, 0},
{`dnsseed { network mainnet }`, true, network.Mainnet, defaultUpdateInterval, []string{}, defaultTTL},
{`dnsseed {
network testnet
crawl_interval 15s
bootstrap_peers
}`,
false, 0, 0, []string{}, 0,
},
{`dnsseed {
network testnet
crawl_interval
bootstrap_peers 127.0.0.1:8233
}`,
false, 0, 0, []string{}, 0,
},
{`dnsseed {
network testnet
crawl_interval 15s
bootstrap_peers 127.0.0.1:8233
}`,
true, network.Testnet, time.Duration(15) * time.Second, []string{"127.0.0.1:8233"}, defaultTTL,
},
{`dnsseed {
network testnet
crawl_interval 15s
bootstrap_peers 127.0.0.1:8233
boop snoot every 15s
}`,
false, 0, 0, []string{}, 0,
},
{`dnsseed {
network mainnet
crawl_interval 30m
bootstrap_peers 127.0.0.1:8233 127.0.0.2:8233
record_ttl 300
}`,
true, network.Mainnet, time.Duration(30) * time.Minute, []string{"127.0.0.1:8233", "127.0.0.2:8233"}, 300,
},
}
for _, test := range tt {
c := caddy.NewTestController("dns", test.config)
opts, err := parseConfig(c)
if (err == nil) != test.validConfig {
t.Errorf("Unexpected error in test case `%s`: %v", test.config, err)
t.FailNow()
}
if err != nil && !test.validConfig {
// bad parse, as expected
continue
}
if opts.networkMagic != test.magic {
t.Errorf("Input: %s wrong network magic", test.config)
}
if opts.updateInterval != test.interval {
t.Errorf("Input: %s wrong update interval", test.config)
}
for i, s := range opts.bootstrapPeers {
if s != test.bootstrap[i] {
t.Errorf("Input: %s wrong bootstrap peer", test.config)
}
}
if opts.recordTTL != test.ttl {
t.Errorf("Input: %s wrong TTL", test.config)
}
}
}