Frage

Ich habe folgendes Layout für meine Testsuite:

TestSuite1.cmd:

  1. Führen Sie mein Programm
  2. Überprüfen seiner Rückkehr Ergebnis
  3. Wenn das Rücker nicht 0 ist, wandelt die Fehlerausgabe in Text- und das Skript abbrechen. Wenn es gelingt, schreiben Erfolg.

In meiner einzigen .cmd-Datei, nenne ich mein Programm etwa 10-mal mit verschiedenen Eingängen.

Das Problem ist, dass das Programm, das ich 10-mal laufen mehrere Stunden in Anspruch nimmt jedes Mal ausgeführt werden.

Gibt es eine Möglichkeit für mich, alle diese 10 runnings meines Programms parallelisieren, während immer noch irgendwie das Rückergebnis überprüft und eine richtige Ausgabedatei bereitstellt und während immer noch eine einzige .cmd-Datei und eine einzelne Ausgabedatei?

War es hilfreich?

Lösung

Unter der Annahme, sie miteinander nicht durch das Schreiben auf die gleichen Dateien stören, etc:

test1.cmd

:: intercept sub-calls.
  if "%1"=="test2" then goto :test2

:: start sub-calls.
  start test1.cmd test2 1
  start test1.cmd test2 2
  start test1.cmd test2 3

:: wait for sub-calls to complete.
:loop1
  if not exist test2_1.flg goto :loop1
:loop2
  if not exist test2_2.flg goto :loop2
:loop3
  if not exist test2_3.flg goto :loop3

:: output results sequentially
  type test2_1.out >test1.out
    del /s test2_1.out
    del /s test2_1.flg
  type test2_2.out >test1.out
    del /s test2_2.out
    del /s test2_2.flg
  type test2_3.out >test1.out
    del /s test2_3.out
    del /s test2_3.flg

  goto :eof
:test2

:: Generate one output file
  echo %1 >test2_%1.out
  ping -n 31 127.0.0.1 >nul: 2>nul:

:: generate flag file to indicate finished
  echo x >test2_%1.flg

Dies wird drei gleichzeitige Prozesse beginnen jeweils die Echos es Sequenznummer als 30 Sekunden warten.

Alle mit einer cmd-Datei und (eventuell) einer Ausgabedatei.

Andere Tipps

Beim Laufen Dinge parallel in Batch-Dateien können über 'Start' ausführbar / Befehl erfolgen.

Fenster:

Sie erstellen eine Batch-Datei, die im Wesentlichen aufruft:

start TestSuite1.cmd [TestParams1]
start TestSuite1.cmd [TestParams2]

und so weiter, die im Wesentlichen neue Befehlszeilen gabelt,

, die funktionieren würde, wenn die Anwendung kann gleichzeitige Benutzer verarbeiten (auch wenn sie der gleiche Benutzer), und Ihre TestSuite1.cmd der Lage ist, Parameter zu behandeln.

Sie müssen das Skript starten mit unterschiedlichen Parametern auf verschiedene Maschinen denn was macht nimmt das Programm so lange für eine Aufgabe (IO, CPU-Zeit) werden in noch kürzerer Versorgung sein, wenn mehrere Instanzen Ihr Programm auf einmal ausgeführt werden.

Einzige Ausnahme:. Die Laufzeit ist, die durch das Programm setzt sich schlafen

Sie den Befehl Start , erzeugt er einen neuen Eingabeaufforderung und Sie können entlang irgendwelchen Befehlen Sie es ausführen möchten senden.

würde ich diese verwenden, um Batch-Dateien zu erzeugen, die die Tests ausgeführt werden und hängt dann zu einem output.txt mit >> als solche:

testthingie.cmd >> output.txt
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top