summaryrefslogtreecommitdiff
path: root/qpid/cpp/src/tests/run_test.ps1
diff options
context:
space:
mode:
Diffstat (limited to 'qpid/cpp/src/tests/run_test.ps1')
-rw-r--r--qpid/cpp/src/tests/run_test.ps1162
1 files changed, 162 insertions, 0 deletions
diff --git a/qpid/cpp/src/tests/run_test.ps1 b/qpid/cpp/src/tests/run_test.ps1
new file mode 100644
index 0000000000..ff103e4556
--- /dev/null
+++ b/qpid/cpp/src/tests/run_test.ps1
@@ -0,0 +1,162 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing,
+# software distributed under the License is distributed on an
+# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+# KIND, either express or implied. See the License for the
+# specific language governing permissions and limitations
+# under the License.
+#
+
+param(
+ [string]$workingDir = $pwd,
+ [string]$buildDir = $(throw "-buildDir is required"),
+ [string]$sourceDir,
+ [switch]$python = $false,
+ [switch]$boostTest = $false,
+ [switch]$xml,
+ [switch]$startBroker = $false,
+ [string]$brokerOptions,
+ [switch]$help,
+ [Parameter(Mandatory=$true, ValueFromRemainingArguments=$true, Position=0)]
+ [String[]]$rest
+ )
+
+if ([string]::IsNullOrEmpty($sourceDir)) {
+ $sourceDir = Split-Path $myInvocation.InvocationName
+}
+
+if ([string]::IsNullOrEmpty($xml)) {
+ $xml = Test-Path variable:global:QPID_XML_TEST_OUTPUT
+}
+
+# Set up environment and run a test executable or script.
+. .\test_env.ps1
+
+if ($rest[0] -eq $null) {
+ "No wrapped command specified"
+ exit 1
+}
+# The test exe is probably not in the current binary dir - it's usually
+# placed in a subdirectory based on the configuration built in Visual Studio.
+# So check around to see where it is - when located, set the QPID_LIB_DIR
+# and PATH to look in the corresponding configuration off the src directory,
+# one level up.
+$prog = $rest[0]
+$logfilebase = [System.IO.Path]::GetFileNameWithoutExtension($prog)
+$logfilebase = "$pwd\\$logfilebase"
+# Qpid client lib sees QPID_LOG_TO_FILE; acts like using --log-to-file on
+# command line.
+$env:QPID_LOG_TO_FILE = "$logfilebase.log"
+$is_script = $prog -match ".ps1$"
+if (($is_script -or $python) -and !(Test-Path "$prog")) {
+ "$prog does not exist"
+ exit 1
+}
+if (!$is_script -and !(Test-Path "$prog")) {
+ . $sourceDir\find_prog.ps1 $prog
+ $rest[0] = $prog
+ $env:QPID_LIB_DIR = "..\$sub"
+}
+
+# Set up environment for running a Qpid test. If a broker should be started,
+# do that, else check for a saved port number to use.
+if ($startBroker) {
+ $broker = new-object System.Diagnostics.ProcessStartInfo
+ $broker.WorkingDirectory = $pwd
+ $broker.UseShellExecute = $false
+ $broker.CreateNoWindow = $true
+ $broker.RedirectStandardOutput = $true
+ $broker.FileName = $env:QPIDD_EXEC
+ $broker.Arguments = "--auth=no --no-module-dir --port=0 --interface 127.0.0.1 --log-to-file $logfilebase-qpidd.log $brokerOptions"
+ $broker_process = [System.Diagnostics.Process]::Start($broker)
+ $env:QPID_PORT = $broker_process.StandardOutput.ReadLine()
+}
+else {
+ # If qpidd.port exists and is not empty run test with QPID_PORT set.
+ if (Test-Path qpidd.port) {
+ set-item -path env:QPID_PORT -value (get-content -path qpidd.port -totalcount 1)
+ }
+}
+
+# Now start the real test.
+if ($python) {
+ $to_run = $PYTHON_EXE
+ $skip_args0 = $false
+ $outputfile = ""
+}
+elseif ($boostTest) {
+ if ($xml) {
+ $env:BOOST_TEST_SHOW_PROGRESS=no
+ $env:BOOST_TEST_OUTPUT_FORMAT=XML
+ $env:BOOST_TEST_LOG_LEVEL=test_suite
+ $env:BOOST_TEST_REPORT_LEVEL=no
+ $to_run = $rest[0]
+ $skip_args0 = $true
+ $outputfile = "$logfilebase-unittest.xml"
+ }
+ else {
+ $to_run = $rest[0]
+ $skip_args0 = $true
+ $outputfile = ""
+ }
+}
+else {
+ # Non-boost executable or powershell script
+ $outputfile = ""
+ if ($is_script) {
+ $to_run = (get-command powershell.exe).Definition
+ $skip_args0 = $false
+ }
+ else {
+ $to_run = $rest[0]
+ $skip_args0 = $true
+ }
+}
+
+if ($skip_args0) {
+ $arglist = $rest[1..($rest.length-1)]
+}
+else {
+ $arglist = $rest
+}
+
+if ($outputfile -eq "") {
+ $p = Start-Process -FilePath $to_run -ArgumentList $arglist -NoNewWindow -PassThru
+ $line = ""
+}
+else {
+ $p = Start-Process -FilePath $to_run -ArgumentList $arglist -NoNewWindow -RedirectStandardOutput $outputfile -PassThru
+}
+Wait-Process -InputObject $p
+$status = $p.ExitCode
+
+if (Test-Path $env:QPID_LOG_TO_FILE) {
+ $problems = Select-String -Path $env:QPID_LOG_TO_FILE -pattern " error ", " warning ", " critical "
+ if ($problems -ne $null) {
+ "WARNING: suspicious log entries in $env:QPID_LOG_TO_FILE:\n$problems"
+ $status = 1
+ }
+}
+
+# If a broker was started, stop it.
+if ($startBroker) {
+ & $env:QPIDD_EXEC --no-module-dir --quit
+ # Check qpid log for problems
+ $problems = Select-String -Path $logfilebase-qpidd.log -pattern " error ", " warning ", " critical "
+ if ($problems -ne $null) {
+ "WARNING: suspicious log entries in $logfilebase-qpidd.log:\n$problems"
+ $status = 1
+ }
+}
+
+exit $status