From b604e3c45f3e9a348967892d6a595b4268f97b8b Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 25 Aug 2016 10:29:20 -0400 Subject: convert upload_item to new upload_output --- build.sh | 25 ++++++++++++------------- 1 file changed, 12 insertions(+), 13 deletions(-) diff --git a/build.sh b/build.sh index cd2a9ebf5e..1042cea7da 100755 --- a/build.sh +++ b/build.sh @@ -238,7 +238,7 @@ do if [ -r "$build_dir/autobuild-package.xml" ] then begin_section "Autobuild metadata" - upload_item docs "$build_dir/autobuild-package.xml" text/xml + upload_output "autobuild metadata" "$build_dir/autobuild-package.xml" text/xml if [ "$arch" != "Linux" ] then record_dependencies_graph # defined in buildscripts/hg/bin/build.sh @@ -254,12 +254,12 @@ do if [ -r "$build_dir/doxygen_warnings.log" ] then record_event "Doxygen warnings generated; see doxygen_warnings.log" - upload_item log "$build_dir/doxygen_warnings.log" text/plain + upload_output "doxygen log" "$build_dir/doxygen_warnings.log" text/plain ## TBD fi if [ -d "$build_dir/doxygen/html" ] then tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html" - upload_item docs "$build_dir/viewer-doxygen.tar.bz2" binary/octet-stream + upload_output "doxygen" "$build_dir/viewer-doxygen.tar.bz2" binary/octet-stream fi ;; *) @@ -319,10 +319,10 @@ then # upload debian package and create repository begin_section "Upload Debian Repository" for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do - upload_item debian $deb_file binary/octet-stream + upload_output "installer" $deb_file binary/octet-stream done for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do - upload_item debian_private $deb_file binary/octet-stream + upload_output debian $deb_file binary/octet-stream have_private_repo=true done @@ -339,7 +339,7 @@ then if [ $have_private_repo = true ]; then eval "$python_command \"$redirect\" '\${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html'"\ >"$build_log_dir/private.html" || fatal generating redirect - upload_item global_redirect "$build_log_dir/private.html" text/html + upload_output global_redirect "$build_log_dir/private.html" text/html private ## TBD fi @@ -367,9 +367,9 @@ then succeeded=$build_coverity else # Upload base package. - upload_item installer "$package" binary/octet-stream - upload_item quicklink "$package" binary/octet-stream - [ -f $build_dir/summary.json ] && upload_item installer $build_dir/summary.json text/plain + upload_output installer "$package" binary/octet-stream + + [ -f $build_dir/summary.json ] && upload_output "installer metadata" $build_dir/summary.json application/json # Upload additional packages. for package_id in $additional_packages @@ -377,8 +377,7 @@ then package=$(installer_$arch "$package_id") if [ x"$package" != x ] then - upload_item installer "$package" binary/octet-stream - upload_item quicklink "$package" binary/octet-stream + upload_output "installer $package_id" "$package" binary/octet-stream private else record_failure "Failed to find additional package for '$package_id'." fi @@ -389,7 +388,7 @@ then # Upload crash reporter files for symbolfile in $symbolfiles do - upload_item symbolfile "$build_dir/$symbolfile" binary/octet-stream + upload_output symbolfile "$build_dir/$symbolfile" binary/octet-stream done # Upload the llphysicsextensions_tpv package, if one was produced @@ -397,7 +396,7 @@ then if [ -r "$build_dir/llphysicsextensions_package" ] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) - upload_item private_artifact "$llphysicsextensions_package" binary/octet-stream + upload_output "llphysicsextensions_package" "$llphysicsextensions_package" binary/octet-stream private fi ;; *) -- cgit v1.2.3 From 7ba028d2f36515649b85d3bbc5030288e94b96dc Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 26 Aug 2016 16:28:22 -0400 Subject: rewrap uploads --- build.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.sh b/build.sh index 1042cea7da..5610730695 100755 --- a/build.sh +++ b/build.sh @@ -358,7 +358,7 @@ if $succeeded then if $build_viewer then - begin_section Upload Installer + begin_section "Uploads" # Upload installer package=$(installer_$arch) if [ x"$package" = x ] || test -d "$package" @@ -412,7 +412,7 @@ then done fi fi - end_section Upload Installer + end_section "Uploads" else record_event "skipping upload of installer" fi -- cgit v1.2.3 From 2fc670e2dda6c16b314fa626faf9168ebdec8549 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Sun, 28 Aug 2016 10:12:10 -0400 Subject: do custom initialize calls so that viewer_channel is taken into account for the buildid --- build.sh | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/build.sh b/build.sh index 5610730695..579db0900d 100755 --- a/build.sh +++ b/build.sh @@ -202,10 +202,9 @@ then export additional_packages= fi -# dump environment variables for debugging -begin_section "Environment" -env|sort -end_section "Environment" +initialize_context +codeticket addinput "${viewer_channel}" "viewer_channel" +initialize_build # Now run the build succeeded=true @@ -338,7 +337,7 @@ then if [ $have_private_repo = true ]; then eval "$python_command \"$redirect\" '\${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html'"\ - >"$build_log_dir/private.html" || fatal generating redirect + >"$build_log_dir/private.html" || fatal "generating global redirect" upload_output global_redirect "$build_log_dir/private.html" text/html private ## TBD fi -- cgit v1.2.3 From ea0242e1cebb7ebb9515e39f9dc78ec207cdce22 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Sun, 28 Aug 2016 10:42:52 -0400 Subject: collapse autobuild initialize --- build.sh | 2 ++ 1 file changed, 2 insertions(+) diff --git a/build.sh b/build.sh index 579db0900d..5f55133d81 100755 --- a/build.sh +++ b/build.sh @@ -182,6 +182,7 @@ then pass fi +begin_section "autobuild initialize" # ensure AUTOBUILD is in native path form for child processes AUTOBUILD="$(native_path "$AUTOBUILD")" # set "$autobuild" to cygwin path form for use locally in this script @@ -194,6 +195,7 @@ fi # load autobuild provided shell functions and variables eval "$("$autobuild" --quiet source_environment)" +end_section "autobuild initialize" # something about the additional_packages mechanism messes up buildscripts results.py on Linux # since we don't care about those packages on Linux, just zero it out, yes - a HACK -- cgit v1.2.3 From 3c9f7121a2801d44e3db81f212a84a25062debe5 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Sun, 28 Aug 2016 11:50:47 -0400 Subject: use codeticket addinput parameter to register viewer_channel --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 5f55133d81..80263254eb 100755 --- a/build.sh +++ b/build.sh @@ -205,7 +205,7 @@ then fi initialize_context -codeticket addinput "${viewer_channel}" "viewer_channel" +codeticket addinput parameter "viewer_channel" "${viewer_channel}" initialize_build # Now run the build -- cgit v1.2.3 From 5a7855d4b388bcf3d365d20e54db227591febeba Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 30 Aug 2016 08:49:09 -0400 Subject: remove use of old build_ok variable --- build.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 80263254eb..f74501743c 100755 --- a/build.sh +++ b/build.sh @@ -142,9 +142,10 @@ build() if $build_viewer then "$autobuild" build --no-configure -c $variant || fatal "failed building $variant" - + echo true >"$build_dir"/build_ok + # Run build extensions - if [ $build_ok -eq 0 -a -d ${build_dir}/packages/build-extensions ] + if [ -d ${build_dir}/packages/build-extensions ] then for extension in ${build_dir}/packages/build-extensions/*.sh do @@ -157,7 +158,6 @@ build() # *TODO: Make this a build extension. package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages" - echo true >"$build_dir"/build_ok else echo "Skipping build due to configuration build_viewer=${build_viewer}" echo true >"$build_dir"/build_ok -- cgit v1.2.3 From f99c3002a1efbd6512094ebd4620c28490c52226 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 30 Aug 2016 16:06:22 -0400 Subject: clean up logging, change debian installer upload name to "deb" --- build.sh | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index f74501743c..654ad68ec7 100755 --- a/build.sh +++ b/build.sh @@ -159,7 +159,7 @@ build() package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages" else - echo "Skipping build due to configuration build_viewer=${build_viewer}" + record_event "Skipping build due to configuration build_viewer=${build_viewer}" echo true >"$build_dir"/build_ok fi } @@ -232,6 +232,9 @@ do then begin_section "Build $variant" build "$variant" "$build_dir" + end_section "Build $variant" + + begin_section "post-build $variant" if `cat "$build_dir/build_ok"` then case "$variant" in @@ -270,7 +273,8 @@ do else record_failure "Build of \"$variant\" failed." fi - end_section "Build $variant" + begin_section "post-build $variant" + else record_event "configure for $variant failed: build skipped" fi @@ -320,7 +324,7 @@ then # upload debian package and create repository begin_section "Upload Debian Repository" for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do - upload_output "installer" $deb_file binary/octet-stream + upload_output "deb" $deb_file binary/octet-stream done for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do upload_output debian $deb_file binary/octet-stream -- cgit v1.2.3 From bbbe70d33c5e4c8e54df9bc8e76a8611d4c432e2 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 30 Aug 2016 16:52:43 -0400 Subject: simplify redirect generator --- build.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 654ad68ec7..d7b95e8987 100755 --- a/build.sh +++ b/build.sh @@ -342,10 +342,9 @@ then done if [ $have_private_repo = true ]; then - eval "$python_command \"$redirect\" '\${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html'"\ + $python_command $(native_path "$helper/hg/bin/redirect.py") "${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html"\ >"$build_log_dir/private.html" || fatal "generating global redirect" - upload_output global_redirect "$build_log_dir/private.html" text/html private ## TBD - + upload_output global_redirect "$build_log_dir/private.html" text/html private fi end_section "Upload Debian Repository" -- cgit v1.2.3 From bd2005e078b3fa60a0acc72ef06bf7ba073b5fea Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Thu, 1 Sep 2016 21:08:26 -0400 Subject: convert redirect to new python convention --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index d7b95e8987..9b0b8399a3 100755 --- a/build.sh +++ b/build.sh @@ -342,7 +342,7 @@ then done if [ $have_private_repo = true ]; then - $python_command $(native_path "$helper/hg/bin/redirect.py") "${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html"\ + python_cmd "$helpers/redirect.py" "${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html"\ >"$build_log_dir/private.html" || fatal "generating global redirect" upload_output global_redirect "$build_log_dir/private.html" text/html private fi -- cgit v1.2.3 From 32d52ec240d77e4a2cdf42b6c1ca5c9d7a9650a8 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 6 Sep 2016 12:08:03 -0400 Subject: display build metadata, remove obsolete private.html --- build.sh | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/build.sh b/build.sh index 9b0b8399a3..ea3e6b6a72 100755 --- a/build.sh +++ b/build.sh @@ -141,9 +141,12 @@ build() local variant="$1" if $build_viewer then + begin_section "autobuild $variant" "$autobuild" build --no-configure -c $variant || fatal "failed building $variant" echo true >"$build_dir"/build_ok - + end_section "autobuild $variant" + + begin_section "extensions $variant" # Run build extensions if [ -d ${build_dir}/packages/build-extensions ] then @@ -157,6 +160,7 @@ build() # *TODO: Make this a build extension. package_llphysicsextensions_tpv || fatal "failed building llphysicsextensions packages" + end_section "extensions $variant" else record_event "Skipping build due to configuration build_viewer=${build_viewer}" @@ -273,7 +277,7 @@ do else record_failure "Build of \"$variant\" failed." fi - begin_section "post-build $variant" + end_section "post-build $variant" else record_event "configure for $variant failed: build skipped" @@ -340,13 +344,6 @@ then mv $build_log_dir/$debian_repo_type $build_log_dir/${debian_repo_type}_pushed fi done - - if [ $have_private_repo = true ]; then - python_cmd "$helpers/redirect.py" "${private_S3PROXY_URL}${S3PREFIX}repo/$repo/rev/$revision/index.html"\ - >"$build_log_dir/private.html" || fatal "generating global redirect" - upload_output global_redirect "$build_log_dir/private.html" text/html private - fi - end_section "Upload Debian Repository" else @@ -373,7 +370,7 @@ then # Upload base package. upload_output installer "$package" binary/octet-stream - [ -f $build_dir/summary.json ] && upload_output "installer metadata" $build_dir/summary.json application/json + [ -f $build_dir/summary.json ] && upload_output "installer metadata" $build_dir/summary.json application/json display # Upload additional packages. for package_id in $additional_packages -- cgit v1.2.3 From 9a1edafbf1e2ec5a4db3085bc5738527c4b090a8 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 6 Sep 2016 12:17:01 -0400 Subject: use debian package names in uploads, set private according to new convention --- build.sh | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/build.sh b/build.sh index ea3e6b6a72..7213bad017 100755 --- a/build.sh +++ b/build.sh @@ -298,7 +298,7 @@ then if $build_viewer_deb && [ "$last_built_variant" == "Release" ] then begin_section "Build Viewer Debian Package" - have_private_repo=false + # mangle the changelog dch --force-bad-version \ --distribution unstable \ @@ -328,11 +328,12 @@ then # upload debian package and create repository begin_section "Upload Debian Repository" for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do - upload_output "deb" $deb_file binary/octet-stream + deb_pkg=$(basename "$deb_file" | sed 's,_.*,,') + upload_output "debian $deb_pkg" $deb_file binary/octet-stream done for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do - upload_output debian $deb_file binary/octet-stream - have_private_repo=true + deb_pkg=$(basename "$deb_file" | sed 's,_.*,,') + upload_output "debian $deb_pkg" $deb_file binary/octet-stream private done create_deb_repo -- cgit v1.2.3 From 9d5bf8df82d6171d2a9957f33ea6e43120d31cef Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 7 Sep 2016 11:34:10 -0400 Subject: directly invoke codeticket for output --- build.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/build.sh b/build.sh index 7213bad017..f5296b9ea1 100755 --- a/build.sh +++ b/build.sh @@ -246,7 +246,7 @@ do if [ -r "$build_dir/autobuild-package.xml" ] then begin_section "Autobuild metadata" - upload_output "autobuild metadata" "$build_dir/autobuild-package.xml" text/xml + python_cmd "$helpers/codeticket.py" output --label "autobuild metadata" --output "$build_dir/autobuild-package.xml" --mimetype text/xml --display if [ "$arch" != "Linux" ] then record_dependencies_graph # defined in buildscripts/hg/bin/build.sh @@ -262,12 +262,12 @@ do if [ -r "$build_dir/doxygen_warnings.log" ] then record_event "Doxygen warnings generated; see doxygen_warnings.log" - upload_output "doxygen log" "$build_dir/doxygen_warnings.log" text/plain ## TBD + python_cmd "$helpers/codeticket.py" output --label "doxygen log" --output "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD fi if [ -d "$build_dir/doxygen/html" ] then tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html" - upload_output "doxygen" "$build_dir/viewer-doxygen.tar.bz2" binary/octet-stream + python_cmd "$helpers/codeticket.py" output --label "doxygen" --output "$build_dir/viewer-doxygen.tar.bz2" fi ;; *) @@ -329,11 +329,11 @@ then begin_section "Upload Debian Repository" for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do deb_pkg=$(basename "$deb_file" | sed 's,_.*,,') - upload_output "debian $deb_pkg" $deb_file binary/octet-stream + python_cmd "$helpers/codeticket.py" output --label "debian $deb_pkg" --output $deb_file done for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do deb_pkg=$(basename "$deb_file" | sed 's,_.*,,') - upload_output "debian $deb_pkg" $deb_file binary/octet-stream private + python_cmd "$helpers/codeticket.py" output --label "debian $deb_pkg" --output "$deb_file" --private done create_deb_repo @@ -369,9 +369,9 @@ then succeeded=$build_coverity else # Upload base package. - upload_output installer "$package" binary/octet-stream + python_cmd "$helpers/codeticket.py" output --label installer --output "$package" - [ -f $build_dir/summary.json ] && upload_output "installer metadata" $build_dir/summary.json application/json display + [ -f $build_dir/summary.json ] && python_cmd "$helpers/codeticket.py" output --label "installer metadata" --output $build_dir/summary.json --mimetype application/json --display # Upload additional packages. for package_id in $additional_packages @@ -379,7 +379,7 @@ then package=$(installer_$arch "$package_id") if [ x"$package" != x ] then - upload_output "installer $package_id" "$package" binary/octet-stream private + python_cmd "$helpers/codeticket.py" output --label "installer $package_id" --output "$package" --private else record_failure "Failed to find additional package for '$package_id'." fi @@ -390,7 +390,7 @@ then # Upload crash reporter files for symbolfile in $symbolfiles do - upload_output symbolfile "$build_dir/$symbolfile" binary/octet-stream + python_cmd "$helpers/codeticket.py" output --label symbolfile "$build_dir/$symbolfile" done # Upload the llphysicsextensions_tpv package, if one was produced @@ -398,7 +398,7 @@ then if [ -r "$build_dir/llphysicsextensions_package" ] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) - upload_output "llphysicsextensions_package" "$llphysicsextensions_package" binary/octet-stream private + python_cmd "$helpers/codeticket.py" output --label "llphysicsextensions_package" --output "$llphysicsextensions_package" --private fi ;; *) -- cgit v1.2.3 From 65a7a02d296a97257f40c747c1299cbd2616b9ce Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 7 Sep 2016 11:49:52 -0400 Subject: pass autobuild-package.xml to graph generator --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index f5296b9ea1..1edf584b1f 100755 --- a/build.sh +++ b/build.sh @@ -249,7 +249,7 @@ do python_cmd "$helpers/codeticket.py" output --label "autobuild metadata" --output "$build_dir/autobuild-package.xml" --mimetype text/xml --display if [ "$arch" != "Linux" ] then - record_dependencies_graph # defined in buildscripts/hg/bin/build.sh + record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh else record_event "TBD - no dependency graph for linux (probable python version dependency)" fi -- cgit v1.2.3 From a388504ed2fb8f6c28f33b0e120e2632f693ec14 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 7 Sep 2016 13:32:49 -0400 Subject: fix symbolfile upload --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 1edf584b1f..6a1b4813a7 100755 --- a/build.sh +++ b/build.sh @@ -390,7 +390,7 @@ then # Upload crash reporter files for symbolfile in $symbolfiles do - python_cmd "$helpers/codeticket.py" output --label symbolfile "$build_dir/$symbolfile" + python_cmd "$helpers/codeticket.py" output --label symbolfile --output "$build_dir/$symbolfile" done # Upload the llphysicsextensions_tpv package, if one was produced -- cgit v1.2.3 From e2855de8bce3b3b38df13d74e7bba87a61f1a241 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 7 Sep 2016 13:33:10 -0400 Subject: do not display the autobuild package data --- build.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.sh b/build.sh index 6a1b4813a7..9fc3bc4503 100755 --- a/build.sh +++ b/build.sh @@ -246,7 +246,7 @@ do if [ -r "$build_dir/autobuild-package.xml" ] then begin_section "Autobuild metadata" - python_cmd "$helpers/codeticket.py" output --label "autobuild metadata" --output "$build_dir/autobuild-package.xml" --mimetype text/xml --display + python_cmd "$helpers/codeticket.py" output --label "autobuild metadata" --output "$build_dir/autobuild-package.xml" --mimetype text/xml if [ "$arch" != "Linux" ] then record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh -- cgit v1.2.3 From 3e16c29edcfea7542e23ec6066882c5264029bb6 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Wed, 7 Sep 2016 13:57:34 -0400 Subject: don't upload summary.json --- build.sh | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.sh b/build.sh index 9fc3bc4503..4f30fc64fb 100755 --- a/build.sh +++ b/build.sh @@ -371,8 +371,6 @@ then # Upload base package. python_cmd "$helpers/codeticket.py" output --label installer --output "$package" - [ -f $build_dir/summary.json ] && python_cmd "$helpers/codeticket.py" output --label "installer metadata" --output $build_dir/summary.json --mimetype application/json --display - # Upload additional packages. for package_id in $additional_packages do -- cgit v1.2.3 From 0c60dea99e882dc8af94151951a7f6f7d593aecb Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Tue, 20 Sep 2016 14:31:38 -0400 Subject: update calls to new codeticket --- build.sh | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/build.sh b/build.sh index 4f30fc64fb..30632a9df3 100755 --- a/build.sh +++ b/build.sh @@ -209,7 +209,7 @@ then fi initialize_context -codeticket addinput parameter "viewer_channel" "${viewer_channel}" +python_cmd "$helpers/codeticket.py" addinput "Viewer Channel" "${viewer_channel}" initialize_build # Now run the build @@ -246,7 +246,7 @@ do if [ -r "$build_dir/autobuild-package.xml" ] then begin_section "Autobuild metadata" - python_cmd "$helpers/codeticket.py" output --label "autobuild metadata" --output "$build_dir/autobuild-package.xml" --mimetype text/xml + python_cmd "$helpers/codeticket.py" addoutput "Autobuild Metadata" "$build_dir/autobuild-package.xml" --mimetype text/xml if [ "$arch" != "Linux" ] then record_dependencies_graph "$build_dir/autobuild-package.xml" # defined in buildscripts/hg/bin/build.sh @@ -262,12 +262,12 @@ do if [ -r "$build_dir/doxygen_warnings.log" ] then record_event "Doxygen warnings generated; see doxygen_warnings.log" - python_cmd "$helpers/codeticket.py" output --label "doxygen log" --output "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD + python_cmd "$helpers/codeticket.py" addoutput "Doxygen Log" "$build_dir/doxygen_warnings.log" --mimetype text/plain ## TBD fi if [ -d "$build_dir/doxygen/html" ] then tar -c -f "$build_dir/viewer-doxygen.tar.bz2" --strip-components 3 "$build_dir/doxygen/html" - python_cmd "$helpers/codeticket.py" output --label "doxygen" --output "$build_dir/viewer-doxygen.tar.bz2" + python_cmd "$helpers/codeticket.py" addoutput "Doxygen Tarball" "$build_dir/viewer-doxygen.tar.bz2" fi ;; *) @@ -329,11 +329,11 @@ then begin_section "Upload Debian Repository" for deb_file in `/bin/ls ../packages_public/*.deb ../*.deb 2>/dev/null`; do deb_pkg=$(basename "$deb_file" | sed 's,_.*,,') - python_cmd "$helpers/codeticket.py" output --label "debian $deb_pkg" --output $deb_file + python_cmd "$helpers/codeticket.py" addoutput "Debian $deb_pkg" $deb_file done for deb_file in `/bin/ls ../packages_private/*.deb 2>/dev/null`; do deb_pkg=$(basename "$deb_file" | sed 's,_.*,,') - python_cmd "$helpers/codeticket.py" output --label "debian $deb_pkg" --output "$deb_file" --private + python_cmd "$helpers/codeticket.py" addoutput "Debian $deb_pkg" "$deb_file" --private done create_deb_repo @@ -369,7 +369,7 @@ then succeeded=$build_coverity else # Upload base package. - python_cmd "$helpers/codeticket.py" output --label installer --output "$package" + python_cmd "$helpers/codeticket.py" addoutput Installer --output "$package" # Upload additional packages. for package_id in $additional_packages @@ -377,7 +377,7 @@ then package=$(installer_$arch "$package_id") if [ x"$package" != x ] then - python_cmd "$helpers/codeticket.py" output --label "installer $package_id" --output "$package" --private + python_cmd "$helpers/codeticket.py" addoutput "Installer $package_id" "$package" else record_failure "Failed to find additional package for '$package_id'." fi @@ -388,7 +388,7 @@ then # Upload crash reporter files for symbolfile in $symbolfiles do - python_cmd "$helpers/codeticket.py" output --label symbolfile --output "$build_dir/$symbolfile" + python_cmd "$helpers/codeticket.py" addoutput "Symbolfile $(basename "$build_dir/$symbolfile")" "$build_dir/$symbolfile" done # Upload the llphysicsextensions_tpv package, if one was produced @@ -396,7 +396,7 @@ then if [ -r "$build_dir/llphysicsextensions_package" ] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) - python_cmd "$helpers/codeticket.py" output --label "llphysicsextensions_package" --output "$llphysicsextensions_package" --private + python_cmd "$helpers/codeticket.py" addoutput "llphysicsextensions_package" "$llphysicsextensions_package" --private fi ;; *) -- cgit v1.2.3 From 6bd8aac928898f1744fd41d972c59dd864351cbc Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 23 Sep 2016 17:21:03 -0400 Subject: adjust initialization function names to the new terminology --- build.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/build.sh b/build.sh index 30632a9df3..b7afdcd7f3 100755 --- a/build.sh +++ b/build.sh @@ -208,9 +208,9 @@ then export additional_packages= fi -initialize_context -python_cmd "$helpers/codeticket.py" addinput "Viewer Channel" "${viewer_channel}" initialize_build +python_cmd "$helpers/codeticket.py" addinput "Viewer Channel" "${viewer_channel}" +initialize_version # Now run the build succeeded=true @@ -396,7 +396,7 @@ then if [ -r "$build_dir/llphysicsextensions_package" ] then llphysicsextensions_package=$(cat $build_dir/llphysicsextensions_package) - python_cmd "$helpers/codeticket.py" addoutput "llphysicsextensions_package" "$llphysicsextensions_package" --private + python_cmd "$helpers/codeticket.py" addoutput "Physics Extensions Package" "$llphysicsextensions_package" --private fi ;; *) -- cgit v1.2.3 From 3a8aa2d13d4d362847ce2ec16376907e7f562500 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 2 Dec 2016 10:59:06 -0500 Subject: add viewer channel and version to the beginning of the About box Licenses information --- indra/cmake/BuildPackagesInfo.cmake | 2 +- scripts/packages-formatter.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/indra/cmake/BuildPackagesInfo.cmake b/indra/cmake/BuildPackagesInfo.cmake index 0f574ee39a..4e9baa61fe 100644 --- a/indra/cmake/BuildPackagesInfo.cmake +++ b/indra/cmake/BuildPackagesInfo.cmake @@ -6,5 +6,5 @@ add_custom_command(OUTPUT packages-info.txt COMMENT Generating packages-info.txt for the about box MAIN_DEPENDENCY ${CMAKE_SOURCE_DIR}/../autobuild.xml DEPENDS ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py - COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py > packages-info.txt + COMMAND ${PYTHON_EXECUTABLE} ${CMAKE_SOURCE_DIR}/../scripts/packages-formatter.py "${VIEWER_CHANNEL}" "${VIEWER_SHORT_VERSION}.${VIEWER_VERSION_REVISION}" > packages-info.txt ) diff --git a/scripts/packages-formatter.py b/scripts/packages-formatter.py index 928d340b69..f91f5819b7 100755 --- a/scripts/packages-formatter.py +++ b/scripts/packages-formatter.py @@ -29,6 +29,12 @@ import sys import errno import re import subprocess +import argparse + +parser = argparse.ArgumentParser(description='Format dependency version and copyright information for the viewer About box content') +parser.add_argument('channel', help='viewer channel name') +parser.add_argument('version', help='viewer version number') +args = parser.parse_args() _autobuild=os.getenv('AUTOBUILD', 'autobuild') @@ -50,9 +56,8 @@ def autobuild(*args): # Don't attempt to interpret anything but ENOENT raise # Here it's ENOENT: subprocess can't find the autobuild executable. - print >>sys.stderr, "packages-formatter on %s: can't run autobuild:\n%s\n%s" % \ - (sys.platform, ' '.join(command), err) - sys.exit(1) + sys.exit("packages-formatter on %s: can't run autobuild:\n%s\n%s" % \ + (sys.platform, ' '.join(command), err)) # no exceptions yet, let caller read stdout return child.stdout @@ -84,6 +89,7 @@ for line in copyrights: else: sys.exit("Unrecognized --copyrights output: %s" % line) +print "%s %s" % (args.channel, args.version) print viewer_copyright for pkg in sorted(version): print ': '.join([pkg, version[pkg]]) -- cgit v1.2.3 From ff6369f5a7b711b1a185d6652446e9e186f91333 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Fri, 2 Dec 2016 15:53:41 -0500 Subject: show the build address size in the About box --- indra/newview/llappviewer.cpp | 1 + indra/newview/skins/default/xui/en/strings.xml | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp index 9db03a7438..0813f2c359 100644 --- a/indra/newview/llappviewer.cpp +++ b/indra/newview/llappviewer.cpp @@ -3280,6 +3280,7 @@ LLSD LLAppViewer::getViewerInfo() const if (build_config != "Release") { info["BUILD_CONFIG"] = build_config; + info["ADDRESS_SIZE"] = ADDRESS_SIZE; } // return a URL to the release notes for this viewer, such as: diff --git a/indra/newview/skins/default/xui/en/strings.xml b/indra/newview/skins/default/xui/en/strings.xml index 9b3fb06bdf..00237d493a 100644 --- a/indra/newview/skins/default/xui/en/strings.xml +++ b/indra/newview/skins/default/xui/en/strings.xml @@ -25,7 +25,7 @@ [APP_NAME] [VIEWER_VERSION_0].[VIEWER_VERSION_1].[VIEWER_VERSION_2].[VIEWER_VERSION_3] ([CHANNEL]) [[VIEWER_RELEASE_NOTES_URL] [ReleaseNotes]] - Build Configuration [BUILD_CONFIG] + Build Configuration [BUILD_CONFIG] [ADDRESS_SIZE] bits You are at [POSITION_LOCAL_0,number,1], [POSITION_LOCAL_1,number,1], [POSITION_LOCAL_2,number,1] in [REGION] located at <nolink>[HOSTNAME]</nolink> ([HOSTIP]) -- cgit v1.2.3 From ea11d577c124702505f4d10afdfc86e299019e25 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Sat, 3 Dec 2016 10:49:43 -0500 Subject: call standard initialization functions from buildscripts build.sh --- build.sh | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.sh b/build.sh index ab7a1faa37..270775ab48 100755 --- a/build.sh +++ b/build.sh @@ -176,6 +176,8 @@ then exit 1 fi +initialize_build # provided by master buildscripts build.sh + # Check to see if we're skipping the platform if ! eval '$build_'"$arch" then @@ -208,6 +210,8 @@ begin_section "Environment" env|sort end_section "Environment" +initialize_version # provided by buildscripts build.sh; sets version id + # Now run the build succeeded=true build_processes= -- cgit v1.2.3 From fad899fe6c61e40dec98f38a26d0ed544b2f6b39 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 5 Dec 2016 10:14:18 -0500 Subject: correct merge duplications, put source_environment commands into sections --- build.sh | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-) diff --git a/build.sh b/build.sh index 15bbe19f66..36ae33ef90 100755 --- a/build.sh +++ b/build.sh @@ -182,13 +182,6 @@ fi initialize_build # provided by master buildscripts build.sh -# Check to see if we're skipping the platform -if ! eval '$build_'"$arch" -then - record_event "building on architecture $arch is disabled" - pass -fi - begin_section "autobuild initialize" # ensure AUTOBUILD is in native path form for child processes AUTOBUILD="$(native_path "$AUTOBUILD")" @@ -201,7 +194,15 @@ then fi # load autobuild provided shell functions and variables -eval "$("$autobuild" --quiet source_environment)" +"$autobuild" --quiet source_environment > "$build_log_dir/source_environment" +begin_section "dump source environment commands" +cat "$build_log_dir/source_environment" +end_section "dump source environment commands" + +begin_section "execute source environment commands" +. "$build_log_dir/source_environment" +end_section "execute source environment commands" + end_section "autobuild initialize" # something about the additional_packages mechanism messes up buildscripts results.py on Linux @@ -211,9 +212,7 @@ then export additional_packages= fi -initialize_build python_cmd "$helpers/codeticket.py" addinput "Viewer Channel" "${viewer_channel}" -initialize_version initialize_version # provided by buildscripts build.sh; sets version id -- cgit v1.2.3 From b5f4af3263eb601f705521492a270a7c62789fbd Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 5 Dec 2016 12:49:14 -0500 Subject: suppress VS linker warning about unfound pdb files --- indra/cmake/00-Common.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/cmake/00-Common.cmake b/indra/cmake/00-Common.cmake index 96ff9a645e..6734f9585c 100644 --- a/indra/cmake/00-Common.cmake +++ b/indra/cmake/00-Common.cmake @@ -67,7 +67,7 @@ if (WINDOWS) "${CMAKE_CXX_FLAGS_RELEASE} ${LL_CXX_FLAGS} /O2 /Zi /Zo /MD /MP /Ob2 -D_SECURE_STL=0 -D_HAS_ITERATOR_DEBUGGING=0" CACHE STRING "C++ compiler release options" FORCE) # zlib has assembly-language object files incompatible with SAFESEH - set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE /SAFESEH:NO /NODEFAULTLIB:LIBCMT") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /LARGEADDRESSAWARE /SAFESEH:NO /NODEFAULTLIB:LIBCMT /IGNORE:4099") set(CMAKE_CXX_STANDARD_LIBRARIES "") set(CMAKE_C_STANDARD_LIBRARIES "") -- cgit v1.2.3 From 911cd64e60ac7ee7805534ec42e1ef006adf9a46 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 5 Dec 2016 13:00:50 -0500 Subject: lower the verbosity of makensis to emit only warnings and errors --- indra/newview/viewer_manifest.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py index 589d74a014..d9c4cf1b9e 100755 --- a/indra/newview/viewer_manifest.py +++ b/indra/newview/viewer_manifest.py @@ -669,7 +669,7 @@ class WindowsManifest(ViewerManifest): while (not installer_created) and (nsis_attempts > 0): try: nsis_attempts-=1; - self.run_command('"' + NSIS_path + '" ' + self.dst_path_of(tempfile)) + self.run_command('"' + NSIS_path + '" /V2 ' + self.dst_path_of(tempfile)) installer_created=True # if no exception was raised, the codesign worked except ManifestError, err: if nsis_attempts: -- cgit v1.2.3 From 83209ef5c082405e3866d50c4188afd5cfaa7358 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 5 Dec 2016 13:28:40 -0500 Subject: remove more bits of the old build system --- BuildParams | 22 +--------------------- build.sh | 3 --- 2 files changed, 1 insertion(+), 24 deletions(-) diff --git a/BuildParams b/BuildParams index 5adf249269..cbd5be7658 100755 --- a/BuildParams +++ b/BuildParams @@ -3,7 +3,6 @@ # Please refer to: # https://wiki.secondlife.com/wiki/Automated_Build_System - # Global setting for now.... Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2" CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2" @@ -13,27 +12,9 @@ Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2" public_build = true build_docs = true -# disable all Debug builds (RelWithDebInfo is sufficient) -build_CYGWIN_Debug = false -build_Linux_Debug = false -build_Darwin_Debug = false -build_Debug = false - # enable Doxygen building on Linux for TeamCity (it can be done manually on any platform) build_Linux_Doxygen = true -# Update Public Inworld Build Status Indicators (setting should mirror "public_build") -email_status_this_is_os = true - -# Limit extent of codeticket updates to revisions after... -codeticket_since = 3.3.0-release - -# Override build system default toolchain -# Note that this will only affect automated builds. -Linux.distcc_version = -Linux.gcc_version = /usr/bin/gcc-4.6 -Linux.cxx_version = /usr/bin/g++-4.6 - # Need viewer-build-variables as well as other shared repositories buildscripts_shared_more_NAMEs="build_variables" build_variables_repostory_url = "https://bitbucket.org/lindenlab/viewer-build-variables" @@ -92,5 +73,4 @@ EDU_viewer_channel_suffix = "edu" # Notifications - to configure email notices use the TeamCity parameter # setting screen for your project or build configuration to set the # environment variable 'email' to a space-separated list of email addresses - - +email="" diff --git a/build.sh b/build.sh index 36ae33ef90..e191794ba0 100755 --- a/build.sh +++ b/build.sh @@ -222,9 +222,6 @@ build_processes= last_built_variant= for variant in $variants do - eval '$build_'"$variant" || continue - eval '$build_'"$arch"_"$variant" || continue - # Only the last built arch is available for upload last_built_variant="$variant" -- cgit v1.2.3 From 8a67aaa009f99b858e750433cfbd7901341afad8 Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 5 Dec 2016 15:20:08 -0500 Subject: limit variants to RelWithDebInfo and Release --- BuildParams | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/BuildParams b/BuildParams index cbd5be7658..a991781c58 100755 --- a/BuildParams +++ b/BuildParams @@ -3,10 +3,8 @@ # Please refer to: # https://wiki.secondlife.com/wiki/Automated_Build_System -# Global setting for now.... -Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2" -CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2" -Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2" +# Variants (NOTE: 'Release' must be last for uploads to work correctly) +variants = "RelWithDebInfo Release" # Use Public Upload Locations public_build = true @@ -74,3 +72,8 @@ EDU_viewer_channel_suffix = "edu" # setting screen for your project or build configuration to set the # environment variable 'email' to a space-separated list of email addresses email="" + +# Global setting for now.... +Darwin.symbolfiles = "newview/Release/secondlife-symbols-darwin.tar.bz2" +CYGWIN.symbolfiles = "newview/Release/secondlife-symbols-windows.tar.bz2" +Linux.symbolfiles = "newview/secondlife-symbols-linux.tar.bz2" -- cgit v1.2.3 From 2d8ad89f33e9fa65dea11fd4c78962fc568ee00a Mon Sep 17 00:00:00 2001 From: Oz Linden Date: Mon, 5 Dec 2016 17:32:38 -0500 Subject: suppress VS linker warning about unfound pdb files in media plugin --- indra/media_plugins/cef/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/media_plugins/cef/CMakeLists.txt b/indra/media_plugins/cef/CMakeLists.txt index 5db0a8fbfd..711e870ee4 100644 --- a/indra/media_plugins/cef/CMakeLists.txt +++ b/indra/media_plugins/cef/CMakeLists.txt @@ -97,8 +97,8 @@ if (WINDOWS) set_target_properties( media_plugin_cef PROPERTIES - LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT" - LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD" + LINK_FLAGS "/MANIFEST:NO /SAFESEH:NO /LTCG /NODEFAULTLIB:LIBCMT /IGNORE:4099" + LINK_FLAGS_DEBUG "/MANIFEST:NO /SAFESEH:NO /NODEFAULTLIB:LIBCMTD /IGNORE:4099" ) endif (WINDOWS) -- cgit v1.2.3 From e47b178fb9d40655faa837ca32f72a78753f63fb Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Dec 2016 16:09:26 -0500 Subject: Try even harder to ignore errors in llcorehttp's dummy server. --- indra/llcorehttp/tests/test_llcorehttp_peer.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index 6c5f37d407..a4783c42f2 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -280,10 +280,16 @@ class Server(ThreadingMixIn, HTTPServer): # default behavior which *shouldn't* cause the program to return # a failure status. def handle_error(self, request, client_address): - print '-'*40 - print 'Ignoring exception during processing of request from', - print client_address - print '-'*40 + print >>sys.stderr, '-'*40 + print >>sys.stderr, 'Ignoring exception during processing of request from', client_address + print >>sys.stderr, '-'*40 + + def shutdown_request(self, *args, **kwds): + try: + # just forward to base-class method, but wrap in try/except + HTTPServer.shutdown_request(*args, **kwds) + except Exception as err: + print >>sys.stderr, "Once more ignoring: %s" % err if __name__ == "__main__": do_valgrind = False -- cgit v1.2.3 From 43c9a7d706d3cdf72f861f89e9968342513d55b8 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Dec 2016 16:19:32 -0500 Subject: Fix minor error in forwarding shutdown_request() call. --- indra/llcorehttp/tests/test_llcorehttp_peer.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index a4783c42f2..59acfc39c4 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -287,7 +287,7 @@ class Server(ThreadingMixIn, HTTPServer): def shutdown_request(self, *args, **kwds): try: # just forward to base-class method, but wrap in try/except - HTTPServer.shutdown_request(*args, **kwds) + HTTPServer.shutdown_request(self, *args, **kwds) except Exception as err: print >>sys.stderr, "Once more ignoring: %s" % err -- cgit v1.2.3 From e1b0317c04124b4fc72f14dee1c2125cf970b0e0 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Tue, 6 Dec 2016 19:44:57 -0500 Subject: DRTVWR-418: Remove duplicate testrunner.py --- indra/llcorehttp/tests/test_llcorehttp_peer.py | 22 +- indra/llcorehttp/tests/testrunner.py | 265 ------------------------- indra/llmessage/tests/testrunner.py | 5 +- 3 files changed, 14 insertions(+), 278 deletions(-) delete mode 100755 indra/llcorehttp/tests/testrunner.py diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index 59acfc39c4..caa204b519 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -40,10 +40,14 @@ try: except ImportError: from StringIO import StringIO from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler -from SocketServer import ThreadingMixIn from llbase.fastest_elementtree import parse as xml_parse from llbase import llsd + +# we're in llcorehttp/tests ; testrunner.py is found in llmessage/tests +sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, + "llmessage", "tests")) + from testrunner import freeport, run, debug, VERBOSE class TestHTTPRequestHandler(BaseHTTPRequestHandler): @@ -269,7 +273,7 @@ class TestHTTPRequestHandler(BaseHTTPRequestHandler): # Suppress error output as well pass -class Server(ThreadingMixIn, HTTPServer): +class Server(HTTPServer): # This pernicious flag is on by default in HTTPServer. But proper # operation of freeport() absolutely depends on it being off. allow_reuse_address = False @@ -280,16 +284,10 @@ class Server(ThreadingMixIn, HTTPServer): # default behavior which *shouldn't* cause the program to return # a failure status. def handle_error(self, request, client_address): - print >>sys.stderr, '-'*40 - print >>sys.stderr, 'Ignoring exception during processing of request from', client_address - print >>sys.stderr, '-'*40 - - def shutdown_request(self, *args, **kwds): - try: - # just forward to base-class method, but wrap in try/except - HTTPServer.shutdown_request(self, *args, **kwds) - except Exception as err: - print >>sys.stderr, "Once more ignoring: %s" % err + print '-'*40 + print 'Ignoring exception during processing of request from', + print client_address + print '-'*40 if __name__ == "__main__": do_valgrind = False diff --git a/indra/llcorehttp/tests/testrunner.py b/indra/llcorehttp/tests/testrunner.py deleted file mode 100755 index 9a2de71142..0000000000 --- a/indra/llcorehttp/tests/testrunner.py +++ /dev/null @@ -1,265 +0,0 @@ -#!/usr/bin/env python -"""\ -@file testrunner.py -@author Nat Goodspeed -@date 2009-03-20 -@brief Utilities for writing wrapper scripts for ADD_COMM_BUILD_TEST unit tests - -$LicenseInfo:firstyear=2009&license=viewerlgpl$ -Second Life Viewer Source Code -Copyright (C) 2010, Linden Research, Inc. - -This library is free software; you can redistribute it and/or -modify it under the terms of the GNU Lesser General Public -License as published by the Free Software Foundation; -version 2.1 of the License only. - -This library is distributed in the hope that it will be useful, -but WITHOUT ANY WARRANTY; without even the implied warranty of -MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU -Lesser General Public License for more details. - -You should have received a copy of the GNU Lesser General Public -License along with this library; if not, write to the Free Software -Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - -Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA -$/LicenseInfo$ -""" - -from __future__ import with_statement - -import os -import sys -import re -import errno -import socket - -VERBOSE = os.environ.get("INTEGRATION_TEST_VERBOSE", "0") # default to quiet -# Support usage such as INTEGRATION_TEST_VERBOSE=off -- distressing to user if -# that construct actually turns on verbosity... -VERBOSE = not re.match(r"(0|off|false|quiet)$", VERBOSE, re.IGNORECASE) - -if VERBOSE: - def debug(fmt, *args): - print fmt % args - sys.stdout.flush() -else: - debug = lambda *args: None - -def freeport(portlist, expr): - """ - Find a free server port to use. Specifically, evaluate 'expr' (a - callable(port)) until it stops raising EADDRINUSE exception. - - Pass: - - portlist: an iterable (e.g. xrange()) of ports to try. If you exhaust the - range, freeport() lets the socket.error exception propagate. If you want - unbounded, you could pass itertools.count(baseport), though of course in - practice the ceiling is 2^16-1 anyway. But it seems prudent to constrain - the range much more sharply: if we're iterating an absurd number of times, - probably something else is wrong. - - expr: a callable accepting a port number, specifically one of the items - from portlist. If calling that callable raises socket.error with - EADDRINUSE, freeport() retrieves the next item from portlist and retries. - - Returns: (expr(port), port) - - port: the value from portlist for which expr(port) succeeded - - Raises: - - Any exception raised by expr(port) other than EADDRINUSE. - - socket.error if, for every item from portlist, expr(port) raises - socket.error. The exception you see is the one from the last item in - portlist. - - StopIteration if portlist is completely empty. - - Example: - - class Server(HTTPServer): - # If you use BaseHTTPServer.HTTPServer, turning off this flag is - # essential for proper operation of freeport()! - allow_reuse_address = False - # ... - server, port = freeport(xrange(8000, 8010), - lambda port: Server(("localhost", port), - MyRequestHandler)) - # pass 'port' to client code - # call server.serve_forever() - """ - try: - # If portlist is completely empty, let StopIteration propagate: that's an - # error because we can't return meaningful values. We have no 'port', - # therefore no 'expr(port)'. - portiter = iter(portlist) - port = portiter.next() - - while True: - try: - # If this value of port works, return as promised. - value = expr(port) - - except socket.error, err: - # Anything other than 'Address already in use', propagate - if err.args[0] != errno.EADDRINUSE: - raise - - # Here we want the next port from portiter. But on StopIteration, - # we want to raise the original exception rather than - # StopIteration. So save the original exc_info(). - type, value, tb = sys.exc_info() - try: - try: - port = portiter.next() - except StopIteration: - raise type, value, tb - finally: - # Clean up local traceback, see docs for sys.exc_info() - del tb - - else: - debug("freeport() returning %s on port %s", value, port) - return value, port - - # Recap of the control flow above: - # If expr(port) doesn't raise, return as promised. - # If expr(port) raises anything but EADDRINUSE, propagate that - # exception. - # If portiter.next() raises StopIteration -- that is, if the port - # value we just passed to expr(port) was the last available -- reraise - # the EADDRINUSE exception. - # If we've actually arrived at this point, portiter.next() delivered a - # new port value. Loop back to pass that to expr(port). - - except Exception, err: - debug("*** freeport() raising %s: %s", err.__class__.__name__, err) - raise - -def run(*args, **kwds): - """All positional arguments collectively form a command line, executed as - a synchronous child process. - In addition, pass server=new_thread_instance as an explicit keyword (to - differentiate it from an additional command-line argument). - new_thread_instance should be an instantiated but not yet started Thread - subclass instance, e.g.: - run("python", "-c", 'print "Hello, world!"', server=TestHTTPServer(name="httpd")) - """ - # If there's no server= keyword arg, don't start a server thread: simply - # run a child process. - try: - thread = kwds.pop("server") - except KeyError: - pass - else: - # Start server thread. Note that this and all other comm server - # threads should be daemon threads: we'll let them run "forever," - # confident that the whole process will terminate when the main thread - # terminates, which will be when the child process terminates. - thread.setDaemon(True) - thread.start() - # choice of os.spawnv(): - # - [v vs. l] pass a list of args vs. individual arguments, - # - [no p] don't use the PATH because we specifically want to invoke the - # executable passed as our first arg, - # - [no e] child should inherit this process's environment. - debug("Running %s...", " ".join(args)) - if kwds.get("use_path", False): - rc = os.spawnvp(os.P_WAIT, args[0], args) - else: - rc = os.spawnv(os.P_WAIT, args[0], args) - debug("%s returned %s", args[0], rc) - return rc - -# **************************************************************************** -# test code -- manual at this point, see SWAT-564 -# **************************************************************************** -def test_freeport(): - # ------------------------------- Helpers -------------------------------- - from contextlib import contextmanager - # helper Context Manager for expecting an exception - # with exc(SomeError): - # raise SomeError() - # raises AssertionError otherwise. - @contextmanager - def exc(exception_class, *args): - try: - yield - except exception_class, err: - for i, expected_arg in enumerate(args): - assert expected_arg == err.args[i], \ - "Raised %s, but args[%s] is %r instead of %r" % \ - (err.__class__.__name__, i, err.args[i], expected_arg) - print "Caught expected exception %s(%s)" % \ - (err.__class__.__name__, ', '.join(repr(arg) for arg in err.args)) - else: - assert False, "Failed to raise " + exception_class.__class__.__name__ - - # helper to raise specified exception - def raiser(exception): - raise exception - - # the usual - def assert_equals(a, b): - assert a == b, "%r != %r" % (a, b) - - # ------------------------ Sanity check the above ------------------------ - class SomeError(Exception): pass - # Without extra args, accept any err.args value - with exc(SomeError): - raiser(SomeError("abc")) - # With extra args, accept only the specified value - with exc(SomeError, "abc"): - raiser(SomeError("abc")) - with exc(AssertionError): - with exc(SomeError, "abc"): - raiser(SomeError("def")) - with exc(AssertionError): - with exc(socket.error, errno.EADDRINUSE): - raiser(socket.error(errno.ECONNREFUSED, 'Connection refused')) - - # ----------- freeport() without engaging socket functionality ----------- - # If portlist is empty, freeport() raises StopIteration. - with exc(StopIteration): - freeport([], None) - - assert_equals(freeport([17], str), ("17", 17)) - - # This is the magic exception that should prompt us to retry - inuse = socket.error(errno.EADDRINUSE, 'Address already in use') - # Get the iterator to our ports list so we can check later if we've used all - ports = iter(xrange(5)) - with exc(socket.error, errno.EADDRINUSE): - freeport(ports, lambda port: raiser(inuse)) - # did we entirely exhaust 'ports'? - with exc(StopIteration): - ports.next() - - ports = iter(xrange(2)) - # Any exception but EADDRINUSE should quit immediately - with exc(SomeError): - freeport(ports, lambda port: raiser(SomeError())) - assert_equals(ports.next(), 1) - - # ----------- freeport() with platform-dependent socket stuff ------------ - # This is what we should've had unit tests to begin with (see CHOP-661). - def newbind(port): - sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) - sock.bind(('127.0.0.1', port)) - return sock - - bound0, port0 = freeport(xrange(7777, 7780), newbind) - assert_equals(port0, 7777) - bound1, port1 = freeport(xrange(7777, 7780), newbind) - assert_equals(port1, 7778) - bound2, port2 = freeport(xrange(7777, 7780), newbind) - assert_equals(port2, 7779) - with exc(socket.error, errno.EADDRINUSE): - bound3, port3 = freeport(xrange(7777, 7780), newbind) - -if __name__ == "__main__": - test_freeport() diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py index 5b9beb359b..9a2de71142 100755 --- a/indra/llmessage/tests/testrunner.py +++ b/indra/llmessage/tests/testrunner.py @@ -168,7 +168,10 @@ def run(*args, **kwds): # executable passed as our first arg, # - [no e] child should inherit this process's environment. debug("Running %s...", " ".join(args)) - rc = os.spawnv(os.P_WAIT, args[0], args) + if kwds.get("use_path", False): + rc = os.spawnvp(os.P_WAIT, args[0], args) + else: + rc = os.spawnv(os.P_WAIT, args[0], args) debug("%s returned %s", args[0], rc) return rc -- cgit v1.2.3 From a4ba22fecc8db468377ab14f5652e4176f0488b7 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Dec 2016 09:30:49 -0500 Subject: DRTVWR-418: Revamp testrunner to shutdown server Thread at end. Instead of having testrunner.run()'s caller pass a Thread object on which to run the caller's server instance's serve_forever() method, just pass the server instance. testrunner.run() now constructs the Thread. This API change allows run() to also call shutdown() on the server instance when done, and then join() the Thread. The hope is that this will avoid the Python runtime forcing the process termination code to 1 due to forcibly killing the daemon thread still running serve_forever(). While at it, eliminate calls to testrunner.freeport() -- just make the runtime pick a suitable port instead. --- indra/llcorehttp/tests/test_llcorehttp_peer.py | 17 ++--- indra/llmessage/tests/test_llsdmessage_peer.py | 16 ++--- indra/llmessage/tests/testrunner.py | 90 ++++++++++++++++++-------- indra/newview/tests/test_llxmlrpc_peer.py | 27 ++++---- 4 files changed, 91 insertions(+), 59 deletions(-) diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index caa204b519..b900ad73ff 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -48,7 +48,7 @@ from llbase import llsd sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, os.pardir, "llmessage", "tests")) -from testrunner import freeport, run, debug, VERBOSE +from testrunner import run, debug, VERBOSE class TestHTTPRequestHandler(BaseHTTPRequestHandler): """This subclass of BaseHTTPRequestHandler is to receive and echo @@ -297,22 +297,17 @@ if __name__ == "__main__": if option == "-V" or option == "--valgrind": do_valgrind = True - # Instantiate a Server(TestHTTPRequestHandler) on the first free port - # in the specified port range. Doing this inline is better than in a - # daemon thread: if it blows up here, we'll get a traceback. If it blew up - # in some other thread, the traceback would get eaten and we'd run the - # subject test program anyway. - httpd, port = freeport(xrange(8000, 8020), - lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler)) + # Instantiate a Server(TestHTTPRequestHandler) on a port chosen by the + # runtime. + httpd = Server(('127.0.0.1', 0), TestHTTPRequestHandler) # Pass the selected port number to the subject test program via the # environment. We don't want to impose requirements on the test program's # command-line parsing -- and anyway, for C++ integration tests, that's # performed in TUT code rather than our own. - os.environ["LL_TEST_PORT"] = str(port) + os.environ["LL_TEST_PORT"] = str(httpd.server_port) debug("$LL_TEST_PORT = %s", port) if do_valgrind: args = ["valgrind", "--log-file=./valgrind.log"] + args path_search = True - sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), use_path=path_search, *args)) - + sys.exit(run(server_inst=httpd, use_path=path_search, *args)) diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index bac18fa374..a0d5d1b354 100755 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -36,7 +36,7 @@ from BaseHTTPServer import HTTPServer, BaseHTTPRequestHandler from llbase.fastest_elementtree import parse as xml_parse from llbase import llsd -from testrunner import freeport, run, debug, VERBOSE +from testrunner import run, debug, VERBOSE import time _storage=None @@ -155,17 +155,13 @@ class Server(HTTPServer): allow_reuse_address = False if __name__ == "__main__": - # Instantiate a Server(TestHTTPRequestHandler) on the first free port - # in the specified port range. Doing this inline is better than in a - # daemon thread: if it blows up here, we'll get a traceback. If it blew up - # in some other thread, the traceback would get eaten and we'd run the - # subject test program anyway. - httpd, port = freeport(xrange(8000, 8020), - lambda port: Server(('127.0.0.1', port), TestHTTPRequestHandler)) + # Instantiate a Server(TestHTTPRequestHandler) on a port chosen by the + # runtime. + httpd = Server(('127.0.0.1', 0), TestHTTPRequestHandler) # Pass the selected port number to the subject test program via the # environment. We don't want to impose requirements on the test program's # command-line parsing -- and anyway, for C++ integration tests, that's # performed in TUT code rather than our own. - os.environ["PORT"] = str(port) + os.environ["PORT"] = str(httpd.server_port) debug("$PORT = %s", port) - sys.exit(run(server=Thread(name="httpd", target=httpd.serve_forever), *sys.argv[1:])) + sys.exit(run(server_inst=httpd, *sys.argv[1:])) diff --git a/indra/llmessage/tests/testrunner.py b/indra/llmessage/tests/testrunner.py index 9a2de71142..09f0f3c681 100755 --- a/indra/llmessage/tests/testrunner.py +++ b/indra/llmessage/tests/testrunner.py @@ -27,13 +27,12 @@ Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA $/LicenseInfo$ """ -from __future__ import with_statement - import os import sys import re import errno import socket +from threading import Thread VERBOSE = os.environ.get("INTEGRATION_TEST_VERBOSE", "0") # default to quiet # Support usage such as INTEGRATION_TEST_VERBOSE=off -- distressing to user if @@ -47,6 +46,9 @@ if VERBOSE: else: debug = lambda *args: None +class Error(Exception): + pass + def freeport(portlist, expr): """ Find a free server port to use. Specifically, evaluate 'expr' (a @@ -141,39 +143,73 @@ def freeport(portlist, expr): raise def run(*args, **kwds): - """All positional arguments collectively form a command line, executed as - a synchronous child process. - In addition, pass server=new_thread_instance as an explicit keyword (to - differentiate it from an additional command-line argument). - new_thread_instance should be an instantiated but not yet started Thread - subclass instance, e.g.: - run("python", "-c", 'print "Hello, world!"', server=TestHTTPServer(name="httpd")) """ - # If there's no server= keyword arg, don't start a server thread: simply - # run a child process. + Run a specified command as a synchronous child process, optionally + launching a server Thread during the run. + + All positional arguments collectively form a command line. The first + positional argument names the program file to execute. + + Returns the termination code of the child process. + + In addition, you may pass keyword-only arguments: + + use_path=True: allow a simple filename as command and search PATH for that + filename. Otherwise the command must be a full pathname. + + server_inst: an instance of a subclass of SocketServer.BaseServer. + + When you pass server_inst, its serve_forever() method is called on a + separate Thread before the child process is run. It is shutdown() when the + child process terminates. + """ + # server= keyword arg is discontinued try: thread = kwds.pop("server") except KeyError: pass else: - # Start server thread. Note that this and all other comm server - # threads should be daemon threads: we'll let them run "forever," - # confident that the whole process will terminate when the main thread - # terminates, which will be when the child process terminates. + raise Error("Obsolete call to testrunner.run(): pass server_inst=, not server=") + + try: + server_inst = kwds.pop("server_inst") + except KeyError: + # We're not starting a thread, so shutdown() is a no-op. + shutdown = lambda: None + else: + # Make a Thread on which to call server_inst.serve_forever(). + thread = Thread(name="server", target=server_inst.serve_forever) + + # Make this a "daemon" thread. thread.setDaemon(True) thread.start() - # choice of os.spawnv(): - # - [v vs. l] pass a list of args vs. individual arguments, - # - [no p] don't use the PATH because we specifically want to invoke the - # executable passed as our first arg, - # - [no e] child should inherit this process's environment. - debug("Running %s...", " ".join(args)) - if kwds.get("use_path", False): - rc = os.spawnvp(os.P_WAIT, args[0], args) - else: - rc = os.spawnv(os.P_WAIT, args[0], args) - debug("%s returned %s", args[0], rc) - return rc + + # We used to simply call sys.exit() with the daemon thread still + # running -- but in recent versions of Python 2, even when you call + # sys.exit(0), apparently killing the thread causes the Python runtime + # to force the process termination code to 1. So try to play nice. + def shutdown(): + # evidently this call blocks until shutdown is complete + server_inst.shutdown() + # which should make it straightforward to join() + thread.join() + + try: + # choice of os.spawnv(): + # - [v vs. l] pass a list of args vs. individual arguments, + # - [no p] don't use the PATH because we specifically want to invoke the + # executable passed as our first arg, + # - [no e] child should inherit this process's environment. + debug("Running %s...", " ".join(args)) + if kwds.get("use_path", False): + rc = os.spawnvp(os.P_WAIT, args[0], args) + else: + rc = os.spawnv(os.P_WAIT, args[0], args) + debug("%s returned %s", args[0], rc) + return rc + + finally: + shutdown() # **************************************************************************** # test code -- manual at this point, see SWAT-564 diff --git a/indra/newview/tests/test_llxmlrpc_peer.py b/indra/newview/tests/test_llxmlrpc_peer.py index 281b72a058..12394ad1d9 100755 --- a/indra/newview/tests/test_llxmlrpc_peer.py +++ b/indra/newview/tests/test_llxmlrpc_peer.py @@ -35,11 +35,20 @@ from threading import Thread from SimpleXMLRPCServer import SimpleXMLRPCServer mydir = os.path.dirname(__file__) # expected to be .../indra/newview/tests/ -sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "lib", "python")) -sys.path.insert(1, os.path.join(mydir, os.pardir, os.pardir, "llmessage", "tests")) -from testrunner import freeport, run, debug +sys.path.insert(0, os.path.join(mydir, os.pardir, os.pardir, "llmessage", "tests")) +from testrunner import run, debug class TestServer(SimpleXMLRPCServer): + # This server_bind() override is borrowed and simplified from + # BaseHTTPServer.HTTPServer.server_bind(): we want to capture the actual + # server port. BaseHTTPServer.HTTPServer.server_bind() stores the actual + # port in a server_port attribute, but SimpleXMLRPCServer isn't derived + # from HTTPServer. So do it ourselves. + def server_bind(self): + """Override server_bind to store the server port.""" + SimpleXMLRPCServer.server_bind(self) + self.server_port = self.socket.getsockname()[1] + def _dispatch(self, method, params): try: func = getattr(self, method) @@ -67,15 +76,11 @@ class TestServer(SimpleXMLRPCServer): pass if __name__ == "__main__": - # Instantiate a TestServer on the first free port in the specified port - # range. Doing this inline is better than in a daemon thread: if it blows - # up here, we'll get a traceback. If it blew up in some other thread, the - # traceback would get eaten and we'd run the subject test program anyway. - xmlrpcd, port = freeport(xrange(8000, 8020), - lambda port: TestServer(('127.0.0.1', port))) + # Make the runtime choose an available port. + xmlrpcd = TestServer(('127.0.0.1', 0)) # Pass the selected port number to the subject test program via the # environment. We don't want to impose requirements on the test program's # command-line parsing -- and anyway, for C++ integration tests, that's # performed in TUT code rather than our own. - os.environ["PORT"] = str(port) - sys.exit(run(server=Thread(name="xmlrpc", target=xmlrpcd.serve_forever), *sys.argv[1:])) + os.environ["PORT"] = str(xmlrpcd.server_port) + sys.exit(run(server_inst=xmlrpcd, *sys.argv[1:])) -- cgit v1.2.3 From e1482838fe08ab4d0c4aafd22d50f98d0fdee6c1 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Dec 2016 09:44:55 -0500 Subject: DRTVWR-418: Fix a couple variable references in debugging output. --- indra/llcorehttp/tests/test_llcorehttp_peer.py | 2 +- indra/llmessage/tests/test_llsdmessage_peer.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/indra/llcorehttp/tests/test_llcorehttp_peer.py b/indra/llcorehttp/tests/test_llcorehttp_peer.py index b900ad73ff..6c223990ca 100755 --- a/indra/llcorehttp/tests/test_llcorehttp_peer.py +++ b/indra/llcorehttp/tests/test_llcorehttp_peer.py @@ -306,7 +306,7 @@ if __name__ == "__main__": # command-line parsing -- and anyway, for C++ integration tests, that's # performed in TUT code rather than our own. os.environ["LL_TEST_PORT"] = str(httpd.server_port) - debug("$LL_TEST_PORT = %s", port) + debug("$LL_TEST_PORT = %s", httpd.server_port) if do_valgrind: args = ["valgrind", "--log-file=./valgrind.log"] + args path_search = True diff --git a/indra/llmessage/tests/test_llsdmessage_peer.py b/indra/llmessage/tests/test_llsdmessage_peer.py index a0d5d1b354..8e1204fb20 100755 --- a/indra/llmessage/tests/test_llsdmessage_peer.py +++ b/indra/llmessage/tests/test_llsdmessage_peer.py @@ -163,5 +163,5 @@ if __name__ == "__main__": # command-line parsing -- and anyway, for C++ integration tests, that's # performed in TUT code rather than our own. os.environ["PORT"] = str(httpd.server_port) - debug("$PORT = %s", port) + debug("$PORT = %s", httpd.server_port) sys.exit(run(server_inst=httpd, *sys.argv[1:])) -- cgit v1.2.3 From 0532e298a0550c70ca7d94992922d5c040e21702 Mon Sep 17 00:00:00 2001 From: Nat Goodspeed Date: Wed, 7 Dec 2016 10:05:24 -0500 Subject: DRTVWR-418: Reinstate test that we THOUGHT was killing test run. But since the real problem is quite different, try with that suspected test restored. --- indra/llcorehttp/tests/test_httprequest.hpp | 4 ---- 1 file changed, 4 deletions(-) diff --git a/indra/llcorehttp/tests/test_httprequest.hpp b/indra/llcorehttp/tests/test_httprequest.hpp index 0aad3d1835..463e55dd7e 100644 --- a/indra/llcorehttp/tests/test_httprequest.hpp +++ b/indra/llcorehttp/tests/test_httprequest.hpp @@ -1455,10 +1455,6 @@ void HttpRequestTestObjectType::test<14>() set_test_name("HttpRequest GET timeout"); -#if LL_WINDOWS - skip("This test causes our dummy server test_llcorehttp_peer.py to fail"); -#endif - // Handler can be stack-allocated *if* there are no dangling // references to it after completion of this method. // Create before memory record as the string copy will bump numbers. -- cgit v1.2.3