org.ggf.drmaa
Class JobInfo

java.lang.Object
  extended byorg.ggf.drmaa.JobInfo
All Implemented Interfaces:
java.io.Serializable
Direct Known Subclasses:
JobInfoImpl

public abstract class JobInfo
extends java.lang.Object
implements java.io.Serializable

The class represents the status and usage information for a finished job. It contains the job's id, the job's exit status, and a table indicating the amount of resources used during the execution of the job. The resource table contents are dependent on the DRM.

Example

public static void main (String[] args) {
   SessionFactory factory = SessionFactory.getFactory ();
   Session session = factory.getSession ();

   try {
      session.init (null);
      JobTemplate jt = session.createJobTemplate ();
      jt.setRemoteCommand ("sleeper.sh");
      jt.setArgs (new String[] {"5"});

      String id = session.runJob (jt);

      session.deleteJobTemplate (jt);

      JobInfo info = session.wait (id, Session.TIMEOUT_WAIT_FOREVER);

      // Interrogate job exit status
      if (info.wasAborted ()) {
         System.out.println("Job " + info.getJobId () + " never ran");
      }
      else if (info.hasExited ()) {
         System.out.println("Job " + info.getJobId () +
                            " finished regularly with exit status " +
                            info.getExitStatus ());
      }
      else if (info.hasSignaled ()) {
         System.out.println("Job " + info.getJobId () +
                            " finished due to signal " +
                            info.getTerminatingSignal ());

         if (info.hasCoreDump()) {
            System.out.println("A core dump is available.");
         }
      }
      else {
         System.out.println("Job " + info.getJobId () +
                            " finished with unclear conditions");
      }

      System.out.println ("\nJob Usage:");

      Map rmap = info.getResourceUsage ();
      Iterator i = rmap.keySet ().iterator ();

      while (i.hasNext ()) {
         String name = (String)i.next ();
         String value = (String)rmap.get (name);

         System.out.println("  " + name + "=" + value);
      }

      session.exit ();
   }
   catch (DrmaaException e) {
      System.out.println ("Error: " + e.getMessage ());
   }
 }
 

Since:
0.4.2
Author:
dan.templeton@sun.com
See Also:
Serialized Form

Field Summary
protected  java.lang.String jobId
          the id of the job this class describes
protected  java.util.Map resourceUsage
          a Map of resource usage data
protected  int status
          the exit status code for the job
 
Constructor Summary
protected JobInfo(java.lang.String jobId, int status, java.util.Map resourceUsage)
          Creates a new instance of JobInfo
 
Method Summary
abstract  int getExitStatus()
          If hasExited() returns true, this function returns the exit code that the job passed to _exit() (see exit(2)) or exit(3C)), or the value that the child process returned from main.
 java.lang.String getJobId()
          Get the job id.
 java.util.Map getResourceUsage()
          Get the resource usage data.
abstract  java.lang.String getTerminatingSignal()
          If hasSignaled() returns true, this returns a representation of the signal that caused the termination of the job.
abstract  boolean hasCoreDump()
          If hasSignaled() returns true, this function returns true if a core image of the terminated job was created.
abstract  boolean hasExited()
          Returns true if the job terminated normally.
abstract  boolean hasSignaled()
          Returns true if the job terminated due to the receipt of a signal.
abstract  boolean wasAborted()
          Returns true if the job ended before entering the running state.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

jobId

protected java.lang.String jobId
the id of the job this class describes


status

protected int status
the exit status code for the job


resourceUsage

protected java.util.Map resourceUsage
a Map of resource usage data

Constructor Detail

JobInfo

protected JobInfo(java.lang.String jobId,
                  int status,
                  java.util.Map resourceUsage)
Creates a new instance of JobInfo

Parameters:
jobId - the id of the job
status - the status code of the job
resourceUsage - the resource usage data for the job. No copy will be made. Because no copy is made, null should not be pass in, as this will cause getResourceUsage() to throw a NullPointer.
Method Detail

getJobId

public java.lang.String getJobId()
Get the job id.

Returns:
the job id

getResourceUsage

public java.util.Map getResourceUsage()
Get the resource usage data.

Returns:
the resource usage data

hasExited

public abstract boolean hasExited()
Returns true if the job terminated normally. False can also indicate that although the job has terminated normally an exit status is not available or that it is not known whether the job terminated normally. In both cases getExitStatus() doesn't provide exit status information. True indicates more detailed diagnosis can be provided by means of getExitStatus().

Returns:
if the job has exited

getExitStatus

public abstract int getExitStatus()
If hasExited() returns true, this function returns the exit code that the job passed to _exit() (see exit(2)) or exit(3C)), or the value that the child process returned from main.

Returns:
the exit code for the job

hasSignaled

public abstract boolean hasSignaled()
Returns true if the job terminated due to the receipt of a signal. False can also indicate that although the job has terminated due to the receipt of a signal the signal is not available or that it is not known whether the job terminated due to the receipt of a signal. In both cases getTerminatingSignal() does not provide signal information.

Returns:
if the job exited on a signal

getTerminatingSignal

public abstract java.lang.String getTerminatingSignal()
If hasSignaled() returns true, this returns a representation of the signal that caused the termination of the job. For signals declared by POSIX, the symbolic names are be returned (e.g., SIGABRT, SIGALRM).
For signals not declared by POSIX, a DRM dependent string is returned.

Returns:
the name of the terminating signal

hasCoreDump

public abstract boolean hasCoreDump()
If hasSignaled() returns true, this function returns true if a core image of the terminated job was created.

Returns:
whether a core dump image was created

wasAborted

public abstract boolean wasAborted()
Returns true if the job ended before entering the running state.

Returns:
whether the job ended before entering the running state