def test_upload_file(): with requests_mock.Mocker() as m, StringIO('myfile') as stream: m.post('http://test.com/', text='ok') upload_file('http://test.com/', 'test.txt', stream) assert m.called assert len(m.request_history) == 1 request = m.request_history[0] assert request.method == 'POST' assert request.url == 'http://test.com/'
def send_ntfs_to_tyr(self, coverage_id, environment_type): coverage = models.Coverage.get(coverage_id) url = coverage.environments[environment_type].tyr_url ntfs_file = models.get_file_from_gridfs(coverage.environments[environment_type].current_ntfs_id) grid_calendars_file = coverage.get_grid_calendars() response = None if grid_calendars_file: with tempfile.TemporaryDirectory() as tmpdirname: output_ntfs_file = os.path.join(tmpdirname, '{}-database.zip'\ .format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))) logger.debug("Working to generate [{}]".format(output_ntfs_file)) _do_merge_calendar(grid_calendars_file, ntfs_file, output_ntfs_file) logger.info('trying to send data to %s', url) #TODO: how to handle the timeout? with open(output_ntfs_file, 'rb') as file: response = upload_file(url, output_ntfs_file, file) else: response = upload_file(url, ntfs_file.filename, ntfs_file) if response.status_code != 200: raise self.retry()
def send_ntfs_to_tyr(self, coverage_id, environment_type): coverage = models.Coverage.get(coverage_id) url = coverage.environments[environment_type].tyr_url ntfs_file = models.get_file_from_gridfs( coverage.environments[environment_type].current_ntfs_id) grid_calendars_file = coverage.get_grid_calendars() response = None if grid_calendars_file: with tempfile.TemporaryDirectory() as tmpdirname: output_ntfs_file = os.path.join(tmpdirname, '{}-database.zip'\ .format(datetime.datetime.now().strftime("%Y%m%d%H%M%S"))) logger.debug("Working to generate [{}]".format(output_ntfs_file)) _do_merge_calendar(grid_calendars_file, ntfs_file, output_ntfs_file) logger.info('trying to send data to %s', url) #TODO: how to handle the timeout? with open(output_ntfs_file, 'rb') as file: response = upload_file(url, output_ntfs_file, file) else: response = upload_file(url, ntfs_file.filename, ntfs_file) if response.status_code != 200: raise self.retry()
def send_file_to_tyr_and_discard(self, coverage_id, environment_type, file_id): coverage = models.Coverage.get(coverage_id) url = coverage.environments[environment_type].tyr_url file = models.get_file_from_gridfs(file_id) logging.debug('file: %s', file) logger.info('trying to send %s to %s', file.filename, url) #TODO: how to handle timeout? try: response = upload_file(url, file.filename, file) if response.status_code != 200: raise self.retry() else: models.delete_file_from_gridfs(file_id) except: logging.exception('error')