geoff 2003/12/01 09:14:17
Modified: xs/Apache/MPM Apache__MPM.h
xs/maps apache_functions.map modperl_functions.map
xs/tables/current/Apache FunctionTable.pm
xs/tables/current/ModPerl FunctionTable.pm
Added: t/response/TestAPI query.pm show.pm
Removed: t/response/TestAPI mpm_query.pm show_mpm.pm
Log:
change Apache::MPM::show_mpm() to constant subroutine Apache::MPM->show
change Apache::MPM::mpm_query() to class method Apache::MPM->query()
adjust test names to match
Revision Changes Path
1.1 modperl-2.0/t/response/TestAPI/query.pm
Index: query.pm
===================================================================
package TestAPI::query;
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::TestTrace;
use Apache::MPM ();
use Apache::Const -compile => qw(OK :mpmq);
sub handler {
my $r = shift;
plan $r, tests => 3;
# ok, this isn't particularly pretty, but I can't think
# of a better way to do it
# all of these attributes I pulled right from the C sources
# so if, say, leader all of a sudden changes its properties,
# these tests will fail
my $mpm = lc Apache::MPM->show;
if ($mpm eq 'prefork') {
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_THREADED);
ok t_cmp(Apache::MPMQ_NOT_SUPPORTED,
$query,
"MPMQ_IS_THREADED ($mpm)");
}
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_FORKED);
ok t_cmp(Apache::MPMQ_DYNAMIC,
$query,
"MPMQ_IS_FORKED ($mpm)");
}
}
elsif ($mpm eq 'worker') {
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_THREADED);
ok t_cmp(Apache::MPMQ_STATIC,
$query,
"MPMQ_IS_THREADED ($mpm)");
}
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_FORKED);
ok t_cmp(Apache::MPMQ_DYNAMIC,
$query,
"MPMQ_IS_FORKED ($mpm)");
}
}
elsif ($mpm eq 'leader') {
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_THREADED);
ok t_cmp(Apache::MPMQ_STATIC,
$query,
"MPMQ_IS_THREADED ($mpm)");
}
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_FORKED);
ok t_cmp(Apache::MPMQ_DYNAMIC,
$query,
"MPMQ_IS_FORKED ($mpm)");
}
}
elsif ($mpm eq 'winnt') {
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_THREADED);
ok t_cmp(Apache::MPMQ_STATIC,
$query,
"MPMQ_IS_THREADED ($mpm)");
}
{
my $query = Apache::MPM->query(Apache::MPMQ_IS_FORKED);
ok t_cmp(Apache::MPMQ_NOT_SUPPORTED,
$query,
"MPMQ_IS_FORKED ($mpm)");
}
}
else {
skip "skipping MPMQ_IS_THREADED test for $mpm MPM", 0;
skip "skipping MPMQ_IS_FORKED test for $mpm MPM", 0;
}
# make sure that an undefined MPMQ constant yields undef
{
my $query = Apache::MPM->query(72);
ok t_cmp(undef,
$query,
"unknown MPMQ value returns undef");
}
Apache::OK;
}
1;
1.1 modperl-2.0/t/response/TestAPI/show.pm
Index: show.pm
===================================================================
package TestAPI::show;
use strict;
use warnings FATAL => 'all';
use Apache::Test;
use Apache::TestUtil;
use Apache::MPM ();
use Apache::Const -compile => 'OK';
sub handler {
my $r = shift;
plan $r, tests => 1;
my $mpm = Apache::Test::config->{server}->{mpm};
warn "**** trying now***";
ok t_cmp(qr!$mpm!i,
Apache::MPM->show(),
'Apache::MPM->show()');
Apache::OK;
}
1;
1.2 +17 -9 modperl-2.0/xs/Apache/MPM/Apache__MPM.h
Index: Apache__MPM.h
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/Apache/MPM/Apache__MPM.h,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- Apache__MPM.h 25 Nov 2003 18:56:34 -0000 1.1
+++ Apache__MPM.h 1 Dec 2003 17:14:16 -0000 1.2
@@ -1,17 +1,25 @@
-static MP_INLINE
-int mpxs_Apache__MPM_mpm_query(int query)
+static MP_INLINE SV *mpxs_Apache__MPM_query(pTHX_ SV *self, int query_code)
{
int mpm_query_info;
- apr_status_t retval = ap_mpm_query(query, &mpm_query_info);
+ apr_status_t retval = ap_mpm_query(query_code, &mpm_query_info);
if (retval == APR_SUCCESS) {
- return mpm_query_info;
+ return newSViv(mpm_query_info);
}
- /* XXX hmm... what to do here. die?
- * APR_ENOTIMPL should be sufficiently large
- * that comparison tests fail... I think...
- */
- return (int) retval;
+ return &PL_sv_undef;
+}
+
+static void mpxs_Apache__MPM_BOOT(pTHX)
+{
+ /* implement Apache::MPM->show as a constant subroutine
+ * since this information will never
+ * change during an interpreter's lifetime */
+
+ MP_TRACE_g(MP_FUNC, "defined Apache::MPM->show() as %s\n",
+ ap_show_mpm());
+
+ newCONSTSUB(PL_defstash, "Apache::MPM::show",
+ newSVpv(ap_show_mpm(), 0));
}
1.66 +3 -3 modperl-2.0/xs/maps/apache_functions.map
Index: apache_functions.map
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/maps/apache_functions.map,v
retrieving revision 1.65
retrieving revision 1.66
diff -u -r1.65 -r1.66
--- apache_functions.map 25 Nov 2003 18:56:34 -0000 1.65
+++ apache_functions.map 1 Dec 2003 17:14:16 -0000 1.66
@@ -488,8 +488,9 @@
!MODULE=Apache::XML
ap_xml_parse_input
-MODULE=Apache::MPM
- ap_mpm_query
+MODULE=Apache::MPM PACKAGE=Apache::MPM BOOT=1
+~ap_mpm_query
+~ap_show_mpm
>ap_mpm_run
?ap_os_create_privileged_process
?ap_wait_or_timeout
@@ -511,5 +512,4 @@
?ap_mpm_set_max_requests
?ap_mpm_set_pidfile
?ap_mpm_set_scoreboard
- ap_show_mpm
?ap_listen_pre_config
1.61 +2 -2 modperl-2.0/xs/maps/modperl_functions.map
Index: modperl_functions.map
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/maps/modperl_functions.map,v
retrieving revision 1.60
retrieving revision 1.61
diff -u -r1.60 -r1.61
--- modperl_functions.map 25 Nov 2003 18:56:34 -0000 1.60
+++ modperl_functions.map 1 Dec 2003 17:14:16 -0000 1.61
@@ -135,5 +135,5 @@
MODULE=Apache::CmdParms
mpxs_Apache__CmdParms_info
-MODULE=Apache::MPM
- mpxs_Apache__MPM_mpm_query
+MODULE=Apache::MPM PACKAGE=Apache::MPM BOOT=1
+ mpxs_Apache__MPM_query
1.48 +14 -0 modperl-2.0/xs/tables/current/Apache/FunctionTable.pm
Index: FunctionTable.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/tables/current/Apache/FunctionTable.pm,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- FunctionTable.pm 29 Aug 2003 14:31:00 -0000 1.47
+++ FunctionTable.pm 1 Dec 2003 17:14:16 -0000 1.48
@@ -3104,6 +3104,20 @@
]
},
{
+ 'return_type' => 'apr_status_t',
+ 'name' => 'ap_mpm_query',
+ 'args' => [
+ {
+ 'type' => 'int',
+ 'name' => 'query_code'
+ },
+ {
+ 'type' => 'int',
+ 'name' => 'result'
+ }
+ ]
+ },
+ {
'return_type' => 'void',
'name' => 'ap_mpm_rewrite_args',
'args' => [
1.132 +28 -3 modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm
Index: FunctionTable.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/xs/tables/current/ModPerl/FunctionTable.pm,v
retrieving revision 1.131
retrieving revision 1.132
diff -u -r1.131 -r1.132
--- FunctionTable.pm 25 Nov 2003 18:56:34 -0000 1.131
+++ FunctionTable.pm 1 Dec 2003 17:14:17 -0000 1.132
@@ -6899,12 +6899,37 @@
]
},
{
- 'return_type' => 'int',
- 'name' => 'mpxs_Apache__MPM_mpm_query',
+ 'return_type' => 'SV *',
+ 'name' => 'mpxs_Apache__MPM_query',
+ 'attr' => [
+ 'static',
+ '__inline__'
+ ],
'args' => [
{
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
+ },
+ {
+ 'type' => 'SV *',
+ 'name' => 'self'
+ },
+ {
'type' => 'int',
- 'name' => 'query'
+ 'name' => 'query_code'
+ }
+ ]
+ },
+ {
+ 'return_type' => 'void',
+ 'name' => 'mpxs_Apache__MPM_BOOT',
+ 'attr' => [
+ 'static'
+ ],
+ 'args' => [
+ {
+ 'type' => 'PerlInterpreter *',
+ 'name' => 'my_perl'
}
]
},