agent: make dns randomization test more reliable

This commit is contained in:
Ryan Uber 2015-01-12 16:05:41 -08:00
parent 3cba4df127
commit b2fbaea18c
1 changed files with 12 additions and 6 deletions

View File

@ -1001,10 +1001,11 @@ func TestDNS_ServiceLookup_Randomize(t *testing.T) {
} }
} }
// Ensure the response is randomized each time // Ensure the response is randomized each time.
loops := 5
uniques := map[string]struct{}{} uniques := map[string]struct{}{}
addr, _ := srv.agent.config.ClientListener("", srv.agent.config.Ports.DNS) addr, _ := srv.agent.config.ClientListener("", srv.agent.config.Ports.DNS)
for i := 0; i < 5; i++ { for i := 0; i < loops; i++ {
m := new(dns.Msg) m := new(dns.Msg)
m.SetQuestion("web.service.consul.", dns.TypeANY) m.SetQuestion("web.service.consul.", dns.TypeANY)
@ -1032,12 +1033,17 @@ func TestDNS_ServiceLookup_Randomize(t *testing.T) {
} }
nameS := strings.Join(names, "|") nameS := strings.Join(names, "|")
// Check if unique // Tally the results
if _, ok := uniques[nameS]; ok {
t.Fatalf("non-unique response: %v", nameS)
}
uniques[nameS] = struct{}{} uniques[nameS] = struct{}{}
} }
// Give some wiggle room. Since the responses are randomized and there
// is a finite number of combinations, requiring 0 duplicates every
// test run eventually gives us failures.
if len(uniques) < (loops - 1) {
t.Fatalf("unique response ratio too low: %d/%d\n%v",
len(uniques), loops, uniques)
}
} }
func TestDNS_ServiceLookup_CNAME(t *testing.T) { func TestDNS_ServiceLookup_CNAME(t *testing.T) {