Class BMUnit


  • public class BMUnit
    extends java.lang.Object
    Byteman Unit test manager class which provides support for loading and unloading scripts. This version assumes loads the agent as needed (unless inhibited -- see below) using System properties to control what hostname and port it uses for the socket. Other system properties can be used to configure operation of the load/unload operations.
    • Field Summary

      Fields 
      Modifier and Type Field Description
      private static java.util.HashMap<java.lang.String,​java.lang.String> fileTable
      hash table used to maintain association between test cases and rule files
      private static char fs
      the file separator character used by the native file system
    • Constructor Summary

      Constructors 
      Constructor Description
      BMUnit()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      protected static java.lang.String findScript​(java.lang.String dir, java.lang.String name)
      Tries to find dir/name in the working directory.
      protected static java.lang.String findScript​(java.lang.String dir, java.lang.String... names)  
      static java.lang.String getHost()
      getter for the host name used to communicate with the agent
      static java.lang.String getLoadDirectory()
      getter for the load directory
      static boolean getPolicy()
      getter for the security policy setting
      static int getPort()
      getter for the port used to communicate with the agent
      static java.lang.String getResourceLoadDirectory()
      getter for the resource load directory
      static boolean isAllowConfigUpdate()
      getter for the allowAgentConfigUpdate setting
      static boolean isBMUnitVerbose()
      getter for the BMUnit verbose setting
      static boolean isDebug()
      getter for the Byteman debug setting
      static boolean isVerbose()
      getter for the Byteman verbose setting
      static void loadScriptFile​(java.lang.Class<?> clazz, java.lang.String dir)
      loads a script by calling loadScriptFile(clazz, null, dir)
      static void loadScriptFile​(java.lang.Class<?> clazz, java.lang.String testName, java.lang.String dir)
      loads a script from the load directory using the name of a unit test as the root name for the script file and ".btm" or, failing that, ".txt" for the file extension
      static void loadScriptText​(java.lang.Class<?> clazz, java.lang.String testname, java.lang.String scriptText)
      loads a script supplied as a text String rather than via a file on disk
      private static java.lang.String normalize​(java.lang.String dir, boolean endWithSeparator)
      transform the supplied directory string if necessary to employ the file separator appropriate to the current file system, including a separator at the end if requested and not present.
      static void unloadScriptFile​(java.lang.Class<?> clazz, java.lang.String testName)
      loads a script from the load directory using the name of a unit test as the root name for the script file and ".btm" or, failing that, ".txt" for the file extension
      static void unloadScriptText​(java.lang.Class<?> clazz, java.lang.String testName)
      unloads a script previously supplied as a text String
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Field Detail

      • fs

        private static char fs
        the file separator character used by the native file system
      • fileTable

        private static java.util.HashMap<java.lang.String,​java.lang.String> fileTable
        hash table used to maintain association between test cases and rule files
    • Constructor Detail

      • BMUnit

        public BMUnit()
    • Method Detail

      • isAllowConfigUpdate

        public static boolean isAllowConfigUpdate()
        getter for the allowAgentConfigUpdate setting
        Returns:
        the allowAgentConfigUpdate setting
      • isVerbose

        public static boolean isVerbose()
        getter for the Byteman verbose setting
        Returns:
        the Byteman verbose setting
      • isDebug

        public static boolean isDebug()
        getter for the Byteman debug setting
        Returns:
        the Byteman debug setting
      • isBMUnitVerbose

        public static boolean isBMUnitVerbose()
        getter for the BMUnit verbose setting
        Returns:
        the BMUnit verbose setting
      • getLoadDirectory

        public static java.lang.String getLoadDirectory()
        getter for the load directory
        Returns:
        the load directory
      • getResourceLoadDirectory

        public static java.lang.String getResourceLoadDirectory()
        getter for the resource load directory
        Returns:
        the resource load directory
      • normalize

        private static java.lang.String normalize​(java.lang.String dir,
                                                  boolean endWithSeparator)
        transform the supplied directory string if necessary to employ the file separator appropriate to the current file system, including a separator at the end if requested and not present. BMUnit assumes that all supplied paths are specified in Unix format i.e. with a '/' separator. So, transformation of '/' to '\' is only performed on Windows systems.
      • getHost

        public static java.lang.String getHost()
        getter for the host name used to communicate with the agent
        Returns:
        the host name
      • getPort

        public static int getPort()
        getter for the port used to communicate with the agent
        Returns:
        the port
      • getPolicy

        public static boolean getPolicy()
        getter for the security policy setting
        Returns:
        the security policy setting
      • loadScriptFile

        public static void loadScriptFile​(java.lang.Class<?> clazz,
                                          java.lang.String dir)
                                   throws java.lang.Exception
        loads a script by calling loadScriptFile(clazz, null, dir)
        Parameters:
        clazz - the test class
        dir - the directory to load the script from
        Throws:
        java.lang.Exception - if the script cannot be loaded
      • loadScriptFile

        public static void loadScriptFile​(java.lang.Class<?> clazz,
                                          java.lang.String testName,
                                          java.lang.String dir)
                                   throws java.lang.Exception
        loads a script from the load directory using the name of a unit test as the root name for the script file and ".btm" or, failing that, ".txt" for the file extension
        Parameters:
        clazz - the classname of the unit test
        testName - the name of the unit test method
        dir - the directory in which the scripts are located
        Throws:
        java.lang.Exception - if the script cannot be loaded
      • unloadScriptFile

        public static void unloadScriptFile​(java.lang.Class<?> clazz,
                                            java.lang.String testName)
                                     throws java.lang.Exception
        loads a script from the load directory using the name of a unit test as the root name for the script file and ".btm" or, failing that, ".txt" for the file extension
        Parameters:
        clazz - the test class
        testName - the test name
        Throws:
        java.lang.Exception - if the script cannot be unloaded
      • loadScriptText

        public static void loadScriptText​(java.lang.Class<?> clazz,
                                          java.lang.String testname,
                                          java.lang.String scriptText)
                                   throws java.lang.Exception
        loads a script supplied as a text String rather than via a file on disk
        Parameters:
        clazz - the test class
        testname - the test name
        scriptText - the text of the rule or rules contained in the script
        Throws:
        java.lang.Exception - if the script text cannot be loaded
      • unloadScriptText

        public static void unloadScriptText​(java.lang.Class<?> clazz,
                                            java.lang.String testName)
                                     throws java.lang.Exception
        unloads a script previously supplied as a text String
        Parameters:
        clazz - the test class
        testName - the test name
        Throws:
        java.lang.Exception - if the script text cannot be unloaded
      • findScript

        protected static java.lang.String findScript​(java.lang.String dir,
                                                     java.lang.String name)
        Tries to find dir/name in the working directory. If not found, tries to add the ".btm", then ".txt" suffixes. If still not found, tries to find the above on the classpath
        Parameters:
        dir - The name of the directory
        name - The file name
        Returns:
        The fully qualified name of the file, or null if not found
      • findScript

        protected static java.lang.String findScript​(java.lang.String dir,
                                                     java.lang.String... names)