From 65b4da13f40843cdcb699c8404b3e07eea7f1a48 Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Sun, 1 Mar 2015 11:19:30 +0000 Subject: [PATCH] [ROSAUTOTEST] - Finish a test run in the database when all tests have successfully been run. This got lost during the C++ rewrite of rosautotest in r40147. - Don't spam the logs with useless OK messages. Only report the web service response if an error occurred. svn path=/trunk/; revision=66516 --- rostests/rosautotest/CWebService.cpp | 42 ++++++++++++++++++++++++---- rostests/rosautotest/CWebService.h | 3 +- rostests/rosautotest/CWineTest.cpp | 4 +++ 3 files changed, 43 insertions(+), 6 deletions(-) diff --git a/rostests/rosautotest/CWebService.cpp b/rostests/rosautotest/CWebService.cpp index 89fd58d668d..505e3cb5d78 100644 --- a/rostests/rosautotest/CWebService.cpp +++ b/rostests/rosautotest/CWebService.cpp @@ -94,6 +94,38 @@ CWebService::DoRequest(const string& InputData) return Data.release(); } +/** +* Interface to other classes for finishing this test run +* +* @param TestType +* Constant pointer to a char array containing the test type to be run (i.e. "wine") +*/ +void +CWebService::Finish(const char* TestType) +{ + auto_array_ptr Response; + string Data; + stringstream ss; + + if (!m_TestID) + EXCEPTION("CWebService::Finish was called, but not a single result had been submitted!"); + + Data = "action=finish"; + Data += Configuration.GetAuthenticationRequestString(); + Data += "&testtype="; + Data += TestType; + Data += "&testid="; + Data += m_TestID; + + Response.reset(DoRequest(Data)); + + if (strcmp(Response, "OK")) + { + ss << "When finishing the test run, the server responded:" << endl << Response << endl; + SSEXCEPTION; + } +} + /** * Requests a Test ID from the Web Service for our test run. * @@ -206,9 +238,9 @@ CWebService::Submit(const char* TestType, CTestInfo* TestInfo) Response.reset(DoRequest(Data)); - ss << "The server responded:" << endl << Response << endl; - StringOut(ss.str()); - - if(strcmp(Response, "OK")) - EXCEPTION("Aborted!\n"); + if (strcmp(Response, "OK")) + { + ss << "When submitting the result, the server responded:" << endl << Response << endl; + SSEXCEPTION; + } } diff --git a/rostests/rosautotest/CWebService.h b/rostests/rosautotest/CWebService.h index 07dbf897707..2f4e2075e9a 100644 --- a/rostests/rosautotest/CWebService.h +++ b/rostests/rosautotest/CWebService.h @@ -2,7 +2,7 @@ * PROJECT: ReactOS Automatic Testing Utility * LICENSE: GNU GPLv2 or any later version as published by the Free Software Foundation * PURPOSE: Class implementing the interface to the "testman" Web Service - * COPYRIGHT: Copyright 2009 Colin Finck + * COPYRIGHT: Copyright 2009-2015 Colin Finck */ class CWebService @@ -21,5 +21,6 @@ public: CWebService(); ~CWebService(); + void Finish(const char* TestType); void Submit(const char* TestType, CTestInfo* TestInfo); }; diff --git a/rostests/rosautotest/CWineTest.cpp b/rostests/rosautotest/CWineTest.cpp index 0432ae23de1..5410d867f6f 100644 --- a/rostests/rosautotest/CWineTest.cpp +++ b/rostests/rosautotest/CWineTest.cpp @@ -372,6 +372,10 @@ CWineTest::Run() StringOut("\n\n"); } + /* We're done with all tests. Finish this run */ + if(Configuration.DoSubmit()) + WebService->Finish("wine"); + /* Restore the original error mode */ if(!Configuration.IsInteractive()) SetErrorMode(ErrorMode);