def test_project_disk_size(self): project1 = TestFactory.create_project(self.test_user, 'test_proj1') zip_path = os.path.join(os.path.dirname(tvb_data.__file__), 'connectivity', 'connectivity_66.zip') TestFactory.import_zip_connectivity(self.test_user, project1, zip_path, 'testSubject') project2 = TestFactory.create_project(self.test_user, 'test_proj2') zip_path = os.path.join(os.path.dirname(tvb_data.__file__), 'connectivity', 'connectivity_76.zip') TestFactory.import_zip_connectivity(self.test_user, project2, zip_path, 'testSubject') projects = self.project_service.retrieve_projects_for_user( self.test_user.id)[0] assert projects[0].disk_size != projects[ 1].disk_size, "projects should have different size" for project in projects: assert 0 != project.disk_size assert '0.0 KiB' != project.disk_size_human prj_folder = self.structure_helper.get_project_folder(project) actual_disk_size = FilesHelper.compute_recursive_h5_disk_usage( prj_folder) ratio = float(actual_disk_size) / project.disk_size msg = "Real disk usage: %s The one recorded in the db : %s" % ( actual_disk_size, project.disk_size) assert ratio < 1.1, msg
def create_view_model(self, operation_entity, operation_data, new_op_folder, generic_attributes=None, add_params=None): view_model = self._get_new_form_view_model( operation_entity, operation_data.info_from_xml) if add_params is not None: for element in add_params: key_attr = getattr(view_model, element[0]) setattr(key_attr, element[1], element[2]) view_model.range_values = operation_entity.range_values if operation_entity.operation_group: view_model.operation_group_gid = uuid.UUID( operation_entity.operation_group.gid) view_model.ranges = json.dumps( operation_entity.operation_group.range_references) view_model.is_metric_operation = 'DatatypeMeasure' in operation_entity.operation_group.name if generic_attributes is not None: view_model.generic_attributes = generic_attributes view_model.generic_attributes.operation_tag = operation_entity.user_group h5.store_view_model(view_model, new_op_folder) view_model_disk_size = FilesHelper.compute_recursive_h5_disk_usage( new_op_folder) operation_entity.view_model_disk_size = view_model_disk_size operation_entity.view_model_gid = view_model.gid.hex dao.store_entity(operation_entity) return view_model
def store_view_model(operation, project, view_model): storage_path = FilesHelper().get_project_folder( project, str(operation.id)) h5.store_view_model(view_model, storage_path) view_model_size_on_disk = FilesHelper.compute_recursive_h5_disk_usage( storage_path) operation.view_model_disk_size = view_model_size_on_disk dao.store_entity(operation)