You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by tr...@apache.org on 2009/05/17 17:56:15 UTC
svn commit: r775682 - in /apr/apr/trunk/test: Makefile.in abts_tests.h
testhooks.c testutil.h
Author: trawick
Date: Sun May 17 15:56:15 2009
New Revision: 775682
URL: http://svn.apache.org/viewvc?rev=775682&view=rev
Log:
start a test bucket for apr hooks
note that a failing assertion for an interesting predecessor issue is commented out for now
Added:
apr/apr/trunk/test/testhooks.c (with props)
Modified:
apr/apr/trunk/test/Makefile.in
apr/apr/trunk/test/abts_tests.h
apr/apr/trunk/test/testutil.h
Modified: apr/apr/trunk/test/Makefile.in
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/Makefile.in?rev=775682&r1=775681&r2=775682&view=diff
==============================================================================
--- apr/apr/trunk/test/Makefile.in (original)
+++ apr/apr/trunk/test/Makefile.in Sun May 17 15:56:15 2009
@@ -34,7 +34,7 @@
testxlate.lo testdbd.lo testrmm.lo testldap.lo testmd4.lo \
teststrmatch.lo testpass.lo testcrypto.lo testqueue.lo \
testbuckets.lo testxml.lo testdbm.lo testuuid.lo testmd5.lo \
- testreslist.lo testbase64.lo
+ testreslist.lo testbase64.lo testhooks.lo
OTHER_PROGRAMS = \
sendfile@EXEEXT@ \
Modified: apr/apr/trunk/test/abts_tests.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/abts_tests.h?rev=775682&r1=775681&r2=775682&view=diff
==============================================================================
--- apr/apr/trunk/test/abts_tests.h (original)
+++ apr/apr/trunk/test/abts_tests.h Sun May 17 15:56:15 2009
@@ -39,6 +39,7 @@
{testglobalmutex},
#endif
{testhash},
+ {testhooks},
{testipsub},
{testlock},
{testcond},
Added: apr/apr/trunk/test/testhooks.c
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/testhooks.c?rev=775682&view=auto
==============================================================================
--- apr/apr/trunk/test/testhooks.c (added)
+++ apr/apr/trunk/test/testhooks.c Sun May 17 15:56:15 2009
@@ -0,0 +1,123 @@
+/* Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+#include "abts.h"
+#include "testutil.h"
+#include "apr_hooks.h"
+
+#define TEST_DECLARE(type) type
+
+APR_DECLARE_EXTERNAL_HOOK(test,TEST,int, toyhook, (char *x, apr_size_t s))
+
+APR_HOOK_STRUCT(
+ APR_HOOK_LINK(toyhook)
+)
+
+APR_IMPLEMENT_EXTERNAL_HOOK_RUN_ALL(test,TEST,int, toyhook,
+ (char *x, apr_size_t s), (x, s), 0, -1)
+
+static void safe_concat(char *buf, apr_size_t buf_size, const char *append)
+{
+ if (strlen(buf) + strlen(append) + 1 <= buf_size) {
+ strcat(buf, append);
+ }
+}
+
+static int toyhook_1(char *x, apr_size_t buf_size)
+{
+ safe_concat(x, buf_size, "1");
+ return 0;
+}
+
+static int toyhook_2(char *x, apr_size_t buf_size)
+{
+ safe_concat(x, buf_size, "2");
+ return 0;
+}
+
+static int toyhook_3(char *x, apr_size_t buf_size)
+{
+ safe_concat(x, buf_size, "3");
+ return 0;
+}
+
+static int toyhook_4(char *x, apr_size_t buf_size)
+{
+ safe_concat(x, buf_size, "4");
+ return 0;
+}
+
+static int toyhook_5(char *x, apr_size_t buf_size)
+{
+ safe_concat(x, buf_size, "5");
+ return 0;
+}
+
+static void test_basic_ordering(abts_case *tc, void *data)
+{
+ char buf[6] = {0};
+
+ apr_hook_global_pool = p;
+ apr_hook_deregister_all();
+
+ apr_hook_debug_current = "foo";
+ test_hook_toyhook(toyhook_5, NULL, NULL, APR_HOOK_MIDDLE + 2);
+ test_hook_toyhook(toyhook_1, NULL, NULL, APR_HOOK_MIDDLE - 2);
+ test_hook_toyhook(toyhook_3, NULL, NULL, APR_HOOK_MIDDLE);
+ test_hook_toyhook(toyhook_2, NULL, NULL, APR_HOOK_MIDDLE - 1);
+ test_hook_toyhook(toyhook_4, NULL, NULL, APR_HOOK_MIDDLE + 1);
+
+ apr_hook_sort_all();
+
+ test_run_toyhook(buf, sizeof buf);
+
+ ABTS_STR_EQUAL(tc, "12345", buf);
+}
+
+static void test_pred_ordering(abts_case *tc, void *data)
+{
+ char buf[10] = {0};
+ static const char *hook2_predecessors[] = {"1", NULL};
+ static const char *hook3_predecessors[] = {"2", NULL};
+
+ apr_hook_global_pool = p;
+ apr_hook_deregister_all();
+
+ apr_hook_debug_current = "1";
+ test_hook_toyhook(toyhook_1, NULL, NULL, APR_HOOK_MIDDLE);
+ apr_hook_debug_current = "3";
+ test_hook_toyhook(toyhook_3, hook3_predecessors, NULL, APR_HOOK_MIDDLE);
+ apr_hook_debug_current = "2";
+ test_hook_toyhook(toyhook_2, hook2_predecessors, NULL, APR_HOOK_MIDDLE);
+ apr_hook_debug_current = "2";
+ test_hook_toyhook(toyhook_2, hook2_predecessors, NULL, APR_HOOK_MIDDLE);
+
+ apr_hook_sort_all();
+
+ test_run_toyhook(buf, sizeof buf);
+
+ /* FAILS ABTS_STR_EQUAL(tc, "1223", buf); */
+}
+
+abts_suite *testhooks(abts_suite *suite)
+{
+ suite = ADD_SUITE(suite);
+
+ abts_run_test(suite, test_basic_ordering, NULL);
+ abts_run_test(suite, test_pred_ordering, NULL);
+
+ return suite;
+}
Propchange: apr/apr/trunk/test/testhooks.c
------------------------------------------------------------------------------
svn:eol-style = native
Modified: apr/apr/trunk/test/testutil.h
URL: http://svn.apache.org/viewvc/apr/apr/trunk/test/testutil.h?rev=775682&r1=775681&r2=775682&view=diff
==============================================================================
--- apr/apr/trunk/test/testutil.h (original)
+++ apr/apr/trunk/test/testutil.h Sun May 17 15:56:15 2009
@@ -74,6 +74,7 @@
abts_suite *testgetopt(abts_suite *suite);
abts_suite *testglobalmutex(abts_suite *suite);
abts_suite *testhash(abts_suite *suite);
+abts_suite *testhooks(abts_suite *suite);
abts_suite *testipsub(abts_suite *suite);
abts_suite *testlock(abts_suite *suite);
abts_suite *testcond(abts_suite *suite);