Apache JMeter

org.apache.jmeter.services
Class FileServer

java.lang.Object
  extended by org.apache.jmeter.services.FileServer

public class FileServer
extends Object

The point of this class is to provide thread-safe access to files, and to provide some simplifying assumptions about where to find files and how to name them. For instance, putting supporting files in the same directory as the saved test plan file allows users to refer to the file with just it's name - this FileServer class will find the file without a problem. Eventually, I want all in-test file access to be done through here, with the goal of packaging up entire test plans as a directory structure that can be sent via rmi to remote servers (currently, one must make sure the remote server has all support files in a relative-same location) and to package up test plans to execute on unknown boxes that only have Java installed.


Method Summary
 void closeFile(String name)
           
 void closeFiles()
           
 String getBaseDir()
           
 File getBaseDirRelative()
          Calculates the relative path from DEFAULT_BASE to the current base, which must be the same as or a child of the default.
static String getDefaultBase()
           
static FileServer getFileServer()
           
 String[] getParsedLine(String alias, boolean recycle, boolean firstLineIsNames, char delim)
           
 File getRandomFile(String basedir, String[] extensions)
          Method will get a random file in a base directory TODO hey, not sure this method belongs here.
 String getScriptName()
           
 String readLine(String filename)
          Get the next line of the named file, recycle by default.
 String readLine(String filename, boolean recycle)
          Get the next line of the named file, first line is name to false
 String readLine(String filename, boolean recycle, boolean firstLineIsNames)
          Get the next line of the named file.
 void reserveFile(String filename)
          Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.
 void reserveFile(String filename, String charsetName)
          Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.
 void reserveFile(String filename, String charsetName, String alias)
          Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.
 String reserveFile(String filename, String charsetName, String alias, boolean hasHeader)
          Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.
 void resetBase()
          Resets the current base to DEFAULT_BASE.
static String resolveBaseRelativeName(String relativeName)
          Resolve a file name that may be relative to the base directory.
 void setBase(File jmxBase)
          Sets the current base directory for relative file names.
 void setBasedir(String basedir)
          Sets the current base directory for relative file names from the provided path.
 void setBaseForScript(File scriptPath)
          Sets the current base directory for relative file names from the provided script file.
 void setScriptName(String scriptName)
           
 void write(String filename, String value)
           
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getFileServer

public static FileServer getFileServer()
Returns:
the singleton instance of the server.

resetBase

public void resetBase()
Resets the current base to DEFAULT_BASE.


setBasedir

public void setBasedir(String basedir)
Sets the current base directory for relative file names from the provided path. If the path does not refer to an existing directory, then its parent is used. Normally the provided path is a file, so using the parent directory is appropriate.

Parameters:
basedir - the path to set, or null if the GUI is being cleared
Throws:
IllegalStateException - if files are still open

setBaseForScript

public void setBaseForScript(File scriptPath)
Sets the current base directory for relative file names from the provided script file. The parameter is assumed to be the path to a JMX file, so the base directory is derived from its parent.

Parameters:
scriptPath - the path of the script file; must be not be null
Throws:
IllegalStateException - if files are still open
IllegalArgumentException - if scriptPath parameter is null

setBase

public void setBase(File jmxBase)
Sets the current base directory for relative file names.

Parameters:
jmxBase - the path of the script file base directory, cannot be null
Throws:
IllegalStateException - if files are still open
IllegalArgumentException - if basepath is null

getBaseDir

public String getBaseDir()

getDefaultBase

public static String getDefaultBase()

getBaseDirRelative

public File getBaseDirRelative()
Calculates the relative path from DEFAULT_BASE to the current base, which must be the same as or a child of the default.

Returns:
the relative path, or "." if the path cannot be determined

reserveFile

public void reserveFile(String filename)
Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.

Parameters:
filename - - relative (to base) or absolute file name (must not be null)

reserveFile

public void reserveFile(String filename,
                        String charsetName)
Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.

Parameters:
filename - - relative (to base) or absolute file name (must not be null)
charsetName - - the character set encoding to use for the file (may be null)

reserveFile

public void reserveFile(String filename,
                        String charsetName,
                        String alias)
Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.

Parameters:
filename - - relative (to base) or absolute file name (must not be null)
charsetName - - the character set encoding to use for the file (may be null)
alias - - the name to be used to access the object (must not be null)

reserveFile

public String reserveFile(String filename,
                          String charsetName,
                          String alias,
                          boolean hasHeader)
Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.

Parameters:
filename - - relative (to base) or absolute file name (must not be null)
charsetName - - the character set encoding to use for the file (may be null)
alias - - the name to be used to access the object (must not be null)
hasHeader - true if the file has a header line describing the contents
Returns:
the header line; may be null

readLine

public String readLine(String filename)
                throws IOException
Get the next line of the named file, recycle by default.

Parameters:
filename - the filename or alias that was used to reserve the file
Returns:
String containing the next line in the file
Throws:
IOException

readLine

public String readLine(String filename,
                       boolean recycle)
                throws IOException
Get the next line of the named file, first line is name to false

Parameters:
filename - the filename or alias that was used to reserve the file
recycle - - should file be restarted at EOF?
Returns:
String containing the next line in the file (null if EOF reached and not recycle)
Throws:
IOException

readLine

public String readLine(String filename,
                       boolean recycle,
                       boolean firstLineIsNames)
                throws IOException
Get the next line of the named file.

Parameters:
filename - the filename or alias that was used to reserve the file
recycle - - should file be restarted at EOF?
firstLineIsNames - - 1st line is fields names
Returns:
String containing the next line in the file (null if EOF reached and not recycle)
Throws:
IOException

getParsedLine

public String[] getParsedLine(String alias,
                              boolean recycle,
                              boolean firstLineIsNames,
                              char delim)
                       throws IOException
Parameters:
alias - the file name or alias
recycle - whether the file should be re-started on EOF
firstLineIsNames - whether the file contains a file header
delim - the delimiter to use for parsing
Returns:
the parsed line, will be empty if the file is at EOF
Throws:
IOException

write

public void write(String filename,
                  String value)
           throws IOException
Throws:
IOException

closeFiles

public void closeFiles()
                throws IOException
Throws:
IOException

closeFile

public void closeFile(String name)
               throws IOException
Parameters:
name -
Throws:
IOException

getRandomFile

public File getRandomFile(String basedir,
                          String[] extensions)
Method will get a random file in a base directory TODO hey, not sure this method belongs here. FileServer is for threadsafe File access relative to current test's base directory.

Parameters:
basedir -
Returns:
a random File from the basedir that matches one of the extensions

resolveBaseRelativeName

public static String resolveBaseRelativeName(String relativeName)
Resolve a file name that may be relative to the base directory. If the name begins with the value of the JMeter property "jmeter.save.saveservice.base_prefix" - default "~/" - then the name is assumed to be relative to the basename.

Parameters:
relativeName -
Returns:
the updated file

getScriptName

public String getScriptName()
Returns:
JMX Script name
Since:
2.6

setScriptName

public void setScriptName(String scriptName)
Parameters:
scriptName - Script name
Since:
2.6

Apache JMeter

Copyright © 1998-2013 Apache Software Foundation. All Rights Reserved.