pfix-srsd: add a -I option
[apps/pfixtools.git] / postlicyd / tst-filters.c
index f391fc8..a447a34 100644 (file)
 /*     products derived from this software without specific prior written     */
 /*     permission.                                                            */
 /*                                                                            */
-/*  THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND   */
-/*  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE     */
-/*  IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR        */
-/*  PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS    */
-/*  BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR    */
-/*  CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF      */
-/*  SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS  */
-/*  INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN   */
-/*  CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)   */
-/*  ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF    */
-/*  THE POSSIBILITY OF SUCH DAMAGE.                                           */
+/*  THIS SOFTWARE IS PROVIDED BY THE CONTRIBUTORS ``AS IS'' AND ANY EXPRESS   */
+/*  OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED         */
+/*  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE    */
+/*  DISCLAIMED.  IN NO EVENT SHALL THE CONTRIBUTORS BE LIABLE FOR ANY         */
+/*  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL        */
+/*  DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS   */
+/*  OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)     */
+/*  HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,       */
+/*  STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN  */
+/*  ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE           */
+/*  POSSIBILITY OF SUCH DAMAGE.                                               */
+/*                                                                            */
+/*   Copyright (c) 2006-2008 the Authors                                      */
+/*   see AUTHORS and source files for details                                 */
 /******************************************************************************/
 
 /*
 #include "file.h"
 #include <dirent.h>
 
-#define DAEMON_NAME "tst-filters"
-
-DECLARE_MAIN
-
 static char *read_query(const char *basepath, const char *filename,
                         char *buff, char **end, query_t *q)
 {
@@ -91,6 +90,9 @@ static bool run_testcase(const config_t *config, const char *basepath,
     }
 
     bool ok = true;
+    filter_context_t context;
+    filter_context_prepare(&context, NULL);
+
     while (eol < end) {
         char *neol = memchr(eol, '\n', end - eol);
         if (neol == NULL) {
@@ -126,9 +128,11 @@ static bool run_testcase(const config_t *config, const char *basepath,
           printf("  test %s: %s\n", Name, __test ? "SUCCESS" : "FAILED");      \
           ok = ok && __test;                                                   \
         } while (0)
-        TEST(filter->name, filter_test(filter, &query, result));
+        TEST(filter->name, filter_test(filter, &query, &context, result));
         eol = neol + 1;
+
     }
+    filter_context_wipe(&context);
     return ok;
 }
 
@@ -166,20 +170,24 @@ static bool run_greylisttest(const config_t *config, const char *basepath)
 //    FILTER(greylist2);
 #undef FILTER
 
+    filter_context_t context;
+    filter_context_prepare(&context, NULL);
+
     /* Test greylist */
-    TEST("greylisted", filter_test(greylist1, &q1, HTK_GREYLIST));
-    TEST("too_fast", filter_test(greylist1, &q1, HTK_GREYLIST));
+    TEST("greylisted", filter_test(greylist1, &q1, &context, HTK_GREYLIST));
+    TEST("too_fast", filter_test(greylist1, &q1, &context, HTK_GREYLIST));
     sleep(5);
-    TEST("too_slow", filter_test(greylist1, &q1, HTK_GREYLIST));
+    TEST("too_slow", filter_test(greylist1, &q1, &context, HTK_GREYLIST));
     sleep(2);
-    TEST("whitelisted", filter_test(greylist1, &q1, HTK_WHITELIST));
-    TEST("other_greylisted", filter_test(greylist1, &q2, HTK_GREYLIST));
-    TEST("auto_whitelisted", filter_test(greylist1, &q1, HTK_WHITELIST));
-    TEST("other_auto_whitelisted", filter_test(greylist1, &q2, HTK_WHITELIST));
-    TEST("greylisted", filter_test(greylist1, &q3, HTK_GREYLIST));
+    TEST("whitelisted", filter_test(greylist1, &q1, &context, HTK_WHITELIST));
+    TEST("other_greylisted", filter_test(greylist1, &q2, &context, HTK_GREYLIST));
+    TEST("auto_whitelisted", filter_test(greylist1, &q1, &context, HTK_WHITELIST));
+    TEST("other_auto_whitelisted", filter_test(greylist1, &q2, &context, HTK_WHITELIST));
+    TEST("greylisted", filter_test(greylist1, &q3, &context, HTK_GREYLIST));
     sleep(10);
-    TEST("cleanup", filter_test(greylist1, &q1, HTK_GREYLIST));
+    TEST("cleanup", filter_test(greylist1, &q1, &context, HTK_GREYLIST));
 
+    filter_context_wipe(&context);
     return ok;
 }
 
@@ -189,6 +197,7 @@ int main(int argc, char *argv[])
     char path[FILENAME_MAX];
     char *p;
 
+    common_startup();
     p = strrchr(argv[0], '/');
     if (p == NULL) {
         p = argv[0];
@@ -202,8 +211,8 @@ int main(int argc, char *argv[])
 #define RM(File)                                                               \
       snprintf(path, FILENAME_MAX, "%s/%s", basepath, File);                   \
       unlink(path);
-//      RM("test1_greylist.db");
-//      RM("test1_whitelist.db");
+      RM("test1_greylist.db");
+      RM("test1_whitelist.db");
       RM("test2_greylist.db");
       RM("test2_whitelist.db");
 #undef RM