X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=test%2Fjalview%2Fbin%2FCommandsTest.java;h=e42cc5462d583dc928c3f69a5a828026d7b38796;hb=aabbea350930b8c2904e4f1544f0d786e7d59792;hp=7b427371a7a6909c634ae4ae58fc83d9d6668fca;hpb=546cce1523d08c53ffdc744d46907cf8c98bdc10;p=jalview.git diff --git a/test/jalview/bin/CommandsTest.java b/test/jalview/bin/CommandsTest.java index 7b42737..e42cc54 100644 --- a/test/jalview/bin/CommandsTest.java +++ b/test/jalview/bin/CommandsTest.java @@ -180,29 +180,44 @@ public class CommandsTest callJalviewMain(args); Commands cmds = Jalview.getInstance().getCommands(); Assert.assertNotNull(cmds); - File lastFile = null; - for (String filename : filenames) + verifyIncreasingSize(cmdLine, filenames); + } catch (Exception x) + { + Assert.fail("Unexpected exception during structureImageOutputTest", + x); + } finally + { + cleanupFiles(filenames); + tearDown(); + } + } + + /** + * given two command lines, compare the output files produced - they should exist and be equal in size + */ + @Test( + groups = + { "Functional", "testTask3" }, + dataProvider = "compareHeadlessAndGUIOps", + singleThreaded = true) + public void headlessOrGuiImageOutputTest(String[] cmdLines, + String[] filenames) throws IOException + { + cleanupFiles(filenames); + try + { + for (String cmdLine : cmdLines) { - File file = new File(filename); - Assert.assertTrue(file.exists(), "File '" + filename - + "' was not created by '" + cmdLine + "'"); - Assert.assertTrue(file.isFile(), "File '" + filename - + "' is not a file from '" + cmdLine + "'"); - Assert.assertTrue(Files.size(file.toPath()) > 0, "File '" + filename - + "' has no content from '" + cmdLine + "'"); - // make sure the successive output files get bigger! - if (lastFile != null) + CommandLineOperations.Worker runner = CommandLineOperations.getJalviewDesktopRunner(false, cmdLine, 1000); + long timeOut = 10000; + while (runner.isAlive() && timeOut>0) { - waitForLastWrite(file,25); - - if (Files.size(file.toPath()) > Files - .size(lastFile.toPath())) - Assert.assertTrue(Files.size(file.toPath()) > Files - .size(lastFile.toPath())); + Thread.sleep(25); + timeOut-=25; } - // remember it for next file - lastFile = file; } + verifyOrderedFileSet(cmdLines[0] + " vs " + cmdLines[1], filenames, + false); } catch (Exception x) { Assert.fail("Unexpected exception during structureImageOutputTest", @@ -213,7 +228,65 @@ public class CommandsTest tearDown(); } } + @DataProvider(name = "compareHeadlessAndGUIOps") + public Object[][] compareHeadlessAndGUIOps() + { + return new Object[][] { + new Object[] + { new String[] { "--open examples/uniref50.fa " + + "--structure [seqid=FER1_SPIOL,tempfac=plddt,showssannotations,structureviewer=jmol]" + + "examples/AlphaFold/AF-P00221-F1-model_v4.pdb " + + "--paematrix examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json --image=" + + testfiles + "test-al-pae-ss-gui.png --overwrite --gui --quit", + "--open examples/uniref50.fa " + + "--structure [seqid=FER1_SPIOL,tempfac=plddt,showssannotations,structureviewer=jmol]" + + "examples/AlphaFold/AF-P00221-F1-model_v4.pdb " + + "--paematrix examples/AlphaFold/AF-P00221-F1-predicted_aligned_error_v4.json --image=" + + testfiles + + "test-al-pae-ss-nogui.png --overwrite --nogui" + + }, new String[] { + testfiles + "test-al-pae-ss-gui.png", + testfiles + + "test-al-pae-ss-nogui.png", + } } }; + } + + private static void verifyIncreasingSize(String cmdLine, String[] filenames) throws Exception + { + verifyOrderedFileSet(cmdLine, filenames, true); + } + + private static void verifyOrderedFileSet(String cmdLine, String[] filenames, boolean increasingSize) throws Exception + { + File lastFile = null; + for (String filename : filenames) + { + File file = new File(filename); + Assert.assertTrue(file.exists(), "File '" + filename + + "' was not created by '" + cmdLine + "'"); + Assert.assertTrue(file.isFile(), "File '" + filename + + "' is not a file from '" + cmdLine + "'"); + Assert.assertTrue(Files.size(file.toPath()) > 0, "File '" + filename + + "' has no content from '" + cmdLine + "'"); + // make sure the successive output files get bigger! + if (lastFile != null) + { + waitForLastWrite(file,25); + + if (increasingSize) + { Assert.assertTrue(Files.size(file.toPath()) > Files + .size(lastFile.toPath()),"Expected " + file.toPath()+ " to be larger than "+lastFile.toPath()); + } else { + Assert.assertEquals(Files.size(file.toPath()), Files + .size(lastFile.toPath()), "New file "+file.toPath()+" (actual size) not same as last file's size "+lastFile.toString()); + } + } + // remember it for next file + lastFile = file; + } + } private static long waitForLastWrite(File file, int i) throws IOException { long lastSize,stableSize =Files.size(file.toPath());