def test_run_all_success(self): temp_dir = tempfile.mkdtemp() try: fakeftp = FtpFileTransfer(None) mftp = D3RParameters() fakeftp.set_connection(mftp) fakeftp.set_remote_dir('/foo2') mftp.get = Mock() params = D3RParameters() params.pdbfileurl = 'file://' + temp_dir params.compinchi = 'file://' + temp_dir make_blast = MakeBlastDBTask(temp_dir, params) make_blast.create_dir() open(os.path.join(make_blast.get_dir(), D3RTask.COMPLETE_FILE), 'a').close() task = DataImportTask(temp_dir, params) task.set_file_transfer(fakeftp) task._retrysleep = 0 open(os.path.join(temp_dir, task.NONPOLYMER_TSV), 'a').close() open(os.path.join(temp_dir, task.SEQUENCE_TSV), 'a').close() open(os.path.join(temp_dir, task.OLDSEQUENCE_TSV), 'a').close() open(os.path.join(temp_dir, task.CRYSTALPH_TSV), 'a').close() open(os.path.join(temp_dir, task.COMPINCHI_ICH), 'a').close() task.run() self.assertEquals(task.get_error(), None) # check line count is 1 now which indicates # standard was added self.assertEqual( util.get_file_line_count(task.get_nonpolymer_tsv()), 1) self.assertEqual(util.get_file_line_count(task.get_sequence_tsv()), 1) self.assertEqual( util.get_file_line_count(task.get_oldsequence_tsv()), 1) self.assertEqual( util.get_file_line_count(task.get_crystalph_tsv()), 1) mftp.get.assert_called_with('/foo2/' + DataImportTask.PARTICIPANT_LIST_CSV, local=task.get_participant_list_csv()) finally: shutil.rmtree(temp_dir)
def append_standard_to_files(self): """Appends standard 1FCZ to tsv files as mapped below NONPOLYMER_TSV_STANDARD is appended to `get_nonpolymer_tsv()` CRYSTALPH_TSV_STANDARD is appended to `get_crystalph_tsv()` SEQUENCE_TSV_STANDARD is appended to `get_sequence_tsv()` SEQUENCE_TSV_STANDARD is appended to `get_oldsequence_tsv()` """ logger.debug('Appending 1FCZ standard to tsv files') try: util.append_string_to_file(self.get_nonpolymer_tsv(), DataImportTask.NONPOLYMER_TSV_STANDARD) util.append_string_to_file(self.get_sequence_tsv(), DataImportTask.SEQUENCE_TSV_STANDARD) util.append_string_to_file(self.get_oldsequence_tsv(), DataImportTask.SEQUENCE_TSV_STANDARD) util.append_string_to_file(self.get_crystalph_tsv(), DataImportTask.CRYSTALPH_TSV_STANDARD) self.append_to_email_log('\nAppending 1FCZ standard to tsv' ' files\n') nonpoly_count = util.get_file_line_count(self.get_nonpolymer_tsv()) seq_count = util.get_file_line_count(self.get_sequence_tsv()) crystal_count = util.get_file_line_count(self.get_crystalph_tsv()) inchi_count = util.get_file_line_count( self.get_components_inchi_file()) self.append_to_email_log('Line counts:\n') self.append_to_email_log( str(inchi_count) + ' ' + DataImportTask.COMPINCHI_ICH + '\n') self.append_to_email_log( str(nonpoly_count) + ' ' + DataImportTask.NONPOLYMER_TSV + '\n') self.append_to_email_log( str(seq_count) + ' ' + DataImportTask.SEQUENCE_TSV + '\n') self.append_to_email_log( str(seq_count) + ' ' + DataImportTask.OLDSEQUENCE_TSV + '\n') self.append_to_email_log( str(crystal_count) + ' ' + DataImportTask.CRYSTALPH_TSV + '\n') except IOError: logger.exception('Error appending standard to file')
def test_get_file_line_count(self): temp_dir = tempfile.mkdtemp() try: try: # Try with double None util.get_file_line_count(None) self.fail('Expected TypeError') except TypeError: pass try: # try on non existant file util.get_file_line_count(os.path.join(temp_dir, 'non')) except IOError: pass # try on empty file open(os.path.join(temp_dir, 'empty'), 'a').close() self.assertEqual( util.get_file_line_count(os.path.join(temp_dir, 'empty')), 0) # try on file with data util.append_string_to_file(os.path.join(temp_dir, 'three'), 'h\no\nw\n') self.assertEqual( util.get_file_line_count(os.path.join(temp_dir, 'three')), 3) finally: shutil.rmtree(temp_dir)
def test_run_all_success_except_participant_download_fails(self): temp_dir = tempfile.mkdtemp() try: params = D3RParameters() params.pdbfileurl = 'file://' + temp_dir params.compinchi = 'file://' + temp_dir make_blast = MakeBlastDBTask(temp_dir, params) make_blast.create_dir() open(os.path.join(make_blast.get_dir(), D3RTask.COMPLETE_FILE), 'a').close() task = DataImportTask(temp_dir, params) task._retrysleep = 0 open(os.path.join(temp_dir, task.NONPOLYMER_TSV), 'a').close() open(os.path.join(temp_dir, task.SEQUENCE_TSV), 'a').close() open(os.path.join(temp_dir, task.OLDSEQUENCE_TSV), 'a').close() open(os.path.join(temp_dir, task.CRYSTALPH_TSV), 'a').close() open(os.path.join(temp_dir, task.COMPINCHI_ICH), 'a').close() task.run() self.assertEquals(task.get_error(), None) # check line count is 1 now which indicates # standard was added self.assertEqual( util.get_file_line_count(task.get_nonpolymer_tsv()), 1) self.assertEqual(util.get_file_line_count(task.get_sequence_tsv()), 1) self.assertEqual( util.get_file_line_count(task.get_oldsequence_tsv()), 1) self.assertEqual( util.get_file_line_count(task.get_crystalph_tsv()), 1) self.assertTrue(task.get_email_log().startswith( '\nWARNING: Unable to download')) finally: shutil.rmtree(temp_dir)