From 977b2e2203e125e91f4283ca201a6de1be145d3d Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Mon, 28 Oct 2013 09:45:00 +0000 Subject: [PATCH] SP-982, CCS-62: Threshold introduce to prevent feeding protein database for prot.xml files which are too large. In this case search experiment property NOT_PROCESSED is set to give a reason visible for the user on the experiment details view. SVN: 30031 --- .../drop-boxes/ms-search/plugin.properties | 1 + ...DataSetInfoExtractorForProteinResults.java | 36 +++++++- .../etlserver/proteomics/ProtXMLUploader.java | 39 ++++----- .../openbis/etlserver/proteomics/Util.java | 22 +++++ ...SetInfoExtractorForProteinResultsTest.java | 85 +++++++++++++++---- .../proteomics/ProtXMLUploaderTest.java | 23 ++--- 6 files changed, 153 insertions(+), 53 deletions(-) diff --git a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties b/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties index fc80280936e..619875ae92e 100644 --- a/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties +++ b/rtd_phosphonetx/source/core-plugins/proteomics/1/dss/drop-boxes/ms-search/plugin.properties @@ -13,6 +13,7 @@ incoming-data-completeness-condition = auto-detection data-set-info-extractor = ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults data-set-info-extractor.separator = + +data-set-info-extractor.prot-xml-size-threshold-in-MB = 1 type-extractor = ch.systemsx.cisd.etlserver.SimpleTypeExtractor type-extractor.file-format-type = XML diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java index 199e9398f7e..601fbc3d3c2 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResults.java @@ -21,20 +21,26 @@ import java.util.ArrayList; import java.util.List; import java.util.Properties; +import org.apache.commons.io.FileUtils; import org.apache.commons.lang.StringUtils; +import org.apache.log4j.Logger; import ch.rinn.restrictions.Private; import ch.systemsx.cisd.common.exceptions.EnvironmentFailureException; import ch.systemsx.cisd.common.exceptions.UserFailureException; +import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.common.io.PropertyIOUtils; +import ch.systemsx.cisd.common.logging.LogCategory; +import ch.systemsx.cisd.common.logging.LogFactory; +import ch.systemsx.cisd.common.properties.PropertyUtils; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.ServiceProvider; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ParentDataSetCodes; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifier; import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifierFactory; @@ -45,6 +51,16 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ProjectIdentifier; */ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoExtractorWithService { + private static final Logger operationLog = + LogFactory.getLogger(LogCategory.OPERATION, DataSetInfoExtractorForProteinResults.class); + + static final String NOT_PROCESSED_PROPERTY = "NOT_PROCESSED"; + + @Private + static final String PROT_XML_SIZE_THRESHOLD = "prot-xml-size-threshold-in-MB"; + + private static final int DEFAULT_PROT_XML_SIZE_THRESHOLD = 256; + @Private static final String EXPERIMENT_TYPE_CODE_KEY = "experiment-type-code"; @@ -76,6 +92,8 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx private final String experimentTypeCode; + private final long protXmlSizeThreshold; + public DataSetInfoExtractorForProteinResults(Properties properties) { this(properties, ServiceProvider.getOpenBISService()); @@ -90,6 +108,8 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME); experimentTypeCode = properties.getProperty(EXPERIMENT_TYPE_CODE_KEY, DEFAULT_EXPERIMENT_TYPE_CODE); + protXmlSizeThreshold = PropertyUtils.getInt(properties, PROT_XML_SIZE_THRESHOLD, + DEFAULT_PROT_XML_SIZE_THRESHOLD) * FileUtils.ONE_MB; } @Override @@ -118,6 +138,20 @@ public class DataSetInfoExtractorForProteinResults extends AbstractDataSetInfoEx NewExperiment experiment = new NewExperiment(experimentIdentifier.toString(), experimentTypeCode); ExperimentType experimentType = service.getExperimentType(experimentTypeCode); + File protXMLFile = Util.tryGetProtXMLFile(incomingDataSetPath); + if (protXMLFile == null) + { + throw new UserFailureException("No *prot.xml file found in data set '" + incomingDataSetPath + "'."); + } + long fileSize = protXMLFile.length(); + if (fileSize > protXmlSizeThreshold) + { + String reason = "Size of prot.xml file " + protXMLFile.getName() + " is with " + + FileUtilities.byteCountToDisplaySize(fileSize) + " too large. Maximum size is " + + FileUtilities.byteCountToDisplaySize(protXmlSizeThreshold); + operationLog.warn(reason); + properties.setProperty(NOT_PROCESSED_PROPERTY, reason); + } experiment.setProperties(Util.getAndCheckProperties(properties, experimentType)); DataSetInformation info = new DataSetInformation(); diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java index 6c9b459f480..4783867a474 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploader.java @@ -19,6 +19,7 @@ package ch.systemsx.cisd.openbis.etlserver.proteomics; import java.io.File; import java.sql.Connection; import java.sql.SQLException; +import java.util.List; import java.util.Properties; import javax.sql.DataSource; @@ -26,7 +27,6 @@ import javax.sql.DataSource; import org.apache.log4j.Logger; import ch.systemsx.cisd.base.exceptions.CheckedExceptionTunnel; -import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.logging.LogCategory; import ch.systemsx.cisd.common.logging.LogFactory; import ch.systemsx.cisd.common.properties.PropertyUtils; @@ -35,6 +35,8 @@ import ch.systemsx.cisd.etlserver.IDataSetUploader; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; /** * @author Franz-Josef Elmer @@ -103,8 +105,20 @@ public class ProtXMLUploader implements IDataSetUploader @Override public void upload(File dataSet, DataSetInformation dataSetInformation) { + Experiment experiment = dataSetInformation.tryToGetExperiment(); + if (experiment != null) + { + List<IEntityProperty> properties = experiment.getProperties(); + for (IEntityProperty property : properties) + { + if (property.getPropertyType().getCode().equals(DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY)) + { + return; + } + } + } long time = System.currentTimeMillis(); - File protXMLFile = getProtXMLFile(dataSet); + File protXMLFile = Util.tryGetProtXMLFile(dataSet); ProteinSummary summary = loader.readProtXML(protXMLFile); if (operationLog.isInfoEnabled()) { @@ -132,7 +146,10 @@ public class ProtXMLUploader implements IDataSetUploader { try { - currentResultDataSetUploader.commit(); + if (currentResultDataSetUploader != null) + { + currentResultDataSetUploader.commit(); + } } finally { currentResultDataSetUploader = null; @@ -169,20 +186,4 @@ public class ProtXMLUploader implements IDataSetUploader msInjectionSampleDelimiter, restrictedSampleResolving); } - private File getProtXMLFile(File dataSet) - { - if (dataSet.isDirectory() == false) - { - return dataSet; - } - File[] files = dataSet.listFiles(); - for (File file : files) - { - if (file.getName().endsWith("prot.xml")) - { - return file; - } - } - throw new UserFailureException("No *prot.xml file found in data set '" + dataSet + "'."); - } } diff --git a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java index 85bd6a5709d..44cb45261ee 100644 --- a/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java +++ b/rtd_phosphonetx/source/java/ch/systemsx/cisd/openbis/etlserver/proteomics/Util.java @@ -39,6 +39,28 @@ class Util private Util() { } + + /** + * Tries to return the prot.xml file in the specified data set. + * + * @return <code>null</code> if non found. + */ + static File tryGetProtXMLFile(File dataSet) + { + if (dataSet.isDirectory() == false) + { + return dataSet; + } + File[] files = dataSet.listFiles(); + for (File file : files) + { + if (file.getName().endsWith("prot.xml")) + { + return file; + } + } + return null; + } /** * Returns an array of all entity properties defined by the specified entity type for which diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java index 376b995fa47..15b9ceb78cb 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/DataSetInfoExtractorForProteinResultsTest.java @@ -25,6 +25,8 @@ import static ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractor import java.io.File; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; +import java.util.Map; import java.util.Properties; import org.hamcrest.BaseMatcher; @@ -39,15 +41,15 @@ import ch.rinn.restrictions.Friend; import ch.systemsx.cisd.base.tests.AbstractFileSystemTestCase; import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.filesystem.FileUtilities; +import ch.systemsx.cisd.common.test.RecordingMatcher; import ch.systemsx.cisd.etlserver.IDataSetInfoExtractor; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.DataSetInfoExtractorForProteinResults; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.EntityKind; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.Experiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentType; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.ExperimentTypePropertyType; -import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.IEntityProperty; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.NewExperiment; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.PropertyType; @@ -71,6 +73,8 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste private File dataSet; + private File protXmlFile; + @BeforeMethod public void beforeMethod() { @@ -78,6 +82,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste service = context.mock(IEncapsulatedOpenBISService.class); dataSet = new File(workingDirectory, "space1&project1"); dataSet.mkdirs(); + protXmlFile = new File(dataSet, "prot.xml"); } @AfterMethod @@ -91,6 +96,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste @Test public void testWithNonDefaultExperimentTypeAndPropertiesFileName() { + FileUtilities.writeToFile(protXmlFile, ""); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP_TO_BE_IGNORED\n" @@ -123,6 +129,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste @Test public void testWithProvidedExperimentCode() { + FileUtilities.writeToFile(protXmlFile, ""); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + DataSetInfoExtractorForProteinResults.EXPERIMENT_CODE_KEY + "= MY_EXP1\n"); @@ -132,11 +139,11 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); prepare(experimentType, false); context.checking(new Expectations() - { { - one(service).registerExperiment(with(any(NewExperiment.class))); - } - }); + { + one(service).registerExperiment(with(any(NewExperiment.class))); + } + }); IDataSetInfoExtractor extractor = createExtractor(properties); @@ -149,6 +156,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste @Test public void testRegistrationWithOneMandatoryProperty() { + FileUtilities.writeToFile(protXmlFile, ""); FileUtilities.writeToFile(new File(dataSet, DataSetInfoExtractorForProteinResults.DEFAULT_EXPERIMENT_PROPERTIES_FILE_NAME), "answer=42\nblabla=blub\n" + PARENT_DATA_SET_CODES + "=1 2 3 4\n"); @@ -198,7 +206,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste } @Test - public void testRegistrationWithMissingMandatoryProperty() + public void testRegistrationWithMissingProtXmlFile() { prepare(DEFAULT_EXPERIMENT_TYPE_CODE); @@ -209,15 +217,35 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste fail("UserFailureException expected"); } catch (UserFailureException ex) { - assertEquals("The following mandatory properties are missed: [answer]", ex.getMessage()); + assertEquals("No *prot.xml file found in data set '" + dataSet + "'.", ex.getMessage()); } context.assertIsSatisfied(); } - + + @Test + public void testRegistrationWithMissingMandatoryProperty() + { + FileUtilities.writeToFile(protXmlFile, ""); + prepare(DEFAULT_EXPERIMENT_TYPE_CODE); + + IDataSetInfoExtractor extractor = createExtractor(new Properties()); + try + { + extractor.getDataSetInformation(dataSet, service); + fail("UserFailureException expected"); + } catch (UserFailureException ex) + { + assertEquals("The following mandatory properties are missed: [answer]", ex.getMessage()); + } + + context.assertIsSatisfied(); + } + @Test - public void testWithParentDataSetsDefinedByBaseExperiment() + public void testWithParentDataSetsDefinedByBaseExperimentAndProtXmlFileTooLarge() { + FileUtilities.writeToFile(protXmlFile, "abc"); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n"); @@ -225,7 +253,9 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste String experimentType = "MY_EXPERIMENT"; properties.setProperty(EXPERIMENT_TYPE_CODE_KEY, experimentType); properties.setProperty(EXPERIMENT_PROPERTIES_FILE_NAME_KEY, propertiesFile); + properties.setProperty(DataSetInfoExtractorForProteinResults.PROT_XML_SIZE_THRESHOLD, "0"); prepare(experimentType); + final RecordingMatcher<NewExperiment> experimentMatcher = new RecordingMatcher<NewExperiment>(); context.checking(new Expectations() { { @@ -240,7 +270,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste AbstractExternalData ds2 = new DataSetBuilder().code("ds2").getDataSet(); will(returnValue(Arrays.asList(ds1, ds2))); - one(service).registerExperiment(with(any(NewExperiment.class))); + one(service).registerExperiment(with(experimentMatcher)); } }); @@ -250,12 +280,16 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste assertEquals("/SPACE1/PROJECT1/E4711", info.getExperimentIdentifier().toString()); assertEquals("[ds1, ds2]", info.getParentDataSetCodes().toString()); + IEntityProperty[] expProps = experimentMatcher.recordedObject().getProperties(); + assertEquals("Size of prot.xml file prot.xml is with 3 bytes too large. Maximum size is 0 bytes", + asMap(expProps).get(DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY).getValue()); context.assertIsSatisfied(); } @Test public void testWithUnkownBaseExperiment() { + FileUtilities.writeToFile(protXmlFile, ""); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n"); @@ -291,6 +325,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste @Test public void testWithUnkownParentDataSets() { + FileUtilities.writeToFile(protXmlFile, ""); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n" + PARENT_DATA_SET_CODES_KEY @@ -320,6 +355,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste @Test public void testWithParentDataSetsSeparatedBySpaces() { + FileUtilities.writeToFile(protXmlFile, ""); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + EXPERIMENT_IDENTIFIER_KEY + "= /TEST/PROJECT/EXP1\n" + PARENT_DATA_SET_CODES_KEY @@ -350,6 +386,7 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste @Test public void testWithParentDataSetsSeparatedByComma() { + FileUtilities.writeToFile(protXmlFile, ""); String propertiesFile = "my.properties"; FileUtilities.writeToFile(new File(dataSet, propertiesFile), "answer=42\nblabla=blub\n" + PARENT_DATA_SET_CODES_KEY + " = ds1,ds2"); @@ -394,12 +431,16 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste one(service).getExperimentType(experimentType); ExperimentType type = new ExperimentType(); - ExperimentTypePropertyType etpt = new ExperimentTypePropertyType(); - PropertyType propertyType = new PropertyType(); - propertyType.setCode("answer"); - etpt.setPropertyType(propertyType); - etpt.setMandatory(true); - type.setExperimentTypePropertyTypes(Arrays.asList(etpt)); + ExperimentTypePropertyType etpt1 = new ExperimentTypePropertyType(); + PropertyType propertyType1 = new PropertyType(); + propertyType1.setCode("answer"); + etpt1.setPropertyType(propertyType1); + etpt1.setMandatory(true); + ExperimentTypePropertyType etpt2 = new ExperimentTypePropertyType(); + PropertyType propertyType2 = new PropertyType(); + propertyType2.setCode(DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY); + etpt2.setPropertyType(propertyType2); + type.setExperimentTypePropertyTypes(Arrays.asList(etpt1, etpt2)); will(returnValue(type)); } }); @@ -420,6 +461,16 @@ public class DataSetInfoExtractorForProteinResultsTest extends AbstractFileSyste } }); } + + private Map<String, IEntityProperty> asMap(IEntityProperty[] properties) + { + Map<String, IEntityProperty> result = new HashMap<String, IEntityProperty>(); + for (IEntityProperty property : properties) + { + result.put(property.getPropertyType().getCode(), property); + } + return result; + } private IDataSetInfoExtractor createExtractor(Properties properties) { diff --git a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java index 5c4912e98d1..cfcfd3bacb2 100644 --- a/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java +++ b/rtd_phosphonetx/sourceTest/java/ch/systemsx/cisd/openbis/etlserver/proteomics/ProtXMLUploaderTest.java @@ -24,14 +24,12 @@ import org.testng.annotations.AfterMethod; import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; -import ch.systemsx.cisd.common.exceptions.UserFailureException; import ch.systemsx.cisd.common.filesystem.FileUtilities; import ch.systemsx.cisd.openbis.dss.generic.shared.IEncapsulatedOpenBISService; import ch.systemsx.cisd.openbis.dss.generic.shared.dto.DataSetInformation; -import ch.systemsx.cisd.openbis.etlserver.proteomics.ProtXMLUploader; -import ch.systemsx.cisd.openbis.etlserver.proteomics.ResultDataSetUploader; import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummary; import ch.systemsx.cisd.openbis.etlserver.proteomics.dto.ProteinSummaryHeader; +import ch.systemsx.cisd.openbis.generic.shared.basic.dto.builders.ExperimentBuilder; /** * @@ -137,25 +135,18 @@ public class ProtXMLUploaderTest extends ProtXMLTestCase } @Test - public void testDataSetIsFolderWithoutProtXMLFile() + public void testDataSetIsFolderWithProtXMLFileToBeTooLarge() { File dataSet = new File(workingDirectory, "data-set"); dataSet.mkdir(); - FileUtilities.writeToFile(new File(dataSet, "pep.xml"), "peptides"); + FileUtilities.writeToFile(new File(dataSet, "test-prot.xml"), EXAMPLE); DataSetInformation dataSetInformation = new DataSetInformation(); + dataSetInformation.setExperiment(new ExperimentBuilder().property( + DataSetInfoExtractorForProteinResults.NOT_PROCESSED_PROPERTY, "too large").getExperiment()); - try - { - uploader.upload(dataSet, dataSetInformation); - fail("UserFailureException expected"); - } catch (UserFailureException ex) - { - assertEquals( - "No *prot.xml file found in data set " - + "'targets/unit-test-wd/ch.systemsx.cisd.openbis.etlserver.proteomics.ProtXMLUploaderTest/data-set'.", - ex.getMessage()); - } + uploader.upload(dataSet, dataSetInformation); + assertEquals(null, uploader.getDataSetInformation()); context.assertIsSatisfied(); } } -- GitLab