From 782ace9f131c5653928a9b3c17ec1578adea2862 Mon Sep 17 00:00:00 2001 From: felmer <felmer> Date: Wed, 3 Sep 2014 11:19:39 +0000 Subject: [PATCH] SSDM-802: Bugs in tests fixed. Wrong actual images are saved on disk. SVN: 32401 --- .../AbstractImageDropboxTestCase.java | 18 ++++++- .../AbstractScreeningSystemTestCase.java | 51 +++++++++++++++++-- .../MicroscopyImageDropboxTest.java | 28 +++++----- .../systemtests/SimpleImageDropboxTest.java | 2 - 4 files changed, 81 insertions(+), 18 deletions(-) diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractImageDropboxTestCase.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractImageDropboxTestCase.java index ccffd576925..58b9f465174 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractImageDropboxTestCase.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractImageDropboxTestCase.java @@ -22,6 +22,8 @@ import java.util.Arrays; import java.util.List; import org.apache.commons.io.FileUtils; +import org.testng.annotations.AfterMethod; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.BeforeTest; import ch.systemsx.cisd.openbis.generic.shared.basic.dto.AbstractExternalData; @@ -37,6 +39,8 @@ import ch.systemsx.cisd.openbis.generic.shared.dto.identifier.ExperimentIdentifi */ public abstract class AbstractImageDropboxTestCase extends AbstractScreeningSystemTestCase { + protected ImageChecker imageChecker; + @BeforeTest public void dropAnExampleDataSet() throws Exception { @@ -46,6 +50,18 @@ public abstract class AbstractImageDropboxTestCase extends AbstractScreeningSyst waitUntilDataSetImported(FINISHED_POST_REGISTRATION_CONDITION); } + @BeforeMethod + public void setUpImageChecker() + { + imageChecker = new ImageChecker(new File("tmp/wrong_images/" + getClass().getSimpleName())); + } + + @AfterMethod + public void assertImageChecker() + { + imageChecker.assertNoFailures(); + } + protected void registerAdditionalOpenbisMetaData() { } @@ -68,7 +84,7 @@ public abstract class AbstractImageDropboxTestCase extends AbstractScreeningSyst @Override protected int dataSetImportWaitDurationInSeconds() { - return 60; + return 120; } protected AbstractExternalData getRegisteredContainerDataSet() diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractScreeningSystemTestCase.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractScreeningSystemTestCase.java index 16c95b8b703..0b907cd92ac 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractScreeningSystemTestCase.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/AbstractScreeningSystemTestCase.java @@ -101,6 +101,7 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase private final URLMethodWithParameters url; private final List<String> channels = new ArrayList<String>(); private boolean mergeChannels = true; + private boolean microscopy = false; private int wellRow = 1; private int wellColumn = 1; private int tileRow = 1; @@ -138,8 +139,11 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase url.addParameter(ImageServletUrlParameters.CHANNEL_PARAM, channel); } } - url.addParameter(ImageServletUrlParameters.WELL_ROW_PARAM, Integer.toString(wellRow)); - url.addParameter(ImageServletUrlParameters.WELL_COLUMN_PARAM, Integer.toString(wellColumn)); + if (microscopy == false) + { + url.addParameter(ImageServletUrlParameters.WELL_ROW_PARAM, Integer.toString(wellRow)); + url.addParameter(ImageServletUrlParameters.WELL_COLUMN_PARAM, Integer.toString(wellColumn)); + } url.addParameter(ImageServletUrlParameters.TILE_ROW_PARAM, Integer.toString(tileRow)); url.addParameter(ImageServletUrlParameters.TILE_COL_PARAM, Integer.toString(tileColumn)); url.addParameter("mode", mode); @@ -152,6 +156,12 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase } } + public ImageLoader microscopy() + { + microscopy = true; + return this; + } + public ImageLoader wellRow(int newWellRow) { wellRow = newWellRow; @@ -199,6 +209,18 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase protected static final class ImageChecker { private final StringBuilder failureReport = new StringBuilder(); + private final File folderForWrongImages; + + private boolean assertNoFailuresAlreadyInvoked; + + public ImageChecker(File folderForWrongImages) + { + if (folderForWrongImages.isFile()) + { + throw new IllegalArgumentException("Folder for wrong images is a file: " + folderForWrongImages); + } + this.folderForWrongImages = folderForWrongImages; + } /** * Asserts no failures occurred for all invocations of {@link #check(File, ImageLoader)}. @@ -206,7 +228,11 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase */ public void assertNoFailures() { - AssertJUnit.assertEquals("", failureReport.toString()); + if (assertNoFailuresAlreadyInvoked == false) + { + AssertJUnit.assertEquals("", failureReport.toString()); + assertNoFailuresAlreadyInvoked = true; + } } /** @@ -221,6 +247,7 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase BufferedImage expectedImage = ImageIO.read(referenceImage); BufferedImage actualImage = imageLoader.load(); checkEquals(report, expectedImage, actualImage); + saveActualImageIfDifferent(actualImage, referenceImage, report); } catch (IOException ex) { report.addFailureMessage("Couldn't load image: " + ex); @@ -232,6 +259,24 @@ public abstract class AbstractScreeningSystemTestCase extends SystemTestCase } } } + + private void saveActualImageIfDifferent(BufferedImage actualImage, File referenceImage, FailureReport report) throws IOException + { + if (report.isFailure() == false || actualImage == null) + { + return; + } + folderForWrongImages.mkdirs(); + File file = new File(folderForWrongImages, referenceImage.getName()); + boolean success = ImageIO.write(actualImage, "png", file); + if (success == false) + { + report.addFailureMessage("Couldn't save actual image in file " + file.getAbsolutePath() + "."); + } else + { + report.addFailureMessage("Actual image is saved in file " + file.getAbsolutePath() + "."); + } + } private void checkEquals(FailureReport report, BufferedImage expectedImage, BufferedImage actualImage) { diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/MicroscopyImageDropboxTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/MicroscopyImageDropboxTest.java index 44a293edb0c..773f8c78512 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/MicroscopyImageDropboxTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/MicroscopyImageDropboxTest.java @@ -41,7 +41,6 @@ public class MicroscopyImageDropboxTest extends AbstractImageDropboxTestCase @Override protected void registerAdditionalOpenbisMetaData() { - System.out.println("MicroscopyImageDropboxTest.registerAdditionalOpenbisMetaData()"); commonServer = (ICommonServer) applicationContext .getBean(ch.systemsx.cisd.openbis.generic.shared.ResourceNames.COMMON_SERVER); sessionToken = commonServer.tryAuthenticate("admin", "a").getSessionToken(); @@ -73,26 +72,31 @@ public class MicroscopyImageDropboxTest extends AbstractImageDropboxTestCase public void test() { AbstractExternalData dataSet = getRegisteredContainerDataSet(); - ImageChecker imageChecker = new ImageChecker(); imageChecker.check(new File(getTestDataFolder(), "Merged_Default.png"), - new ImageLoader(dataSet, sessionToken)); + new ImageLoader(dataSet, sessionToken).microscopy().mode("thumbnail480x480")); imageChecker.check(new File(getTestDataFolder(), "Merged_256x256.png"), - new ImageLoader(dataSet, sessionToken).mode("thumbnail256x256")); + new ImageLoader(dataSet, sessionToken).microscopy().mode("thumbnail256x256")); imageChecker.check(new File(getTestDataFolder(), "Merged_512x512.png"), - new ImageLoader(dataSet, sessionToken).mode("thumbnail512x512")); + new ImageLoader(dataSet, sessionToken).microscopy().mode("thumbnail512x512")); imageChecker.check(new File(getTestDataFolder(), "C1_Default.png"), - new ImageLoader(dataSet, sessionToken).channel("SERIES-0-CHANNEL-1")); + new ImageLoader(dataSet, sessionToken).microscopy().channel("SERIES-0_CHANNEL-1") + .mode("thumbnail480x480")); imageChecker.check(new File(getTestDataFolder(), "C1_256x256.png"), - new ImageLoader(dataSet, sessionToken).channel("SERIES-0-CHANNEL-1").mode("thumbnail256x256")); + new ImageLoader(dataSet, sessionToken).microscopy().channel("SERIES-0_CHANNEL-1") + .mode("thumbnail256x256")); imageChecker.check(new File(getTestDataFolder(), "C1_512x512.png"), - new ImageLoader(dataSet, sessionToken).channel("SERIES-0-CHANNEL-1").mode("thumbnail512x512")); + new ImageLoader(dataSet, sessionToken).microscopy().channel("SERIES-0_CHANNEL-1") + .mode("thumbnail512x512")); imageChecker.check(new File(getTestDataFolder(), "C01_Default.png"), - new ImageLoader(dataSet, sessionToken).channel("SERIES-0-CHANNEL-0").channel("SERIES-0-CHANNEL-1")); + new ImageLoader(dataSet, sessionToken).microscopy().channel("SERIES-0_CHANNEL-0") + .channel("SERIES-0_CHANNEL-1").mode("thumbnail480x480")); imageChecker.check(new File(getTestDataFolder(), "C01_256x256.png"), - new ImageLoader(dataSet, sessionToken).channel("SERIES-0-CHANNEL-0").channel("SERIES-0-CHANNEL-1").mode("thumbnail256x256")); + new ImageLoader(dataSet, sessionToken).microscopy().channel("SERIES-0_CHANNEL-0") + .channel("SERIES-0_CHANNEL-1").mode("thumbnail256x256")); imageChecker.check(new File(getTestDataFolder(), "C01_512x512.png"), - new ImageLoader(dataSet, sessionToken).channel("SERIES-0-CHANNEL-0").channel("SERIES-0-CHANNEL-1").mode("thumbnail512x512")); - + new ImageLoader(dataSet, sessionToken).microscopy().channel("SERIES-0_CHANNEL-0") + .channel("SERIES-0_CHANNEL-1").mode("thumbnail512x512")); + imageChecker.assertNoFailures(); } } diff --git a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/SimpleImageDropboxTest.java b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/SimpleImageDropboxTest.java index b485912efe6..61254ad3b87 100644 --- a/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/SimpleImageDropboxTest.java +++ b/screening/sourceTest/java/ch/systemsx/cisd/openbis/screening/systemtests/SimpleImageDropboxTest.java @@ -40,7 +40,6 @@ public class SimpleImageDropboxTest extends AbstractImageDropboxTestCase public void test() throws Exception { AbstractExternalData dataSet = getRegisteredContainerDataSet(); - ImageChecker imageChecker = new ImageChecker(); imageChecker.check(new File(getTestDataFolder(), "1_1_Merged_Default.png"), new ImageLoader(dataSet, sessionToken)); imageChecker.check(new File(getTestDataFolder(), "1_1_DAPI_Default.png"), @@ -49,5 +48,4 @@ public class SimpleImageDropboxTest extends AbstractImageDropboxTestCase new ImageLoader(dataSet, sessionToken).tileColumn(3).channel("DAPI").channel("CY3").mode("thumbnail256x191")); imageChecker.assertNoFailures(); } - } -- GitLab