Class DaVStarter


  • public class DaVStarter
    extends java.lang.Object
    Diese Klasse startet den Datenverteiler, die Konfiguration und die Parametrierung.

    Es werden typischerweise drei Prozesse gestartet, die über eine Methode beendet werden können.

    Hinweis: Wird die Methode stopDaV() oder stopDavWithoutFileDeletion() nicht aufgerufen, so laufen die Prozesse weiter, auch wenn die VM, in der die Prozesse gestartet wurden beendet wird.

    Dies kann zum Beispiel bei einem fehlerhaften JUnit-Test geschehen, der nicht mehr in TearDown oder @after kommt. In diesem Fall sind 3 Java Prozesse vorhanden, die mittels Task-Manager (kill) beendet werden müssen.

    Hinweis: Diese Klasse arbeitet auf einem relativ niedrigen Level und ist umständlich zu benutzen. Für gewöhnliche Tests sollte stattdessen eine der folgenden komfortableren Klassen verwendet werden:

    Diese erledigen eine Konfigurationsarbeiten automatisch und sind einfacher zu benutzen.

    • Constructor Summary

      Constructors 
      Constructor Description
      DaVStarter​(java.io.File workingDirectory)
      Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten.
      DaVStarter​(java.io.File workingDirectory, boolean containsDaVFiles)
      Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten/Dateien oder mit übergebenen Dateien.
      DaVStarter​(java.io.File workingDirectory, boolean containsDaVFiles, java.lang.String configurationDebugLevel, java.lang.String transmitterDebugLevel, java.lang.String paramDebugLevel)
      Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten/Dateien oder mit übergebenen Dateien.
      DaVStarter​(java.io.File workingDirectory, boolean containsDaVFiles, java.lang.String configurationDebugLevel, java.lang.String transmitterDebugLevel, java.lang.String paramDebugLevel, de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType, java.lang.String[] accessControlPlugIns)
      Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten/Dateien oder mit übergebenen Dateien.
      DaVStarter​(java.io.File workingDirectory, int davAppPort, int davDavPort, long davId, java.lang.String remoteConfiguration)
      Startet den Datenverteiler.
      DaVStarter​(java.io.File workingDirectory, int davAppPort, long davId, java.lang.String remoteConfiguration)
      Startet den Datenverteiler.
      DaVStarter​(java.io.File workingDirectory, java.io.File userFile)
      Startet Datenverteiler, Konfiguration und die Parametrierung mit Default-Dateien und einer Benutzerdefinierten Datei, die alle Benutzer enthält, die sich beim Datenverteiler anmelden können.
      DaVStarter​(java.io.File workingDirectory, java.io.File userFile, boolean containsDaVFiles, int davAppPort, int davDavPort, long davId, java.lang.String remoteConfiguration)  
      DaVStarter​(java.io.File workingDirectory, java.io.File userFile, boolean containsDaVFiles, int davAppPort, int davDavPort, long davId, java.lang.String remoteConfiguration, java.lang.String configurationDebugLevel, java.lang.String transmitterDebugLevel, java.lang.String paramDebugLevel, de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType, java.lang.String[] accessControlPlugIns)  
    • Field Detail

      • DEFAULT_CONFIGURATION_DEBUG

        public static final java.lang.String DEFAULT_CONFIGURATION_DEBUG
        See Also:
        Constant Field Values
      • DEFAULT_TRANSMITTER_DEBUG

        public static final java.lang.String DEFAULT_TRANSMITTER_DEBUG
        See Also:
        Constant Field Values
      • DEFAULT_PARAM_DEBUG

        public static final java.lang.String DEFAULT_PARAM_DEBUG
        See Also:
        Constant Field Values
    • Constructor Detail

      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          java.io.File userFile)
        Startet Datenverteiler, Konfiguration und die Parametrierung mit Default-Dateien und einer Benutzerdefinierten Datei, die alle Benutzer enthält, die sich beim Datenverteiler anmelden können.
        Parameters:
        workingDirectory - Ein Verzeichnis in dem sich alle Dateien befinden, mit dem der Datenverteiler gestartet werden soll.
        userFile - Datei, die alle Benutzer enthält, die sich beim Datenverteiler anmelden können. Die übergebene Datei kann durch den Datenverteiler geändert werden und wird beim beenden des Datenverteilers nicht gelöscht.
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory)
        Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten.
        Parameters:
        workingDirectory - Verzeichnis, in das alle Dateien kopiert werden, die zum starten des Datenverteilers benötigt werden.
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          boolean containsDaVFiles)
        Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten/Dateien oder mit übergebenen Dateien.

        In beiden Fällen wird das übergebene Verzeichnis vollständig beim herunterfahren des Datenverteilers gelöscht !

        Parameters:
        workingDirectory - Ein Verzeichnis in dem sich entweder alle Dateien befinden, mit dem der Datenverteiler gestartet werden soll, oder aber es befinden sich keine Dateien in diesem Verzeichnis. Im zweiten Fall werden die benötigten Dateien in das Verzeichnis kopiert. In beiden Fällen wird beim Herunterfahren des Datenverteilers das Verzeichnis mit allen Daten gelöscht. Befanden sich vor dem Start des Datenverteilers Dateien in dem Verzeichnis, werden diesen ebenfalls gelöscht.
        containsDaVFiles - true = Das Verzeichnis enthält alle Dateien, die für den Start des Datenverteiles benötigt werden; false = Das Verzeichnis enthält nicht die Dateien, die zum Start des Datenverteilers benötigt werden
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          boolean containsDaVFiles,
                          java.lang.String configurationDebugLevel,
                          java.lang.String transmitterDebugLevel,
                          java.lang.String paramDebugLevel)
        Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten/Dateien oder mit übergebenen Dateien.

        In beiden Fällen wird das übergebene Verzeichnis vollständig beim herunterfahren des Datenverteilers gelöscht !

        Parameters:
        workingDirectory - Ein Verzeichnis in dem sich entweder alle Dateien befinden, mit dem der Datenverteiler gestartet werden soll, oder aber es befinden sich keine Dateien in diesem Verzeichnis. Im zweiten Fall werden die benötigten Dateien in das Verzeichnis kopiert. In beiden Fällen wird beim Herunterfahren des Datenverteilers das Verzeichnis mit allen Daten gelöscht. Befanden sich vor dem Start des Datenverteilers Dateien in dem Verzeichnis, werden diesen ebenfalls gelöscht.
        containsDaVFiles - true = Das Verzeichnis enthält alle Dateien, die für den Start des Datenverteiles benötigt werden; false = Das Verzeichnis enthält nicht die Dateien, die zum Start des Datenverteilers benötigt werden
        configurationDebugLevel - Debug-Level, der von der Konfiguration verwendet werden soll
        transmitterDebugLevel - Debug-Level, der vom Datenverteiler verwendet werden soll
        paramDebugLevel - Debug-Level, der von der Parametrierung verwendet werden soll
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          boolean containsDaVFiles,
                          java.lang.String configurationDebugLevel,
                          java.lang.String transmitterDebugLevel,
                          java.lang.String paramDebugLevel,
                          de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType,
                          java.lang.String[] accessControlPlugIns)
        Startet den Datenverteiler, Konfiguration und die Parametrierung mit default-Werten/Dateien oder mit übergebenen Dateien.

        In beiden Fällen wird das übergebene Verzeichnis vollständig beim herunterfahren des Datenverteilers gelöscht !

        Parameters:
        workingDirectory - Ein Verzeichnis in dem sich entweder alle Dateien befinden, mit dem der Datenverteiler gestartet werden soll, oder aber es befinden sich keine Dateien in diesem Verzeichnis. Im zweiten Fall werden die benötigten Dateien in das Verzeichnis kopiert. In beiden Fällen wird beim Herunterfahren des Datenverteilers das Verzeichnis mit allen Daten gelöscht. Befanden sich vor dem Start des Datenverteilers Dateien in dem Verzeichnis, werden diesen ebenfalls gelöscht.
        containsDaVFiles - true = Das Verzeichnis enthält alle Dateien, die für den Start des Datenverteiles benötigt werden; false = Das Verzeichnis enthält nicht die Dateien, die zum Start des Datenverteilers benötigt werden
        configurationDebugLevel - Debug-Level, der von der Konfiguration verwendet werden soll
        transmitterDebugLevel - Debug-Level, der vom Datenverteiler verwendet werden soll
        paramDebugLevel - Debug-Level, der von der Parametrierung verwendet werden soll
        accessControlType - Ob die Rechteverwaltung aktiv sein soll
        accessControlPlugIns - Rechteverwaltungsplugins, die geladen werden sollen
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          int davAppPort,
                          long davId,
                          java.lang.String remoteConfiguration)
        Startet den Datenverteiler.

        Das übergebene Verzeichnis wird vollständig beim herunterfahren des Datenverteilers gelöscht !

        Parameters:
        workingDirectory - Ein Verzeichnis in dem sich alle Dateien befinden, mit dem der Datenverteiler gestartet werden soll. Beim Herunterfahren des Datenverteilers wird das Verzeichnis mit allen Daten gelöscht. Befanden sich vor dem Start des Datenverteilers Dateien in dem Verzeichnis, werden diesen ebenfalls gelöscht.
        davAppPort - Der Port, der vom Datenverteiler für den Verbindungsaufbau der Applikation zur Verfügung gestellt wird.
        davId - Die ID des Datenverteilers.
        remoteConfiguration - Vom datenverteiler benutzte Remotekonfiguration.
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          int davAppPort,
                          int davDavPort,
                          long davId,
                          java.lang.String remoteConfiguration)
        Startet den Datenverteiler.

        Das übergebene Verzeichnis wird vollständig beim herunterfahren des Datenverteilers gelöscht !

        Parameters:
        workingDirectory - Ein Verzeichnis in dem sich alle Dateien befinden, mit dem der Datenverteiler gestartet werden soll. Beim Herunterfahren des Datenverteilers wird das Verzeichnis mit allen Daten gelöscht. Befanden sich vor dem Start des Datenverteilers Dateien in dem Verzeichnis, werden diesen ebenfalls gelöscht.
        davAppPort - Der Port, der vom Datenverteiler für den Verbindungsaufbau der Applikation zur Verfügung gestellt wird.
        davDavPort - Der Port, der vom Datenverteiler für den Verbindungsaufbau der Datenverteiler zur Verfügung gestellt wird.
        davId - Die ID des Datenverteilers.
        remoteConfiguration - Vom datenverteiler benutzte Remotekonfiguration.
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          java.io.File userFile,
                          boolean containsDaVFiles,
                          int davAppPort,
                          int davDavPort,
                          long davId,
                          java.lang.String remoteConfiguration)
      • DaVStarter

        public DaVStarter​(java.io.File workingDirectory,
                          java.io.File userFile,
                          boolean containsDaVFiles,
                          int davAppPort,
                          int davDavPort,
                          long davId,
                          java.lang.String remoteConfiguration,
                          java.lang.String configurationDebugLevel,
                          java.lang.String transmitterDebugLevel,
                          java.lang.String paramDebugLevel,
                          de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType,
                          java.lang.String[] accessControlPlugIns)
    • Method Detail

      • getDavPortNumberOffset

        public static int getDavPortNumberOffset()
      • join

        public static java.lang.String join​(java.lang.String[] s,
                                            java.lang.String delimiter)
      • createDefaultCommandArray

        public static java.lang.String[] createDefaultCommandArray​(java.lang.String className,
                                                                   int xmxSize,
                                                                   java.lang.String[] classPathOverride)
        Erzeugt eine Liste von Aufrufparametern, die benutzt werden um einen Prozess mit Javac zu starten.
        Parameters:
        className -
        xmxSize - Wieviel XMX Speicher steht dem Prozess zur Verfügung (in MB)
        classPathOverride -
        Returns:
        Aufrufparameter
      • mergeArrays

        public static java.lang.String[] mergeArrays​(java.lang.String[] array1,
                                                     java.lang.String[] array2)
      • createProcess

        public static java.lang.Process createProcess​(java.lang.String[] commandArray,
                                                      java.lang.String outputPrefix,
                                                      java.lang.String errorOutputPrefix,
                                                      java.io.File workingDirectory)
                                               throws java.io.IOException
        Parameters:
        commandArray - Java Einstellungen (Xmx, usw.) und Einstellungen für den zu startenden Prozess (-benutzer=...)
        outputPrefix -
        errorOutputPrefix -
        Returns:
        Throws:
        java.io.IOException
      • setDavDavConnectDelay

        public void setDavDavConnectDelay​(int davDavConnectDelay)
        Setzt die Verzögerungszeit, die innerhalb des Datenverteilers gewartet wird, bevor Verbindungen zu anderen Datenverteilern zugelassen bzw. aufgebaut werden.
        Parameters:
        davDavConnectDelay - Verzögerungszeit in Millisekunden
      • setDavDavReconnectDelay

        public void setDavDavReconnectDelay​(int davDavReconnectDelay)
        Setzt die Verzögerungszeit, die innerhalb des Datenverteilers gewartet wird, bevor versucht wird, abgebrochene Verbindungen neu aufzubauen.
        Parameters:
        davDavReconnectDelay - Verzögerungszeit in Millisekunden
      • getName

        public java.lang.String getName()
        Gibt den Prefix zurück, der in der Konsole vor der Anwendung gezeigt wird.
        Returns:
        Prefix
      • setName

        public void setName​(java.lang.String name)
        Setzt den Prefix, der in der Konsole vor der Anwendung gezeigt wird
        Parameters:
        name - Prefix
      • getDebugName

        public java.lang.String getDebugName()
        Gibt den Namen mit dem die Debug-Klasse vom Datenverteiler initialisiert wird zurück
        Returns:
        den Namen mit dem die Debug-Klasse vom Datenverteiler initialisiert wird
      • setDebugName

        public void setDebugName​(java.lang.String debugName)
        Setzt den Namen mit dem die Debug-Klasse vom Datenverteiler initialisiert wird
        Parameters:
        debugName - Name des Datenverteilers
      • getConnection

        public de.bsvrz.dav.daf.main.ClientDavInterface getConnection()
        Gibt eine Verbindung zum Datenverteiler zurück, in der der Benutzer "Tester" und das Passwort "geheim" benutzt wird.

        Bei jedem Aufruf der Methode wird eine neue Verbindung aufgebaut.

        Returns:
        Verbindung zum Datenverteiler
      • getWorkingDirectory

        public java.io.File getWorkingDirectory()
      • getDavAppPort

        public int getDavAppPort()
      • getProtocolClass

        public java.lang.Class<? extends de.bsvrz.dav.daf.communication.lowLevel.ServerConnectionInterface> getProtocolClass()
      • setProtocolClass

        public void setProtocolClass​(java.lang.Class<? extends de.bsvrz.dav.daf.communication.lowLevel.ServerConnectionInterface> protocolClass)
      • getProtocolParameter

        public java.lang.Object getProtocolParameter()
      • setProtocolParameter

        public void setProtocolParameter​(java.lang.Object protocolParameter)
      • getTransmitter

        public java.lang.Process getTransmitter()
      • getConfiguration

        public java.lang.Process getConfiguration()
      • getOperatingMessageManagement

        public java.lang.Process getOperatingMessageManagement()
      • startDaV

        public void startDaV​(ParamAppType paramAppType)
                      throws java.io.IOException
        Startet den Datenverteiler, die Konfiguration und die Parametrierung. Die Methode stoppt zuerst alle laufenden Prozesse (stopDaV()) und startet sie dann erneut. Falls die Methode zum ersten mal aufgerufen wird oder der Datenverteiler wurde bereits mit (stopDaV()) gestoppt, so werden alle Prozesse ganz normal gestartet.
        Throws:
        java.io.IOException
      • startParam

        public void startParam​(ParamAppType paramAppType)
                        throws java.io.IOException
        Startet die Parametrierung des angegegeben Typs.
        Parameters:
        paramAppType - Typ der Parametrierung
        Throws:
        java.io.IOException
      • startDaV

        public void startDaV()
                      throws java.io.IOException
        Startet den Datenverteiler, die Konfiguration und die Parametrierung. Die Methode stoppt zuerst alle laufenden Prozesse (stopDaV()) und startet sie dann erneut. Falls die Methode zum ersten mal aufgerufen wird oder der Datenverteiler wurde bereits mit (stopDaV()) gestoppt, so werden alle Prozesse ganz normal gestartet.
        Throws:
        java.io.IOException
      • startDaVWithDummyParam

        public void startDaVWithDummyParam()
                                    throws java.io.IOException
        Startet den Datenverteiler, die Konfiguration und eine Dummy-Parametrierung, die nur eine entsprechende Fertigmeldung erzeugt. Die Methode stoppt zuerst alle laufenden Prozesse (stopDaV()) und startet sie dann erneut. Falls die Methode zum ersten mal aufgerufen wird oder der Datenverteiler wurde bereits mit (stopDaV()) gestoppt, so werden alle Prozesse ganz normal gestartet.
        Throws:
        java.io.IOException
      • startDaVWithoutParam

        public void startDaVWithoutParam()
                                  throws java.io.IOException
        Startet den Datenverteiler, die Konfiguration. Die Methode stoppt zuerst alle laufenden Prozesse (stopDaV()) und startet sie dann erneut. Falls die Methode zum ersten mal aufgerufen wird oder der Datenverteiler wurde bereits mit (stopDaV()) gestoppt, so werden alle Prozesse ganz normal gestartet.
        Throws:
        java.io.IOException
      • startTransmitterInSameProcess

        public void startTransmitterInSameProcess​(boolean withConfiguration,
                                                  ParamAppType paramAppType)
                                           throws java.lang.Exception
        Startet einen Datenverteiler als Thread im gleichen Prozess.
        Parameters:
        withConfiguration - Falls true, dann wird auch eine Konfiguration (als eigener Prozess) gestartet.
        paramAppType - Art der Parametrierung Applikationsfertigmeldung der Parametrierung.
        Throws:
        java.lang.Exception
      • startTransmitterInSameProcess

        public void startTransmitterInSameProcess​(boolean withConfiguration,
                                                  ParamAppType paramAppType,
                                                  boolean waitForParamApp)
                                           throws java.lang.Exception
        Startet einen Datenverteiler als Thread im gleichen Prozess.
        Parameters:
        withConfiguration - Falls true, dann wird auch eine Konfiguration (als eigener Prozess) gestartet.
        paramAppType - Art der Parametrierung Applikationsfertigmeldung der Parametrierung.
        waitForParamApp - Soll auf die Parametrierung gewartet werden?
        Throws:
        java.lang.Exception
      • getTransmitterObject

        public de.bsvrz.dav.dav.main.Transmitter getTransmitterObject()
      • startOperatingMessageManagement

        public void startOperatingMessageManagement()
                                             throws java.io.IOException
        Throws:
        java.io.IOException
      • setAdditionalTransmitterArgs

        public void setAdditionalTransmitterArgs​(java.lang.String... additionalTransmitterArgs)
      • setClassPath

        public void setClassPath​(java.lang.String... classPathOverride)
      • setReleaseVersion

        public void setReleaseVersion​(ReleaseVersion releaseVersion)
      • getPassivePort

        public int getPassivePort()
      • setPassivePort

        public void setPassivePort​(int passivePort)
      • stopDavWithoutWaiting

        public void stopDavWithoutWaiting()
        Beendet alle Prozesse, löscht aber nicht die notwendigen Dateien zum starten des DaV.
      • stopDaV

        public void stopDaV()
        Stoppt den Datenverteiler,Konfiguration,Parametrierung und beendet alle Prozesse. Gibt es keine Prozesse, die beendet werden können, wird nichts gemacht. Alle automatisch erzeugen Dateien werden gelöscht.

        Der Aufruf dieser Methode blockiert solange, bis alle Prozesse beendet sind.

      • stopDavWithoutSleep

        public void stopDavWithoutSleep​(boolean withFileDeletion)
        Stoppt den Datenverteiler,Konfiguration,Parametrierung und beendet alle Prozesse. Gibt es keine Prozesse, die beendet werden können, wird nichts gemacht. Alle automatisch erzeugen Dateien werden gelöscht.
      • stopDavWithoutFileDeletion

        public void stopDavWithoutFileDeletion()
      • startConfiguration

        public void startConfiguration()
                                throws java.io.IOException
        Startet die Configuration. Ist bereits ein Prozess vorhanden, so wird dieser mit destroy gestopped und anschließend ein neuer Prozess gestartet.
        Throws:
        java.io.IOException
      • startDefaultParam

        public void startDefaultParam()
                               throws java.io.IOException
        Startet die Parametrierung. Ist bereits ein Prozess vorhanden, so wird dieser mit destroy gestopped und anschließend ein neuer Prozess gestartet.
        Throws:
        java.io.IOException
      • setFakeParamApp

        public void setFakeParamApp​(FakeParamApp fakeParamApp)
      • getUserNameParam

        public java.lang.String getUserNameParam()
      • setUserNameParam

        public void setUserNameParam​(java.lang.String userNameParam)
      • getUserNameConfiguration

        public java.lang.String getUserNameConfiguration()
      • setUserNameConfiguration

        public void setUserNameConfiguration​(java.lang.String userNameConfiguration)
      • getUserNameTransmitter

        public java.lang.String getUserNameTransmitter()
      • setUserNameTransmitter

        public void setUserNameTransmitter​(java.lang.String userNameTransmitter)
      • startTransmitter

        public void startTransmitter()
                              throws java.io.IOException
        Startet den Datenverteiler. Ist bereits ein Prozess vorhanden, so wird dieser mit destroy gestoppt und anschließend ein neuer Prozess gestartet.
        Throws:
        java.io.IOException
      • startTransmitter

        public void startTransmitter​(boolean waitForParamApp)
                              throws java.io.IOException
        Startet den Datenverteiler. Ist bereits ein Prozess vorhanden, so wird dieser mit destroy gestoppt und anschließend ein neuer Prozess gestartet.
        Parameters:
        waitForParamApp -
        Throws:
        java.io.IOException
      • getActivePorts

        public com.google.common.collect.ImmutableList<java.lang.Integer> getActivePorts()
      • setActivePorts

        public void setActivePorts​(java.util.Collection<java.lang.Integer> activePorts)