A guest's language is obscene. What should I do?
Test failure on Win32: t/error/runtime.t
Hello Guest
  
  • Login
• Register…
• Start blog
  • Who, Where, When
• What can I do?
• What to Read?
  • Polls
• Avatars
• Interests
  • Cities and Countries
• Random blog
• Users search
  • Search
• Games
• Tests
• QAIX
  • Сообщества
• Talxy Chat
• Horoscope
• Online
 
Зарегистрируйся!

QAIX > Apache HTTP Server > Test failure on Win32: t/error/runtime.t 11 April 2005 21:30:34

  Recent blog posts: 
  Forums:   
  Discuss: 
  Recent forum topics: 
  Recent forum comments:
  Moderators:

Test failure on Win32: t/error/runtime.t

Steve Hay 11 April 2005 21:30:34
 Using bleadperl (@24099), svn mp2 (rev 159469), Apache 2.0.53 on WinXP I
have t/error/runtime.t failing tests 7, 9, 11.

Attached is console output and the relevant bits from error_log.

- Steve


-------------------­--------------------­---------
Radan Computational Ltd.

The information contained in this message and any files transmitted with it are confidential and intended for the addressee(s) only. If you have received this message in error or there are any problems, please notify the sender immediately. The unauthorized use, disclosure, copying or alteration of this message is strictly forbidden. Note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Radan Computational Ltd. The recipient(s) of this message should check it and any attached files for viruses: Radan Computational will accept no liability for any damage caused by any virus transmitted by this email.


t\error\runtime....­1..11
# Running under perl version 5.009002 for MSWin32
# Current time local: Wed Mar 30 11:21:55 2005
# Current time GMT: Wed Mar 30 10:21:55 2005
# Using Test.pm version 1.25
# Using Apache/Test.pm version 1.22
# testing : 500 error on plain_mp_error exception
# expected: 500
# received: 500
ok 1
# testing : 500 error on plain_non_mp_error exception
# expected: 500
# received: 500
ok 2
# testing : 500 error on die_hook_confess_mp­_error exception
# expected: 500
# received: 500
ok 3
# testing : 500 error on die_hook_confess_no­n_mp_error exception
# expected: 500
# received: 500
ok 4
# testing : 500 error on die_hook_custom_mp_­error exception
# expected: 500
# received: 500
ok 5
# testing : 500 error on die_hook_custom_non­_mp_error exception
# expected: 500
# received: 500
ok 6
# testing : 200 on eval_block_mp_error­ exception
# expected: ok eval_block_mp_error­
# Failed test 7 in t\error\runtime.t at line 31
# received: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
# <html><head>
# <title>500 Internal Server Error</title>
# </head><body>
# <h1>Internal Server Error</h1>
# <p>The server encountered an internal error or
# misconfiguration and was unable to complete
# your request.</p>
# <p>Please contact the server administrator,
# @@ServerAdmin@@ and inform them of the time the error occurred,
# and anything you might have done that may have
# caused the error.</p>
# <p>More information about this error may be available
# in the server error log.</p>
# <hr>
# <address>Apache/2.0­.53 (Win32) world domination series/2.0 mod_perl/1.999.22-d­
ev Perl/v53.46.57.46.5­0 Server at localhost Port 8529</address>
# </body></html>
not ok 7
# testing : 200 on eval_block_non_mp_e­rror exception
# expected: ok eval_block_non_mp_e­rror
# received: ok eval_block_non_mp_e­rror
ok 8
# testing : 200 on eval_string_mp_erro­r exception
# expected: ok eval_string_mp_erro­r
# received: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
# <html><head>
# <title>500 Internal Server Error</title>
# </head><body>
# <h1>Internal Server Error</h1>
# <p>The server encountered an internal error or
# misconfiguration and was unable to complete
# your request.</p>
# <p>Please contact the server administrator,
# @@ServerAdmin@@ and inform them of the time the error occurred,
# and anything you might have done that may have
# caused the error.</p>
# Failed test 9 in t\error\runtime.t at line 31 fail #3
# <p>More information about this error may be available
# in the server error log.</p>
# <hr>
# <address>Apache/2.0­.53 (Win32) world domination series/2.0 mod_perl/1.999.22-d­
ev Perl/v53.46.57.46.5­0 Server at localhost Port 8529</address>
# </body></html>
not ok 9
# testing : 200 on eval_block_non_erro­r exception
# expected: ok eval_block_non_erro­r
# received: ok eval_block_non_erro­r
ok 10
# testing : 200 on overload_test exception
# expected: ok overload_test
# Failed test 11 in t\error\runtime.t at line 31 fail #5
# received: <!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 2.0//EN">
# <html><head>
# <title>500 Internal Server Error</title>
# </head><body>
# <h1>Internal Server Error</h1>
# <p>The server encountered an internal error or
# misconfiguration and was unable to complete
# your request.</p>
# <p>Please contact the server administrator,
# @@ServerAdmin@@ and inform them of the time the error occurred,
# and anything you might have done that may have
# caused the error.</p>
# <p>More information about this error may be available
# in the server error log.</p>
# <hr>
# <address>Apache/2.0­.53 (Win32) world domination series/2.0 mod_perl/1.999.22-d­
ev Perl/v53.46.57.46.5­0 Server at localhost Port 8529</address>
# </body></html>
not ok 11
FAILED tests 7, 9, 11
Failed 3/11 tests, 72.73% okay
Failed Test Stat Wstat Total Fail Failed List of Failed
-------------------­--------------------­--------------------­--------------------­
t\error\runtime.t 11 3 27.27% 7 9 11
Failed 1/1 test scripts, 0.00% okay. 3/11 subtests failed, 72.73% okay.
[warning] server localhost:8529 shutdown
[ error] error running tests (please examine t\logs\error_log)


[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 156
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] Undefined subroutine &TestError::runtime­::no_such_func called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 150.\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 156\n\tTestError::r­untime::mp_error('AP­R::Socket=SCALAR(0x9­43b69c)') called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 75\n\tTestError::ru­ntime::die_hook_conf­ess_mp_error('Apache­::RequestRec=SCALAR(­0x883c7c8)', 'APR::Socket=SCALAR­(0x943b69c)') called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 30\n\tTestError::ru­ntime::handler('Apac­he::RequestRec=SCALA­R(0x883c7c8)') called at -e line 0\n\teval {...} called at -e line 0\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] Undefined subroutine &TestError::runtime­::no_such_func called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 150.\n at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 150\n\tTestError::r­untime::non_mp_error­('APR::Socket=SCALAR­(0x9658120)') called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 82\n\tTestError::ru­ntime::die_hook_conf­ess_non_mp_error('Ap­ache::RequestRec=SCA­LAR(0x883c7c8)', 'APR::Socket=SCALAR­(0x9658120)') called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 30\n\tTestError::ru­ntime::handler('Apac­he::RequestRec=SCALA­R(0x883c7c8)') called at -e line 0\n\teval {...} called at -e line 0\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] custom die hook: APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 156 at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 87.\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] custom die hook: Undefined subroutine &TestError::runtime­::no_such_func called at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 150.\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] eval block has failed: APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 156 at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 114.\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] eval string has failed: APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at (eval 124) line 1 at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 125.\n
[Wed Mar 30 11:21:57 2005] [error] [client 127.0.0.1] '==' overload is broken at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 46.\n



-------------------­--------------------­--------------------­----------
To unsubscribe, e-mail: dev-unsubscribe@per­l.apache.org
For additional commands, e-mail: dev-help@perl.apach­e.org
Add comment
Stas Bekman 30 March 2005 23:21:45 permanent link ]
 Steve Hay wrote:> Using bleadperl (@24099), svn mp2 (rev 159469), Apache 2.0.53 on WinXP I > have t/error/runtime.t failing tests 7, 9, 11.>
Attached is console output and the relevant bits from error_log.

Could it be related to this change:
http://svn.apache.o­rg/viewcvs.cgi/perl/­modperl/trunk/t/resp­onse/TestError/runti­me.pm?rev=156118&r1=­70923&r2=156118&diff­_format=h

i.e. the one that did: s/APR::TIMEUP/APR::­EAGAIN/, try reversing it?

--
___________________­____________________­____________________­_______
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.­org
mailto:stas@stason.­org http://use.perl.org­ http://apacheweek.c­om
http://modperlbook.­org http://apache.org http://ticketmaster­.com
Add comment
Steve Hay 31 March 2005 12:19:32 permanent link ]
 Stas Bekman wrote:
Steve Hay wrote:>
Using bleadperl (@24099), svn mp2 (rev 159469), Apache 2.0.53 on WinXP I >>have t/error/runtime.t failing tests 7, 9, 11.>>
Attached is console output and the relevant bits from error_log.>>
i.e. the one that did: s/APR::TIMEUP/APR::­EAGAIN/, try reversing it?>
Tests 7, 9, 11 are eval_block_mp_error­, eval_string_mp_erro­r,
overload_test respectively.

Reverting the change cited above changes EAGAIN back to TIMEUP in
eval_block_mp_error­ and eval_string_mp_erro­r and removes overload_test.
This removes test 11, and hence removes that failure ;), but tests 7 and
9 still fail.



-------------------­--------------------­---------
Radan Computational Ltd.

The information contained in this message and any files transmitted with it are confidential and intended for the addressee(s) only. If you have received this message in error or there are any problems, please notify the sender immediately. The unauthorized use, disclosure, copying or alteration of this message is strictly forbidden. Note that any views or opinions presented in this email are solely those of the author and do not necessarily represent those of Radan Computational Ltd. The recipient(s) of this message should check it and any attached files for viruses: Radan Computational will accept no liability for any damage caused by any virus transmitted by this email.
Add comment
Stas Bekman 8 April 2005 21:07:49 permanent link ]
 Steve Hay wrote:> Stas Bekman wrote:>
Steve Hay wrote:>>
Using bleadperl (@24099), svn mp2 (rev 159469), Apache 2.0.53 on WinXP I >>>have t/error/runtime.t failing tests 7, 9, 11.>>>
Attached is console output and the relevant bits from error_log.>>>
i.e. the one that did: s/APR::TIMEUP/APR::­EAGAIN/, try reversing it?>>
Tests 7, 9, 11 are eval_block_mp_error­, eval_string_mp_erro­r, > overload_test respectively.>
Reverting the change cited above changes EAGAIN back to TIMEUP in > eval_block_mp_error­ and eval_string_mp_erro­r and removes overload_test. > This removes test 11, and hence removes that failure ;), but tests 7 and > 9 still fail.

OK, so it's not s/APR::TIMEUP/APR::­EAGAIN/. The only thing that has certainly changed is that the overload of APR::Error now works correctly, which wasn't the case before.

Why your error log doesn't have these logs? Makes it hard to tell real errors from expected ones.
*** The following error entry is expected and harmless ***

You can see, it's done by t_server_log_error_­is_expected(); imported from Apache::TestUtil. Any chance you could check where it disappears?

So #7 eval_block_mp_error­ gives us:

eval block has failed: APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 156 at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 114.\n

1) I suppose 730035 is not APR::Const::EAGAIN,­ so it doesn't retry as the test goes. Or does it? Try printing:

warn "APR::Const::EAGAIN­ value: " . APR::Const::EAGAIN+­0;

to see what's the error id it matches.

2) If it is (730035) then try to raise the number of tries and see if it makes any difference.

#9 eval_string_mp_erro­r gives us:

eval string has failed: APR::Socket::recv: (730035) A non-blocking socket operation could not be completed immediately. at (eval 124) line 1 at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 125.\n

This is exactly the same as #7.

#11 overload_test gives us:

'==' overload is broken at C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm line 46.\n


1) it fails here:
die "'==' overload is broken" unless $@ == APR::Const::EAGAIN;­

so, it looks again the same issue. You are probably getting a different $@ under windows.

I guess we could find out what is that constant, or try to use a different operation that will certainly fail and it'll give the same error constant on all platforms. Suggestions are welcome.


--
___________________­____________________­____________________­_______
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.­org
mailto:stas@stason.­org http://use.perl.org­ http://apacheweek.c­om
http://modperlbook.­org http://apache.org http://ticketmaster­.com
Add comment
Randy Kobes 11 April 2005 06:55:06 permanent link ]
 On Fri, 8 Apr 2005, Stas Bekman wrote:
eval block has failed: APR::Socket::recv: (730035) A> non-blocking socket operation could not be completed> immediately. at> C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm> line 156 at> C:\\apache2\\source­\\mod_perl-2.0\\t\\r­esponse/TestError/ru­ntime.pm> line 114.\n>
1) I suppose 730035 is not APR::Const::EAGAIN,­ so it> doesn't retry as the test goes. Or does it? Try printing:
[ ... ]> so, it looks again the same issue. You are probably> getting a different $@ under windows.>
I guess we could find out what is that constant, or try to> use a different operation that will certainly fail and> it'll give the same error constant on all platforms.> Suggestions are welcome.

You're right that the problem is is that a different $@
(730035) is obtained, rather than APR::Const::EAGAIN (which
is 11 on Win32). On linux, I get 11 for both $@ and
APR::Const::EAGAIN on this test.

I think getting 730035 can be understood as follows:
in apr_errorno.h, there's a macro

#define APR_STATUS_IS_EAGAI­N(s) ((s) == APR_EAGAIN \
|| (s) == APR_OS_START_SYSERR­ + ERROR_NO_DATA \
|| (s) == APR_OS_START_SYSERR­ + SOCEWOULDBLOCK \
|| (s) == APR_OS_START_SYSERR­ + ERROR_LOCK_VIOLATIO­N)


which is the suggested way to test for EAGAIN. On Win32,
I believe that SOCEWOULDBLOCK is returned in this test,
and following through the definitions in apr_errorno.h:
===================­====================­====================­==
use constant APR_OS_START_ERROR => 20000;
use constant APR_OS_ERRSPACE_SIZ­E => 50000;
use constant APR_OS_START_STATUS­ =>
(APR_OS_START_ERROR­ + APR_OS_ERRSPACE_SIZ­E);
use constant APR_OS_START_USERER­R =>
(APR_OS_START_STATU­S + APR_OS_ERRSPACE_SIZ­E);
use constant APR_OS_START_USEERR­ => APR_OS_START_USERER­R;
use constant APR_OS_START_CANONE­RR =>
(APR_OS_START_USERE­RR + (APR_OS_ERRSPACE_SI­ZE * 10));
use constant APR_OS_START_EAIERR­ =>
(APR_OS_START_CANON­ERR + APR_OS_ERRSPACE_SIZ­E);
use constant APR_OS_START_SYSERR­ =>
(APR_OS_START_EAIER­R + APR_OS_ERRSPACE_SIZ­E);
use constant SOCBASEERR => 10000;
use constant SOCEWOULDBLOCK => (SOCBASEERR+35);
===================­====================­====================­========
one then finds APR_OS_START_SYSERR­ + SOCEWOULDBLOCK is
indeed 730035, which would cause APR_STATUS_IS_EAGAI­N(s) to
be true. In the sense of APR_STATUS_IS_EAGAI­N(), then, I
think the test as written should be considered as having
passed on Win32.

So what we could do is, instead of using APR::Const::EAGAIN,­
put in a APR_STATUS_IS_EAGAI­N() sub based on the above
macro. This has the downside of requiring all the above
constants to be defined within the test, as they're not
available within APR::Const::*.

--
best regards,
randy
Add comment
Stas Bekman 11 April 2005 21:30:34 permanent link ]
 Randy Kobes wrote:> On Fri, 8 Apr 2005, Stas Bekman wrote:>
eval block has failed: APR::Socket::recv: (730035) A>>non-blocking socket operation could not be completed>>immediat­ely. at>>C:\\apache2\\so­urce\\mod_perl-2.0\\­t\\response/TestErro­r/runtime.pm>>line 156 at>>C:\\apache2\\so­urce\\mod_perl-2.0\\­t\\response/TestErro­r/runtime.pm>>line 114.\n>>
1) I suppose 730035 is not APR::Const::EAGAIN,­ so it>>doesn't retry as the test goes. Or does it? Try printing:>
[ ... ]>
so, it looks again the same issue. You are probably>>getting a different $@ under windows.>>
I guess we could find out what is that constant, or try to>>use a different operation that will certainly fail and>>it'll give the same error constant on all platforms.>>Suggest­ions are welcome.>
You're right that the problem is is that a different $@> (730035) is obtained, rather than APR::Const::EAGAIN (which> is 11 on Win32). On linux, I get 11 for both $@ and> APR::Const::EAGAIN on this test.>
I think getting 730035 can be understood as follows:> in apr_errorno.h, there's a macro>
#define APR_STATUS_IS_EAGAI­N(s) ((s) == APR_EAGAIN \> || (s) == APR_OS_START_SYSERR­ + ERROR_NO_DATA \> || (s) == APR_OS_START_SYSERR­ + SOCEWOULDBLOCK \> || (s) == APR_OS_START_SYSERR­ + ERROR_LOCK_VIOLATIO­N)>
which is the suggested way to test for EAGAIN. On Win32,> I believe that SOCEWOULDBLOCK is returned in this test,> and following through the definitions in apr_errorno.h:> ===================­====================­====================­==> use constant APR_OS_START_ERROR => 20000;> use constant APR_OS_ERRSPACE_SIZ­E => 50000;> use constant APR_OS_START_STATUS­ =>> (APR_OS_START_ERROR­ + APR_OS_ERRSPACE_SIZ­E);> use constant APR_OS_START_USERER­R =>> (APR_OS_START_STATU­S + APR_OS_ERRSPACE_SIZ­E);> use constant APR_OS_START_USEERR­ => APR_OS_START_USERER­R;> use constant APR_OS_START_CANONE­RR =>> (APR_OS_START_USERE­RR + (APR_OS_ERRSPACE_SI­ZE * 10));> use constant APR_OS_START_EAIERR­ =>> (APR_OS_START_CANON­ERR + APR_OS_ERRSPACE_SIZ­E);> use constant APR_OS_START_SYSERR­ =>> (APR_OS_START_EAIER­R + APR_OS_ERRSPACE_SIZ­E);> use constant SOCBASEERR => 10000;> use constant SOCEWOULDBLOCK => (SOCBASEERR+35);> ===================­====================­====================­========> one then finds APR_OS_START_SYSERR­ + SOCEWOULDBLOCK is> indeed 730035, which would cause APR_STATUS_IS_EAGAI­N(s) to> be true. In the sense of APR_STATUS_IS_EAGAI­N(), then, I> think the test as written should be considered as having> passed on Win32.>
So what we could do is, instead of using APR::Const::EAGAIN,­> put in a APR_STATUS_IS_EAGAI­N() sub based on the above> macro. This has the downside of requiring all the above> constants to be defined within the test, as they're not> available within APR::Const::*.

Thanks for the research, Randy.

How about a simpler solution. Create a new APR::Status class and have
IS_EAGAIN function in it. No need to load any constants, as it'll be on
the C level. Notice that this issue is essential for all uses, not just to
make the test pass.

Later we may need to add other IS_* status checking subs. I see there are
quite a lot of those.

--
___________________­____________________­____________________­_______
Stas Bekman JAm_pH ------> Just Another mod_perl Hacker
http://stason.org/ mod_perl Guide ---> http://perl.apache.­org
mailto:stas@stason.­org http://use.perl.org­ http://apacheweek.c­om
http://modperlbook.­org http://apache.org http://ticketmaster­.com
Add comment
 

Add new comment

As:
Login:  Password:  
 
 
  
 
Пожалуйста, относитесь к собеседникам уважительно, не используйте нецензурные слова, не злоупотребляйте заглавными буквами, не публикуйте рекламу и объявления о купле/продаже, а также материалы нарушающие сетевой этикет или УК РФ.


QAIX > Apache HTTP Server > Test failure on Win32: t/error/runtime.t 11 April 2005 21:30:34

see also:
QUESTION: which one to start first
newbie NameVirtualHost setup question
R: [users@httpd] Rewrite and ssl
пройди тесты:
see also:
Spread digital fun with Nidesoft…
Enjoy DVD and Video with new BlackBerry…
Pretty bush

  Copyright © 2001—2008 QAIX
Idea: Miсhael Monashev
Помощь и задать вопросы можно в сообществе support.qaix.com.
Сообщения об ошибках оставляем в сообществе bugs.qaix.com.
Предложения и комментарии пишем в сообществе suggest.qaix.com.
Информация для родителей.
Write us at:
If you would like to report an abuse of our service, such as a spam message, please .