org.ourgrid.gridmachine.useragent.test
Class FakeUserAgentServer

java.lang.Object
  extended by org.ourgrid.gridmachine.useragent.test.FakeUserAgentServer
All Implemented Interfaces:
java.rmi.Remote, Gum

public class FakeUserAgentServer
extends java.lang.Object
implements Gum

A FakeUserAgentServer for UserAgentClient's unit tests.


Constructor Summary
FakeUserAgentServer()
           
FakeUserAgentServer(GumID gumID, GumSpec gumSpec)
           
FakeUserAgentServer(GumSpec spec)
           
 
Method Summary
 void changeFilePermissions(java.io.File file, int permissions)
          Change the permissions of a file located at the Grid Machine.
 java.lang.String createPlaypen(int size)
          Creates a playpen in the Grid Machine.
 java.lang.String createStorageDirectory()
          Creates the storage directory.
 boolean fileExists(java.io.File file)
          Check if the file denoted by file abstraction exists.
 boolean fileNameExists(java.lang.String file)
          Returns true if a specified filename was called.
 byte[] getFile(java.lang.String filePath, long filePos, int size)
          Get an array of bytes FROM a file that is located at the Grid Machine.
protected  int getFileExistsCalls()
           
protected  int getGetStorageDirCalls()
           
 GumSpec getGuMSpec()
           
 GumID getID()
           
protected  int getPutFileCalls()
           
 java.lang.String getRemoteFileDigest(java.io.File remoteFile)
          Used to return the digest representation of a file.
 long getRemoteFileLastModification(java.io.File remoteFile, boolean normalized)
          Gets the time when the last modification in the specified file has occurred.
 long getRemoteFileLength(java.io.File remoteFile)
          Determines the remote file size in bytes.
 ExecutorResult getResult(ExecutorHandle handle)
          Gives access to the result of execution.
 GumStatus getStatus()
          Gets the status of the grid machine.
 java.lang.String getStorageDirectory()
          Returns the remote storage directory.
 void invalidate()
           
 void putFile(java.lang.String remoteFile, byte[] data, boolean firstSlice)
          Put an array of bytes INTO the file specified by removeFile at the Grid Machine.
 ExecutorHandle remoteExecute()
           
 ExecutorHandle remoteExecute(java.lang.String remoteDir, java.lang.String command, java.util.Map envVars)
          Executes a remote task command in a specific directory on the grid machine.
protected  void setPutFileException(boolean b)
           
protected  void setStorageDirectory(java.lang.String s)
           
 void shutDown()
           
 void startReplica()
          Determines a replica start.
 void stopReplica()
          Tells the user agent to kill any executing tasks and also clean the environment to a next execution.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FakeUserAgentServer

public FakeUserAgentServer()
                    throws java.rmi.RemoteException
Throws:
java.rmi.RemoteException

FakeUserAgentServer

public FakeUserAgentServer(GumSpec spec)
                    throws java.rmi.RemoteException
Throws:
java.rmi.RemoteException

FakeUserAgentServer

public FakeUserAgentServer(GumID gumID,
                           GumSpec gumSpec)
                    throws java.rmi.RemoteException
Throws:
java.rmi.RemoteException
Method Detail

remoteExecute

public ExecutorHandle remoteExecute(java.lang.String remoteDir,
                                    java.lang.String command,
                                    java.util.Map envVars)
Description copied from interface: Gum
Executes a remote task command in a specific directory on the grid machine.

Specified by:
remoteExecute in interface Gum
Parameters:
remoteDir - directory where the command will be executed. For example, in a Unix environment, a cd to this directory will be done before running the specified command.
command - the command that will be executed in the specified directory.
envVars - a Map containing a set of environment variable names as the keys and the corresponding values as the values set. All these variables will be set before the execution of the command. The keys and values of Map should be String or, at least, override the Object#toString method.
Returns:
A handle that identifies executions dispatched to instances of a native Executor class.

remoteExecute

public ExecutorHandle remoteExecute()

putFile

public void putFile(java.lang.String remoteFile,
                    byte[] data,
                    boolean firstSlice)
             throws java.rmi.RemoteException,
                    java.io.IOException
Description copied from interface: Gum
Put an array of bytes INTO the file specified by removeFile at the Grid Machine.

Specified by:
putFile in interface Gum
Parameters:
remoteFile - the name of file that where the array of bytes will be appended
data - an array of bytes that must be appended to the file.
firstSlice - Indicates if the array of bytes is the first slice of the file or not. If true and remoteFile exists, the file will be overwritten. Otherwise, the array of bytes will just be appended to the file.
Throws:
java.rmi.RemoteException - if some RMI error occurs during the putFile() method invocation.
java.io.IOException - if some error occurs during the writing process.

getFile

public byte[] getFile(java.lang.String filePath,
                      long filePos,
                      int size)
Description copied from interface: Gum
Get an array of bytes FROM a file that is located at the Grid Machine.

Specified by:
getFile in interface Gum
Parameters:
filePath - the path where the file is located.
filePos - the position into the file from the array will be read.
size - the size of array of bytes that must be read.
Returns:
the array of bytes read from the file.

fileExists

public boolean fileExists(java.io.File file)
Description copied from interface: Gum
Check if the file denoted by file abstraction exists.

Specified by:
fileExists in interface Gum
Parameters:
file - the file that will be searched
Returns:
true if the file exists, false otherwise.

fileNameExists

public boolean fileNameExists(java.lang.String file)
Returns true if a specified filename was called.

Parameters:
file - To verify file name
Returns:
True if a put was made with specified file name

changeFilePermissions

public void changeFilePermissions(java.io.File file,
                                  int permissions)
Description copied from interface: Gum
Change the permissions of a file located at the Grid Machine. For example, change the permissions of a script file, in order to execute it.

Specified by:
changeFilePermissions in interface Gum
Parameters:
file - the file which permissions will be changed.
permissions - a string specifying the permissions. The string must be composed of three numbers, like in the UNIX-like systems. For instance, "rwxrwx---" must be represented by "770".

getRemoteFileLastModification

public long getRemoteFileLastModification(java.io.File remoteFile,
                                          boolean normalized)
Description copied from interface: Gum
Gets the time when the last modification in the specified file has occurred.

Specified by:
getRemoteFileLastModification in interface Gum
Parameters:
remoteFile - The file located at the Grid Machine which the modification time will be determined.
normalized - Indicates if the last modification time must be normalized to the TIMEZONE-0.
Returns:
The number of milliseconds from 1/Jan/1970 to the moment of file last modification.

getRemoteFileLength

public long getRemoteFileLength(java.io.File remoteFile)
Description copied from interface: Gum
Determines the remote file size in bytes.

Specified by:
getRemoteFileLength in interface Gum
Parameters:
remoteFile - The file located at the Grid Machine which the size must be determined.
Returns:
The size of the file in bytes.

getRemoteFileDigest

public java.lang.String getRemoteFileDigest(java.io.File remoteFile)
Description copied from interface: Gum
Used to return the digest representation of a file. Files with the same content must have the same digest. Different content files must have different digests.

Specified by:
getRemoteFileDigest in interface Gum
Parameters:
remoteFile - if the file used to generate the digest
Returns:
The digest representation of the file or 0 if its a digest from a directory.

createPlaypen

public java.lang.String createPlaypen(int size)
Description copied from interface: Gum
Creates a playpen in the Grid Machine. The playpen is supposed to be an area reserved to store temporary files related to the execution of a Task. It is important that a gum consumer always call stopReplica() after using the gum to assure the playpen will be destroyed.

Specified by:
createPlaypen in interface Gum
Parameters:
size - The number of bytes that must be reserved to the playpen.
Returns:
The path to the directory at the Grid Machine corresponding to the playpen.

createStorageDirectory

public java.lang.String createStorageDirectory()
Description copied from interface: Gum
Creates the storage directory. If it already exists, nothing is done.

Specified by:
createStorageDirectory in interface Gum
Returns:
the absolute path of the storage directory.

getStorageDirectory

public java.lang.String getStorageDirectory()
Description copied from interface: Gum
Returns the remote storage directory. If it does not exist, it should be created.

Specified by:
getStorageDirectory in interface Gum
Returns:
the path of the storage directory.

getPutFileCalls

protected int getPutFileCalls()

getFileExistsCalls

protected int getFileExistsCalls()

getGetStorageDirCalls

protected int getGetStorageDirCalls()

setPutFileException

protected void setPutFileException(boolean b)

setStorageDirectory

protected void setStorageDirectory(java.lang.String s)

getResult

public ExecutorResult getResult(ExecutorHandle handle)
Description copied from interface: Gum
Gives access to the result of execution.

Specified by:
getResult in interface Gum
Parameters:
handle - a handle that identifies the execution of interest
Returns:
an object that contains information about the execution (exit value, stderr, stdout).

getStatus

public GumStatus getStatus()
Description copied from interface: Gum
Gets the status of the grid machine. It may assume one of five states: UP, READY, RUNNING, OWNER and DOWN, described above.

Specified by:
getStatus in interface Gum
Returns:
the status of this GridMachine.
See Also:
GumStatus

getID

public GumID getID()

getGuMSpec

public GumSpec getGuMSpec()

invalidate

public void invalidate()

shutDown

public void shutDown()

startReplica

public void startReplica()
                  throws java.rmi.RemoteException
Description copied from interface: Gum
Determines a replica start. When a replica is started the gum must listen and hold information about created directories, process and anything that is created during the replica execution. It's impossible to execute anything or create a playpen at the gum before this method is called.

Specified by:
startReplica in interface Gum
Throws:
java.rmi.RemoteException - if some RMI error occurs during this method invocation.

stopReplica

public void stopReplica()
                 throws java.rmi.RemoteException
Description copied from interface: Gum
Tells the user agent to kill any executing tasks and also clean the environment to a next execution. This is done by cleaning any playpen created. Any invalidation or shutdown must invoke this method to assure that the gum is clean.

Specified by:
stopReplica in interface Gum
Throws:
java.rmi.RemoteException - If some RMI error occurs during this method invocation.