@@ -243,9 +243,12 @@ func TestMain(m *testing.M) {
243243}
244244
245245func TestDNSNoServers (t * testing.T ) {
246- obj := NewTest (time .Hour , NewStaticProvider ([]string {}), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
246+ staticProvider , err := NewStaticProvider ([]string {})
247+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
247248
248- _ , err := obj .LookupHost (context .Background (), "letsencrypt.org" )
249+ obj := NewTest (time .Hour , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
250+
251+ _ , err = obj .LookupHost (context .Background (), "letsencrypt.org" )
249252 test .AssertError (t , err , "No servers" )
250253
251254 _ , err = obj .LookupTXT (context .Background (), "letsencrypt.org" )
@@ -256,26 +259,35 @@ func TestDNSNoServers(t *testing.T) {
256259}
257260
258261func TestDNSOneServer (t * testing.T ) {
259- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
262+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
263+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
264+
265+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
260266
261- _ , err : = obj .LookupHost (context .Background (), "letsencrypt.org" )
267+ _ , err = obj .LookupHost (context .Background (), "letsencrypt.org" )
262268
263269 test .AssertNotError (t , err , "No message" )
264270}
265271
266272func TestDNSDuplicateServers (t * testing.T ) {
267- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr , dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
273+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr , dnsLoopbackAddr })
274+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
268275
269- _ , err := obj .LookupHost (context .Background (), "letsencrypt.org" )
276+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
277+
278+ _ , err = obj .LookupHost (context .Background (), "letsencrypt.org" )
270279
271280 test .AssertNotError (t , err , "No message" )
272281}
273282
274283func TestDNSServFail (t * testing.T ) {
275- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
284+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
285+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
286+
287+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
276288 bad := "servfail.com"
277289
278- _ , err : = obj .LookupTXT (context .Background (), bad )
290+ _ , err = obj .LookupTXT (context .Background (), bad )
279291 test .AssertError (t , err , "LookupTXT didn't return an error" )
280292
281293 _ , err = obj .LookupHost (context .Background (), bad )
@@ -287,7 +299,10 @@ func TestDNSServFail(t *testing.T) {
287299}
288300
289301func TestDNSLookupTXT (t * testing.T ) {
290- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
302+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
303+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
304+
305+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
291306
292307 a , err := obj .LookupTXT (context .Background (), "letsencrypt.org" )
293308 t .Logf ("A: %v" , a )
@@ -301,7 +316,10 @@ func TestDNSLookupTXT(t *testing.T) {
301316}
302317
303318func TestDNSLookupHost (t * testing.T ) {
304- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
319+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
320+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
321+
322+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
305323
306324 ip , err := obj .LookupHost (context .Background (), "servfail.com" )
307325 t .Logf ("servfail.com - IP: %s, Err: %s" , ip , err )
@@ -366,10 +384,13 @@ func TestDNSLookupHost(t *testing.T) {
366384}
367385
368386func TestDNSNXDOMAIN (t * testing.T ) {
369- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
387+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
388+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
389+
390+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
370391
371392 hostname := "nxdomain.letsencrypt.org"
372- _ , err : = obj .LookupHost (context .Background (), hostname )
393+ _ , err = obj .LookupHost (context .Background (), hostname )
373394 expected := & Error {dns .TypeA , hostname , nil , dns .RcodeNameError }
374395 test .AssertDeepEquals (t , err , expected )
375396
@@ -379,7 +400,10 @@ func TestDNSNXDOMAIN(t *testing.T) {
379400}
380401
381402func TestDNSLookupCAA (t * testing.T ) {
382- obj := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
403+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
404+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
405+
406+ obj := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 1 , blog .UseMock ())
383407 removeIDExp := regexp .MustCompile (" id: [[:digit:]]+" )
384408
385409 caas , resp , err := obj .LookupCAA (context .Background (), "bracewel.net" )
@@ -600,10 +624,13 @@ func TestRetry(t *testing.T) {
600624
601625 for i , tc := range tests {
602626 t .Run (tc .name , func (t * testing.T ) {
603- testClient := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), tc .maxTries , blog .UseMock ())
627+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
628+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
629+
630+ testClient := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), tc .maxTries , blog .UseMock ())
604631 dr := testClient .(* impl )
605632 dr .dnsClient = tc .te
606- _ , err : = dr .LookupTXT (context .Background (), "example.com" )
633+ _ , err = dr .LookupTXT (context .Background (), "example.com" )
607634 if err == errTooManyRequests {
608635 t .Errorf ("#%d, sent more requests than the test case handles" , i )
609636 }
@@ -627,12 +654,15 @@ func TestRetry(t *testing.T) {
627654 })
628655 }
629656
630- testClient := NewTest (time .Second * 10 , NewStaticProvider ([]string {dnsLoopbackAddr }), metrics .NoopRegisterer , clock .NewFake (), 3 , blog .UseMock ())
657+ staticProvider , err := NewStaticProvider ([]string {dnsLoopbackAddr })
658+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
659+
660+ testClient := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), 3 , blog .UseMock ())
631661 dr := testClient .(* impl )
632662 dr .dnsClient = & testExchanger {errs : []error {isTempErr , isTempErr , nil }}
633663 ctx , cancel := context .WithCancel (context .Background ())
634664 cancel ()
635- _ , err : = dr .LookupTXT (ctx , "example.com" )
665+ _ , err = dr .LookupTXT (ctx , "example.com" )
636666 if err == nil ||
637667 err .Error () != "DNS problem: query timed out (and was canceled) looking up TXT for example.com" {
638668 t .Errorf ("expected %s, got %s" , context .Canceled , err )
@@ -710,38 +740,51 @@ func (e *rotateFailureExchanger) Exchange(m *dns.Msg, a string) (*dns.Msg, time.
710740func TestRotateServerOnErr (t * testing.T ) {
711741 // Configure three DNS servers
712742 dnsServers := []string {
713- "a" , "b" , "c " ,
743+ "a:53 " , "b:53 " , "[2606:4700:4700::1111]:53 " ,
714744 }
745+
715746 // Set up a DNS client using these servers that will retry queries up to
716747 // a maximum of 5 times. It's important to choose a maxTries value >= the
717748 // number of dnsServers to ensure we always get around to trying the one
718749 // working server
750+ staticProvider , err := NewStaticProvider (dnsServers )
751+ test .AssertNotError (t , err , "Got error creating StaticProvider" )
752+ fmt .Println (staticProvider .servers )
753+
719754 maxTries := 5
720- client := NewTest (time .Second * 10 , NewStaticProvider ( dnsServers ) , metrics .NoopRegisterer , clock .NewFake (), maxTries , blog .UseMock ())
755+ client := NewTest (time .Second * 10 , staticProvider , metrics .NoopRegisterer , clock .NewFake (), maxTries , blog .UseMock ())
721756
722757 // Configure a mock exchanger that will always return a retryable error for
723- // the A and B servers . This will force the C server to do all the work once
724- // retries reach it.
758+ // servers A and B. This will force server "[2606:4700:4700::1111]:53" to do
759+ // all the work once retries reach it.
725760 mock := & rotateFailureExchanger {
726- brokenAddresses : map [string ]bool {"a" : true , "b" : true },
727- lookups : make (map [string ]int ),
761+ brokenAddresses : map [string ]bool {
762+ "a:53" : true ,
763+ "b:53" : true ,
764+ },
765+ lookups : make (map [string ]int ),
728766 }
729767 client .(* impl ).dnsClient = mock
730768
731769 // Perform a bunch of lookups. We choose the initial server randomly. Any time
732770 // A or B is chosen there should be an error and a retry using the next server
733771 // in the list. Since we configured maxTries to be larger than the number of
734772 // servers *all* queries should eventually succeed by being retried against
735- // the C server.
773+ // server "[2606:4700:4700::1111]:53" .
736774 for i := 0 ; i < maxTries * 2 ; i ++ {
737775 _ , err := client .LookupTXT (context .Background (), "example.com" )
738- // Any errors are unexpected - the C server should have responded without error.
776+ // Any errors are unexpected - server "[2606:4700:4700::1111]:53" should
777+ // have responded without error.
739778 test .AssertNotError (t , err , "Expected no error from eventual retry with functional server" )
740779 }
741780
742- // We expect that the A and B servers had a non-zero number of lookups attempted
743- test .Assert (t , mock .lookups ["a" ] > 0 , "Expected A server to have non-zero lookup attempts" )
744- test .Assert (t , mock .lookups ["b" ] > 0 , "Expected B server to have non-zero lookup attempts" )
745- // We expect that the C server eventually served all of the lookups attempted
746- test .AssertEquals (t , mock .lookups ["c" ], maxTries * 2 )
781+ // We expect that the A and B servers had a non-zero number of lookups
782+ // attempted.
783+ test .Assert (t , mock .lookups ["a:53" ] > 0 , "Expected A server to have non-zero lookup attempts" )
784+ test .Assert (t , mock .lookups ["b:53" ] > 0 , "Expected B server to have non-zero lookup attempts" )
785+
786+ // We expect that the server "[2606:4700:4700::1111]:53" eventually served
787+ // all of the lookups attempted.
788+ test .AssertEquals (t , mock .lookups ["[2606:4700:4700::1111]:53" ], maxTries * 2 )
789+
747790}
0 commit comments