Example usage for org.apache.commons.io FileUtils waitFor

List of usage examples for org.apache.commons.io FileUtils waitFor

Introduction

In this page you can find the example usage for org.apache.commons.io FileUtils waitFor.

Prototype

public static boolean waitFor(File file, int seconds) 

Source Link

Document

Waits for NFS to propagate a file creation, imposing a timeout.

Usage

From source file:gov.nih.nci.caintegrator.application.analysis.grid.preprocess.PreprocessDatasetGridRunner.java

private File replaceGctFileWithPreprocessed(File gctFile, File zipFile) throws IOException {
    File zipFileDirectory = new File(zipFile.getParent().concat("/tempPreprocessedZipDir"));
    FileUtils.deleteDirectory(zipFileDirectory);
    FileUtils.forceMkdir(zipFileDirectory);
    FileUtils.waitFor(zipFileDirectory, TIMEOUT_SECONDS);
    Cai2Util.isValidZipFile(zipFile);
    ZipUtilities.unzip(zipFile, zipFileDirectory);
    FileUtils.waitFor(zipFileDirectory, TIMEOUT_SECONDS);
    Cai2Util.printDirContents(zipFileDirectory);
    if (zipFileDirectory.list() != null) {
        if (zipFileDirectory.list().length != 1) {
            int dirListlength = zipFileDirectory.list().length;
            FileUtils.deleteDirectory(zipFileDirectory);
            throw new IllegalStateException("The zip file returned from PreprocessDataset"
                    + " should have exactly 1 file instead of " + dirListlength);
        }//from   w ww .jav a  2  s. c o  m
    } else {
        String zipFileDirectoryPath = zipFileDirectory.getAbsolutePath();
        FileUtils.deleteDirectory(zipFileDirectory);
        throw new IllegalStateException(
                "The zip file directory list at path: " + zipFileDirectoryPath + "is null.");
    }
    String[] files = zipFileDirectory.list();
    File preprocessedFile = new File(zipFileDirectory, files[0]);
    FileUtils.deleteQuietly(gctFile); // Remove the non-preprocessed file
    FileUtils.moveFile(preprocessedFile, gctFile); // move to gctFile
    FileUtils.deleteQuietly(zipFile);
    FileUtils.deleteDirectory(zipFileDirectory);
    return gctFile;
}

From source file:it.geosolutions.tools.io.file.Copy.java

/**
 * Copy a file (preserving data) to a destination (which can be on nfs)
 * waiting (at least) 'seconds' seconds for its propagation.
 * /*  w w w.  jav  a2 s.  c om*/
 * @param source
 * @param dest
 * @param seconds
 *            to wait (maximum) for nfs propagate. If -1 no check is
 *            performed.
 * @return the copied file if success, null if not.
 */
public static File copyFileToNFS(final File source, final File dest, final int seconds) {
    try {
        /**
         * Carlo commented out on 22 Aug 2011<br>
         * this function is not thread safe:<br>
         * an IOExcheption is thrown which hide a more correct:<br>
         * OverlappingFileLockException - If a lock that overlaps the
         * requested region is already held by this Java virtual machine, or
         * if another thread is already blocked in this method and is
         * attempting to lock an overlapping region of the same file
         */
        // if (!dest.exists()) {
        // // copy the file
        // // FileUtils.copyFile(source, dest);
        // } else
        // return null;

        try {
            copyFile(source, dest);
        } catch (OverlappingFileLockException o) {
            if (LOGGER.isErrorEnabled())
                LOGGER.error("Problem writing the file: \'" + source + "\' to \'" + dest
                        + "\'.\nA lock that overlaps the requested region is already held by this Java virtual machine, or if another thread is already blocked in this method and is attempting to lock an overlapping region of the same file.");
            return null;
        } catch (Throwable t) {
            if (LOGGER.isErrorEnabled())
                LOGGER.error("Problem writing the file: \'" + source + "\' to \'" + dest + "\'.", t);
            return null;
        }

        if (seconds > 0) {
            if (!FileUtils.waitFor(dest, seconds)) {
                if (LOGGER.isErrorEnabled())
                    LOGGER.error("Failed to propagate file to: " + dest.getAbsolutePath());
                return null;
            } else if (LOGGER.isInfoEnabled()) {
                LOGGER.info("File: \'" + source.getAbsoluteFile() + "\' succesfully copied and propagated to: "
                        + dest.getAbsolutePath());
            }
        } else if (LOGGER.isInfoEnabled()) {
            LOGGER.info("Source file: \'" + source.getAbsoluteFile() + "\' succesfully copied to: "
                    + dest.getAbsolutePath());
        }
    } catch (NullPointerException e) {
        // NullPointerException - if source or destination is null
        if (LOGGER.isErrorEnabled())
            LOGGER.error("Source or destination is null." + "\n\tThe message is: " + e.getLocalizedMessage());
        return null;
    }
    return dest;
}

From source file:org.broadinstitute.gatk.utils.jna.drmaa.v1_0.JnaSessionQueueTest.java

@Test(dependsOnMethods = { "testDrmaa" })
public void testSubmitEcho() throws Exception {
    if (!queueTestRunModeIsSet) {
        throw new SkipException("Skipping testSubmitEcho because we are in queue test dry run mode");
    }// w w  w .ja va  2  s.c  om

    if (implementation.contains("LSF")) {
        System.err.println("    ***********************************************************");
        System.err.println("   *************************************************************");
        System.err.println("   ****                                                     ****");
        System.err.println("  ****  Skipping JnaSessionQueueTest.testSubmitEcho()        ****");
        System.err.println("  ****      Are you using the dotkit .combined_LSF_SGE?      ****");
        System.err.println("   ****                                                     ****");
        System.err.println("   *************************************************************");
        System.err.println("    ***********************************************************");
        throw new SkipException("Skipping testSubmitEcho because correct DRMAA implementation not found");
    }

    File outFile = tryCreateNetworkTempFile("JnaSessionQueueTest.out");
    Session session = factory.getSession();
    session.init(null);
    try {
        JobTemplate template = session.createJobTemplate();
        template.setRemoteCommand("sh");
        template.setOutputPath(":" + outFile.getAbsolutePath());
        template.setJoinFiles(true);
        template.setArgs(Arrays.asList("-c", "echo \"Hello world.\""));

        String jobId = session.runJob(template);
        System.out.println(String.format("Job id %s", jobId));
        session.deleteJobTemplate(template);

        System.out.println("Waiting for job to run: " + jobId);
        int remotePs = Session.QUEUED_ACTIVE;

        List<Integer> runningStatuses = Arrays.asList(Session.QUEUED_ACTIVE, Session.RUNNING);

        while (runningStatuses.contains(remotePs)) {
            Thread.sleep(30 * 1000L);
            remotePs = session.getJobProgramStatus(jobId);
        }

        Assert.assertEquals(remotePs, Session.DONE, "Job status is not DONE.");

        JobInfo jobInfo = session.wait(jobId, Session.TIMEOUT_NO_WAIT);

        Assert.assertTrue(jobInfo.hasExited(), String.format("Job did not exit cleanly: %s", jobId));
        Assert.assertEquals(jobInfo.getExitStatus(), 0,
                String.format("Exit status for jobId %s is non-zero", jobId));
        if (jobInfo.hasSignaled())
            Assert.fail(String.format("JobId %s exited with signal %s and core dump flag %s", jobId,
                    jobInfo.getTerminatingSignal(), jobInfo.hasCoreDump()));
        Assert.assertFalse(jobInfo.wasAborted(), String.format("Job was aborted: %s", jobId));
    } finally {
        session.exit();
    }

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.gatk.utils.jna.drmaa.v1_0.LibDrmaaQueueTest.java

@Test(dependsOnMethods = { "testDrmaa" })
public void testSubmitEcho() throws Exception {
    if (!queueTestRunModeIsSet) {
        throw new SkipException("Skipping testSubmitEcho because we are in pipeline test dry run mode");
    }/*from ww  w. j a v  a 2s  .c om*/

    if (implementation.contains("LSF")) {
        System.err.println("    *********************************************************");
        System.err.println("   ***********************************************************");
        System.err.println("   ****                                                   ****");
        System.err.println("  ****  Skipping LibDrmaaQueueTest.testSubmitEcho()        ****");
        System.err.println("  ****     Are you using the dotkit .combined_LSF_SGE?     ****");
        System.err.println("   ****                                                   ****");
        System.err.println("   ***********************************************************");
        System.err.println("    *********************************************************");
        throw new SkipException("Skipping testSubmitEcho because correct DRMAA implementation not found");
    }

    Memory error = new Memory(LibDrmaa.DRMAA_ERROR_STRING_BUFFER);
    int errnum;

    File outFile = tryCreateNetworkTempFile("LibDrmaaQueueTest.out");

    errnum = LibDrmaa.drmaa_init(null, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

    if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
        Assert.fail(String.format("Could not initialize the DRMAA library: %s", error.getString(0)));

    try {
        PointerByReference jtRef = new PointerByReference();
        Pointer jt;
        Memory jobIdMem = new Memory(LibDrmaa.DRMAA_JOBNAME_BUFFER);
        String jobId;
        IntByReference remotePs = new IntByReference();
        IntByReference stat = new IntByReference();
        PointerByReference rusage = new PointerByReference();

        errnum = LibDrmaa.drmaa_allocate_job_template(jtRef, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not create job template: %s", error.getString(0)));

        jt = jtRef.getValue();

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_REMOTE_COMMAND, "sh", error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_REMOTE_COMMAND,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_OUTPUT_PATH, ":" + outFile.getAbsolutePath(),
                error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_OUTPUT_PATH,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_JOIN_FILES, "y", error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_JOIN_FILES,
                    error.getString(0)));

        StringArray args = new StringArray(new String[] { "-c", "echo \"Hello world.\"" });

        errnum = LibDrmaa.drmaa_set_vector_attribute(jt, LibDrmaa.DRMAA_V_ARGV, args, error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_V_ARGV,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_run_job(jobIdMem, LibDrmaa.DRMAA_JOBNAME_BUFFER_LEN, jt, error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not submit job: %s", error.getString(0)));

        jobId = jobIdMem.getString(0);

        System.out.println(String.format("Job id %s", jobId));

        errnum = LibDrmaa.drmaa_delete_job_template(jt, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not delete job template: %s", error.getString(0)));

        System.out.println("Waiting for job to run: " + jobId);
        remotePs.setValue(LibDrmaa.DRMAA_PS.DRMAA_PS_QUEUED_ACTIVE);

        List<Integer> runningStatuses = Arrays.asList(LibDrmaa.DRMAA_PS.DRMAA_PS_QUEUED_ACTIVE,
                LibDrmaa.DRMAA_PS.DRMAA_PS_RUNNING);

        while (runningStatuses.contains(remotePs.getValue())) {
            Thread.sleep(30 * 1000L);

            errnum = LibDrmaa.drmaa_job_ps(jobId, remotePs, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Could not get status for jobId %s: %s", jobId, error.getString(0)));
        }

        Assert.assertEquals(remotePs.getValue(), LibDrmaa.DRMAA_PS.DRMAA_PS_DONE, "Job status is not DONE.");

        errnum = LibDrmaa.drmaa_wait(jobId, Pointer.NULL, new NativeLong(0), stat,
                LibDrmaa.DRMAA_TIMEOUT_NO_WAIT, rusage, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Wait failed for jobId %s: %s", jobId, error.getString(0)));

        IntByReference exited = new IntByReference();
        IntByReference exitStatus = new IntByReference();
        IntByReference signaled = new IntByReference();
        Memory signal = new Memory(LibDrmaa.DRMAA_SIGNAL_BUFFER);
        IntByReference coreDumped = new IntByReference();
        IntByReference aborted = new IntByReference();

        errnum = LibDrmaa.drmaa_wifexited(exited, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Exit check failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertTrue(exited.getValue() != 0, String.format("Job did not exit cleanly: %s", jobId));

        errnum = LibDrmaa.drmaa_wexitstatus(exitStatus, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Exit status failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertEquals(exitStatus.getValue(), 0,
                String.format("Exit status for jobId %s is non-zero", jobId));

        errnum = LibDrmaa.drmaa_wifsignaled(signaled, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Signaled check failed for jobId %s: %s", jobId, error.getString(0)));

        if (signaled.getValue() != 0) {
            errnum = LibDrmaa.drmaa_wtermsig(signal, LibDrmaa.DRMAA_SIGNAL_BUFFER_LEN, stat.getValue(), error,
                    LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Signal lookup failed for jobId %s: %s", jobId, error.getString(0)));

            errnum = LibDrmaa.drmaa_wcoredump(coreDumped, stat.getValue(), error,
                    LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(
                        String.format("Core dump check failed for jobId %s: %s", jobId, error.getString(0)));

            Assert.fail(String.format("JobId %s exited with signal %s and core dump flag %d", jobId,
                    signal.getString(0), coreDumped.getValue()));
        }

        errnum = LibDrmaa.drmaa_wifaborted(aborted, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Aborted check failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertTrue(aborted.getValue() == 0, String.format("Job was aborted: %s", jobId));

    } finally {
        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS) {
            LibDrmaa.drmaa_exit(error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);
        } else {
            errnum = LibDrmaa.drmaa_exit(error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Could not shut down the DRMAA library: %s", error.getString(0)));
        }
    }

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.gatk.utils.jna.lsf.v7_0_6.LibBatQueueTest.java

@Test(enabled = false)
public void testSubmitEcho() throws Exception {
    if (!queueTestRunModeIsSet) {
        throw new SkipException("Skipping testSubmitEcho because we are in queue test dry run mode");
    }//from  ww  w.jav  a 2  s . co  m

    String queue = "hour";
    File outFile = tryCreateNetworkTempFile("LibBatQueueTest.out");

    submit req = new submit();

    for (int i = 0; i < LibLsf.LSF_RLIM_NLIMITS; i++)
        req.rLimits[i] = LibLsf.DEFAULT_RLIMIT;

    req.projectName = "LibBatQueueTest";
    req.options |= LibBat.SUB_PROJECT_NAME;

    req.queue = queue;
    req.options |= LibBat.SUB_QUEUE;

    req.outFile = outFile.getPath();
    req.options |= LibBat.SUB_OUT_FILE;

    req.userPriority = 100;
    req.options2 |= LibBat.SUB2_JOB_PRIORITY;

    req.command = "echo \"Hello world.\"";

    String[] argv = { "", "-a", "tv" };
    int setOptionResult = LibBat.setOption_(argv.length, new StringArray(argv), "a:", req, ~0, ~0, ~0, null);
    Assert.assertTrue(setOptionResult != -1, "setOption_ returned -1");

    submitReply reply = new submitReply();
    long jobId = LibBat.lsb_submit(req, reply);

    Assert.assertFalse(jobId < 0, LibBat.lsb_sperror("Error dispatching"));

    System.out.println("Waiting for job to run: " + jobId);
    int jobStatus = LibBat.JOB_STAT_PEND;
    while (Utils.isFlagSet(jobStatus, LibBat.JOB_STAT_PEND)
            || Utils.isFlagSet(jobStatus, LibBat.JOB_STAT_RUN)) {
        Thread.sleep(30 * 1000L);

        int numJobs = LibBat.lsb_openjobinfo(jobId, null, null, null, null, LibBat.ALL_JOB);
        try {
            Assert.assertEquals(numJobs, 1);

            IntByReference more = new IntByReference();

            jobInfoEnt jobInfo = LibBat.lsb_readjobinfo(more);
            Assert.assertNotNull(jobInfo, "Job info is null");
            Assert.assertEquals(more.getValue(), 0, "More job info results than expected");

            jobStatus = jobInfo.status;
        } finally {
            LibBat.lsb_closejobinfo();
        }
    }
    Assert.assertTrue(Utils.isFlagSet(jobStatus, LibBat.JOB_STAT_DONE),
            String.format("Unexpected job status: 0x%02x", jobStatus));

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    Assert.assertEquals(reply.queue, req.queue, "LSF reply queue does not match requested queue.");
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.sting.jna.drmaa.v1_0.JnaSessionIntegrationTest.java

@Test
public void testSubmitEcho() throws Exception {
    File outFile = createNetworkTempFile("JnaSessionIntegrationTest-", ".out");
    Session session = factory.getSession();
    session.init(null);/*from ww w.j ava2 s . co m*/
    try {
        JobTemplate template = session.createJobTemplate();
        template.setRemoteCommand("sh");
        template.setOutputPath(":" + outFile.getAbsolutePath());
        template.setJoinFiles(true);
        template.setArgs(Arrays.asList("-c", "echo \"Hello world.\""));

        String jobId = session.runJob(template);
        System.out.println(String.format("Job id %s", jobId));
        session.deleteJobTemplate(template);

        System.out.println("Waiting for job to run: " + jobId);
        int remotePs = Session.QUEUED_ACTIVE;

        List<Integer> runningStatuses = Arrays.asList(Session.QUEUED_ACTIVE, Session.RUNNING);

        while (runningStatuses.contains(remotePs)) {
            Thread.sleep(30 * 1000L);
            remotePs = session.getJobProgramStatus(jobId);
        }

        Assert.assertEquals(remotePs, Session.DONE, "Job status is not DONE.");

        JobInfo jobInfo = session.wait(jobId, Session.TIMEOUT_NO_WAIT);

        Assert.assertTrue(jobInfo.hasExited(), String.format("Job did not exit cleanly: %s", jobId));
        Assert.assertEquals(jobInfo.getExitStatus(), 0,
                String.format("Exit status for jobId %s is non-zero", jobId));
        if (jobInfo.hasSignaled())
            Assert.fail(String.format("JobId %s exited with signal %s and core dump flag %s", jobId,
                    jobInfo.getTerminatingSignal(), jobInfo.hasCoreDump()));
        Assert.assertFalse(jobInfo.wasAborted(), String.format("Job was aborted: %s", jobId));
    } finally {
        session.exit();
    }

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.sting.jna.drmaa.v1_0.JnaSessionPipelineTest.java

@Test(dependsOnMethods = { "testDrmaa" })
public void testSubmitEcho() throws Exception {
    if (implementation.contains("LSF")) {
        System.err.println("    ***********************************************************");
        System.err.println("   *************************************************************");
        System.err.println("   ****                                                     ****");
        System.err.println("  ****  Skipping JnaSessionIntegrationTest.testSubmitEcho()  ****");
        System.err.println("  ****      Are you using the dotkit .combined_LSF_SGE?      ****");
        System.err.println("   ****                                                     ****");
        System.err.println("   *************************************************************");
        System.err.println("    ***********************************************************");
        return;//from  w ww .  j ava2  s .c  o m
    }

    File outFile = tryCreateNetworkTempFile("JnaSessionIntegrationTest.out");
    Session session = factory.getSession();
    session.init(null);
    try {
        JobTemplate template = session.createJobTemplate();
        template.setRemoteCommand("sh");
        template.setOutputPath(":" + outFile.getAbsolutePath());
        template.setJoinFiles(true);
        template.setArgs(Arrays.asList("-c", "echo \"Hello world.\""));

        String jobId = session.runJob(template);
        System.out.println(String.format("Job id %s", jobId));
        session.deleteJobTemplate(template);

        System.out.println("Waiting for job to run: " + jobId);
        int remotePs = Session.QUEUED_ACTIVE;

        List<Integer> runningStatuses = Arrays.asList(Session.QUEUED_ACTIVE, Session.RUNNING);

        while (runningStatuses.contains(remotePs)) {
            Thread.sleep(30 * 1000L);
            remotePs = session.getJobProgramStatus(jobId);
        }

        Assert.assertEquals(remotePs, Session.DONE, "Job status is not DONE.");

        JobInfo jobInfo = session.wait(jobId, Session.TIMEOUT_NO_WAIT);

        Assert.assertTrue(jobInfo.hasExited(), String.format("Job did not exit cleanly: %s", jobId));
        Assert.assertEquals(jobInfo.getExitStatus(), 0,
                String.format("Exit status for jobId %s is non-zero", jobId));
        if (jobInfo.hasSignaled())
            Assert.fail(String.format("JobId %s exited with signal %s and core dump flag %s", jobId,
                    jobInfo.getTerminatingSignal(), jobInfo.hasCoreDump()));
        Assert.assertFalse(jobInfo.wasAborted(), String.format("Job was aborted: %s", jobId));
    } finally {
        session.exit();
    }

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.sting.jna.drmaa.v1_0.LibDrmaaIntegrationTest.java

@Test(dependsOnMethods = { "testDrmaa" })
public void testSubmitEcho() throws Exception {
    if (implementation.indexOf("LSF") >= 0) {
        System.err.println("    *********************************************************");
        System.err.println("   ***********************************************************");
        System.err.println("   ****                                                   ****");
        System.err.println("  ****  Skipping LibDrmaaIntegrationTest.testSubmitEcho()  ****");
        System.err.println("  ****     Are you using the dotkit .combined_LSF_SGE?     ****");
        System.err.println("   ****                                                   ****");
        System.err.println("   ***********************************************************");
        System.err.println("    *********************************************************");
        return;/*  ww  w .j  av a 2  s.  co m*/
    }

    Memory error = new Memory(LibDrmaa.DRMAA_ERROR_STRING_BUFFER);
    int errnum;

    File outFile = createNetworkTempFile("LibDrmaaIntegrationTest-", ".out");

    errnum = LibDrmaa.drmaa_init(null, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

    if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
        Assert.fail(String.format("Could not initialize the DRMAA library: %s", error.getString(0)));

    try {
        PointerByReference jtRef = new PointerByReference();
        Pointer jt;
        Memory jobIdMem = new Memory(LibDrmaa.DRMAA_JOBNAME_BUFFER);
        String jobId;
        IntByReference remotePs = new IntByReference();
        IntByReference stat = new IntByReference();
        PointerByReference rusage = new PointerByReference();

        errnum = LibDrmaa.drmaa_allocate_job_template(jtRef, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not create job template: %s", error.getString(0)));

        jt = jtRef.getValue();

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_REMOTE_COMMAND, "sh", error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_REMOTE_COMMAND,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_OUTPUT_PATH, ":" + outFile.getAbsolutePath(),
                error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_OUTPUT_PATH,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_JOIN_FILES, "y", error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_JOIN_FILES,
                    error.getString(0)));

        StringArray args = new StringArray(new String[] { "-c", "echo \"Hello world.\"" });

        errnum = LibDrmaa.drmaa_set_vector_attribute(jt, LibDrmaa.DRMAA_V_ARGV, args, error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_V_ARGV,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_run_job(jobIdMem, LibDrmaa.DRMAA_JOBNAME_BUFFER_LEN, jt, error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not submit job: %s", error.getString(0)));

        jobId = jobIdMem.getString(0);

        System.out.println(String.format("Job id %s", jobId));

        errnum = LibDrmaa.drmaa_delete_job_template(jt, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not delete job template: %s", error.getString(0)));

        System.out.println("Waiting for job to run: " + jobId);
        remotePs.setValue(LibDrmaa.DRMAA_PS.DRMAA_PS_QUEUED_ACTIVE);

        List<Integer> runningStatuses = Arrays.asList(LibDrmaa.DRMAA_PS.DRMAA_PS_QUEUED_ACTIVE,
                LibDrmaa.DRMAA_PS.DRMAA_PS_RUNNING);

        while (runningStatuses.contains(remotePs.getValue())) {
            Thread.sleep(30 * 1000L);

            errnum = LibDrmaa.drmaa_job_ps(jobId, remotePs, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Could not get status for jobId %s: %s", jobId, error.getString(0)));
        }

        Assert.assertEquals(remotePs.getValue(), LibDrmaa.DRMAA_PS.DRMAA_PS_DONE, "Job status is not DONE.");

        errnum = LibDrmaa.drmaa_wait(jobId, Pointer.NULL, new NativeLong(0), stat,
                LibDrmaa.DRMAA_TIMEOUT_NO_WAIT, rusage, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Wait failed for jobId %s: %s", jobId, error.getString(0)));

        IntByReference exited = new IntByReference();
        IntByReference exitStatus = new IntByReference();
        IntByReference signaled = new IntByReference();
        Memory signal = new Memory(LibDrmaa.DRMAA_SIGNAL_BUFFER);
        IntByReference coreDumped = new IntByReference();
        IntByReference aborted = new IntByReference();

        errnum = LibDrmaa.drmaa_wifexited(exited, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Exit check failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertTrue(exited.getValue() != 0, String.format("Job did not exit cleanly: %s", jobId));

        errnum = LibDrmaa.drmaa_wexitstatus(exitStatus, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Exit status failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertEquals(exitStatus.getValue(), 0,
                String.format("Exit status for jobId %s is non-zero", jobId));

        errnum = LibDrmaa.drmaa_wifsignaled(signaled, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Signaled check failed for jobId %s: %s", jobId, error.getString(0)));

        if (signaled.getValue() != 0) {
            errnum = LibDrmaa.drmaa_wtermsig(signal, LibDrmaa.DRMAA_SIGNAL_BUFFER_LEN, stat.getValue(), error,
                    LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Signal lookup failed for jobId %s: %s", jobId, error.getString(0)));

            errnum = LibDrmaa.drmaa_wcoredump(coreDumped, stat.getValue(), error,
                    LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(
                        String.format("Core dump check failed for jobId %s: %s", jobId, error.getString(0)));

            Assert.fail(String.format("JobId %s exited with signal %s and core dump flag %d", jobId,
                    signal.getString(0), coreDumped.getValue()));
        }

        errnum = LibDrmaa.drmaa_wifaborted(aborted, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Aborted check failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertTrue(aborted.getValue() == 0, String.format("Job was aborted: %s", jobId));

    } finally {
        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS) {
            LibDrmaa.drmaa_exit(error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);
        } else {
            errnum = LibDrmaa.drmaa_exit(error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Could not shut down the DRMAA library: %s", error.getString(0)));
        }
    }

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.sting.jna.drmaa.v1_0.LibDrmaaPipelineTest.java

@Test(dependsOnMethods = { "testDrmaa" })
public void testSubmitEcho() throws Exception {
    if (implementation.contains("LSF")) {
        System.err.println("    *********************************************************");
        System.err.println("   ***********************************************************");
        System.err.println("   ****                                                   ****");
        System.err.println("  ****  Skipping LibDrmaaIntegrationTest.testSubmitEcho()  ****");
        System.err.println("  ****     Are you using the dotkit .combined_LSF_SGE?     ****");
        System.err.println("   ****                                                   ****");
        System.err.println("   ***********************************************************");
        System.err.println("    *********************************************************");
        return;/*from   w  w  w  .j a v a  2  s.c  o  m*/
    }

    Memory error = new Memory(LibDrmaa.DRMAA_ERROR_STRING_BUFFER);
    int errnum;

    File outFile = tryCreateNetworkTempFile("LibDrmaaIntegrationTest.out");

    errnum = LibDrmaa.drmaa_init(null, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

    if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
        Assert.fail(String.format("Could not initialize the DRMAA library: %s", error.getString(0)));

    try {
        PointerByReference jtRef = new PointerByReference();
        Pointer jt;
        Memory jobIdMem = new Memory(LibDrmaa.DRMAA_JOBNAME_BUFFER);
        String jobId;
        IntByReference remotePs = new IntByReference();
        IntByReference stat = new IntByReference();
        PointerByReference rusage = new PointerByReference();

        errnum = LibDrmaa.drmaa_allocate_job_template(jtRef, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not create job template: %s", error.getString(0)));

        jt = jtRef.getValue();

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_REMOTE_COMMAND, "sh", error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_REMOTE_COMMAND,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_OUTPUT_PATH, ":" + outFile.getAbsolutePath(),
                error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_OUTPUT_PATH,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_set_attribute(jt, LibDrmaa.DRMAA_JOIN_FILES, "y", error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_JOIN_FILES,
                    error.getString(0)));

        StringArray args = new StringArray(new String[] { "-c", "echo \"Hello world.\"" });

        errnum = LibDrmaa.drmaa_set_vector_attribute(jt, LibDrmaa.DRMAA_V_ARGV, args, error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not set attribute \"%s\": %s", LibDrmaa.DRMAA_V_ARGV,
                    error.getString(0)));

        errnum = LibDrmaa.drmaa_run_job(jobIdMem, LibDrmaa.DRMAA_JOBNAME_BUFFER_LEN, jt, error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not submit job: %s", error.getString(0)));

        jobId = jobIdMem.getString(0);

        System.out.println(String.format("Job id %s", jobId));

        errnum = LibDrmaa.drmaa_delete_job_template(jt, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Could not delete job template: %s", error.getString(0)));

        System.out.println("Waiting for job to run: " + jobId);
        remotePs.setValue(LibDrmaa.DRMAA_PS.DRMAA_PS_QUEUED_ACTIVE);

        List<Integer> runningStatuses = Arrays.asList(LibDrmaa.DRMAA_PS.DRMAA_PS_QUEUED_ACTIVE,
                LibDrmaa.DRMAA_PS.DRMAA_PS_RUNNING);

        while (runningStatuses.contains(remotePs.getValue())) {
            Thread.sleep(30 * 1000L);

            errnum = LibDrmaa.drmaa_job_ps(jobId, remotePs, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Could not get status for jobId %s: %s", jobId, error.getString(0)));
        }

        Assert.assertEquals(remotePs.getValue(), LibDrmaa.DRMAA_PS.DRMAA_PS_DONE, "Job status is not DONE.");

        errnum = LibDrmaa.drmaa_wait(jobId, Pointer.NULL, new NativeLong(0), stat,
                LibDrmaa.DRMAA_TIMEOUT_NO_WAIT, rusage, error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Wait failed for jobId %s: %s", jobId, error.getString(0)));

        IntByReference exited = new IntByReference();
        IntByReference exitStatus = new IntByReference();
        IntByReference signaled = new IntByReference();
        Memory signal = new Memory(LibDrmaa.DRMAA_SIGNAL_BUFFER);
        IntByReference coreDumped = new IntByReference();
        IntByReference aborted = new IntByReference();

        errnum = LibDrmaa.drmaa_wifexited(exited, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Exit check failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertTrue(exited.getValue() != 0, String.format("Job did not exit cleanly: %s", jobId));

        errnum = LibDrmaa.drmaa_wexitstatus(exitStatus, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Exit status failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertEquals(exitStatus.getValue(), 0,
                String.format("Exit status for jobId %s is non-zero", jobId));

        errnum = LibDrmaa.drmaa_wifsignaled(signaled, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Signaled check failed for jobId %s: %s", jobId, error.getString(0)));

        if (signaled.getValue() != 0) {
            errnum = LibDrmaa.drmaa_wtermsig(signal, LibDrmaa.DRMAA_SIGNAL_BUFFER_LEN, stat.getValue(), error,
                    LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Signal lookup failed for jobId %s: %s", jobId, error.getString(0)));

            errnum = LibDrmaa.drmaa_wcoredump(coreDumped, stat.getValue(), error,
                    LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(
                        String.format("Core dump check failed for jobId %s: %s", jobId, error.getString(0)));

            Assert.fail(String.format("JobId %s exited with signal %s and core dump flag %d", jobId,
                    signal.getString(0), coreDumped.getValue()));
        }

        errnum = LibDrmaa.drmaa_wifaborted(aborted, stat.getValue(), error,
                LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
            Assert.fail(String.format("Aborted check failed for jobId %s: %s", jobId, error.getString(0)));

        Assert.assertTrue(aborted.getValue() == 0, String.format("Job was aborted: %s", jobId));

    } finally {
        if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS) {
            LibDrmaa.drmaa_exit(error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);
        } else {
            errnum = LibDrmaa.drmaa_exit(error, LibDrmaa.DRMAA_ERROR_STRING_BUFFER_LEN);

            if (errnum != LibDrmaa.DRMAA_ERRNO.DRMAA_ERRNO_SUCCESS)
                Assert.fail(String.format("Could not shut down the DRMAA library: %s", error.getString(0)));
        }
    }

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    System.out.println("--- output ---");
    System.out.println(FileUtils.readFileToString(outFile));
    System.out.println("--- output ---");
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    System.out.println("Validating that we reached the end of the test without exit.");
}

From source file:org.broadinstitute.sting.jna.lsf.v7_0_6.LibBatIntegrationTest.java

@Test
public void testSubmitEcho() throws InterruptedException {
    String queue = "hour";
    File outFile = createNetworkTempFile("LibBatIntegrationTest-", ".out");

    submit req = new submit();

    for (int i = 0; i < LibLsf.LSF_RLIM_NLIMITS; i++)
        req.rLimits[i] = LibLsf.DEFAULT_RLIMIT;

    req.projectName = "LibBatIntegrationTest";
    req.options |= LibBat.SUB_PROJECT_NAME;

    req.queue = queue;/*ww  w  . jav  a2 s  .  c  o  m*/
    req.options |= LibBat.SUB_QUEUE;

    req.outFile = outFile.getPath();
    req.options |= LibBat.SUB_OUT_FILE;

    req.userPriority = 100;
    req.options2 |= LibBat.SUB2_JOB_PRIORITY;

    req.command = "echo \"Hello world.\"";

    submitReply reply = new submitReply();
    long jobId = LibBat.lsb_submit(req, reply);

    Assert.assertFalse(jobId < 0, LibBat.lsb_sperror("Error dispatching"));

    System.out.println("Waiting for job to run: " + jobId);
    int jobStatus = LibBat.JOB_STAT_PEND;
    while (Utils.isFlagSet(jobStatus, LibBat.JOB_STAT_PEND)
            || Utils.isFlagSet(jobStatus, LibBat.JOB_STAT_RUN)) {
        Thread.sleep(30 * 1000L);

        int numJobs = LibBat.lsb_openjobinfo(jobId, null, null, null, null, LibBat.ALL_JOB);
        try {
            Assert.assertEquals(numJobs, 1);

            IntByReference more = new IntByReference();

            jobInfoEnt jobInfo = LibBat.lsb_readjobinfo(more);
            Assert.assertNotNull(jobInfo, "Job info is null");
            Assert.assertEquals(more.getValue(), 0, "More job info results than expected");

            jobStatus = jobInfo.status;
        } finally {
            LibBat.lsb_closejobinfo();
        }
    }
    Assert.assertTrue(Utils.isFlagSet(jobStatus, LibBat.JOB_STAT_DONE),
            String.format("Unexpected job status: 0x%02x", jobStatus));

    Assert.assertTrue(FileUtils.waitFor(outFile, 120), "File not found: " + outFile.getAbsolutePath());
    Assert.assertTrue(outFile.delete(), "Unable to delete " + outFile.getAbsolutePath());
    Assert.assertEquals(reply.queue, req.queue, "LSF reply queue does not match requested queue.");
    System.out.println("Validating that we reached the end of the test without exit.");
}