diff options
author | Brad King <brad.king@kitware.com> | 2004-07-13 21:27:58 (GMT) |
---|---|---|
committer | Brad King <brad.king@kitware.com> | 2004-07-13 21:27:58 (GMT) |
commit | 0437b776b6d2b1d954b9e2256f2cf3e56f450f9b (patch) | |
tree | ab87ba0826940c5a86f09b0171615b54728cc445 /Source/kwsys/testProcess.c | |
parent | 43225860b6649b57f15e24721d2731abcf1bedc3 (diff) | |
download | CMake-0437b776b6d2b1d954b9e2256f2cf3e56f450f9b.zip CMake-0437b776b6d2b1d954b9e2256f2cf3e56f450f9b.tar.gz CMake-0437b776b6d2b1d954b9e2256f2cf3e56f450f9b.tar.bz2 |
ENH: Added test for runaway output.
Diffstat (limited to 'Source/kwsys/testProcess.c')
-rw-r--r-- | Source/kwsys/testProcess.c | 54 |
1 files changed, 44 insertions, 10 deletions
diff --git a/Source/kwsys/testProcess.c b/Source/kwsys/testProcess.c index 44b0db8..5000170 100644 --- a/Source/kwsys/testProcess.c +++ b/Source/kwsys/testProcess.c @@ -22,7 +22,7 @@ #endif int runChild(const char* cmd[], int state, int exception, int value, - int share, double timeout); + int share, int delay, double timeout); int test1(int argc, const char* argv[]) { @@ -84,7 +84,7 @@ int test5(int argc, const char* argv[]) fflush(stdout); fflush(stderr); r = runChild(cmd, kwsysProcess_State_Exception, - kwsysProcess_Exception_Fault, 1, 1, 2); + kwsysProcess_Exception_Fault, 1, 1, 0, 2); fprintf(stdout, "Output on stdout after recursive test.\n"); fprintf(stderr, "Output on stderr after recursive test.\n"); fflush(stdout); @@ -92,9 +92,31 @@ int test5(int argc, const char* argv[]) return r; } +#define TEST6_SIZE (4096*2) +int test6(int argc, const char* argv[]) +{ + int i; + char runaway[TEST6_SIZE+2]; + (void)argc; (void)argv; + for(i=0;i < TEST6_SIZE;++i) + { + runaway[i] = '.'; + } + runaway[TEST6_SIZE] = '\n'; + runaway[TEST6_SIZE] = 0; + + /* Generate huge amounts of output to test killing. */ + for(;;) + { + fwrite(runaway, 1, TEST6_SIZE+2, stdout); + fflush(stdout); + } + return 0; +} + int runChild(const char* cmd[], int state, int exception, int value, - int share, double timeout) + int share, int delay, double timeout) { int result = 0; char* data = 0; @@ -121,6 +143,12 @@ int runChild(const char* cmd[], int state, int exception, int value, { fwrite(data, 1, length, stdout); fflush(stdout); + if(delay) + { +#if defined(_WIN32) + Sleep(100); +#endif + } } } @@ -203,7 +231,7 @@ int main(int argc, const char* argv[]) n = atoi(argv[2]); } /* Check arguments. */ - if(n < 1 || n > 5 || (argc == 3 && strcmp(argv[1], "run") != 0)) + if(n < 1 || n > 6 || (argc == 3 && strcmp(argv[1], "run") != 0)) { fprintf(stdout, "Usage: %s <test number>\n", argv[0]); return 1; @@ -217,30 +245,35 @@ int main(int argc, const char* argv[]) case 3: return test3(argc, argv); case 4: return test4(argc, argv); case 5: return test5(argc, argv); + case 6: return test6(argc, argv); } fprintf(stderr, "Invalid test number %d.\n", n); return 1; } - if(n >= 0 && n <= 5) + if(n >= 0 && n <= 6) { - int states[5] = + int states[6] = { kwsysProcess_State_Exited, kwsysProcess_State_Exited, kwsysProcess_State_Expired, kwsysProcess_State_Exception, - kwsysProcess_State_Exited + kwsysProcess_State_Exited, + kwsysProcess_State_Expired }; - int exceptions[5] = + int exceptions[6] = { kwsysProcess_Exception_None, kwsysProcess_Exception_None, kwsysProcess_Exception_None, kwsysProcess_Exception_Fault, + kwsysProcess_Exception_None, kwsysProcess_Exception_None }; - int values[5] = {0, 123, 1, 1, 0}; + int values[6] = {0, 123, 1, 1, 0, 0}; + int delays[6] = {0, 0, 0, 0, 0, 1}; + double timeouts[6] = {3, 3, 3, 3, 3, 0.1}; int r; const char* cmd[4]; cmd[0] = argv[0]; @@ -251,7 +284,8 @@ int main(int argc, const char* argv[]) fprintf(stderr, "Output on stderr before test %d.\n", n); fflush(stdout); fflush(stderr); - r = runChild(cmd, states[n-1], exceptions[n-1], values[n-1], 0, 3); + r = runChild(cmd, states[n-1], exceptions[n-1], values[n-1], 0, + delays[n-1], timeouts[n-1]); fprintf(stdout, "Output on stdout after test %d.\n", n); fprintf(stderr, "Output on stderr after test %d.\n", n); fflush(stdout); |