[Click] Problem with timers scheduled in the future
Roberto Riggio
roberto.riggio at create-net.org
Fri Oct 1 07:54:59 EDT 2010
Eddie,
here follows a test case for testie:
%info
Test that timers still go off after a system time adjustment.
%require
[ `whoami` = root ]
expr `date +%s.%N` : '[0-9.]*'
%script
echo begin >OUT
adjusted_now=`/home/rriggio/src/click/userlevel/click -e 'Script(print
$(sub $(now) 1000), stop)'`
/home/rriggio/src/click/userlevel/click -e 'Script(wait 1s, print >>OUT
"timer1", wait 2s, print >>OUT "timer2", wait 2s)' &
click="$!"
echo presleep >>OUT
sleep 2
echo adjusted >>OUT
date -s @$adjusted_now >/dev/null 2>&1
sleep 10
echo postsleep >>OUT
kill $click
adjusted_now=`/home/rriggio/src/click/userlevel/click -e 'Script(print
$(add $(now) 1000), stop)'`
date -s @$adjusted_now
%expect OUT
begin
presleep
timer1
adjusted
timer2
postsleep
This is the output that i get (-V):
userlevel/timer-systime-01.testie: Running...
userlevel/timer-systime-01.testie:28: file OUT has unexpected value
starting at line 5
userlevel/timer-systime-01.testie:28: OUT:5: expected 'timer2'
userlevel/timer-systime-01.testie:28: OUT:5: but got 'postsleep'
testie: 0 successes, 1 failure, 0 skipped
Moreover, if I run your script 1 time out of 3 i get a fail. I'm using
the userlevel driver.
R.
On 09/21/2010 10:58 PM, Eddie Kohler wrote:
> Roberto,
>
> I wrote a Click test to verify this problem. And I didn't see a problem.
> Things appear to work fine, at least on this version of Linux.
>
> The Click test is checked in here:
>
> http://www.read.cs.ucla.edu/gitweb?p=click;a=blob_plain;f=test/userlevel/timer-systime-01.testie
>
> You would run the test like "sudo PATH=PATH_INCLUDING_CLICK_BINDIR testie
> .../timer-systime-01.testie". First remove the line that says "false".
>
> Please send mail if
> - You can create a replicable test case in testie form
> - You think the test I wrote is incorrect
>
> Thanks
> Eddie
>
>
> On 09/17/2010 03:47 AM, Roberto Riggio wrote:
>> Hi,
>>
>> this is the problem:
>>
>> 1) re-schedule a timer:
>> _timer.reschedule_after_msec(10000);
>>
>> 2) set the system time to a date that is in the past with respect to the
>> current one
>>
>> 3) the timer never fires
>>
>> R.
>> _______________________________________________
>> click mailing list
>> click at amsterdam.lcs.mit.edu
>> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
> _______________________________________________
> click mailing list
> click at amsterdam.lcs.mit.edu
> https://amsterdam.lcs.mit.edu/mailman/listinfo/click
More information about the click
mailing list