From cf0b3a38cf337a0acc9672350c22e66dab3d5db3 Mon Sep 17 00:00:00 2001 From: Soner Tari Date: Tue, 31 Mar 2020 11:24:46 +0300 Subject: [PATCH] Create make file to automate testproxy e2e tests Move lp under testproxy --- .gitignore | 2 +- tests/testproxy/GNUmakefile | 30 ++++++++++++++++++ {extra => tests/testproxy}/lp/BSDmakefile | 0 {extra => tests/testproxy}/lp/GNUmakefile | 0 {extra => tests/testproxy}/lp/Mk/buildinfo.mk | 0 {extra => tests/testproxy}/lp/Mk/xcode.mk | 0 {extra => tests/testproxy}/lp/attrib.h | 0 {extra => tests/testproxy}/lp/build.c | 0 {extra => tests/testproxy}/lp/build.h | 0 {extra => tests/testproxy}/lp/defaults.h | 0 {extra => tests/testproxy}/lp/log.c | 0 {extra => tests/testproxy}/lp/log.h | 0 {extra => tests/testproxy}/lp/logbuf.c | 0 {extra => tests/testproxy}/lp/logbuf.h | 0 {extra => tests/testproxy}/lp/logger.c | 0 {extra => tests/testproxy}/lp/logger.h | 0 tests/testproxy/lp/lp | Bin 0 -> 101304 bytes {extra => tests/testproxy}/lp/lp.conf | 3 +- {extra => tests/testproxy}/lp/main.c | 0 {extra => tests/testproxy}/lp/opts.c | 0 {extra => tests/testproxy}/lp/opts.h | 0 {extra => tests/testproxy}/lp/privsep.c | 0 {extra => tests/testproxy}/lp/privsep.h | 0 {extra => tests/testproxy}/lp/prototcp.c | 0 {extra => tests/testproxy}/lp/prototcp.h | 0 {extra => tests/testproxy}/lp/proxy.c | 0 {extra => tests/testproxy}/lp/proxy.h | 0 {extra => tests/testproxy}/lp/pxyconn.c | 0 {extra => tests/testproxy}/lp/pxyconn.h | 0 {extra => tests/testproxy}/lp/pxythrmgr.c | 0 {extra => tests/testproxy}/lp/pxythrmgr.h | 0 {extra => tests/testproxy}/lp/sys.c | 0 {extra => tests/testproxy}/lp/sys.h | 0 {extra => tests/testproxy}/lp/thrqueue.c | 0 {extra => tests/testproxy}/lp/thrqueue.h | 0 tests/testproxy/sslproxy.conf | 2 +- 36 files changed, 33 insertions(+), 4 deletions(-) create mode 100644 tests/testproxy/GNUmakefile rename {extra => tests/testproxy}/lp/BSDmakefile (100%) rename {extra => tests/testproxy}/lp/GNUmakefile (100%) rename {extra => tests/testproxy}/lp/Mk/buildinfo.mk (100%) rename {extra => tests/testproxy}/lp/Mk/xcode.mk (100%) rename {extra => tests/testproxy}/lp/attrib.h (100%) rename {extra => tests/testproxy}/lp/build.c (100%) rename {extra => tests/testproxy}/lp/build.h (100%) rename {extra => tests/testproxy}/lp/defaults.h (100%) rename {extra => tests/testproxy}/lp/log.c (100%) rename {extra => tests/testproxy}/lp/log.h (100%) rename {extra => tests/testproxy}/lp/logbuf.c (100%) rename {extra => tests/testproxy}/lp/logbuf.h (100%) rename {extra => tests/testproxy}/lp/logger.c (100%) rename {extra => tests/testproxy}/lp/logger.h (100%) create mode 100755 tests/testproxy/lp/lp rename {extra => tests/testproxy}/lp/lp.conf (96%) rename {extra => tests/testproxy}/lp/main.c (100%) rename {extra => tests/testproxy}/lp/opts.c (100%) rename {extra => tests/testproxy}/lp/opts.h (100%) rename {extra => tests/testproxy}/lp/privsep.c (100%) rename {extra => tests/testproxy}/lp/privsep.h (100%) rename {extra => tests/testproxy}/lp/prototcp.c (100%) rename {extra => tests/testproxy}/lp/prototcp.h (100%) rename {extra => tests/testproxy}/lp/proxy.c (100%) rename {extra => tests/testproxy}/lp/proxy.h (100%) rename {extra => tests/testproxy}/lp/pxyconn.c (100%) rename {extra => tests/testproxy}/lp/pxyconn.h (100%) rename {extra => tests/testproxy}/lp/pxythrmgr.c (100%) rename {extra => tests/testproxy}/lp/pxythrmgr.h (100%) rename {extra => tests/testproxy}/lp/sys.c (100%) rename {extra => tests/testproxy}/lp/sys.h (100%) rename {extra => tests/testproxy}/lp/thrqueue.c (100%) rename {extra => tests/testproxy}/lp/thrqueue.h (100%) diff --git a/.gitignore b/.gitignore index 6c23712..5b39871 100644 --- a/.gitignore +++ b/.gitignore @@ -23,7 +23,7 @@ /tests/check/pki/server.key /tests/check/pki/targets/* /extra/*.pyc -/extra/lp/lp +/tests/testproxy/lp/lp /nbproject/ diff --git a/tests/testproxy/GNUmakefile b/tests/testproxy/GNUmakefile new file mode 100644 index 0000000..74bedfb --- /dev/null +++ b/tests/testproxy/GNUmakefile @@ -0,0 +1,30 @@ +TESTPROXY:= ~/.cargo/bin/testproxy + +all: test + +buildsslproxy: + $(MAKE) -C ../../ + +buildlp: + $(MAKE) -C lp + +test: buildsslproxy buildlp + sudo ./lp/lp -f ./lp/lp.conf -o Debug=no -o Daemon=yes -o User=nobody + sudo ../../src/sslproxy -f sslproxy.conf -o Debug=no -o Daemon=yes -o User=nobody + # TODO: Install cargo first, in travis config before_install, using one of the following command lines + #curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh + #curl https://sh.rustup.rs -sSf | sh + #cargo install testproxy + $(TESTPROXY) -f testharness.json + sudo pkill sslproxy + sudo pkill lp + +clean: + sudo pkill sslproxy + sudo pkill lp + $(MAKE) -C lp clean + +FORCE: + +.PHONY: all clean buildsslproxy buildlp test + diff --git a/extra/lp/BSDmakefile b/tests/testproxy/lp/BSDmakefile similarity index 100% rename from extra/lp/BSDmakefile rename to tests/testproxy/lp/BSDmakefile diff --git a/extra/lp/GNUmakefile b/tests/testproxy/lp/GNUmakefile similarity index 100% rename from extra/lp/GNUmakefile rename to tests/testproxy/lp/GNUmakefile diff --git a/extra/lp/Mk/buildinfo.mk b/tests/testproxy/lp/Mk/buildinfo.mk similarity index 100% rename from extra/lp/Mk/buildinfo.mk rename to tests/testproxy/lp/Mk/buildinfo.mk diff --git a/extra/lp/Mk/xcode.mk b/tests/testproxy/lp/Mk/xcode.mk similarity index 100% rename from extra/lp/Mk/xcode.mk rename to tests/testproxy/lp/Mk/xcode.mk diff --git a/extra/lp/attrib.h b/tests/testproxy/lp/attrib.h similarity index 100% rename from extra/lp/attrib.h rename to tests/testproxy/lp/attrib.h diff --git a/extra/lp/build.c b/tests/testproxy/lp/build.c similarity index 100% rename from extra/lp/build.c rename to tests/testproxy/lp/build.c diff --git a/extra/lp/build.h b/tests/testproxy/lp/build.h similarity index 100% rename from extra/lp/build.h rename to tests/testproxy/lp/build.h diff --git a/extra/lp/defaults.h b/tests/testproxy/lp/defaults.h similarity index 100% rename from extra/lp/defaults.h rename to tests/testproxy/lp/defaults.h diff --git a/extra/lp/log.c b/tests/testproxy/lp/log.c similarity index 100% rename from extra/lp/log.c rename to tests/testproxy/lp/log.c diff --git a/extra/lp/log.h b/tests/testproxy/lp/log.h similarity index 100% rename from extra/lp/log.h rename to tests/testproxy/lp/log.h diff --git a/extra/lp/logbuf.c b/tests/testproxy/lp/logbuf.c similarity index 100% rename from extra/lp/logbuf.c rename to tests/testproxy/lp/logbuf.c diff --git a/extra/lp/logbuf.h b/tests/testproxy/lp/logbuf.h similarity index 100% rename from extra/lp/logbuf.h rename to tests/testproxy/lp/logbuf.h diff --git a/extra/lp/logger.c b/tests/testproxy/lp/logger.c similarity index 100% rename from extra/lp/logger.c rename to tests/testproxy/lp/logger.c diff --git a/extra/lp/logger.h b/tests/testproxy/lp/logger.h similarity index 100% rename from extra/lp/logger.h rename to tests/testproxy/lp/logger.h diff --git a/tests/testproxy/lp/lp b/tests/testproxy/lp/lp new file mode 100755 index 0000000000000000000000000000000000000000..ea6c6944b55804bf289a5bc02d2a43d1cc35ac34 GIT binary patch literal 101304 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

|Pxdf%NZ{#9cb);6-yUrpCB8K@|D=%=b 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 literal 0 HcmV?d00001 diff --git a/extra/lp/lp.conf b/tests/testproxy/lp/lp.conf similarity index 96% rename from extra/lp/lp.conf rename to tests/testproxy/lp/lp.conf index e522b2a..05c5d22 100644 --- a/extra/lp/lp.conf +++ b/tests/testproxy/lp/lp.conf @@ -1,7 +1,6 @@ # Sample configuration for lp v0.6.0 # # Use the -f command line option to start lp with a config file. -# See lp.conf(5) and lp(1) for documentation. # Drop privileges to user. # Equivalent to -u command line option. @@ -11,7 +10,7 @@ User soner # Drop privileges to group. # Equivalent to -m command line option. # (default: primary group of user) -Group soner +#Group soner # chroot() to jaildir (impacts sni proxyspecs, see lp(1)). # Equivalent to -j command line option. diff --git a/extra/lp/main.c b/tests/testproxy/lp/main.c similarity index 100% rename from extra/lp/main.c rename to tests/testproxy/lp/main.c diff --git a/extra/lp/opts.c b/tests/testproxy/lp/opts.c similarity index 100% rename from extra/lp/opts.c rename to tests/testproxy/lp/opts.c diff --git a/extra/lp/opts.h b/tests/testproxy/lp/opts.h similarity index 100% rename from extra/lp/opts.h rename to tests/testproxy/lp/opts.h diff --git a/extra/lp/privsep.c b/tests/testproxy/lp/privsep.c similarity index 100% rename from extra/lp/privsep.c rename to tests/testproxy/lp/privsep.c diff --git a/extra/lp/privsep.h b/tests/testproxy/lp/privsep.h similarity index 100% rename from extra/lp/privsep.h rename to tests/testproxy/lp/privsep.h diff --git a/extra/lp/prototcp.c b/tests/testproxy/lp/prototcp.c similarity index 100% rename from extra/lp/prototcp.c rename to tests/testproxy/lp/prototcp.c diff --git a/extra/lp/prototcp.h b/tests/testproxy/lp/prototcp.h similarity index 100% rename from extra/lp/prototcp.h rename to tests/testproxy/lp/prototcp.h diff --git a/extra/lp/proxy.c b/tests/testproxy/lp/proxy.c similarity index 100% rename from extra/lp/proxy.c rename to tests/testproxy/lp/proxy.c diff --git a/extra/lp/proxy.h b/tests/testproxy/lp/proxy.h similarity index 100% rename from extra/lp/proxy.h rename to tests/testproxy/lp/proxy.h diff --git a/extra/lp/pxyconn.c b/tests/testproxy/lp/pxyconn.c similarity index 100% rename from extra/lp/pxyconn.c rename to tests/testproxy/lp/pxyconn.c diff --git a/extra/lp/pxyconn.h b/tests/testproxy/lp/pxyconn.h similarity index 100% rename from extra/lp/pxyconn.h rename to tests/testproxy/lp/pxyconn.h diff --git a/extra/lp/pxythrmgr.c b/tests/testproxy/lp/pxythrmgr.c similarity index 100% rename from extra/lp/pxythrmgr.c rename to tests/testproxy/lp/pxythrmgr.c diff --git a/extra/lp/pxythrmgr.h b/tests/testproxy/lp/pxythrmgr.h similarity index 100% rename from extra/lp/pxythrmgr.h rename to tests/testproxy/lp/pxythrmgr.h diff --git a/extra/lp/sys.c b/tests/testproxy/lp/sys.c similarity index 100% rename from extra/lp/sys.c rename to tests/testproxy/lp/sys.c diff --git a/extra/lp/sys.h b/tests/testproxy/lp/sys.h similarity index 100% rename from extra/lp/sys.h rename to tests/testproxy/lp/sys.h diff --git a/extra/lp/thrqueue.c b/tests/testproxy/lp/thrqueue.c similarity index 100% rename from extra/lp/thrqueue.c rename to tests/testproxy/lp/thrqueue.c diff --git a/extra/lp/thrqueue.h b/tests/testproxy/lp/thrqueue.h similarity index 100% rename from extra/lp/thrqueue.h rename to tests/testproxy/lp/thrqueue.h diff --git a/tests/testproxy/sslproxy.conf b/tests/testproxy/sslproxy.conf index f603e80..9d84f5c 100644 --- a/tests/testproxy/sslproxy.conf +++ b/tests/testproxy/sslproxy.conf @@ -1,7 +1,7 @@ # TestProxy test configuration for sslproxy v0.7.0 # Global options -#User _sslproxy +User soner #Group _sslproxy #Chroot /var/run/sslproxy PidFile /var/run/sslproxy.pid