Package org.apache.jmeter.services
Class FileServer
java.lang.Object
org.apache.jmeter.services.FileServer
This class provides 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 SummaryModifier and TypeMethodDescriptionvoidvoidCalculates the relative path from DEFAULT_BASE to the current base, which must be the same as or a child of the default.static Stringstatic FileServerString[]getParsedLine(String alias, boolean recycle, boolean ignoreFirstLine, char delim) getRandomFile(String basedir, String[] extensions) Method will get a random file in a base directorygetResolvedFile(String path) GetFileinstance for provided file path, resolve file location relative to base dir or script dir when neededGet the next line of the named file, recycle by default.Get the next line of the named file, first line is name to falseGet the next line of the named filevoidreserveFile(String filename) Creates an association between a filename and a File inputOutputObject, and stores it for later use - unless it is already stored.voidreserveFile(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.voidreserveFile(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.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.voidResets the current base to DEFAULT_BASE.static StringresolveBaseRelativeName(String relativeName) Resolve a file name that may be relative to the base directory.voidSets the current base directory for relative file names.voidsetBasedir(String basedir) Sets the current base directory for relative file names from the provided path.voidsetBaseForScript(File scriptPath) Sets the current base directory for relative file names from the provided script file.voidsetScriptName(String scriptName) void
- 
Method Details- 
getFileServer- Returns:
- the singleton instance of the server.
 
- 
resetBasepublic void resetBase()Resets the current base to DEFAULT_BASE.
- 
setBasedirSets 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- nullif the GUI is being cleared
- Throws:
- IllegalStateException- if files are still open
 
- 
setBaseForScriptSets 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
 
- 
setBaseSets 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- basepathis null
 
- 
getBaseDir
- 
getDefaultBase
- 
getBaseDirRelativeCalculates 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
 
- 
reserveFileCreates 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)
 
- 
reserveFileCreates 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)
 
- 
reserveFileCreates 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)
 
- 
reserveFileCreates 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 or empty)
- 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
- Throws:
- IllegalArgumentException- if header could not be read or filename is null or empty
 
- 
readLineGet 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- when reading of the file fails, or the file was not reserved properly
 
- 
readLineGet 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- when reading of the file fails, or the file was not reserved properly
 
- 
readLinepublic String readLine(String filename, boolean recycle, boolean ignoreFirstLine) 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?
- ignoreFirstLine- - Ignore first line
- Returns:
- String containing the next line in the file (null if EOF reached and not recycle)
- Throws:
- IOException- when reading of the file fails, or the file was not reserved properly
 
- 
getParsedLinepublic String[] getParsedLine(String alias, boolean recycle, boolean ignoreFirstLine, char delim) throws IOException - Parameters:
- alias- the file name or alias
- recycle- whether the file should be re-started on EOF
- ignoreFirstLine- whether the file contains a file header which will be ignored
- delim- the delimiter to use for parsing
- Returns:
- the parsed line, will be empty if the file is at EOF
- Throws:
- IOException- when reading of the aliased file fails, or the file was not reserved properly
 
- 
write- Throws:
- IOException
 
- 
closeFiles- Throws:
- IOException
 
- 
closeFile- Parameters:
- name- the name or alias of the file to be closed
- Throws:
- IOException- when closing of the aliased file fails
 
- 
getRandomFileMethod will get a random file in a base directoryTODO hey, not sure this method belongs here. FileServer is for thread safe File access relative to current test's base directory. - Parameters:
- basedir- name of the directory in which the files can be found
- extensions- array of allowed extensions, if- nullis given, any file be allowed
- Returns:
- a random File from the basedirthat matches one of the extensions
 
- 
getResolvedFileGetFileinstance for provided file path, resolve file location relative to base dir or script dir when needed- Parameters:
- path- original path to file, maybe relative
- Returns:
- Fileinstance
 
- 
resolveBaseRelativeNameResolve 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- filename that should be checked for- jmeter.save.saveservice.base_prefix
- Returns:
- the updated filename
 
- 
getScriptName- Returns:
- JMX Script name
- Since:
- 2.6
 
- 
setScriptName- Parameters:
- scriptName- Script name
- Since:
- 2.6
 
 
-