Changeset 1011

Show
Ignore:
Timestamp:
04/18/08 02:09:41 (3 months ago)
Author:
luislavena
Message:

Added emulation of slow termination processes.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • branches/stable_1-2

    • Property bzr:revision-id:v3-trunk0 changed from
      814 luislavena@gmail.com-20080331074345-8r7ghwi05bwwqz7f
      815 luislavena@gmail.com-20080331075048-t48wb12km03z1k7d
      816 luislavena@gmail.com-20080331081757-x3m83b2w24vlgbhz
      817 luislavena@gmail.com-20080406001418-f6mxbnyordlkvosz
      822 luislavena@gmail.com-20080418001345-y6hgwpxkfc5qml6v
      823 luislavena@gmail.com-20080418001931-wxuitk2diz0s32cu
      824 luislavena@gmail.com-20080418001955-wdpwvupki3pe6mu4
      to
      814 luislavena@gmail.com-20080331074345-8r7ghwi05bwwqz7f
      815 luislavena@gmail.com-20080331075048-t48wb12km03z1k7d
      816 luislavena@gmail.com-20080331081757-x3m83b2w24vlgbhz
      817 luislavena@gmail.com-20080406001418-f6mxbnyordlkvosz
      822 luislavena@gmail.com-20080418001345-y6hgwpxkfc5qml6v
      823 luislavena@gmail.com-20080418001931-wxuitk2diz0s32cu
      824 luislavena@gmail.com-20080418001955-wdpwvupki3pe6mu4
      825 luislavena@gmail.com-20080418065700-yx69onb815nh8zgg
    • Property bzr:revision-info changed from
      timestamp: 2008-04-17 21:19:55.187000036 -0300
      committer: Luis Lavena <luislavena@gmail.com>
      properties:
      branch-nick: stable_1-2
      to
      timestamp: 2008-04-18 03:57:00.687000036 -0300
      committer: Luis Lavena <luislavena@gmail.com>
      properties:
      branch-nick: stable_1-2
  • branches/stable_1-2/projects/mongrel_service/tests/fixtures/mock_process.bas

    r1009 r1011  
    1515#include once "windows.bi" 
    1616 
    17 dim shared stop_hit as BOOL 
     17dim shared as any ptr control_signal, control_mutex 
     18dim shared flagged as byte 
     19dim shared result as integer 
    1820 
    19 function _console_handler(byval dwCtrlType as DWORD) as BOOL 
     21function slow_console_handler(byval dwCtrlType as DWORD) as BOOL 
    2022    dim result as BOOL 
    2123     
    2224    if (dwCtrlType = CTRL_C_EVENT) then 
    23         '# slow response, take 10 seconds... 
    24         fprintf(stdout, !"out: slow stop\r\n") 
    25         sleep (10*1000) 
     25        fprintf(stdout, !"out: CTRL-C received\r\n") 
     26        mutexlock(control_mutex) 
    2627        result = 1 
    27         stop_hit = TRUE 
     28        flagged = 1 
     29        condsignal(control_signal) 
     30        mutexunlock(control_mutex) 
     31    elseif (dwCtrlType = CTRL_BREAK_EVENT) then 
     32        fprintf(stdout, !"out: CTRL-BREAK received\r\n") 
     33        mutexlock(control_mutex) 
     34        result = 1 
     35        flagged = 2 
     36        condsignal(control_signal) 
     37        mutexunlock(control_mutex) 
    2838    end if 
    2939     
     
    3141end function 
    3242 
    33 sub main() 
     43sub wait_for(byval flag_level as integer) 
     44    flagged = 0 
     45    '# set handler 
     46    if (SetConsoleCtrlHandler(@slow_console_handler, 1) = 0) then 
     47        fprintf(stderr, !"err: cannot set console handler\r\n") 
     48    end if 
     49    fprintf(stdout, !"out: waiting for keyboard signal\r\n") 
     50    mutexlock(control_mutex) 
     51    do until (flagged = flag_level) 
     52        condwait(control_signal, control_mutex) 
     53    loop 
     54    mutexunlock(control_mutex) 
     55    fprintf(stdout, !"out: got keyboard signal\r\n") 
     56    if (SetConsoleCtrlHandler(@slow_console_handler, 0) = 0) then 
     57        fprintf(stderr, !"err: cannot unset console handler\r\n") 
     58    end if 
     59end sub 
     60 
     61function main() as integer 
    3462    fprintf(stdout, !"out: message\r\n") 
    3563    fprintf(stderr, !"err: error\r\n") 
     
    3866        case "wait": 
    3967            sleep 
    40              
     68            return 0 
     69 
    4170        case "error": 
    4271            '# terminate with error code 
    43             end 1 
    44              
    45         case "slow": 
    46             stop_hit = FALSE 
    47             SetConsoleCtrlHandler(@_console_handler, 1) 
    48             do while (stop_hit = FALSE) 
    49                 sleep 15 
    50             loop 
    51             SetConsoleCtrlHandler(@_console_handler, 0) 
    52             end 10 
     72            return 1 
     73         
     74        case "slow1": 
     75            wait_for(1) 
     76            return 10 
     77         
     78        case "slow2": 
     79            wait_for(2) 
     80            return 20 
    5381    end select 
    54 end sub 
     82end function 
    5583 
    56 main() 
     84control_signal = condcreate() 
     85control_mutex = mutexcreate() 
     86 
     87result = main() 
     88 
     89conddestroy(control_signal) 
     90mutexdestroy(control_mutex) 
     91 
     92end result