Class DaVStarter

java.lang.Object
de.kappich.pat.testumg.util.DaVStarter

public class DaVStarter extends 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.

  • Field Details

  • Constructor Details

    • DaVStarter

      public DaVStarter(File workingDirectory, 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(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(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(File workingDirectory, boolean containsDaVFiles, String configurationDebugLevel, String transmitterDebugLevel, 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(File workingDirectory, boolean containsDaVFiles, String configurationDebugLevel, String transmitterDebugLevel, String paramDebugLevel, de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType, 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(File workingDirectory, int davAppPort, long davId, 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(File workingDirectory, int davAppPort, int davDavPort, long davId, 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(File workingDirectory, File userFile, boolean containsDaVFiles, int davAppPort, int davDavPort, long davId, String remoteConfiguration)
    • DaVStarter

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

    • getDavPortNumberOffset

      public static int getDavPortNumberOffset()
    • join

      public static String join(String[] s, String delimiter)
    • createDefaultCommandArray

      public static String[] createDefaultCommandArray(String className, int xmxSize, 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 String[] mergeArrays(String[] array1, String[] array2)
    • createProcess

      public static Process createProcess(String[] commandArray, String outputPrefix, String errorOutputPrefix, File workingDirectory) throws IOException
      Parameters:
      commandArray - Java Einstellungen (Xmx, usw.) und Einstellungen für den zu startenden Prozess (-benutzer=...)
      outputPrefix -
      errorOutputPrefix -
      Returns:
      Throws:
      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 String getName()
      Gibt den Prefix zurück, der in der Konsole vor der Anwendung gezeigt wird.
      Returns:
      Prefix
    • setName

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

      public 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(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 File getWorkingDirectory()
    • getDavAppPort

      public int getDavAppPort()
    • getProtocolClass

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

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

      public Object getProtocolParameter()
    • setProtocolParameter

      public void setProtocolParameter(Object protocolParameter)
    • getTransmitter

      public Process getTransmitter()
    • getConfiguration

      public Process getConfiguration()
    • getOperatingMessageManagement

      public Process getOperatingMessageManagement()
    • startDaV

      public void startDaV(ParamAppType paramAppType) throws 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:
      IOException
    • startParam

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

      public void startDaV() throws 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:
      IOException
    • startDaVWithDummyParam

      public void startDaVWithDummyParam() throws 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:
      IOException
    • startDaVWithoutParam

      public void startDaVWithoutParam() throws 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:
      IOException
    • startTransmitterInSameProcess

      public void startTransmitterInSameProcess(boolean withConfiguration, ParamAppType paramAppType) throws 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:
      Exception
    • startTransmitterInSameProcess

      public void startTransmitterInSameProcess(boolean withConfiguration, ParamAppType paramAppType, boolean waitForParamApp) throws 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:
      Exception
    • getTransmitterObject

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

      public void startOperatingMessageManagement() throws IOException
      Throws:
      IOException
    • setAdditionalTransmitterArgs

      public void setAdditionalTransmitterArgs(String... additionalTransmitterArgs)
    • setClassPath

      public void setClassPath(String... classPathOverride)
    • getReleaseVersion

      public ReleaseVersion getReleaseVersion()
    • 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 IOException
      Startet die Configuration. Ist bereits ein Prozess vorhanden, so wird dieser mit destroy gestopped und anschließend ein neuer Prozess gestartet.
      Throws:
      IOException
    • startDefaultParam

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

      public FakeParamApp getFakeParamApp()
    • setFakeParamApp

      public void setFakeParamApp(FakeParamApp fakeParamApp)
    • getUserNameParam

      public String getUserNameParam()
    • setUserNameParam

      public void setUserNameParam(String userNameParam)
    • getUserNameConfiguration

      public String getUserNameConfiguration()
    • setUserNameConfiguration

      public void setUserNameConfiguration(String userNameConfiguration)
    • getUserNameTransmitter

      public String getUserNameTransmitter()
    • setUserNameTransmitter

      public void setUserNameTransmitter(String userNameTransmitter)
    • startTransmitter

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

      public void startTransmitter(boolean waitForParamApp) throws 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:
      IOException
    • getActivePorts

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

      public void setActivePorts(Collection<Integer> activePorts)