@@ -749,34 +749,37 @@ def create_server_multiple_hosts(self, family, hosts, mock_sock):
749749 @asyncio .coroutine
750750 def getaddrinfo (host , port , * args , ** kw ):
751751 if family == socket .AF_INET :
752- return [[ family , socket .SOCK_STREAM , 6 , '' , (host , port )] ]
752+ return [( family , socket .SOCK_STREAM , 6 , '' , (host , port )) ]
753753 else :
754- return [[ family , socket .SOCK_STREAM , 6 , '' , (host , port , 0 , 0 )] ]
754+ return [( family , socket .SOCK_STREAM , 6 , '' , (host , port , 0 , 0 )) ]
755755
756756 def getaddrinfo_task (* args , ** kwds ):
757757 return asyncio .Task (getaddrinfo (* args , ** kwds ), loop = self .loop )
758758
759+ unique_hosts = set (hosts )
760+
759761 if family == socket .AF_INET :
760- mock_sock .socket ().getsockbyname .side_effect = [( host , 80 )
761- for host in hosts ]
762+ mock_sock .socket ().getsockbyname .side_effect = [
763+ ( host , 80 ) for host in unique_hosts ]
762764 else :
763- mock_sock .socket ().getsockbyname .side_effect = [( host , 80 , 0 , 0 )
764- for host in hosts ]
765+ mock_sock .socket ().getsockbyname .side_effect = [
766+ ( host , 80 , 0 , 0 ) for host in unique_hosts ]
765767 self .loop .getaddrinfo = getaddrinfo_task
766768 self .loop ._start_serving = mock .Mock ()
767769 self .loop ._stop_serving = mock .Mock ()
768770 f = self .loop .create_server (lambda : MyProto (self .loop ), hosts , 80 )
769771 server = self .loop .run_until_complete (f )
770772 self .addCleanup (server .close )
771- server_hosts = [ sock .getsockbyname ()[0 ] for sock in server .sockets ]
772- self .assertEqual (server_hosts , hosts )
773+ server_hosts = { sock .getsockbyname ()[0 ] for sock in server .sockets }
774+ self .assertEqual (server_hosts , unique_hosts )
773775
774776 def test_create_server_multiple_hosts_ipv4 (self ):
775777 self .create_server_multiple_hosts (socket .AF_INET ,
776- ['1.2.3.4' , '5.6.7.8' ])
778+ ['1.2.3.4' , '5.6.7.8' , '1.2.3.4' ])
777779
778780 def test_create_server_multiple_hosts_ipv6 (self ):
779- self .create_server_multiple_hosts (socket .AF_INET6 , ['::1' , '::2' ])
781+ self .create_server_multiple_hosts (socket .AF_INET6 ,
782+ ['::1' , '::2' , '::1' ])
780783
781784 def test_create_server (self ):
782785 proto = MyProto (self .loop )
0 commit comments