summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGlenn Strauss <gstrauss@gluelogic.com>2018-12-03 01:26:20 -0500
committerGlenn Strauss <gstrauss@gluelogic.com>2018-12-03 23:03:04 -0500
commit8aad0916137df6a6a45025f507425c777893834a (patch)
tree724a4a26fc33d757e461b47a39184fa3b5a77d2f
parent5299bded323623aa4b501276384daed0cf9e862d (diff)
downloadlighttpd-git-8aad0916137df6a6a45025f507425c777893834a.tar.gz
[mod_evhost] t/test_mod_evhost
create t/test_mod_evhost to test mod_evhost basic logic remove tests/mod-evhost.t
-rw-r--r--.gitignore1
-rw-r--r--src/CMakeLists.txt20
-rw-r--r--src/Makefile.am5
-rw-r--r--src/meson.build19
-rw-r--r--src/t/test_mod_evhost.c80
-rw-r--r--tests/Makefile.am2
-rw-r--r--tests/mod-evhost.conf47
-rwxr-xr-xtests/mod-evhost.t63
-rwxr-xr-xtests/prepare.sh6
9 files changed, 126 insertions, 117 deletions
diff --git a/.gitignore b/.gitignore
index 8cc08841..89180398 100644
--- a/.gitignore
+++ b/.gitignore
@@ -52,6 +52,7 @@ test_base64
test_buffer
test_burl
test_configfile
+test_mod_evhost
test_mod_simple_vhost
test_request
versionstamp.h
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 2cf866eb..91a2fdd0 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -760,6 +760,22 @@ add_executable(test_configfile
)
add_test(NAME test_configfile COMMAND test_configfile)
+add_executable(test_mod_evhost
+ t/test_mod_evhost.c
+ configfile-glue.c
+ buffer.c
+ array.c
+ data_config.c
+ data_integer.c
+ data_string.c
+ http_header.c
+ http_kv.c
+ vector.c
+ log.c
+ sock_addr.c
+)
+add_test(NAME test_mod_evhost COMMAND test_mod_evhost)
+
add_executable(test_mod_simple_vhost
t/test_mod_simple_vhost.c
configfile-glue.c
@@ -801,6 +817,8 @@ if(HAVE_PCRE_H)
add_target_properties(mod_redirect COMPILE_FLAGS ${PCRE_CFLAGS})
target_link_libraries(test_configfile ${PCRE_LDFLAGS})
add_target_properties(test_configfile COMPILE_FLAGS ${PCRE_CFLAGS})
+ target_link_libraries(test_mod_evhost ${PCRE_LDFLAGS})
+ add_target_properties(test_mod_evhost COMPILE_FLAGS ${PCRE_CFLAGS})
target_link_libraries(test_mod_simple_vhost ${PCRE_LDFLAGS})
add_target_properties(test_mod_simple_vhost COMPILE_FLAGS ${PCRE_CFLAGS})
endif()
@@ -1000,6 +1018,8 @@ if(WITH_LIBUNWIND)
add_target_properties(test_base64 COMPILE_FLAGS ${LIBUNWIND_CFLAGS})
target_link_libraries(test_configfile ${PCRE_LDFLAGS} ${LIBUNWIND_LDFLAGS})
add_target_properties(test_configfile COMPILE_FLAGS ${PCRE_CFLAGS} ${LIBUNWIND_CFLAGS})
+ target_link_libraries(test_mod_evhost ${PCRE_LDFLAGS} ${LIBUNWIND_LDFLAGS})
+ add_target_properties(test_mod_evhost COMPILE_FLAGS ${PCRE_CFLAGS} ${LIBUNWIND_CFLAGS})
target_link_libraries(test_mod_simple_vhost ${PCRE_LDFLAGS} ${LIBUNWIND_LDFLAGS})
add_target_properties(test_mod_simple_vhost COMPILE_FLAGS ${PCRE_CFLAGS} ${LIBUNWIND_CFLAGS})
target_link_libraries(test_request ${LIBUNWIND_LDFLAGS})
diff --git a/src/Makefile.am b/src/Makefile.am
index faec70b2..d382d6cf 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -6,6 +6,7 @@ noinst_PROGRAMS=\
t/test_burl \
t/test_base64 \
t/test_configfile \
+ t/test_mod_evhost \
t/test_mod_simple_vhost \
t/test_request
@@ -18,6 +19,7 @@ TESTS=\
t/test_burl$(EXEEXT) \
t/test_base64$(EXEEXT) \
t/test_configfile$(EXEEXT) \
+ t/test_mod_evhost$(EXEEXT) \
t/test_mod_simple_vhost$(EXEEXT) \
t/test_request$(EXEEXT)
@@ -553,6 +555,9 @@ t_test_burl_LDADD = $(LIBUNWIND_LIBS)
t_test_configfile_SOURCES = t/test_configfile.c buffer.c array.c data_config.c data_integer.c data_string.c http_header.c http_kv.c vector.c log.c sock_addr.c
t_test_configfile_LDADD = $(PCRE_LIB) $(LIBUNWIND_LIBS)
+t_test_mod_evhost_SOURCES = t/test_mod_evhost.c configfile-glue.c buffer.c array.c data_config.c data_integer.c data_string.c http_header.c http_kv.c vector.c log.c sock_addr.c
+t_test_mod_evhost_LDADD = $(PCRE_LIB) $(LIBUNWIND_LIBS)
+
t_test_mod_simple_vhost_SOURCES = t/test_mod_simple_vhost.c configfile-glue.c buffer.c array.c data_config.c data_integer.c data_string.c http_header.c http_kv.c vector.c log.c sock_addr.c
t_test_mod_simple_vhost_LDADD = $(PCRE_LIB) $(LIBUNWIND_LIBS)
diff --git a/src/meson.build b/src/meson.build
index 38392569..521e715f 100644
--- a/src/meson.build
+++ b/src/meson.build
@@ -760,6 +760,25 @@ test('test_configfile', executable('test_configfile',
build_by_default: false,
))
+test('test_mod_evhost', executable('test_mod_evhost',
+ sources: [
+ 't/test_mod_evhost.c',
+ 'configfile-glue.c',
+ 'buffer.c',
+ 'array.c',
+ 'data_config.c',
+ 'data_integer.c',
+ 'data_string.c',
+ 'http_header.c',
+ 'http_kv.c',
+ 'vector.c',
+ 'log.c',
+ 'sock_addr.c',
+ ],
+ dependencies: common_flags + libpcre + libunwind,
+ build_by_default: false,
+))
+
test('test_mod_simple_vhost', executable('test_mod_simple_vhost',
sources: [
't/test_mod_simple_vhost.c',
diff --git a/src/t/test_mod_evhost.c b/src/t/test_mod_evhost.c
new file mode 100644
index 00000000..0600479e
--- /dev/null
+++ b/src/t/test_mod_evhost.c
@@ -0,0 +1,80 @@
+#include "first.h"
+
+#undef NDEBUG
+#include <assert.h>
+#include <stdlib.h>
+#include <stdio.h>
+
+#include "mod_evhost.c"
+
+static plugin_config * test_mod_evhost_plugin_config_init(void) {
+ plugin_config *s = calloc(1, sizeof(plugin_config));
+ s->path_pieces_raw = buffer_init();
+ s->path_pieces = NULL;
+ s->len = 0;
+ return s;
+}
+
+static void test_mod_evhost_plugin_config_free(plugin_config *s) {
+ buffer_free(s->path_pieces_raw);
+ for (size_t i = 0; i < s->len; ++i) buffer_free(s->path_pieces[i]);
+ free(s->path_pieces);
+ free(s);
+}
+
+static void test_mod_evhost_build_doc_root_path(void) {
+ buffer *authority = buffer_init_string("host.example.org");
+ buffer *b = buffer_init();
+ array *a = array_init();
+ struct ttt {
+ const char *pattern;
+ size_t plen;
+ const char *expect;
+ size_t elen;
+ } tt[] = {
+ /* correct pattern not using dot notation */
+ { CONST_STR_LEN("/web/%3/"),
+ CONST_STR_LEN("/web/host/") }
+ /* correct pattern using dot notation */
+ ,{ CONST_STR_LEN("/web/%{3.1}/%{3.2}/%3/"),
+ CONST_STR_LEN("/web/h/o/host/") }
+ /* other pattern 1 */
+ ,{ CONST_STR_LEN("/web/%{3.0}/"),
+ CONST_STR_LEN("/web/host/") }
+ /* other pattern 2 */
+ ,{ CONST_STR_LEN("/web/%3.\1/"),
+ CONST_STR_LEN("/web/host.\1/") }
+ };
+
+ for (size_t i = 0; i < sizeof(tt)/sizeof(tt[0]); ++i) {
+ struct ttt *t = tt+i;
+ plugin_config *s = test_mod_evhost_plugin_config_init();
+ buffer_copy_string_len(s->path_pieces_raw, t->pattern, t->plen);
+ assert(0 == mod_evhost_parse_pattern(s));
+ mod_evhost_build_doc_root_path(b, a, authority, s->path_pieces, s->len);
+ assert(buffer_is_equal_string(b, t->expect, t->elen));
+ test_mod_evhost_plugin_config_free(s);
+ }
+
+ buffer_free(authority);
+ buffer_free(b);
+ array_free(a);
+}
+
+int main (void) {
+ test_mod_evhost_build_doc_root_path();
+
+ return 0;
+}
+
+/*
+ * stub functions
+ */
+
+handler_t stat_cache_get_entry(server *srv, connection *con, buffer *name, stat_cache_entry **sce) {
+ UNUSED(srv);
+ UNUSED(con);
+ UNUSED(name);
+ UNUSED(sce);
+ return HANDLER_GO_ON;
+}
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 7f1f1663..b680ef23 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -42,8 +42,6 @@ CONFS=\
mod-cgi.t \
mod-compress.conf \
mod-compress.t \
- mod-evhost.conf \
- mod-evhost.t \
mod-extforward.conf \
mod-extforward.t \
mod-fastcgi.t \
diff --git a/tests/mod-evhost.conf b/tests/mod-evhost.conf
deleted file mode 100644
index a7a7b079..00000000
--- a/tests/mod-evhost.conf
+++ /dev/null
@@ -1,47 +0,0 @@
-server.document-root = env.SRCDIR + "/tmp/lighttpd/servers/evhost"
-server.pid-file = env.SRCDIR + "/tmp/lighttpd/lighttpd.pid"
-
-## bind to port (default: 80)
-server.port = 2048
-
-## bind to localhost (default: all interfaces)
-server.bind = "localhost"
-server.name = "www.example.org"
-server.tag = "Proxy"
-server.errorlog = env.SRCDIR + "/tmp/lighttpd/logs/lighttpd.error.log"
-server.breakagelog = env.SRCDIR + "/tmp/lighttpd/logs/lighttpd.breakage.log"
-accesslog.filename = env.SRCDIR + "/tmp/lighttpd/logs/lighttpd.access.log"
-
-server.modules = (
- "mod_evhost",
- "mod_accesslog" )
-
-server.indexfiles = ( "index.html" )
-
-
-######################## MODULE CONFIG ############################
-
-
-#### mod-evhost
-$HTTP["host"] =~ "evhost1.example.org" {
- evhost.path-pattern = env.SRCDIR + "/tmp/lighttpd/servers/evhost/%{3.1}/%{3.2}/%3/pages/"
-}
-
-else $HTTP["host"] =~ "evhost2.example.org" {
- evhost.path-pattern = env.SRCDIR + "/tmp/lighttpd/servers/evhost/%3/pages/"
-}
-
-else $HTTP["host"] =~ "evhost3.example.org" {
- evhost.path-pattern = env.SRCDIR + "/tmp/lighttpd/servers/evhost/%{3.0}/pages/"
-}
-
-else $HTTP["host"] =~ "evhost4.example.org" {
- evhost.path-pattern = env.SRCDIR + "/tmp/lighttpd/servers/evhost/%3.\1/pages/"
-}
-
-else $HTTP["host"] =~ "evhost5.example.org" {
- evhost.path-pattern = env.SRCDIR + "/tmp/lighttpd/servers/evhost/%3.\1/pages/"
-}
-else $HTTP["host"] =~ "evhost.example.org" {
- url.access-deny = ("")
-}
diff --git a/tests/mod-evhost.t b/tests/mod-evhost.t
deleted file mode 100755
index 4deea805..00000000
--- a/tests/mod-evhost.t
+++ /dev/null
@@ -1,63 +0,0 @@
-#!/usr/bin/env perl
-BEGIN {
- # add current source dir to the include-path
- # we need this for make distcheck
- (my $srcdir = $0) =~ s#/[^/]+$#/#;
- unshift @INC, $srcdir;
-}
-
-use strict;
-use IO::Socket;
-use Test::More tests => 7;
-use LightyTest;
-
-my $tf = LightyTest->new();
-$tf->{CONFIGFILE} = 'mod-evhost.conf';
-my $t;
-
-ok($tf->start_proc == 0, "Starting lighttpd") or die();
-
-# test for correct config
-$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
-$t->{REQUEST} = ( <<EOF
-GET /index.html HTTP/1.0
-Host: evhost1.example.org
-EOF
- );
-ok($tf->handle_http($t) == 0, 'correct pattern using dot notation');
-
-$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 200 } ];
-$t->{REQUEST} = ( <<EOF
-GET /index.html HTTP/1.0
-Host: evhost2.example.org
-EOF
- );
-ok($tf->handle_http($t) == 0, 'correct pattern not using dot notation');
-
-# test for broken config
-$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
-$t->{REQUEST} = ( <<EOF
-GET /index.html HTTP/1.0
-Host: evhost3.example.org
-EOF
- );
-ok($tf->handle_http($t) == 0, 'broken pattern 1');
-
-$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
-$t->{REQUEST} = ( <<EOF
-GET /index.html HTTP/1.0
-Host: evhost4.example.org
-EOF
- );
-ok($tf->handle_http($t) == 0, 'broken pattern 2');
-
-$t->{RESPONSE} = [ { 'HTTP-Protocol' => 'HTTP/1.0', 'HTTP-Status' => 404 } ];
-$t->{REQUEST} = ( <<EOF
-GET /index.html HTTP/1.0
-Host: evhost5.example.org
-EOF
- );
-ok($tf->handle_http($t) == 0, 'broken pattern 3');
-
-ok($tf->stop_proc == 0, "Stopping lighttpd");
-
diff --git a/tests/prepare.sh b/tests/prepare.sh
index f4f11ef8..32dd2b8f 100755
--- a/tests/prepare.sh
+++ b/tests/prepare.sh
@@ -23,8 +23,6 @@ mkdir -p "${tmpdir}/servers/www.example.org/pages/indexfile/"
mkdir -p "${tmpdir}/servers/123.example.org/pages/"
mkdir -p "${tmpdir}/servers/a.example.org/pages/a/"
mkdir -p "${tmpdir}/servers/b.example.org/pages/b/"
-mkdir -p "${tmpdir}/servers/evhost/e/v/evhost1/pages"
-mkdir -p "${tmpdir}/servers/evhost/evhost2/pages"
mkdir -p "${tmpdir}/logs/"
mkdir -p "${tmpdir}/cache/"
mkdir -p "${tmpdir}/cache/compress/"
@@ -52,9 +50,7 @@ touch "${tmpdir}/servers/www.example.org/pages/image.jpg" \
"${tmpdir}/servers/www.example.org/pages/image.JPG" \
"${tmpdir}/servers/www.example.org/pages/Foo.txt" \
"${tmpdir}/servers/www.example.org/pages/a" \
- "${tmpdir}/servers/www.example.org/pages/index.html~" \
- "${tmpdir}/servers/evhost/e/v/evhost1/pages/index.html" \
- "${tmpdir}/servers/evhost/evhost2/pages/index.html"
+ "${tmpdir}/servers/www.example.org/pages/index.html~"
echo "12345" > "${tmpdir}/servers/www.example.org/pages/range.pdf"
printf "%-40s" "preparing infrastructure"