def test_files(self): output_path = 'job_dir' j = Job(user=self.user, status=Job.COMPLETED, output_path=output_path) j.save() dir_path = os.path.join(settings.FILES_BASE, output_path) if not os.path.exists(dir_path): os.makedirs(dir_path) output_path2 = 'job_dir/job_subdir' dir_path2 = os.path.join(settings.FILES_BASE, output_path2) if not os.path.exists(dir_path2): os.makedirs(dir_path2) file_names_to_contents = { 'file1': 'ksjhfewiu\n', 'filez2': 'faeowrfjieawmnc\n', 'file3': 'sdlkjfaeowijfiaowjef\n', } file_names_to_contents2 = { 'job_subdir/fileA': 'aaaaahhhhhhh', 'job_subdir/fileB': 'baaaaaaaahhhhhh', } from tao.tests import helper for file_name in file_names_to_contents.keys(): helper.create_file(dir_path, file_name, file_names_to_contents) for file_name in file_names_to_contents2.keys(): helper.create_file(dir_path, file_name, file_names_to_contents2) merged_file_names_to_contents = {} merged_file_names_to_contents.update(file_names_to_contents) merged_file_names_to_contents.update(file_names_to_contents2) self.assertEqual(sorted(merged_file_names_to_contents.keys()), sorted([job_file.file_name for job_file in j.files()]))
def setUp(self): super(DiskStorageTests, self).setUp() username = '******' password = '******' self.user = UserFactory.create(username=username, is_superuser=True) self.user.set_password(password) self.user.save() self.login(username, password) output_path = 'job_output' self.job = JobFactory.create(user=self.user, status=Job.COMPLETED, output_path=output_path) file_content = 'abc' * 2000000 file_name_to_content = {'file_name': file_content} helper.create_file(os.path.join(settings.FILES_BASE, output_path), 'file_name', file_name_to_content) self.job.save() self.simulation = SimulationFactory.create() self.galaxy = GalaxyModelFactory.create() self.dataset = DataSetFactory.create(simulation=self.simulation, galaxy_model=self.galaxy) self.output_prop = DataSetPropertyFactory.create(dataset=self.dataset, name='Central op', is_filter=False) self.filter = DataSetPropertyFactory.create(name='CentralMvir rf', units="Msun/h", dataset=self.dataset) self.computed_filter = DataSetPropertyFactory.create(name='Computed Property', dataset=self.dataset, is_computed=True) self.snapshot = SnapshotFactory.create(dataset=self.dataset, redshift='0.33') self.survey_preset = SurveyPresetFactory.create(name='Preset 1', parameters='<xml></xml>') self.default_disk_quota = GlobalParameterFactory.create(parameter_name='default_disk_quota', parameter_value='6')
def setUp(self): super(JobTest, self).setUp() self.username = '******' self.password = '******' self.user = UserFactory.create(username=self.username, is_superuser=True) self.user.set_password(self.password) self.user.save() # self.job_description = 'This is a job description' self.job = JobFactory.create(user=self.user) GlobalParameterFactory.create(parameter_name='maximum-random-light-cones', parameter_value='10000') self.simulation = SimulationFactory.create() self.galaxy = GalaxyModelFactory.create() self.dataset = DataSetFactory.create(simulation=self.simulation, galaxy_model=self.galaxy) self.output_prop = DataSetPropertyFactory.create(dataset=self.dataset, name='Central op', is_filter=False) self.filter = DataSetPropertyFactory.create(name='CentralMvir rf', units="Msun/h", dataset=self.dataset) self.computed_filter = DataSetPropertyFactory.create(name='Computed Property', dataset=self.dataset, is_computed=True) self.sed = StellarModelFactory.create() self.dust = DustModelFactory.create() self.snapshot = SnapshotFactory.create(dataset=self.dataset, redshift='0.33') self.band_pass_filters = [BandPassFilterFactory.create(), BandPassFilterFactory.create()] self.output_paths = ['job1', 'large_job'] self.dir_paths = [os.path.join(settings.FILES_BASE, output_path) for output_path in self.output_paths] txt_template = loader.get_template('jobs/light_cone_job-summary.txt') summary_context = Context(self.make_parameters()) self.summary_text = txt_template.render(summary_context) self.file_names_to_contents = { 'file1': 'abc\n', 'filez2.txt': 'pqr\n', 'file3': 'xyz\n', 'job2/fileA.html': 'aaaahhhh & aaaaa', 'job2/fileB': 'baaaaaa', 'summary.txt': self.summary_text, } self.file_names_to_contents2 = { 'waybigfile1': 'xnfaihnehrawlrwerajelrjxmjaeimrjwmrejlxaljrxm;kjmrlakjemrajlejrljrljaereirje;rjmriarie;rirjijeaim;jea;ljmxirjwra;ojer', 'waybigfile2': 'xnfaihnehrawlrwerajelrjxmjaeimrjwmrejlxaljrxm;kjmrlakjemrajlejrljrljaereirje;rjmriarie;rirjijeaim;jea;ljmxirjwra;ojer', 'waybigfile3': 'xnfaihnehrawlrwerajelrjxmjaeimrjwmrejlxaljrxm;kjmrlakjemrajlejrljrljaereirje;rjmriarie;rirjijeaim;jea;ljmxirjwra;ojer', 'waybigfile4': 'xnfaihnehrawlrwerajelrjxmjaeimrjwmrejlxaljrxm;kjmrlakjemrajlejrljrljaereirje;rjmriarie;rirjijeaim;jea;ljmxirjwra;ojer', 'waybigfile5': 'xnfaihnehrawlrwerajelrjxmjaeimrjwmrejlxaljrxm;kjmrlakjemrajlejrljrljaereirje;rjmriarie;rirjijeaim;jea;ljmxirjwra;ojer', } for file_name in self.file_names_to_contents.keys(): helper.create_file(self.dir_paths[0], file_name, self.file_names_to_contents) for file_name in self.file_names_to_contents2.keys(): helper.create_file(self.dir_paths[1], file_name, self.file_names_to_contents2) parameters = self.make_xml_parameters() self.job.parameters = parameters self.job.save() self.completed_job = JobFactory.create(user=self.user, status=Job.COMPLETED, output_path=self.output_paths[0], parameters=parameters) self.held_job = JobFactory.create(user=self.user, parameters=parameters, status=Job.HELD) self.error_job = JobFactory.create(user=self.user, parameters=parameters, status=Job.ERROR, error_message="error") self.in_progress_job = JobFactory.create(user=self.user, parameters=parameters, status=Job.IN_PROGRESS) self.submitted_job = JobFactory.create(user=self.user, parameters=parameters, status=Job.SUBMITTED) self.queued_job = JobFactory.create(user=self.user, parameters=parameters, status=Job.QUEUED)
def test_refresh_disk_usage(self): self.login(self.username, self.password) self.visit('view_job', self.completed_job.id) self.assert_element_text_equals('#id_disk_usage', self.completed_job.display_disk_size()) file_content = 'abc' * 2000000 helper.create_file(os.path.join(settings.FILES_BASE, self.output_paths[0]), 'file_name', {'file_name': file_content}) self.completed_job.save() self.click('id_refresh_disk_usage') self.wait() self.assert_element_text_equals('#id_disk_usage', self.completed_job.display_disk_size())
def test_user_disk_usage_displays_correctly(self): output_path = 'job_output' file_content = 'abc' * 2000000 file_name_to_content = {'file_name': file_content} helper.create_file(os.path.join(settings.FILES_BASE, output_path), 'file_name', file_name_to_content) self.user.disk_quota = 10 self.user.save() self.completed_job.output_path = output_path self.completed_job.save() self.visit('job_index') usage_text = "%s of %s" % ('6MB', '10MB') self.assert_page_has_content(usage_text)
def test_other_user_cannot_view_or_download(self): username = '******' password = '******' user2 = UserFactory.create(username=username) user2.set_password(password) user2.save() completed_job = JobFactory.create(user=self.user, status=Job.COMPLETED, output_path=self.output_paths[0]) helper.create_file(self.dir_paths[0], 'file1', self.file_names_to_contents) self.login(username, password) self.visit('view_job', completed_job.id) self.assert_page_has_content('Forbidden') self.visit('get_file', completed_job.id, 'file1') self.assert_page_has_content('Forbidden') download_path = os.path.join(self.DOWNLOAD_DIRECTORY, 'file1') self.assertFalse(os.path.exists(download_path))