def test_empty_config(self, mock_out, mock_err): schema({}) output = mock_out.getvalue() self.assertEqual([ 'consul', 'etcd', 'exhibitor', 'kubernetes', 'name', 'postgresql', 'restapi', 'scope', 'zookeeper' ], parse_output(output))
def test_pg_wal_doesnt_exist(self, mock_out, mock_err): directories.append(config["postgresql"]["data_dir"]) directories.append(config["postgresql"]["bin_dir"]) files.append(os.path.join(config["postgresql"]["data_dir"], "global", "pg_control")) files.append(os.path.join(config["postgresql"]["data_dir"], "PG_VERSION")) c = copy.deepcopy(config) del c["postgresql"]["bin_dir"] with patch('patroni.validator.open', mock_open(read_data='11')): schema(c) output = mock_out.getvalue() self.assertEqual(['postgresql.data_dir'], parse_output(output))
def test_bin_dir_is_file(self, mock_out, mock_err): files.append(config["postgresql"]["data_dir"]) files.append(config["postgresql"]["bin_dir"]) c = copy.deepcopy(config) c["restapi"]["connect_address"] = 'False:blabla' c["etcd"]["hosts"] = ["127.0.0.1:2379", "1244.0.0.1:2379", "127.0.0.1:invalidport"] c["kubernetes"]["pod_ip"] = "127.0.0.1111" schema(c) output = mock_out.getvalue() self.assertEqual(['etcd.hosts.1', 'etcd.hosts.2', 'kubernetes.pod_ip', 'postgresql.bin_dir', 'postgresql.data_dir', 'restapi.connect_address'], parse_output(output))
def test_data_dir_is_empty_string(self, mock_out, mock_err): directories.append(config["postgresql"]["data_dir"]) directories.append(config["postgresql"]["bin_dir"]) c = copy.deepcopy(config) c["kubernetes"] = False c["postgresql"]["pg_hba"] = "" c["postgresql"]["data_dir"] = "" c["postgresql"]["bin_dir"] = "" schema(c) output = mock_out.getvalue() self.assertEqual(['kubernetes', 'postgresql.bin_dir', 'postgresql.data_dir', 'postgresql.pg_hba'], parse_output(output))
def test_bin_dir_is_empty(self, mock_out, mock_err): directories.append(config["postgresql"]["data_dir"]) directories.append(config["postgresql"]["bin_dir"]) files.append(os.path.join(config["postgresql"]["data_dir"], "global", "pg_control")) c = copy.deepcopy(config) c["restapi"]["connect_address"] = "127.0.0.1:8008" c["kubernetes"]["pod_ip"] = "::1" c["consul"]["host"] = "127.0.0.1:50000" c["etcd"]["host"] = "127.0.0.1:237" c["postgresql"]["listen"] = "127.0.0.1:5432" with patch('patroni.validator.open', mock_open(read_data='9')): schema(c) output = mock_out.getvalue() self.assertEqual(['consul.host', 'etcd.host', 'postgresql.bin_dir', 'postgresql.data_dir', 'postgresql.listen', 'restapi.connect_address'], parse_output(output))
def test_data_dir_contains_pg_version(self, mock_out, mock_err): directories.append(config["postgresql"]["data_dir"]) directories.append(config["postgresql"]["bin_dir"]) directories.append(os.path.join(config["postgresql"]["data_dir"], "pg_wal")) files.append(os.path.join(config["postgresql"]["data_dir"], "global", "pg_control")) files.append(os.path.join(config["postgresql"]["data_dir"], "PG_VERSION")) files.append(os.path.join(config["postgresql"]["bin_dir"], "pg_ctl")) files.append(os.path.join(config["postgresql"]["bin_dir"], "initdb")) files.append(os.path.join(config["postgresql"]["bin_dir"], "pg_controldata")) files.append(os.path.join(config["postgresql"]["bin_dir"], "pg_basebackup")) files.append(os.path.join(config["postgresql"]["bin_dir"], "postgres")) files.append(os.path.join(config["postgresql"]["bin_dir"], "pg_isready")) with patch('patroni.validator.open', mock_open(read_data='12')): schema(config) output = mock_out.getvalue() self.assertEqual([], parse_output(output))
def test_pg_version_missmatch(self, mock_out, mock_err): directories.append(config["postgresql"]["data_dir"]) directories.append(config["postgresql"]["bin_dir"]) directories.append( os.path.join(config["postgresql"]["data_dir"], "pg_wal")) files.append( os.path.join(config["postgresql"]["data_dir"], "global", "pg_control")) files.append( os.path.join(config["postgresql"]["data_dir"], "PG_VERSION")) c = copy.deepcopy(config) c["etcd"]["hosts"] = [] del c["postgresql"]["bin_dir"] with patch('patroni.validator.open', mock_open(read_data='11')): schema(c) output = mock_out.getvalue() self.assertEqual([ 'etcd.hosts', 'postgresql.data_dir', 'raft.bind_addr', 'raft.self_addr' ], parse_output(output))
def test_data_dir_is_empty_string(self, mock_out, mock_err): directories.append(config["postgresql"]["data_dir"]) directories.append(config["postgresql"]["bin_dir"]) c = copy.deepcopy(config) c["kubernetes"] = False c["postgresql"]["pg_hba"] = "" c["postgresql"]["data_dir"] = "" c["postgresql"]["bin_dir"] = "" errors = schema(c) output = "\n".join(errors) self.assertEqual([ 'kubernetes', 'postgresql.bin_dir', 'postgresql.data_dir', 'postgresql.pg_hba', 'raft.bind_addr', 'raft.self_addr' ], parse_output(output))
def test_complete_config(self, mock_out, mock_err): schema(config) output = mock_out.getvalue() self.assertEqual( ['postgresql.bin_dir', 'raft.bind_addr', 'raft.self_addr'], parse_output(output))
def test_empty_config(self, mock_out, mock_err): schema({}) output = mock_out.getvalue() expected = list( sorted(['name', 'postgresql', 'restapi', 'scope'] + available_dcs)) self.assertEqual(expected, parse_output(output))
def test_complete_config(self, mock_out, mock_err): errors = schema(config) output = "\n".join(errors) self.assertEqual( ['postgresql.bin_dir', 'raft.bind_addr', 'raft.self_addr'], parse_output(output))