Mercurial > projects > dstress
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){ |