def test_multiple_values_for_option(self):
     with self.assertRaisesRegexp(
             ValueError,
             'Multiple values specified for sentinel_socket_timeout'):
         parse_sentinel_url(
             'redis+sentinel://hostname:7000/?sentinel_socket_timeout=0.1&sentinel_socket_timeout=2'
         )
 def test_multiple_hosts(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000,hostname2:7002,hostname3:7003')
     self.assertEqual(parsed.hosts,
                      [('hostname', 7000), ('hostname2', 7002),
                       ('hostname3', 7003)])
     self.assertEqual(parsed.sentinel_options, {})
     self.assertEqual(parsed.client_options, {'db': 0})
     self.assertEqual(parsed.default_client, DefaultClient('master', None))
Exemple #3
0
def get_conn_info(url):
    conn_info = []
    if url.startswith('redis://'):
        urlparts = urlparse(url)
        netloc = urlparts[1].partition(':')
        conn_info = [('Address', netloc[0]), ('Port', (netloc[2] or '6379'))]
    elif url.startswith('redis+sentinel://'):
        result = redis_sentinel_url.parse_sentinel_url(url)
        print(result.hosts)
        conn_info = [('Sentinel Hosts', ','.join(
            ['%s:%s' % (pair[0], pair[1]) for pair in result.hosts])),
                     ('Service', result.default_client.service)]

    return conn_info
Exemple #4
0
def get_master(url):
    if not url.startswith('redis+sentinel://'):
        abort(406, "not supported")
    result = redis_sentinel_url.parse_sentinel_url(url)
    return sentinel.discover_master(result.default_client.service)
 def test_no_value_for_option2(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000/?socket_timeout=')
     self.assertNotIn('sentinel_socket_timeout', parsed.client_options)
 def test_sentinel_socket_timeout(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000/themaster/2?sentinel_socket_timeout=0.1'
     )
     self.assertEqual(parsed.sentinel_options['socket_timeout'], 0.1)
 def test_db_in_query(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000/themaster/2?db=4')
     self.assertEqual(parsed.client_options['db'], 4)
 def test_invalid_client_type(self):
     with self.assertRaises(ValueError):
         parse_sentinel_url(
             'redis+sentinel://hostname:7000/theslave?client_type=whatever')
 def test_slave_service(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000/theslave?client_type=slave')
     self.assertEqual(parsed.default_client,
                      DefaultClient('slave', 'theslave'))
 def test_service_name_in_query(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000/theother?service=themaster')
     self.assertEqual(parsed.default_client,
                      DefaultClient('master', 'themaster'))
 def test_without_port(self):
     parsed = parse_sentinel_url('redis+sentinel://hostname')
     self.assertEqual(parsed.hosts, [('hostname', 26379)])
     self.assertEqual(parsed.sentinel_options, {})
     self.assertEqual(parsed.client_options, {'db': 0})
     self.assertEqual(parsed.default_client, DefaultClient('master', None))
 def test_basic_url(self):
     parsed = parse_sentinel_url('redis+sentinel://hostname:7000')
     self.assertEqual(parsed.hosts, [('hostname', 7000)])
     self.assertEqual(parsed.sentinel_options, {})
     self.assertEqual(parsed.client_options, {'db': 0})
     self.assertEqual(parsed.default_client, DefaultClient('master', None))
 def test_with_password(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://:thesecret@hostname:7000')
     self.assertEquals(parsed.sentinel_options, {})
     self.assertEquals(parsed.client_options['password'], 'thesecret')
 def test_unsupported_scheme(self):
     with self.assertRaisesRegexp(ValueError, 'Unsupported scheme: redis'):
         parse_sentinel_url('redis://hostname:7000/')
 def test_unknown_option(self):
     parsed = parse_sentinel_url(
         'redis+sentinel://hostname:7000/?unknown_option=1')
     self.assertNotIn('unknown_option', parsed.client_options)