1- import pytest
2- from unittest .mock import patch
31import socket
2+ from unittest .mock import patch
3+
4+ import pytest
45
5- from alluxiofs .client .loadbalance import (
6- WorkerNetAddress ,
7- WorkerListLoadBalancer ,
8- DNSLoadBalancer ,
9- )
106from alluxiofs .client .config import AlluxioClientConfig
11- from alluxiofs .client .const import ALLUXIO_WORKER_HTTP_SERVER_PORT_DEFAULT_VALUE
7+ from alluxiofs .client .const import (
8+ ALLUXIO_WORKER_HTTP_SERVER_PORT_DEFAULT_VALUE ,
9+ )
10+ from alluxiofs .client .loadbalance import DNSLoadBalancer
11+ from alluxiofs .client .loadbalance import WorkerListLoadBalancer
12+ from alluxiofs .client .loadbalance import WorkerNetAddress
13+
1214
1315class TestWorkerNetAddress :
1416 def test_init_defaults (self ):
1517 addr = WorkerNetAddress ()
1618 assert addr .host == "localhost"
17- assert addr .http_server_port == ALLUXIO_WORKER_HTTP_SERVER_PORT_DEFAULT_VALUE
19+ assert (
20+ addr .http_server_port
21+ == ALLUXIO_WORKER_HTTP_SERVER_PORT_DEFAULT_VALUE
22+ )
1823
1924 def test_from_host_and_port (self ):
2025 addr = WorkerNetAddress .from_host_and_port ("worker1" , 12345 )
@@ -24,7 +29,10 @@ def test_from_host_and_port(self):
2429 def test_from_host (self ):
2530 addr = WorkerNetAddress .from_host ("worker1" )
2631 assert addr .host == "worker1"
27- assert addr .http_server_port == ALLUXIO_WORKER_HTTP_SERVER_PORT_DEFAULT_VALUE
32+ assert (
33+ addr .http_server_port
34+ == ALLUXIO_WORKER_HTTP_SERVER_PORT_DEFAULT_VALUE
35+ )
2836
2937 def test_from_dict (self ):
3038 d = {"host" : "worker1" , "http_server_port" : 12345 }
@@ -37,34 +45,45 @@ def test_to_dict(self):
3745 d = WorkerNetAddress .to_dict (addr )
3846 assert d == {"host" : "worker1" , "http_server_port" : 12345 }
3947
48+
4049class TestWorkerListLoadBalancer :
4150 def test_init_hosts_only (self ):
42- config = AlluxioClientConfig (worker_hosts = "worker1,worker2" , worker_http_port = 29999 )
51+ config = AlluxioClientConfig (
52+ worker_hosts = "worker1,worker2" , worker_http_port = 29999
53+ )
4354 lb = WorkerListLoadBalancer (config )
4455 assert lb .workers == ["worker1" , "worker2" ]
4556 assert lb .ports == [29999 , 29999 ]
4657
4758 def test_init_hosts_with_ports (self ):
48- config = AlluxioClientConfig (worker_hosts = "worker1:10001,worker2:10002" )
59+ config = AlluxioClientConfig (
60+ worker_hosts = "worker1:10001,worker2:10002"
61+ )
4962 lb = WorkerListLoadBalancer (config )
5063 assert lb .workers == ["worker1" , "worker2" ]
5164 assert lb .ports == [10001 , 10002 ]
5265
5366 def test_init_mixed (self ):
54- config = AlluxioClientConfig (worker_hosts = "worker1,worker2:10002" , worker_http_port = 29999 )
67+ config = AlluxioClientConfig (
68+ worker_hosts = "worker1,worker2:10002" , worker_http_port = 29999
69+ )
5570 lb = WorkerListLoadBalancer (config )
5671 assert lb .workers == ["worker1" , "worker2" ]
5772 assert lb .ports == [29999 , 10002 ]
5873
5974 def test_get_worker_random (self ):
60- config = AlluxioClientConfig (worker_hosts = "worker1" , worker_http_port = 29999 )
75+ config = AlluxioClientConfig (
76+ worker_hosts = "worker1" , worker_http_port = 29999
77+ )
6178 lb = WorkerListLoadBalancer (config )
6279 worker = lb .get_worker ()
6380 assert worker .host == "worker1"
6481 assert worker .http_server_port == 29999
6582
6683 def test_get_worker_hash (self ):
67- config = AlluxioClientConfig (worker_hosts = "worker1,worker2" , worker_http_port = 29999 )
84+ config = AlluxioClientConfig (
85+ worker_hosts = "worker1,worker2" , worker_http_port = 29999
86+ )
6887 lb = WorkerListLoadBalancer (config )
6988 path = "test_path"
7089 worker1 = lb .get_worker (path )
@@ -73,25 +92,30 @@ def test_get_worker_hash(self):
7392 assert worker1 .host in ["worker1" , "worker2" ]
7493
7594 def test_get_multiple_worker (self ):
76- config = AlluxioClientConfig (worker_hosts = "worker1,worker2,worker3" , worker_http_port = 29999 )
95+ config = AlluxioClientConfig (
96+ worker_hosts = "worker1,worker2,worker3" , worker_http_port = 29999
97+ )
7798 lb = WorkerListLoadBalancer (config )
7899 workers = lb .get_multiple_worker ("test_path" , 2 )
79100 assert len (workers ) == 2
80101 assert workers [0 ] != workers [1 ]
81102 assert workers [0 ].host in ["worker1" , "worker2" , "worker3" ]
82103 assert workers [1 ].host in ["worker1" , "worker2" , "worker3" ]
83104
105+
84106class TestDNSLoadBalancer :
85107 @patch ("socket.getaddrinfo" )
86108 def test_resolve_address_success (self , mock_getaddrinfo ):
87109 mock_getaddrinfo .return_value = [
88- (socket .AF_INET , socket .SOCK_STREAM , 6 , '' , (' 192.168.1.1' , 80 ))
110+ (socket .AF_INET , socket .SOCK_STREAM , 6 , "" , (" 192.168.1.1" , 80 ))
89111 ]
90112 config = AlluxioClientConfig (load_balance_domain = "example.com" )
91113 lb = DNSLoadBalancer (config )
92114 ip = lb .resolve_address ()
93115 assert ip == "192.168.1.1"
94- mock_getaddrinfo .assert_called_with ("example.com" , None , family = socket .AF_INET )
116+ mock_getaddrinfo .assert_called_with (
117+ "example.com" , None , family = socket .AF_INET
118+ )
95119
96120 @patch ("socket.getaddrinfo" )
97121 def test_resolve_address_no_address (self , mock_getaddrinfo ):
@@ -112,7 +136,9 @@ def test_resolve_address_gaierror(self, mock_getaddrinfo):
112136 @patch ("alluxiofs.client.loadbalance.DNSLoadBalancer.resolve_address" )
113137 def test_get_worker (self , mock_resolve ):
114138 mock_resolve .return_value = "192.168.1.1"
115- config = AlluxioClientConfig (load_balance_domain = "example.com" , worker_http_port = 29999 )
139+ config = AlluxioClientConfig (
140+ load_balance_domain = "example.com" , worker_http_port = 29999
141+ )
116142 lb = DNSLoadBalancer (config )
117143 worker = lb .get_worker ("path" )
118144 assert worker .host == "192.168.1.1"
@@ -121,7 +147,9 @@ def test_get_worker(self, mock_resolve):
121147 @patch ("alluxiofs.client.loadbalance.DNSLoadBalancer.resolve_address" )
122148 def test_get_worker_no_args (self , mock_resolve ):
123149 mock_resolve .return_value = "192.168.1.1"
124- config = AlluxioClientConfig (load_balance_domain = "example.com" , worker_http_port = 29999 )
150+ config = AlluxioClientConfig (
151+ load_balance_domain = "example.com" , worker_http_port = 29999
152+ )
125153 lb = DNSLoadBalancer (config )
126154 worker = lb .get_worker ()
127155 assert worker .host == "192.168.1.1"
@@ -130,7 +158,9 @@ def test_get_worker_no_args(self, mock_resolve):
130158 @patch ("alluxiofs.client.loadbalance.DNSLoadBalancer.resolve_address" )
131159 def test_get_multiple_worker (self , mock_resolve ):
132160 mock_resolve .side_effect = ["192.168.1.1" , "192.168.1.2" ]
133- config = AlluxioClientConfig (load_balance_domain = "example.com" , worker_http_port = 29999 )
161+ config = AlluxioClientConfig (
162+ load_balance_domain = "example.com" , worker_http_port = 29999
163+ )
134164 lb = DNSLoadBalancer (config )
135165 workers = lb .get_multiple_worker ("path" , 2 )
136166 assert len (workers ) == 2
0 commit comments