This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMake".

The branch, next has been updated
       via  26f56f51fbc7f9d7b8a6071ce1f30cf91d9bf916 (commit)
       via  9c3a0b9f140f8503bb177c97aadab26fbdded197 (commit)
      from  08a5024306cf00c4aa06bab6995f89d18b2154d9 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=26f56f51fbc7f9d7b8a6071ce1f30cf91d9bf916
commit 26f56f51fbc7f9d7b8a6071ce1f30cf91d9bf916
Merge: 08a5024 9c3a0b9
Author:     Zach Mullen <zach.mul...@kitware.com>
AuthorDate: Thu May 26 14:50:22 2011 -0400
Commit:     Zach Mullen <zach.mul...@kitware.com>
CommitDate: Thu May 26 14:50:22 2011 -0400

    Merge branch 'dont-compress-memcheck-output' into next
    
    * dont-compress-memcheck-output:
      We will actually compress memcheck output if the server supports it.


http://cmake.org/gitweb?p=cmake.git;a=commitdiff;h=9c3a0b9f140f8503bb177c97aadab26fbdded197
commit 9c3a0b9f140f8503bb177c97aadab26fbdded197
Author:     Zach Mullen <zach.mul...@kitware.com>
AuthorDate: Thu May 26 14:42:41 2011 -0400
Commit:     Zach Mullen <zach.mul...@kitware.com>
CommitDate: Thu May 26 14:50:07 2011 -0400

    We will actually compress memcheck output if the server supports it.
    
    This change won't be functional until the next release of CDash due to the
    version comparison.

diff --git a/Source/CTest/cmCTestMemCheckHandler.cxx 
b/Source/CTest/cmCTestMemCheckHandler.cxx
index 13a25cb..0612449 100644
--- a/Source/CTest/cmCTestMemCheckHandler.cxx
+++ b/Source/CTest/cmCTestMemCheckHandler.cxx
@@ -344,9 +344,21 @@ void 
cmCTestMemCheckHandler::GenerateDartOutput(std::ostream& os)
         }
       this->MemoryTesterGlobalResults[kk] += memcheckresults[kk];
       }
+
+    std::string logTag;
+    if(this->CTest->ShouldCompressMemCheckOutput())
+      {
+      this->CTest->CompressString(memcheckstr);
+      logTag = "\t<Log compression=\"gzip\" encoding=\"base64\">\n";
+      }
+    else
+      {
+      logTag = "\t<Log>\n";
+      }
+
     os
       << "\t\t</Results>\n"
-      << "\t<Log>\n" << memcheckstr << std::endl
+      << logTag << memcheckstr << std::endl
       << "\t</Log>\n";
     this->WriteTestResultFooter(os, result);
     if ( current < cc )
diff --git a/Source/CTest/cmCTestRunTest.cxx b/Source/CTest/cmCTestRunTest.cxx
index e9cefae..b5b46f6 100644
--- a/Source/CTest/cmCTestRunTest.cxx
+++ b/Source/CTest/cmCTestRunTest.cxx
@@ -135,7 +135,10 @@ void cmCTestRunTest::CompressOutput()
 //---------------------------------------------------------
 bool cmCTestRunTest::EndTest(size_t completed, size_t total, bool started)
 {
-  if (!this->TestHandler->MemCheck && this->CTest->ShouldCompressTestOutput())
+  if ((!this->TestHandler->MemCheck &&
+      this->CTest->ShouldCompressTestOutput()) ||
+      (this->TestHandler->MemCheck &&
+      this->CTest->ShouldCompressMemCheckOutput()))
     {
     this->CompressOutput();
     }
@@ -279,11 +282,11 @@ bool cmCTestRunTest::EndTest(size_t completed, size_t 
total, bool started)
   // Output since that is what is parsed by cmCTestMemCheckHandler
   if(!this->TestHandler->MemCheck && started)
     {
-      this->TestHandler->CleanTestOutput(this->ProcessOutput, 
-          static_cast<size_t>
-          (this->TestResult.Status == cmCTestTestHandler::COMPLETED ? 
-          this->TestHandler->CustomMaximumPassedTestOutputSize :
-          this->TestHandler->CustomMaximumFailedTestOutputSize));
+    this->TestHandler->CleanTestOutput(this->ProcessOutput,
+      static_cast<size_t>
+      (this->TestResult.Status == cmCTestTestHandler::COMPLETED ?
+      this->TestHandler->CustomMaximumPassedTestOutputSize :
+      this->TestHandler->CustomMaximumFailedTestOutputSize));
     }
   this->TestResult.Reason = reason;
   if (this->TestHandler->LogFile)
diff --git a/Source/cmCTest.cxx b/Source/cmCTest.cxx
index 70b1c01..60f01aa 100644
--- a/Source/cmCTest.cxx
+++ b/Source/cmCTest.cxx
@@ -50,6 +50,9 @@
 
 #include <memory> // auto_ptr
 
+#include <cm_zlib.h>
+#include <cmsys/Base64.h>
+
 #if defined(__BEOS__) && !defined(__HAIKU__)
 #include <be/kernel/OS.h>   /* disable_debugger() API. */
 #endif
@@ -308,7 +311,7 @@ cmCTest::cmCTest()
   this->UseHTTP10              = false;
   this->PrintLabels            = false;
   this->CompressTestOutput     = true;
-  this->ComputedCompressOutput = false;
+  this->CompressMemCheckOutput = true;
   this->TestModel              = cmCTest::EXPERIMENTAL;
   this->MaxTestNameWidth       = 30;
   this->InteractiveDebugMode   = true;
@@ -325,6 +328,8 @@ cmCTest::cmCTest()
   this->SuppressUpdatingCTestConfiguration = false;
   this->DartVersion            = 1;
   this->OutputTestOutputOnTestFailure = false;
+  this->ComputedCompressTestOutput = false;
+  this->ComputedCompressMemCheckOutput = false;
   if(cmSystemTools::GetEnv("CTEST_OUTPUT_ON_FAILURE"))
     {
     this->OutputTestOutputOnTestFailure = true;
@@ -394,7 +399,7 @@ void cmCTest::SetParallelLevel(int level)
 //----------------------------------------------------------------------------
 bool cmCTest::ShouldCompressTestOutput()
 {
-  if(!this->ComputedCompressOutput)
+  if(!this->ComputedCompressTestOutput)
     {
     std::string cdashVersion = this->GetCDashVersion();
     //version >= 1.6?
@@ -403,12 +408,27 @@ bool cmCTest::ShouldCompressTestOutput()
       cmSystemTools::VersionCompare(cmSystemTools::OP_EQUAL,
       cdashVersion.c_str(), "1.6");
     this->CompressTestOutput &= cdashSupportsGzip;
-    this->ComputedCompressOutput = true;
+    this->ComputedCompressTestOutput = true;
     }
   return this->CompressTestOutput;
 }
 
 //----------------------------------------------------------------------------
+bool cmCTest::ShouldCompressMemCheckOutput()
+{
+  if(!this->ComputedCompressMemCheckOutput)
+    {
+    std::string cdashVersion = this->GetCDashVersion();
+
+    bool compressionSupported = cmSystemTools::VersionCompare(
+      cmSystemTools::OP_GREATER, cdashVersion.c_str(), "1.9.0");
+    this->CompressMemCheckOutput &= compressionSupported;
+    this->ComputedCompressMemCheckOutput = true;
+    }
+  return this->CompressMemCheckOutput;
+}
+
+//----------------------------------------------------------------------------
 std::string cmCTest::GetCDashVersion()
 {
 #ifdef CMAKE_BUILD_WITH_CMAKE
@@ -1926,6 +1946,7 @@ void cmCTest::HandleCommandLineArguments(size_t &i,
   if(this->CheckArgument(arg, "--no-compress-output"))
     {
     this->CompressTestOutput = false;
+    this->CompressMemCheckOutput = false;
     }
 
   if(this->CheckArgument(arg, "--print-labels"))
@@ -3055,3 +3076,56 @@ void cmCTest::OutputTestErrors(std::vector<char> const 
&process_output)
     }
   cmCTestLog(this, HANDLER_OUTPUT, test_outputs << std::endl << std::flush);
 }
+
+//----------------------------------------------------------------------
+bool cmCTest::CompressString(std::string& str)
+{
+  int ret;
+  z_stream strm;
+
+  unsigned char* in = reinterpret_cast<unsigned char*>(
+    const_cast<char*>(str.c_str()));
+  //zlib makes the guarantee that this is the maximum output size
+  int outSize = static_cast<int>(
+    static_cast<double>(str.size()) * 1.001 + 13.0);
+  unsigned char* out = new unsigned char[outSize];
+
+  strm.zalloc = Z_NULL;
+  strm.zfree = Z_NULL;
+  strm.opaque = Z_NULL;
+  ret = deflateInit(&strm, -1); //default compression level
+  if (ret != Z_OK)
+    {
+    return false;
+    }
+
+  strm.avail_in = str.size();
+  strm.next_in = in;
+  strm.avail_out = outSize;
+  strm.next_out = out;
+  ret = deflate(&strm, Z_FINISH);
+
+  if(ret == Z_STREAM_ERROR || ret != Z_STREAM_END)
+    {
+    cmCTestLog(this, ERROR_MESSAGE, "Error during gzip compression."
+      << std::endl);
+    return false;
+    }
+
+  (void)deflateEnd(&strm);
+
+  // Now base64 encode the resulting binary string
+  unsigned char* base64EncodedBuffer
+    = new unsigned char[static_cast<int>(outSize * 1.5)];
+
+  unsigned long rlen
+    = cmsysBase64_Encode(out, strm.total_out, base64EncodedBuffer, 1);
+
+  str = "";
+  str.append(reinterpret_cast<char*>(base64EncodedBuffer), rlen);
+
+  delete [] base64EncodedBuffer;
+  delete [] out;
+
+  return true;
+}
diff --git a/Source/cmCTest.h b/Source/cmCTest.h
index 3b02748..44a5349 100644
--- a/Source/cmCTest.h
+++ b/Source/cmCTest.h
@@ -219,6 +219,8 @@ public:
   bool ShouldPrintLabels() { return this->PrintLabels; }
 
   bool ShouldCompressTestOutput();
+  bool ShouldCompressMemCheckOutput();
+  bool CompressString(std::string& str);
 
   std::string GetCDashVersion();
 
@@ -430,7 +432,8 @@ private:
   bool RunConfigurationScript;
 
   //flag for lazy getter (optimization)
-  bool ComputedCompressOutput;
+  bool ComputedCompressTestOutput;
+  bool ComputedCompressMemCheckOutput;
 
   int GenerateNotesFile(const char* files);
 
@@ -487,8 +490,8 @@ private:
   bool                     ShortDateFormat;
 
   bool                     CompressXMLFiles;
-
   bool                     CompressTestOutput;
+  bool                     CompressMemCheckOutput;
 
   void InitStreams();
   std::ostream* StreamOut;
diff --git a/Source/cmSystemTools.cxx b/Source/cmSystemTools.cxx
index 7bc89a4..db1ddce 100644
--- a/Source/cmSystemTools.cxx
+++ b/Source/cmSystemTools.cxx
@@ -2603,7 +2603,7 @@ bool 
cmSystemTools::VersionCompare(cmSystemTools::CompareOp op,
     else if(lhs[i] > rhs[i])
       {
       // lhs > rhs, so true if operation is GREATER
-        return op == cmSystemTools::OP_GREATER;
+      return op == cmSystemTools::OP_GREATER;
       }
     }
   // lhs == rhs, so true if operation is EQUAL

-----------------------------------------------------------------------

Summary of changes:
 Source/CTest/cmCTestMemCheckHandler.cxx |   14 +++++-
 Source/CTest/cmCTestRunTest.cxx         |   15 ++++--
 Source/cmCTest.cxx                      |   80 +++++++++++++++++++++++++++++-
 Source/cmCTest.h                        |    7 ++-
 Source/cmSystemTools.cxx                |    2 +-
 5 files changed, 105 insertions(+), 13 deletions(-)


hooks/post-receive
-- 
CMake
_______________________________________________
Cmake-commits mailing list
Cmake-commits@cmake.org
http://public.kitware.com/cgi-bin/mailman/listinfo/cmake-commits

Reply via email to