wsd: support --cleanup in loolwsd
Leaving behind jails with bind-mount entries makes build-workspace removal complicated, and jenkins builds start failing. The cleanup stage is integrated in Makefiles and should be transparent. In the event that manual cleanup is necessary, 'loolwsd --cleanup' can be invoked. Change-Id: Ia4b99b0c66e56dfa2d50e79b0ba98f714cf32886 Reviewed-on: https://gerrit.libreoffice.org/c/online/+/97470 Tested-by: Jenkins Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoffice@gmail.com> Reviewed-by: Ashod Nakashian <ashnakash@gmail.com>private/tml/ios-gen2
parent
5c9988f2e3
commit
9a427524d1
11
Makefile.am
11
Makefile.am
|
@ -321,6 +321,8 @@ EXTRA_DIST = discovery.xml \
|
|||
scripts/unocommands.py \
|
||||
$(man_MANS)
|
||||
|
||||
CLEANUP_COMMAND=if test -s ./loolwsd; then echo "Cleaning up..." && ./loolwsd --cleanup --o:logging.level=trace; fi
|
||||
|
||||
if HAVE_LO_PATH
|
||||
|
||||
SYSTEM_STAMP = @SYSTEMPLATE_PATH@/system_stamp
|
||||
|
@ -328,13 +330,16 @@ CAPABILITIES = $(if @ENABLE_SETCAP@,true,false)
|
|||
RUN_GDB = $(if $(GDB_FRONTEND),$(GDB_FRONTEND),gdb --tui --args)
|
||||
|
||||
$(SYSTEM_STAMP) : ${top_srcdir}/loolwsd-systemplate-setup
|
||||
if test -s ./loolwsd; then ./loolwsd --cleanup; fi
|
||||
if test "z@SYSTEMPLATE_PATH@" != "z"; then rm -rf "@SYSTEMPLATE_PATH@"; fi
|
||||
${top_srcdir}/loolwsd-systemplate-setup "@SYSTEMPLATE_PATH@" "@LO_PATH@" && touch $@
|
||||
|
||||
@JAILS_PATH@ :
|
||||
mkdir -p $@
|
||||
$(CLEANUP_COMMAND)
|
||||
|
||||
clean-local:
|
||||
$(CLEANUP_COMMAND)
|
||||
if test "z@JAILS_PATH@" != "z"; then rm -rf "@JAILS_PATH@"; fi
|
||||
if test "z@SYSTEMPLATE_PATH@" != "z"; then rm -rf "@SYSTEMPLATE_PATH@"; fi
|
||||
rm -f $(abs_srcdir)/compile_commands.json
|
||||
|
@ -457,8 +462,9 @@ endif
|
|||
# installing. When building for packaging, no need for this, as the
|
||||
# capabilities won't survive packaging anyway. Instead, handle it when
|
||||
# installing the RPM or Debian package.
|
||||
.PHONY: caps_bins
|
||||
|
||||
all-local: loolforkit loolmount @JAILS_PATH@ $(SYSTEM_STAMP)
|
||||
caps_bins: loolforkit loolmount
|
||||
if ENABLE_SETCAP
|
||||
sudo @SETCAP@ cap_fowner,cap_mknod,cap_sys_chroot=ep loolforkit
|
||||
sudo @SETCAP@ cap_sys_admin=ep loolmount
|
||||
|
@ -466,6 +472,9 @@ else
|
|||
echo "Skipping capability setting"
|
||||
endif
|
||||
|
||||
all-local: loolwsd caps_bins @JAILS_PATH@ $(SYSTEM_STAMP)
|
||||
$(CLEANUP_COMMAND)
|
||||
|
||||
# just run the build without any tests
|
||||
build-nocheck: all-am
|
||||
|
||||
|
|
|
@ -1140,7 +1140,7 @@ if test "$enable_androidapp" = "yes"; then
|
|||
$srcdir/android/lib/src/main/cpp/CMakeLists.txt:android/lib/src/main/cpp/CMakeLists.txt.in])
|
||||
fi
|
||||
|
||||
AC_CONFIG_FILES([test/run_unit.sh:test/run_unit.sh.in],[chmod +x test/run_unit.sh])
|
||||
AC_CONFIG_FILES([test/run_unit.sh],[chmod +x test/run_unit.sh])
|
||||
|
||||
AC_OUTPUT
|
||||
|
||||
|
|
107
test/Makefile.am
107
test/Makefile.am
|
@ -189,8 +189,11 @@ else
|
|||
SYSTEM_STAMP =
|
||||
endif
|
||||
|
||||
CLEANUP_COMMAND=if test -s ../loolwsd; then echo "Cleaning up..." && ../loolwsd --cleanup --o:logging.level=trace; fi
|
||||
|
||||
if HAVE_LO_PATH
|
||||
check-local:
|
||||
$(CLEANUP_COMMAND)
|
||||
./fakesockettest
|
||||
@fc-cache "@LO_PATH@"/share/fonts/truetype
|
||||
|
||||
|
@ -228,71 +231,57 @@ TESTS = \
|
|||
|
||||
# Start forced grouping of tests using stamp files
|
||||
|
||||
# unit-base.log
|
||||
unit-tiletest.log : unit-base.log
|
||||
unit-integration.log : unit-base.log
|
||||
unit-httpws.log : unit-base.log
|
||||
unit-crash.log : unit-base.log
|
||||
|
||||
group1.log: unit-httpws.log unit-crash.log unit-tiletest.log unit-integration.log
|
||||
touch $@
|
||||
|
||||
unit-typing.log : group1.log
|
||||
unit-convert.log : group1.log
|
||||
unit-tilecache.log : group1.log
|
||||
unit-timeout.log : group1.log
|
||||
|
||||
group1a.log: unit-typing.log unit-convert.log unit-tilecache.log unit-timeout.log
|
||||
touch $@
|
||||
|
||||
# isolate this one - it's not a happy test.
|
||||
unit-copy-paste.log : group1a.log
|
||||
|
||||
group2.log: unit-copy-paste.log
|
||||
group0.log: unit-copy-paste.log
|
||||
touch $@
|
||||
|
||||
unit-prefork.log : group2.log
|
||||
unit-oauth.log : group2.log
|
||||
unit-wopi.log : group2.log
|
||||
unit-wopi-saveas.log : group2.log
|
||||
unit-wopi-ownertermination.log : group2.log
|
||||
unit-wopi-versionrestore.log : group2.log
|
||||
unit-wopi-documentconflict.log : group2.log
|
||||
unit_wopi_renamefile.log : group2.log
|
||||
unit_wopi_watermark.log : group2.log
|
||||
# group1.log
|
||||
unit-crash.log : group0.log
|
||||
unit-tiletest.log : group0.log
|
||||
unit-insert-delete.log : group0.log
|
||||
unit-each-view.log : group0.log
|
||||
unit-httpws.log : group0.log
|
||||
unit-close.log : group0.log
|
||||
unit-wopi-documentconflict.log : group0.log
|
||||
unit-prefork.log : group0.log
|
||||
unit-wopi-versionrestore.log : group0.log
|
||||
unit-wopi-temp.log : group0.log
|
||||
unit_wopi_renamefile.log : group0.log
|
||||
unit_wopi_watermark.log : group0.log
|
||||
unit-wopi.log : group0.log
|
||||
unit-wopi-ownertermination.log : group0.log
|
||||
unit-load-torture.log : group0.log
|
||||
|
||||
group3.log: unit-oauth.log unit-wopi.log unit-wopi-saveas.log unit-wopi-ownertermination.log unit-wopi-versionrestore.log unit-wopi-documentconflict.log unit_wopi_renamefile.log unit_wopi_watermark.log
|
||||
unit-wopi-saveas.log : group0.log
|
||||
unit-password-protected.log : group0.log
|
||||
unit-http.log : group0.log
|
||||
unit-tiff-load.log : group0.log
|
||||
unit-render-shape.log : group0.log
|
||||
unit-oauth.log : group0.log
|
||||
unit-large-paste.log : group0.log
|
||||
unit-paste.log : group0.log
|
||||
unit-rendering-options.log : group0.log
|
||||
|
||||
unit-session.log : group0.log
|
||||
unit-uno-command.log : group0.log
|
||||
unit-load.log : group0.log
|
||||
unit-cursor.log : group0.log
|
||||
unit-calc.log : group0.log
|
||||
unit-bad-doc-load.log : group0.log
|
||||
unit-hosting.log : group0.log
|
||||
unit-wopi-loadencoded.log : group0.log
|
||||
|
||||
unit-integration.log : group0.log
|
||||
unit-convert.log : group0.log
|
||||
unit-typing.log : group0.log
|
||||
unit-tilecache.log : group0.log
|
||||
unit-timeout.log : group0.log
|
||||
unit-base.log: group0.log
|
||||
|
||||
group1.log: unit-crash.log unit-tiletest.log unit-insert-delete.log unit-each-view.log unit-httpws.log unit-close.log unit-wopi-documentconflict.log unit-prefork.log unit-wopi-versionrestore.log unit-wopi-temp.log unit_wopi_renamefile.log unit_wopi_watermark.log unit-wopi.log unit-wopi-ownertermination.log unit-load-torture.log unit-wopi-saveas.log unit-password-protected.log unit-http.log unit-tiff-load.log unit-render-shape.log unit-oauth.log unit-large-paste.log unit-paste.log unit-rendering-options.log unit-session.log unit-uno-command.log unit-load.log unit-cursor.log unit-calc.log unit-bad-doc-load.log unit-hosting.log unit-wopi-loadencoded.log unit-integration.log unit-convert.log unit-typing.log unit-tilecache.log unit-timeout.log unit-base.log
|
||||
$(CLEANUP_COMMAND)
|
||||
touch $@
|
||||
|
||||
unit-http.log : group3.log
|
||||
unit-tiff-load.log : group3.log
|
||||
unit-large-paste.log : group3.log
|
||||
unit-paste.log : group3.log
|
||||
unit-load-torture.log : group3.log
|
||||
unit-rendering-options.log : group3.log
|
||||
unit-password-protected.log : group3.log
|
||||
unit-render-shape.log : group3.log
|
||||
unit-each-view.log : group3.log
|
||||
|
||||
group4.log: unit-http.log unit-tiff-load.log unit-large-paste.log unit-paste.log unit-load-torture.log unit-rendering-options.log unit-password-protected.log unit-render-shape.log unit-each-view.log
|
||||
touch $@
|
||||
|
||||
unit-session.log : group4.log
|
||||
unit-uno-command.log : group4.log
|
||||
unit-load.log : group4.log
|
||||
unit-cursor.log : group4.log
|
||||
unit-calc.log : group4.log
|
||||
unit-insert-delete.log : group4.log
|
||||
|
||||
group5.log: unit-session.log unit-uno-command.log unit-load.log unit-cursor.log unit-calc.log unit-insert-delete.log
|
||||
touch $@
|
||||
|
||||
unit-close.log : group5.log
|
||||
unit-bad-doc-load.log : group5.log
|
||||
unit-hosting.log : group5.log
|
||||
unit-wopi-loadencoded.log : group5.log
|
||||
unit-wopi-temp.log : group5.log
|
||||
|
||||
# end forced grouping
|
||||
|
||||
endif
|
||||
|
|
|
@ -74,7 +74,6 @@ echo "Running $tst | $tst_log ...";
|
|||
if ${trace} \
|
||||
${abs_top_builddir}/loolwsd --o:sys_template_path="$systemplate_path" \
|
||||
--o:child_root_path="$jails_path" \
|
||||
--o:mount_jail_tree=false \
|
||||
--o:storage.filesystem[@allow]=true \
|
||||
--o:logging.level=trace \
|
||||
--o:ssl.key_file_path="${abs_top_builddir}/etc/key.pem" \
|
||||
|
@ -91,7 +90,6 @@ else
|
|||
echo "Test failed on unit: $tst re-run with:"
|
||||
echo " $ gdb --args ${abs_top_builddir}/loolwsd --o:sys_template_path=\"$systemplate_path\" \\"
|
||||
echo " --o:child_root_path=\"$jails_path\" \\"
|
||||
echo " --o:mount_jail_tree=false \\"
|
||||
echo " --o:storage.filesystem[@allow]=true \\"
|
||||
echo " --o:storage.ssl.enable=false \\"
|
||||
echo " --o:logging.level=trace \\"
|
||||
|
|
|
@ -731,6 +731,7 @@ std::string LOOLWSD::LogLevel = "trace";
|
|||
std::string LOOLWSD::UserInterface = "classic";
|
||||
bool LOOLWSD::AnonymizeUserData = false;
|
||||
bool LOOLWSD::CheckLoolUser = true;
|
||||
bool LOOLWSD::CleanupOnly = false; //< If we should cleanup and exit.
|
||||
bool LOOLWSD::IsProxyPrefixEnabled = false;
|
||||
#if ENABLE_SSL
|
||||
Util::RuntimeConstant<bool> LOOLWSD::SSLEnabled;
|
||||
|
@ -1188,6 +1189,13 @@ void LOOLWSD::initialize(Application& self)
|
|||
}
|
||||
else
|
||||
{
|
||||
if (CleanupOnly)
|
||||
{
|
||||
// Cleanup and exit.
|
||||
JailUtil::cleanupJails(ChildRoot);
|
||||
std::exit(EX_OK);
|
||||
}
|
||||
|
||||
if (ChildRoot[ChildRoot.size() - 1] != '/')
|
||||
ChildRoot += '/';
|
||||
|
||||
|
@ -1475,7 +1483,7 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
|
|||
.required(false)
|
||||
.repeatable(false));
|
||||
|
||||
optionSet.addOption(Option("version-hash", "", "Display product version-hash information.")
|
||||
optionSet.addOption(Option("version-hash", "", "Display product version-hash information and exit.")
|
||||
.required(false)
|
||||
.repeatable(false));
|
||||
|
||||
|
@ -1483,6 +1491,10 @@ void LOOLWSD::defineOptions(OptionSet& optionSet)
|
|||
.required(false)
|
||||
.repeatable(false));
|
||||
|
||||
optionSet.addOption(Option("cleanup", "", "Cleanup jails and other temporary data and exit.")
|
||||
.required(false)
|
||||
.repeatable(false));
|
||||
|
||||
optionSet.addOption(Option("port", "", "Port number to listen to (default: " +
|
||||
std::to_string(DEFAULT_CLIENT_PORT_NUMBER) + "),")
|
||||
.required(false)
|
||||
|
@ -1565,6 +1577,8 @@ void LOOLWSD::handleOption(const std::string& optionName,
|
|||
}
|
||||
else if (optionName == "version")
|
||||
DisplayVersion = true;
|
||||
else if (optionName == "cleanup")
|
||||
CleanupOnly = true; // Flag for later as we need the config.
|
||||
else if (optionName == "port")
|
||||
ClientPortNumber = std::stoi(value);
|
||||
else if (optionName == "disable-ssl")
|
||||
|
|
|
@ -245,6 +245,7 @@ public:
|
|||
static std::string LogLevel;
|
||||
static bool AnonymizeUserData;
|
||||
static bool CheckLoolUser;
|
||||
static bool CleanupOnly;
|
||||
static bool IsProxyPrefixEnabled;
|
||||
static std::atomic<unsigned> NumConnections;
|
||||
static std::unique_ptr<TraceFileWriter> TraceDumper;
|
||||
|
|
Loading…
Reference in New Issue