Пример #1
0
    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)
Пример #2
0
    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')
Пример #3
0
    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)
Пример #4
0
    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)