Class MultiDavTestEnvironment

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

public class MultiDavTestEnvironment extends Object
Klasse, die das Testen von mehreren verbundenen Datenverteilern erlaubt.

Ein Beispiel für einen einfachen Testfall ist de.kappich.pat.testumg.util.TestMultiDavTestEnvironment.

  • Constructor Details

    • MultiDavTestEnvironment

      public MultiDavTestEnvironment()
      Standard-Konstruktor
    • MultiDavTestEnvironment

      public MultiDavTestEnvironment(String transmitterDebugLevel, String configurationDebugLevel, String paramDebugLevel)
      Konstruktor mit vorgegeben Debug-Leveln
      Parameters:
      transmitterDebugLevel - Debug-Level für Datenverteiler. Mögliche Werte sind "ERROR", "WARNING", "CONFIG", "INFO", "FINE", "FINER", "FINEST" und "ALL".
      configurationDebugLevel - Debug-Level für Konfigurationen. Mögliche Werte sind "ERROR", "WARNING", "CONFIG", "INFO", "FINE", "FINER", "FINEST" und "ALL".
      paramDebugLevel - Debug-Level für Parametrierungen. Mögliche Werte sind "ERROR", "WARNING", "CONFIG", "INFO", "FINE", "FINER", "FINEST" und "ALL".
  • Method Details

    • dumpThreads

      public static void dumpThreads(PrintStream out)
    • createDavWithLocalConfiguration

      public MultiDavTestEnvironment.MultiDavStarter createDavWithLocalConfiguration(String name) throws Exception
      Erstellt einen Datenverteiler mit eigener Konfiguration. Der Datenverteiler wird nicht automatisch gestartet, dies geschieht erst bei startAll() oder startDav()
      Parameters:
      name - Name des Datenverteilers
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
      Throws:
      Exception - -
    • createDavWithLocalConfiguration

      public MultiDavTestEnvironment.MultiDavStarter createDavWithLocalConfiguration(String name, de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType, String... accessControlPlugIns) throws Exception
      Erstellt einen Datenverteiler mit eigener Konfiguration. Der Datenverteiler wird nicht automatisch gestartet, dies geschieht erst bei startAll() oder startDav()
      Parameters:
      name - Name des Datenverteilers
      accessControlType - Soll die Zugriffssteuerung aktiviert werden? (Standardmäßig nein)
      accessControlPlugIns - Zugriffssteuerungs-Plugins
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
      Throws:
      Exception - -
    • createDavWithRemoteConfiguration

      public MultiDavTestEnvironment.MultiDavStarter createDavWithRemoteConfiguration(String name, String remoteDavName) throws Exception
      Erstellt einen Datenverteiler mit entfernter Konfiguration. Der Datenverteiler wird nicht automatisch gestartet, dies geschieht erst bei startAll() oder startDav()
      Parameters:
      name - Name des Datenverteilers
      remoteDavName - Name des Datenverteilers, an dem die Konfiguration läuft
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
      Throws:
      Exception - -
    • createDavWithRemoteConfiguration

      public MultiDavTestEnvironment.MultiDavStarter createDavWithRemoteConfiguration(String name, String remoteDavName, int passivePort) throws Exception
      Erstellt einen Datenverteiler mit entfernter Konfiguration. Der Datenverteiler wird nicht automatisch gestartet, dies geschieht erst bei startAll() oder startDav()
      Parameters:
      name - Name des Datenverteilers
      remoteDavName - Name des Datenverteilers, an dem die Konfiguration läuft
      passivePort - Port für passiven Verbindungsaufbau
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
      Throws:
      Exception - -
    • createDavWithRemoteConfiguration

      public MultiDavTestEnvironment.MultiDavStarter createDavWithRemoteConfiguration(String name, String remoteDavName, de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType, String... accessControlPlugIns) throws Exception
      Erstellt einen Datenverteiler mit entfernter Konfiguration. Der Datenverteiler wird nicht automatisch gestartet, dies geschieht erst bei startAll() oder startDav()
      Parameters:
      name - Name des Datenverteilers
      remoteDavName - Name des Datenverteilers, an dem die Konfiguration läuft
      accessControlType - Soll die Zugriffssteuerung aktiviert werden? (Standardmäßig nein)
      accessControlPlugIns - Zugriffssteuerungs-Plugins
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
      Throws:
      Exception - -
    • createDavWithRemoteConfiguration

      public MultiDavTestEnvironment.MultiDavStarter createDavWithRemoteConfiguration(String name, String remoteDavName, int passivePort, de.bsvrz.dav.daf.accessControl.AccessControlMode accessControlType, String... accessControlPlugIns) throws Exception
      Erstellt einen Datenverteiler mit entfernter Konfiguration. Der Datenverteiler wird nicht automatisch gestartet, dies geschieht erst bei startAll() oder startDav()
      Parameters:
      name - Name des Datenverteilers
      remoteDavName - Name des Datenverteilers, an dem die Konfiguration läuft
      passivePort - Port für passiven Verbindungsaufbau
      accessControlType - Soll die Zugriffssteuerung aktiviert werden? (Standardmäßig nein)
      accessControlPlugIns - Zugriffssteuerungs-Plugins
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
      Throws:
      Exception - -
    • interruptConnection

      public void interruptConnection(String name, String name2)
      Unterbricht die angegebene Verbindung zwischen den beiden Datenverteilern
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
    • restoreConnection

      public void restoreConnection(String name, String name2)
      Stellt die angegebene Verbindung wieder her
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
    • createDavConnection

      public void createDavConnection(String name, String name2)
      Erstellt eine Datenverteiler-Verbindung zwischen 2 Datenverteilern. Diese muss vor dem Starten der Datenverteiler festgelegt werden.
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
    • createDavConnection

      public void createDavConnection(String name, String name2, String originator)
      Erstellt eine Datenverteiler-Verbindung zwischen 2 Datenverteilern. Diese muss vor dem Starten der Datenverteiler festgelegt werden.
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
      originator - entweder "A", "B", "AB", oder "-" zum bestimmen, welcher Datenverteiler die Verbindung initiieren soll
    • createDavConnection

      public void createDavConnection(String name, String name2, String originator, String user1, String user2, @Nullable String... replacementConnections)
      Erstellt eine Datenverteiler-Verbindung zwischen 2 Datenverteilern. Diese muss vor dem Starten der Datenverteiler festgelegt werden.
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
      originator - entweder "A", "B", "AB", oder "-" zum bestimmen, welcher Datenverteiler die Verbindung initiieren soll
    • createDavConnection

      public void createDavConnection(String name, String name2, String originator, int weight, @Nullable String... replacementConnections)
      Erstellt eine Datenverteiler-Verbindung zwischen 2 Datenverteilern. Diese muss vor dem Starten der Datenverteiler festgelegt werden.
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
      originator - entweder "A", "B", "AB", oder "-" zum bestimmen, welcher Datenverteiler die Verbindung initiieren soll
      weight - Konfiguriertes Gewicht der Verbindung, zur Ermittlung der besten Wege
      replacementConnections - Ersatzverbindungen. null: Automatisch bestimmen. Andernfalls eine Folge von jeweils 2 Datenverteiler-Namen, die eine Verbindung repräsentieren z.B. "Dav1", "Dav2" für eine Verbindung von "Dav1" nach "Dav2".
    • createDavConnection

      public void createDavConnection(String name, String name2, String originator, String user1, String user2, int weight, @Nullable String... replacementConnections)
      Erstellt eine Datenverteiler-Verbindung zwischen 2 Datenverteilern. Diese muss vor dem Starten der Datenverteiler festgelegt werden.
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
      originator - entweder "A", "B", "AB", oder "-" zum bestimmen, welcher Datenverteiler die Verbindung initiieren soll
      user1 -
      user2 -
      weight - Konfiguriertes Gewicht der Verbindung, zur Ermittlung der besten Wege
      replacementConnections - Ersatzverbindungen. null: Automatisch bestimmen. Andernfalls eine Folge von jeweils 2 Datenverteiler-Namen, die eine Verbindung repräsentieren
    • createDavConnection

      public void createDavConnection(String name, String name2, String originator, int weight, double transmissionDelay, double maxFlowRate, String... replacementConnections)
      Erstellt eine Datenverteiler-Verbindung zwischen 2 Datenverteilern. Diese muss vor dem Starten der Datenverteiler festgelegt werden.
      Parameters:
      name - Datenverteiler1-Name
      name2 - Datenverteiler2-Name
      originator - entweder "A", "B", "AB", oder "-" zum bestimmen, welcher Datenverteiler die Verbindung initiieren soll
      weight - Konfiguriertes Gewicht der Verbindung, zur Ermittlung der besten Wege
      transmissionDelay - Simulierte minimale Übertragungszeit eines Pakets in Millisekunden zwischen den beiden Datenverteilern zum simulieren von "hohen Pings" zwischen den Datenverteilern. Standardmäßig 0.
      maxFlowRate - Simulierte maximale Datenrate in Bytes/Sekunde zwischen den beiden Datenverteilern zum simulieren von langsamen Verbindungen zwischen den Datenverteilern. Standardmäßig Double.POSITIVE_INFINITY.
      replacementConnections - Ersatzverbindungen. null: Automatisch bestimmen. Andernfalls eine Folge von jeweils 2 Datenverteiler-Namen, die eine Verbindung repräsentieren z.B. "Dav1", "Dav2" für eine Verbindung von "Dav1" nach "Dav2".
    • startAllDavWithoutWaiting

      public void startAllDavWithoutWaiting()
      Startet alle Datenverteiler-Systeme (ggf. inklusive Konfiguration und Parametrierung) ohne zu warten, bis diese hochgefahren sind
    • startAllDavWithoutWaiting

      public void startAllDavWithoutWaiting(boolean staggered)
      Startet alle Datenverteiler-Systeme (ggf. inklusive Konfiguration und Parametrierung) ohne zu warten, bis diese hochgefahren sind
      Parameters:
      staggered - Soll zwischen den Starts eine kurze Zeit gewartet werden (um Überlastung zu vermeiden?)
    • stopAllConnections

      public void stopAllConnections()
      Beendet alle ClientDaV-Verbindungen
    • startAll

      public void startAll() throws Exception
      Startet alle zuvor erstellten Datenverteiler und wartet bis diese hochgefahren sind. Startet die Datenverteiler erneut, falls sie bereits gestartet sind (ohne die Konfiguration etc. zu löschen)
      Throws:
      Exception - -
    • startAll

      public void startAll(boolean staggered) throws Exception
      Startet alle zuvor erstellten Datenverteiler und wartet bis diese hochgefahren sind. Startet die Datenverteiler erneut, falls sie bereits gestartet sind (ohne die Konfiguration etc. zu löschen)
      Parameters:
      staggered - Soll zwischen den Starts eine kurze Zeit gewartet werden (um Überlastung zu vermeiden?)
      Throws:
      Exception - -
    • stopAll

      public void stopAll()
      Beendet alle laufende Datenverteiler
    • stopAllWithoutFileDeletion

      @Deprecated public void stopAllWithoutFileDeletion()
      Deprecated.
      Beendet alle laufende Datenverteiler ohne die angelegten Dateien zu löschen
    • addConfigurationAuthority

      public void addConfigurationAuthority(String targetDav, String sourceDav) throws Exception
      Kopiert den KV von einem Datenverteiler-System zu einem anderen. Ist nach dem Erstellen aller Datenverteiler und Verbindungen auszuführen, aber vor dem Aufruf von startAll() o.ä.
      Parameters:
      targetDav - Datenverteiler zu dem der KV hinzugefügt wird.
      sourceDav - Datenverteiler von dem der KV kopiert wird
      Throws:
      Exception - -
    • addImportFile

      public void addImportFile(String dav, String pid)
      Vermerkt, dass ein Konfigurationsbereich beim Initialisieren der Konfiguration importiert und aktiviert werden soll
      Parameters:
      dav - Datenverteilersystem, dass dem KB importieren soll
      pid - Pid des Konfigurationsbereichs
    • activateConfigurationArea

      public void activateConfigurationArea(String dav, String pid) throws Exception
      Importiert und Aktiviert einen Konfigurationsbereich nach dem Initialisieren der Konfiguration
      Parameters:
      dav - Datenverteilersystem, dass dem KB importieren soll
      pid - Pid des Konfigurationsbereichs
      Throws:
      Exception
    • copyConfigurationAreas

      public void copyConfigurationAreas(String targetDav, String sourceDav, String... areaPids) throws Exception
      Kopiert einen vorher mit addImportFile(String, String) importierten Konfigurationsbereich zu einem anderen Datenverteiler. Damit der KV des Bereichs bekannt ist, muss vermutlich auch addConfigurationAuthority(String, String) vorher aufgerufen werden.
      Parameters:
      targetDav - Datenverteiler zu dem der KB hinzugefügt wird.
      sourceDav - Datenverteiler von dem der KB kopiert wird
      areaPids - Pid des Konfigurationsbereichs
      Throws:
      Exception - -
    • startDav

      Startet den angegebenen Datenverteiler ohne zu warten, bis dieser hochgefahren ist
      Parameters:
      name - Datenverteiler-name
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
    • getConnection

      public de.bsvrz.dav.daf.main.ClientDavInterface getConnection(String name)
      Startet eine Verbindung zum angegebenen Datenverteiler und gibt diese zurück. Der Datenverteiler braucht nicht komplett hochgefahren zu sein, aber er muss mindestens mit startDav() gestartet worden sein.
      Parameters:
      name - Datenverteiler-name
      Returns:
      Verbindung
    • getDav

      Gibt den angegebenen Datenverteiler-Starter zurück
      Parameters:
      name - Datenverteiler-name
      Returns:
      MultiDavStarter
    • getExistingDav

      @NotNull public MultiDavTestEnvironment.MultiDavStarter getExistingDav(String name)
      Gibt den angegebenen Datenverteiler-Starter zurück und wirft eine Exception, wenn er nicht existiert.
      Parameters:
      name - Datenverteiler-name
      Returns:
      MultiDavStarter
    • stopDav

      Beendet den angegebenen Datenverteiler
      Parameters:
      name - Datenverteiler-name
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
    • stopDavWithoutFileDeletion

      @Deprecated public MultiDavTestEnvironment.MultiDavStarter stopDavWithoutFileDeletion(String name)
      Deprecated.
      Beendet den angegebenen Datenverteiler ohne die Dateien zu löschen
      Parameters:
      name - Datenverteiler-name
      Returns:
      Objekt, dass den Datenverteiler kapselt (Benutzung ist nicht nötig)
    • waitUntilRunning

      public void waitUntilRunning(String name)
      Wartet, bis Verbindungen zu einem Datenverteiler aufgebaut werden können
      Parameters:
      name - Datenverteiler
    • waitUntilConnected

      public void waitUntilConnected(String dav1, String dav2) throws Exception
      Wartet, bis die 2 angegeben Datenverteiler miteinander verbunden sind bzw. kommunizieren
      Parameters:
      dav1 - Datenverteiler 1
      dav2 - Datenverteiler 2
      Throws:
      Exception - -
    • waitUntilConnected

      public void waitUntilConnected(de.bsvrz.dav.daf.main.ClientDavInterface connection, String otherDav) throws Exception
      Wartet, bis die bestehende Applikationsverbindung den angebenenen Datenverteiler erreicht
      Parameters:
      connection - Verbindung
      otherDav - Anderer Datenverteiler
      Throws:
      Exception - -
    • isConnected

      public boolean isConnected(String dav1, String dav2) throws Exception
      Prüft, ob die 2 angegeben Datenverteiler miteinander verbunden sind bzw. kommunizieren
      Parameters:
      dav1 - Datenverteiler 1
      dav2 - Datenverteiler 2
      Throws:
      Exception - -
    • isConnected

      public boolean isConnected(de.bsvrz.dav.daf.main.ClientDavInterface connection, String otherDav) throws Exception
      Prüft, ob die bestehende Applikationsverbindung den angebenenen Datenverteiler erreicht
      Parameters:
      connection - Verbindung
      otherDav - Anderer Datenverteiler
      Returns:
      true wenn Verbindung steht, sonst false
      Throws:
      Exception - -
    • waitUntilDisconnected

      public void waitUntilDisconnected(String dav1, String dav2) throws Exception
      Wartet, bis die 2 angegeben Datenverteiler nicht mehr miteinander verbunden sind.
      Parameters:
      dav1 - Datenverteiler 1
      dav2 - Datenverteiler 2
      Throws:
      Exception - -
    • 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 Verbindungen zu anderen Datenverteilern zugelassen bzw. aufgebaut werden.
      Parameters:
      davDavReconnectDelay - Verzögerungszeit in Millisekunden
    • nextFreePort

      public int nextFreePort()
    • toString

      public String toString()
      Overrides:
      toString in class Object