comparison dstress.c @ 999:69f95c134121

added conditional result capabilities
author thomask
date Wed, 17 May 2006 04:57:35 +0000
parents 94714c219f3b
children ab5680607b8d
comparison
equal deleted inserted replaced
998:94714c219f3b 999:69f95c134121
686 return 1; 686 return 1;
687 } 687 }
688 return 0; 688 return 0;
689 } 689 }
690 690
691 int conditionalResult(const char* buffer){
692 if(strstr(buffer, "DSTRESS{XFAIL}")){
693 return RES_XFAIL;
694 }else if(strstr(buffer, "DSTRESS{XPASS}")){
695 return RES_XPASS;
696 }else if(strstr(buffer, "DSTRESS{FAIL}")){
697 return RES_FAIL;
698 }else if(strstr(buffer, "DSTRESS{PASS}")){
699 return RES_PASS;
700 }else if(strstr(buffer, "DSTRESS{ERROR}")){
701 return RES_ERROR;
702 }else{
703 return 0;
704 }
705
706 }
707
691 /* system call with time-out */ 708 /* system call with time-out */
692 int crashRun(const char* cmd, char** logFile){ 709 int crashRun(const char* cmd, char** logFile){
693 710
694 size_t len; 711 size_t len;
695 char* buffer; 712 char* buffer;
856 printf("%.*s\n", (int)bufferLen, buffer); 873 printf("%.*s\n", (int)bufferLen, buffer);
857 remove(logFile); 874 remove(logFile);
858 free(logFile); 875 free(logFile);
859 good_error = checkErrorMessage(error_file, error_line, buffer); 876 good_error = checkErrorMessage(error_file, error_line, buffer);
860 877
861 if(hadExecCrash(buffer)){ 878 testResult = conditionalResult(buffer);
879
880 if(testResult){
881 /* conditional result */
882 }else if(hadExecCrash(buffer)){
862 testResult = RES_ERROR; 883 testResult = RES_ERROR;
863 }else if(modus & MODE_COMPILE){ 884 }else if(modus & MODE_COMPILE){
864 if(res == EXIT_SUCCESS){ 885 if(res == EXIT_SUCCESS){
865 testResult = RES_PASS; 886 testResult = RES_PASS;
866 }else if(res == EXIT_FAILURE){ 887 }else if(res == EXIT_FAILURE){
964 buffer); 985 buffer);
965 }else{ 986 }else{
966 good_error = 1; 987 good_error = 1;
967 } 988 }
968 989
990 testResult = conditionalResult(buffer);
969 if(hadExecCrash(buffer)){ 991 if(hadExecCrash(buffer)){
970 free(buffer); 992 free(buffer);
971 return RES_ERROR; 993 return RES_ERROR;
972 }else{ 994 }else{
973 free(buffer); 995 free(buffer);
974 if((res == EXIT_FAILURE) && good_error){ 996 if(testResult){
997 return testResult;
998 }else if((res == EXIT_FAILURE) && good_error){
975 return RES_FAIL; 999 return RES_FAIL;
976 }else if(res!=EXIT_SUCCESS){ 1000 }else if(res!=EXIT_SUCCESS){
977 return RES_ERROR | (good_error ? 0 : RES_BAD_MSG); 1001 return RES_ERROR | (good_error ? 0 : RES_BAD_MSG);
978 } 1002 }
979 } 1003 }
1000 buffer = malloc(bufferLen); 1024 buffer = malloc(bufferLen);
1001 snprintf(buffer, bufferLen, "%s.exe", case_file); 1025 snprintf(buffer, bufferLen, "%s.exe", case_file);
1002 } 1026 }
1003 printf("%s\n", buffer); 1027 printf("%s\n", buffer);
1004 res=crashRun(buffer, &logFile); 1028 res=crashRun(buffer, &logFile);
1029 testResult = conditionalResult(buffer);
1030 if(testResult){
1031 free(buffer);
1032 return testResult;
1033 }
1005 free(buffer); 1034 free(buffer);
1006 1035
1007 /* diagnostic 2/3 */ 1036 /* diagnostic 2/3 */
1008 buffer = loadFile(logFile, &bufferLen); 1037 buffer = loadFile(logFile, &bufferLen);
1009 printf("%.*s\n", (int) bufferLen, buffer); 1038 printf("%.*s\n", (int) bufferLen, buffer);
1020 #ifdef REG_EXTENDED 1049 #ifdef REG_EXTENDED
1021 if(((res==EXIT_SUCCESS && (modus & MODE_RUN)) 1050 if(((res==EXIT_SUCCESS && (modus & MODE_RUN))
1022 ||(res==EXIT_SUCCESS && (modus & MODE_RUN))) 1051 ||(res==EXIT_SUCCESS && (modus & MODE_RUN)))
1023 && gdb_script != NULL) 1052 && gdb_script != NULL)
1024 { 1053 {
1054 testResult = conditionalResult(buffer);
1055 if(testResult){
1056 return testResult;
1057 }
1058
1025 free(buffer); 1059 free(buffer);
1026 good_gdb = 0; 1060 good_gdb = 0;
1027 /* test 3/3 - gdb */ 1061 /* test 3/3 - gdb */
1028 gdb_scripter = genTempFileName(); 1062 gdb_scripter = genTempFileName();
1029 writeFile(gdb_scripter, gdb_script); 1063 writeFile(gdb_scripter, gdb_script);
1045 good_gdb = 1; 1079 good_gdb = 1;
1046 } 1080 }
1047 #else 1081 #else
1048 good_gdb = 1; 1082 good_gdb = 1;
1049 #endif /* REG_EXTENDED else */ 1083 #endif /* REG_EXTENDED else */
1084
1085 testResult = conditionalResult(buffer);
1086 if(testResult){
1087 return testResult;
1088 }
1050 1089
1051 if(modus & MODE_RUN){ 1090 if(modus & MODE_RUN){
1052 if(hadExecCrash(buffer)){ 1091 if(hadExecCrash(buffer)){
1053 testResult = RES_ERROR; 1092 testResult = RES_ERROR;
1054 }else if((res==EXIT_SUCCESS) && good_gdb){ 1093 }else if((res==EXIT_SUCCESS) && good_gdb){