def test_get_values_for_attribute_3(self): raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam') raw_meta.init_avus_from_avu_tuples([MetaAVU(attribute='sample', value='ABCSample'), MetaAVU(attribute='library', value='lib')]) expected_result = set() actual_result = raw_meta.get_values_for_attribute('study') self.assertSetEqual(actual_result, expected_result)
def test_check_more_than_one_replicas_when_1_replica(self): replicas = [ baton_models.DataObjectReplica(number=1, checksum="123abc")] raw_metadata = IrodsRawFileMetadata(fpath='/seq/123/123.cram', file_replicas=replicas) result = raw_metadata.ReplicasChecks.check_more_than_one_replicas(raw_metadata.file_replicas) #self.assertEqual(len(result), 1) self.assertEqual(result.result, RESULT.FAILURE)
def test_from_baton_wrapper_file_replicas(self): replicas = [ baton_models.DataObjectReplica(number=1, checksum="123abc"), baton_models.DataObjectReplica(number=2, checksum="abc"),] data_obj = baton_models.DataObject(path='/humgen/projects/helic/123.bam', replicas=replicas) raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(len(raw_meta.file_replicas), 2)
def retrieve_raw_files_metadata_by_metadata(cls, search_criteria_list: List[ Tuple], zone=None): search_criteria_objs = [] for k, v in search_criteria_list: search_criterion = SearchCriterion(k, v) search_criteria_objs.append(search_criterion) # Getting metadata from iRODS: try: connection = connect_to_irods_with_baton( config.BATON_BIN ) # skip_baton_binaries_validation=True) # type: Connection list_of_data_objs_and_metadata = connection.data_object.get_by_metadata( search_criteria_objs, zone=zone) except RuntimeError as e: if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1: raise OSError( "ERROR: you need to log into iRODS and aquire the KERBEROS credentials." ) from None else: raise e from None raw_meta_objects = [ IrodsRawFileMetadata.from_baton_wrapper(data_obj) for data_obj in list_of_data_objs_and_metadata ] return raw_meta_objects
def test_from_baton_wrapper_missing_bits(self): replicas = [ baton_models.DataObjectReplica(number=1, checksum="123abc", host='hgi-dev', resource_name='irods-s1', up_to_date=True)] metadata = baton_coll.IrodsMetadata({'study': set(['BLUEPRINT'])}) data_obj = baton_models.DataObject(path='/somepath/file.txt', metadata=metadata, replicas=replicas) raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(len(raw_meta.file_replicas), 1) self.assertEqual(len(raw_meta.acls), 0)
def test_from_baton_wrapper_acls(self): user = "******" acl = [baton_models.AccessControl(user, level=baton_models.AccessControl.Level.WRITE)] data_obj = baton_models.DataObject(path='/somepath/file.txt', access_controls=acl) raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(len(raw_meta.acls), 1) self.assertEqual(raw_meta.acls[0].access_group, 'hgi') self.assertEqual(raw_meta.acls[0].permission, IrodsPermission.WRITE) self.assertEqual(raw_meta.acls[0].zone, 'Sanger1')
def test_from_raw_metadata_only_replicas(self): replicas = [ baton_models.DataObjectReplica(number=1, checksum="123abc"), baton_models.DataObjectReplica(number=2, checksum="abc"),] raw_metadata = IrodsRawFileMetadata(fpath='/seq/123.bam', file_replicas=replicas) seq_metadata = IrodsSeqFileMetadata.from_raw_metadata(raw_metadata) expected = {'name': set(), 'accession_number': set(), 'internal_id': set()} self.assertEqual(seq_metadata.samples, expected) self.assertEqual(seq_metadata.libraries, expected) self.assertEqual(seq_metadata.checksum_in_meta, set())
def test_check_has_read_permission_ss_group_no_ss_grp(self): acl1 = IrodsACL(access_group='public#seq', zone='seq', permission='read') acl2 = IrodsACL(access_group='npg#seq', zone='seq', permission='own') raw_metadata = IrodsRawFileMetadata(fpath='/home/myfile', acls=[acl1, acl2]) result = raw_metadata.ACLsChecks.check_read_permission_exists_for_ss_group(raw_metadata.acls) self.assertEqual(len(result), 2) for check_res in result: if check_res.check_name in [CHECK_NAMES.check_ss_irods_group_read_permission, CHECK_NAMES.check_there_is_ss_irods_group]: self.assertEqual(check_res.result, RESULT.FAILURE) else: self.assertEqual(check_res.result, RESULT.SUCCESS)
def test_from_baton_wrapper_all_ok(self): user = "******" acl = [baton_models.AccessControl(user, level=baton_models.AccessControl.Level.OWN)] replicas = [ baton_models.DataObjectReplica(number=1, checksum="123abc", host='hgi-dev', resource_name='irods-s1', up_to_date=True)] data_obj = baton_models.DataObject(path='/somepath/file.txt', access_controls=acl, replicas=replicas) raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(raw_meta.fpath, '/somepath/file.txt') self.assertEqual(len(raw_meta.file_replicas), 1) self.assertEqual(len(raw_meta.acls), 1) self.assertEqual(raw_meta.acls[0].zone, 'humgen') self.assertEqual(raw_meta.acls[0].access_group, 'serapis')
def fetch_raw_file_metadata_by_path(cls, fpath): try: connection = connect_to_irods_with_baton(config.BATON_BIN)#, skip_baton_binaries_validation=True) data_object = connection.data_object.get_by_path(fpath) except Exception as e: if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1: raise OSError("ERROR: you need to log into iRODS and aquire the KERBEROS credentials.") from None else: raise e from None else: if data_object: raw_metadata = IrodsRawFileMetadata.from_baton_wrapper(data_object) return raw_metadata return None
def test_from_baton_wrapper_full_obj(self): user = "******" acl = [baton_models.AccessControl(user, level=baton_models.AccessControl.Level.OWN)] replicas = [ baton_models.DataObjectReplica(number=1, checksum="123abc", host='hgi-dev', resource_name='irods-s1', up_to_date=True), baton_models.DataObjectReplica(number=2, checksum="abc", host='hgi-dev-wow', resource_name='irods-s2', up_to_date=True),] metadata = baton_coll.IrodsMetadata({'study': set(['BLUEPRINT'])}) data_obj = baton_models.DataObject(path='/somepath/file.txt', access_controls=acl, metadata=metadata, replicas=replicas) raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(raw_meta.fpath, '/somepath/file.txt') self.assertEqual(len(raw_meta.file_replicas), 2) self.assertEqual(len(raw_meta.acls), 1) self.assertEqual(raw_meta.acls[0].zone, 'humgen') self.assertEqual(raw_meta.acls[0].access_group, 'hgi')
def retrieve_raw_files_metadata_by_metadata(cls, search_criteria_list: List[Tuple], zone=None): search_criteria_objs = [] for k, v in search_criteria_list: search_criterion = SearchCriterion(k, v) search_criteria_objs.append(search_criterion) # Getting metadata from iRODS: try: connection = connect_to_irods_with_baton(config.BATON_BIN) # skip_baton_binaries_validation=True) # type: Connection list_of_data_objs_and_metadata = connection.data_object.get_by_metadata(search_criteria_objs, zone=zone) except RuntimeError as e: if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1: raise OSError("ERROR: you need to log into iRODS and aquire the KERBEROS credentials.") from None else: raise e from None raw_meta_objects = [IrodsRawFileMetadata.from_baton_wrapper(data_obj) for data_obj in list_of_data_objs_and_metadata] return raw_meta_objects
def fetch_raw_file_metadata_by_path(cls, fpath): try: connection = connect_to_irods_with_baton( config.BATON_BIN) #, skip_baton_binaries_validation=True) data_object = connection.data_object.get_by_path(fpath) except Exception as e: if str(e).find('KRB_ERROR_ACQUIRING_CREDS') != -1: raise OSError( "ERROR: you need to log into iRODS and aquire the KERBEROS credentials." ) from None else: raise e from None else: if data_object: raw_metadata = IrodsRawFileMetadata.from_baton_wrapper( data_object) return raw_metadata return None
def test_from_baton_wrapper_fpath_1(self): data_obj = baton_models.DataObject(path='/seq/123/123.bam.bai') raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(raw_meta.fpath, '/seq/123/123.bam.bai')
def test_from_baton_wrapper_metadata(self): metadata = baton_coll.IrodsMetadata({'study': set(['BLUEPRINT']), 'sample': set(['123sam'])}) data_obj = baton_models.DataObject(path='/somepath/file.txt', metadata=metadata) raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(raw_meta.get_values_for_attribute('study'), set(['BLUEPRINT']))
def test_set_attributes_from_avus_1(self): raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam') raw_meta.init_avus_from_avu_tuples([MetaAVU(attribute='sample', value='ABCSample'), MetaAVU(attribute='library', value='lib')]) expected_result = {'sample': set(['ABCSample']), 'library': set(['lib'])} self.assertDictEqual(raw_meta.avus, expected_result)
def test_get_values_count_for_attribute_1(self): raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam') raw_meta.init_avus_from_avu_tuples([MetaAVU(attribute='sample', value='ABCSample')]) expected_result = 1 actual_result = raw_meta.get_values_count_for_attribute('sample') self.assertEqual(expected_result, actual_result)
def test_get_values_count_for_attribute_2(self): raw_meta = IrodsRawFileMetadata(fpath='/seq/123/123.bam') expected_result = 0 actual_result = raw_meta.get_values_count_for_attribute('sample') self.assertEqual(expected_result, actual_result)
def test_check_more_than_one_replicas_when_no_replica(self): replicas = [] raw_metadata = IrodsRawFileMetadata(fpath='/seq/123/123.cram', file_replicas=replicas) result = raw_metadata.ReplicasChecks.check_more_than_one_replicas(raw_metadata.file_replicas) #self.assertEqual(len(result), 1) self.assertEqual(result.result, RESULT.FAILURE)
def test_is_true_comparison_when_less(self): result = IrodsRawFileMetadata._is_true_comparison(1, 2, '<') self.assertTrue(result)
def test_is_true_comparison_when_not_equal(self): result = IrodsRawFileMetadata._is_true_comparison(1, 3, '=') self.assertFalse(result)
def test_from_baton_wrapper_fpath_2(self): data_obj = baton_models.DataObject(path='/humgen/projects/helic/123.bam') raw_meta = IrodsRawFileMetadata.from_baton_wrapper(data_obj) self.assertEqual(raw_meta.fpath, '/humgen/projects/helic/123.bam')
def test_check_attribute_count_equal_ok(self): raw_metadata = IrodsRawFileMetadata(fpath='/home/myfile') raw_metadata.avus = {'sample': set(['1', '2', '3'])} result = raw_metadata.check_attribute_count([AttributeCount(attribute='sample', count=3, operator='=')]) #self.assertEqual(len(result), 1) self.assertEqual(result.result, RESULT.SUCCESS)
def test_check_attribute_count_when_not_found(self): raw_metadata = IrodsRawFileMetadata(fpath='/home/myfile') raw_metadata.avus = {'sample': set(['1', '2', '3'])} result = raw_metadata.check_attribute_count([AttributeCount(attribute='study', count=2, operator='>')]) #self.assertEqual(len(result), 1) self.assertEqual(result.result, RESULT.FAILURE)