def test_job_load(self): connHandler = DummyConnHandlerCadc() job = JobCadc(async_job=True, query='query', connhandler=connHandler) jobid = 1234 job.jobid = str(jobid) job.parameters['format'] = 'csv' # Job Phase response jobPhase = DummyResponse() jobPhase.set_status_code(200) jobPhase.set_message("OK") jobPhase.set_data(method='GET', context=None, body="ERROR", headers=None) req = "async/" + str(jobid) + "/phase" connHandler.set_response(req, jobPhase) # Error response error = DummyResponse() error.set_status_code(200) error.set_message("OK") jobDataPath = data_path('test_jobs_async.xml') jobData = utils.read_file_content(jobDataPath) error.set_data(method='GET', context=None, body=jobData, headers=None) req = "async/" + str(jobid) connHandler.set_response(req, error) with pytest.raises(Exception): job.get_results()
def run_query(self, query, operation, output_file=None, output_format="votable", verbose=False, background=False, upload_resource=None, upload_table_name=None): """ Runs a query Parameters ---------- query : str, mandatory query to be executed operation : str, mandatory, 'sync' or 'async' to run a synchronous or asynchronous job output_file : str, optional, default None file name where the results are saved if dumpToFile is True. If this parameter is not provided, the jobid is used instead output_format : str, optional, default 'votable' results format, 'csv', 'tsv' and 'votable' verbose : bool, optional, default 'False' flag to display information about the process save_to_file : bool, optional, default 'False' if True, the results are saved in a file instead of using memory background : bool, optional, default 'False' when the job is executed in asynchronous mode, this flag specifies whether the execution will wait until results are available upload_resource: str, optional, default None resource to be uploaded to UPLOAD_SCHEMA upload_table_name: str, required if uploadResource is provided, default None resource temporary table name associated to the uploaded resource Returns ------- A Job object """ if output_file is not None: save_to_file = True else: save_to_file = False if operation == 'sync': job = self.__cadctap.launch_job( query, None, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=save_to_file, upload_resource=upload_resource, upload_table_name=upload_table_name) op = False elif operation == 'async': job = self.__cadctap.launch_job_async( query, None, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=save_to_file, background=True, upload_resource=upload_resource, upload_table_name=upload_table_name) op = True cjob = JobCadc(async_job=op, query=job.parameters['query'], connhandler=self.__cadctap._TapPlus__getconnhandler()) cjob.jobid = job.jobid cjob.outputFile = job.outputFile cjob.set_response_status(job._Job__responseStatus, job._Job__responseMsg) cjob.remoteLocation = job.remoteLocation cjob.parameters['format'] = job.parameters['format'] cjob._phase = job._phase if operation == 'async': if save_to_file: cjob.save_results(output_file, verbose) else: cjob.get_results() else: if job.results is not None: cjob.set_results(job.results) return cjob
def run_query(self, query, operation, output_file=None, output_format="votable", verbose=False, background=False, upload_resource=None, upload_table_name=None): """ Runs a query Parameters ---------- query : str, mandatory query to be executed operation : str, mandatory, 'sync' or 'async' to run a synchronous or asynchronous job output_file : str, optional, default None file name where the results are saved if dumpToFile is True. If this parameter is not provided, the jobid is used instead output_format : str, optional, default 'votable' results format, 'csv', 'tsv' and 'votable' verbose : bool, optional, default 'False' flag to display information about the process save_to_file : bool, optional, default 'False' if True, the results are saved in a file instead of using memory background : bool, optional, default 'False' when the job is executed in asynchronous mode, this flag specifies whether the execution will wait until results are available upload_resource: str, optional, default None resource to be uploaded to UPLOAD_SCHEMA upload_table_name: str, required if uploadResource is provided, default None resource temporary table name associated to the uploaded resource Returns ------- A Job object """ if output_file is not None: save_to_file = True else: save_to_file = False if operation == 'sync': job = self._cadctap.launch_job(query, None, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=save_to_file, upload_resource=upload_resource, upload_table_name=upload_table_name) op = False elif operation == 'async': job = self._cadctap.launch_job_async( query, None, output_file=output_file, output_format=output_format, verbose=verbose, dump_to_file=save_to_file, background=True, upload_resource=upload_resource, upload_table_name=upload_table_name) op = True cjob = JobCadc(async_job=op, query=job.parameters['query'], connhandler=self._cadctap._TapPlus__getconnhandler()) cjob.jobid = job.jobid cjob.outputFile = job.outputFile cjob.set_response_status(job._Job__responseStatus, job._Job__responseMsg) cjob.remoteLocation = job.remoteLocation cjob.parameters['format'] = job.parameters['format'] cjob._phase = job._phase if operation == 'async': if save_to_file: cjob.save_results(output_file, verbose) else: cjob.get_results() else: if job.results is not None: cjob.set_results(job.results) return cjob