def create(self): if self.db_type == 'local': if self.directory is None or self.directory == '': raise ImproperDirectoryError( "Please set a directory for local database") return LocalDatabase(self.directory) elif self.db_type == 'zookeeper': if self.host is None or self.host == '': raise ImproperHostError( "Please provide a ip:port for zookeeper database") return ZookeeperDatabase(self.host, self.namespace, self.timeout, self.ssl) elif self.db_type == 'etcd': if isinstance(self.host, str): hosts = [_format_host_for_etcd(self.host)] elif isinstance(self.host, list): hosts = [_format_host_for_etcd(h) for h in self.host] return EtcdDatabase(hosts, self.timeout, self.api_path, self.ssl) else: raise ImproperDatabaseTypeError( "The agent only support 1)local 2)zookeeper 3)etcd databases")
def test_localdatabase_get_return_nothing_if_file_not_exists( mock_makedirs, mock_path_exists, mock_file): value = LocalDatabase('storage').get(b'key') assert value is None
def test_localdatabase_get_read_from_file(mock_makedirs, mock_path_exists, mock_file): mock_file.return_value.__enter__.return_value.read.return_value = b'value' value = LocalDatabase('storage').get(b'key') mock_file.assert_called_with('storage/key', 'rb') assert value == b'value'
def test_localdatabase_set_write_to_file(mock_makedirs, mock_file): LocalDatabase('storage').set(b'key', b'value') mock_file.assert_called_with('storage/key', 'wb') mock_file.return_value.__enter__.return_value.write.assert_called_with( b'value')
def test_localdatabase_make_directory_for_storing_data(mock_makedirs): LocalDatabase('storage') mock_makedirs.assert_called_with('storage')
def test_localdatabase_enable_to_reuse_db(): LocalDatabase('/tmp/test_wca_db').set(b'key', b'value') assert LocalDatabase('/tmp/test_wca_db').get(b'key') == b'value' os.remove('/tmp/test_wca_db/key') os.rmdir('/tmp/test_wca_db')