88 from unittest .mock import patch , call , MagicMock
99
1010
11- TEST_PROTOCOL_1 = [
11+ TEST_PROTOCOL_1_READ_UNTIL = [
1212 b'VERSION 1.4.14' ,
13- b'CONFIG cluster 0 138\r \n 1\n host|ip|port host||port\n \r \n END\r \n ' ,
1413]
1514
16- TEST_PROTOCOL_2 = [
15+ TEST_PROTOCOL_1_EXPECT = [
16+ (0 , None , b'CONFIG cluster 0 138\r \n 1\n host|ip|port host||port\n \r \n END\r \n ' ), # NOQA
17+ ]
18+
19+ TEST_PROTOCOL_2_READ_UNTIL = [
1720 b'VERSION 1.4.13' ,
18- b'CONFIG cluster 0 138\r \n 1\n host|ip|port host||port\n \r \n END\r \n ' ,
1921]
2022
21- TEST_PROTOCOL_3 = [
23+ TEST_PROTOCOL_2_EXPECT = [
24+ (0 , None , b'CONFIG cluster 0 138\r \n 1\n host|ip|port host||port\n \r \n END\r \n ' ), # NOQA
25+ ]
26+
27+ TEST_PROTOCOL_3_READ_UNTIL = [
2228 b'VERSION 1.4.14 (Ubuntu)' ,
23- b'CONFIG cluster 0 138\r \n 1\n host|ip|port host||port\n \r \n END\r \n ' ,
29+ ]
30+
31+ TEST_PROTOCOL_3_EXPECT = [
32+ (0 , None , b'CONFIG cluster 0 138\r \n 1\n host|ip|port host||port\n \r \n END\r \n ' ), # NOQA
33+ ]
34+
35+ TEST_PROTOCOL_4_READ_UNTIL = [
36+ b'VERSION 1.4.34' ,
37+ ]
38+
39+ TEST_PROTOCOL_4_EXPECT = [
40+ (0 , None , b'ERROR\r \n ' ),
2441]
2542
2643
2744@patch ('django_elasticache.cluster_utils.Telnet' )
2845def test_happy_path (Telnet ):
2946 client = Telnet .return_value
30- client .read_until .side_effect = TEST_PROTOCOL_1
47+ client .read_until .side_effect = TEST_PROTOCOL_1_READ_UNTIL
48+ client .expect .side_effect = TEST_PROTOCOL_1_EXPECT
3149 info = get_cluster_info ('' , 0 )
3250 eq_ (info ['version' ], 1 )
3351 eq_ (info ['nodes' ], ['ip:port' , 'host:port' ])
@@ -42,7 +60,8 @@ def test_bad_protocol():
4260@patch ('django_elasticache.cluster_utils.Telnet' )
4361def test_last_versions (Telnet ):
4462 client = Telnet .return_value
45- client .read_until .side_effect = TEST_PROTOCOL_1
63+ client .read_until .side_effect = TEST_PROTOCOL_1_READ_UNTIL
64+ client .expect .side_effect = TEST_PROTOCOL_1_EXPECT
4665 get_cluster_info ('' , 0 )
4766 client .write .assert_has_calls ([
4867 call (b'version\n ' ),
@@ -53,7 +72,8 @@ def test_last_versions(Telnet):
5372@patch ('django_elasticache.cluster_utils.Telnet' )
5473def test_prev_versions (Telnet ):
5574 client = Telnet .return_value
56- client .read_until .side_effect = TEST_PROTOCOL_2
75+ client .read_until .side_effect = TEST_PROTOCOL_2_READ_UNTIL
76+ client .expect .side_effect = TEST_PROTOCOL_2_EXPECT
5777 get_cluster_info ('' , 0 )
5878 client .write .assert_has_calls ([
5979 call (b'version\n ' ),
@@ -64,7 +84,8 @@ def test_prev_versions(Telnet):
6484@patch ('django_elasticache.cluster_utils.Telnet' )
6585def test_ubuntu_protocol (Telnet ):
6686 client = Telnet .return_value
67- client .read_until .side_effect = TEST_PROTOCOL_3
87+ client .read_until .side_effect = TEST_PROTOCOL_3_READ_UNTIL
88+ client .expect .side_effect = TEST_PROTOCOL_3_EXPECT
6889
6990 try :
7091 get_cluster_info ('' , 0 )
@@ -75,3 +96,30 @@ def test_ubuntu_protocol(Telnet):
7596 call (b'version\n ' ),
7697 call (b'config get cluster\n ' ),
7798 ])
99+
100+
101+ @patch ('django_elasticache.cluster_utils.Telnet' )
102+ def test_no_configuration_protocol_support_with_errors_ignored (Telnet ):
103+ client = Telnet .return_value
104+ client .read_until .side_effect = TEST_PROTOCOL_4_READ_UNTIL
105+ client .expect .side_effect = TEST_PROTOCOL_4_EXPECT
106+ info = get_cluster_info ('test' , 0 , ignore_cluster_errors = True )
107+ client .write .assert_has_calls ([
108+ call (b'version\n ' ),
109+ call (b'config get cluster\n ' ),
110+ ])
111+ eq_ (info ['version' ], '1.4.34' )
112+ eq_ (info ['nodes' ], ['test:0' ])
113+
114+
115+ @raises (WrongProtocolData )
116+ @patch ('django_elasticache.cluster_utils.Telnet' )
117+ def test_no_configuration_protocol_support_with_errors (Telnet ):
118+ client = Telnet .return_value
119+ client .read_until .side_effect = TEST_PROTOCOL_4_READ_UNTIL
120+ client .expect .side_effect = TEST_PROTOCOL_4_EXPECT
121+ get_cluster_info ('test' , 0 , ignore_cluster_errors = False )
122+ client .write .assert_has_calls ([
123+ call (b'version\n ' ),
124+ call (b'config get cluster\n ' ),
125+ ])
0 commit comments