Author: cfinck Date: Sat Feb 21 20:02:39 2009 New Revision: 39698
URL: http://svn.reactos.org/svn/reactos?rev=39698&view=rev Log: Add a /c option to supply a comment for the web service submission. This can be useful for giving more information about the used build for the test.
The necessary changes in testman will follow later :-P
Modified: trunk/rostests/rosautotest/main.c trunk/rostests/rosautotest/precomp.h trunk/rostests/rosautotest/webservice.c
Modified: trunk/rostests/rosautotest/main.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/main.c?rev=396... ============================================================================== --- trunk/rostests/rosautotest/main.c [iso-8859-1] (original) +++ trunk/rostests/rosautotest/main.c [iso-8859-1] Sat Feb 21 20:02:39 2009 @@ -73,57 +73,58 @@ PCHAR UserName = NULL; WCHAR ConfigFile[MAX_PATH];
- /* We only need this if the results are going to be submitted */ - if(!AppOptions.Submit) - { - ReturnValue = TRUE; - goto Cleanup; - } - - /* Build the path to the configuration file from the application's path */ - GetModuleFileNameW(NULL, ConfigFile, MAX_PATH); - Length = wcsrchr(ConfigFile, '\') - ConfigFile; - wcscpy(&ConfigFile[Length], L"\rosautotest.ini"); - - /* Check if it exists */ - if(GetFileAttributesW(ConfigFile) == INVALID_FILE_ATTRIBUTES) - { - StringOut("Missing "rosautotest.ini" configuration file!\n"); - goto Cleanup; - } - - /* Get the required length of the authentication request string */ - DataLength = sizeof(UserNameProp) - 1; - Length = IntGetINIValueA(L"Login", L"UserName", ConfigFile, &UserName); - - if(!Length) - { - StringOut("UserName is missing in the configuration file\n"); - goto Cleanup; - } - - /* Some characters might need to be escaped and an escaped character takes 3 bytes */ - DataLength += 3 * Length; - - DataLength += sizeof(PasswordProp) - 1; - Length = IntGetINIValueA(L"Login", L"Password", ConfigFile, &Password); - - if(!Length) - { - StringOut("Password is missing in the configuration file\n"); - goto Cleanup; - } - - DataLength += 3 * Length; - - /* Build the string */ - AuthenticationRequestString = HeapAlloc(hProcessHeap, 0, DataLength + 1); - - strcpy(AuthenticationRequestString, UserNameProp); - EscapeString(&AuthenticationRequestString[strlen(AuthenticationRequestString)], UserName); - - strcat(AuthenticationRequestString, PasswordProp); - EscapeString(&AuthenticationRequestString[strlen(AuthenticationRequestString)], Password); + /* Most values are only needed if we're going to submit */ + if(AppOptions.Submit) + { + /* Build the path to the configuration file from the application's path */ + GetModuleFileNameW(NULL, ConfigFile, MAX_PATH); + Length = wcsrchr(ConfigFile, '\') - ConfigFile; + wcscpy(&ConfigFile[Length], L"\rosautotest.ini"); + + /* Check if it exists */ + if(GetFileAttributesW(ConfigFile) == INVALID_FILE_ATTRIBUTES) + { + StringOut("Missing "rosautotest.ini" configuration file!\n"); + goto Cleanup; + } + + /* Get the required length of the authentication request string */ + DataLength = sizeof(UserNameProp) - 1; + Length = IntGetINIValueA(L"Login", L"UserName", ConfigFile, &UserName); + + if(!Length) + { + StringOut("UserName is missing in the configuration file\n"); + goto Cleanup; + } + + /* Some characters might need to be escaped and an escaped character takes 3 bytes */ + DataLength += 3 * Length; + + DataLength += sizeof(PasswordProp) - 1; + Length = IntGetINIValueA(L"Login", L"Password", ConfigFile, &Password); + + if(!Length) + { + StringOut("Password is missing in the configuration file\n"); + goto Cleanup; + } + + DataLength += 3 * Length; + + /* Build the string */ + AuthenticationRequestString = HeapAlloc(hProcessHeap, 0, DataLength + 1); + + strcpy(AuthenticationRequestString, UserNameProp); + EscapeString(&AuthenticationRequestString[strlen(AuthenticationRequestString)], UserName); + + strcat(AuthenticationRequestString, PasswordProp); + EscapeString(&AuthenticationRequestString[strlen(AuthenticationRequestString)], Password); + + /* If we don't have any Comment string yet, try to find one in the INI file */ + if(!AppOptions.Comment) + IntGetINIValueA(L"Submission", L"Comment", ConfigFile, &AppOptions.Comment); + }
ReturnValue = TRUE;
@@ -235,10 +236,13 @@ printf("rosautotest - ReactOS Automatic Testing Utility\n"); printf("Usage: rosautotest [options] [module] [test]\n"); printf(" options:\n"); - printf(" /? - Shows this help\n"); - printf(" /s - Shut down the system after finishing the tests\n"); - printf(" /w - Submit the results to the webservice\n"); - printf(" Requires a "rosautotest.ini" with valid login data.\n"); + printf(" /? - Shows this help\n"); + printf(" /c <comment> - Specifies the comment to be submitted to the Web Service.\n"); + printf(" Skips the comment set in the configuration file (if any).\n"); + printf(" Only has an effect when /w is also used.\n"); + printf(" /s - Shut down the system after finishing the tests\n"); + printf(" /w - Submit the results to the webservice\n"); + printf(" Requires a "rosautotest.ini" with valid login data.\n"); printf("\n"); printf(" module:\n"); printf(" The module to be tested (i.e. "advapi32")\n"); @@ -256,6 +260,7 @@ wmain(int argc, wchar_t* argv[]) { int ReturnValue = 0; + size_t Length; UINT i;
hProcessHeap = GetProcessHeap(); @@ -267,6 +272,16 @@ { switch(argv[i][1]) { + case 'c': + ++i; + + /* Copy the parameter converted to ASCII */ + Length = WideCharToMultiByte(CP_ACP, 0, argv[i], -1, NULL, 0, NULL, NULL); + AppOptions.Comment = HeapAlloc(hProcessHeap, 0, Length); + WideCharToMultiByte(CP_ACP, 0, argv[i], -1, AppOptions.Comment, Length, NULL, NULL); + + break; + case 's': AppOptions.Shutdown = TRUE; break; @@ -286,8 +301,6 @@ } else { - size_t Length; - /* Which parameter is this? */ if(!AppOptions.Module) { @@ -322,6 +335,9 @@ OutputDebugStringA("SYSREG_CHECKPOINT:THIRDBOOT_COMPLETE\n");
Cleanup: + if(AppOptions.Comment) + HeapFree(hProcessHeap, 0, AppOptions.Comment); + if(AppOptions.Module) HeapFree(hProcessHeap, 0, AppOptions.Module);
Modified: trunk/rostests/rosautotest/precomp.h URL: http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/precomp.h?rev=... ============================================================================== --- trunk/rostests/rosautotest/precomp.h [iso-8859-1] (original) +++ trunk/rostests/rosautotest/precomp.h [iso-8859-1] Sat Feb 21 20:02:39 2009 @@ -26,6 +26,7 @@ { BOOL Shutdown; BOOL Submit; + PCHAR Comment; PWSTR Module; PCHAR Test; }
Modified: trunk/rostests/rosautotest/webservice.c URL: http://svn.reactos.org/svn/reactos/trunk/rostests/rosautotest/webservice.c?r... ============================================================================== --- trunk/rostests/rosautotest/webservice.c [iso-8859-1] (original) +++ trunk/rostests/rosautotest/webservice.c [iso-8859-1] Sat Feb 21 20:02:39 2009 @@ -142,6 +142,7 @@ GetTestID(TESTTYPES TestType) { const CHAR GetTestIDAction[] = "gettestid"; + const CHAR CommentProp[] = "&comment=";
DWORD DataLength; PCHAR Data; @@ -150,6 +151,10 @@ /* Build the full request string */ DataLength = sizeof(ActionProp) - 1 + sizeof(GetTestIDAction) - 1; DataLength += strlen(AuthenticationRequestString) + strlen(SystemInfoRequestString); + + if(AppOptions.Comment) + DataLength += sizeof(CommentProp) - 1 + strlen(AppOptions.Comment); + DataLength += sizeof(TestTypeProp) - 1;
switch(TestType) @@ -164,6 +169,13 @@ strcat(Data, GetTestIDAction); strcat(Data, AuthenticationRequestString); strcat(Data, SystemInfoRequestString); + + if(AppOptions.Comment) + { + strcat(Data, CommentProp); + strcat(Data, AppOptions.Comment); + } + strcat(Data, TestTypeProp);
switch(TestType)