From 2a0a4e9606492c9a746ad2dc36899b3c32d074cc Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Hoguin?= Date: Fri, 28 Oct 2016 17:50:59 +0300 Subject: Tweak Relx tests --- test/plugin_relx.mk | 220 +++++++++++++++++++++++----------------------------- 1 file changed, 97 insertions(+), 123 deletions(-) (limited to 'test') diff --git a/test/plugin_relx.mk b/test/plugin_relx.mk index b82a2dd..3cd1392 100644 --- a/test/plugin_relx.mk +++ b/test/plugin_relx.mk @@ -1,38 +1,29 @@ -# relx plugin. +# Relx plugin. # -# sleeps when interacting with relx script are necessary after start and upgrade -# as both of those interactions are not synchronized +# Sleeps when interacting with relx script are necessary after start and upgrade +# as both of those interactions are not synchronized. -RELX_CASES = rel run rel-tar distclean-relx distclean-relx-rel relup +RELX_CASES = rel relup start-stop tar RELX_TARGETS = $(addprefix relx-,$(RELX_CASES)) -RELX_CLEAN_TARGETS = $(addprefix clean-,$(RELX_TARGETS)) -APP = $(subst -,_,$@) -APP_TO_CLEAN = $(subst -,_,$(patsubst clean-%,%,$@)) +.PHONY: relx $(RELX_TARGETS) relx: $(RELX_TARGETS) -clean-relx: $(RELX_CLEAN_TARGETS) -$(RELX_CLEAN_TARGETS): - $t rm -rf $(APP_TO_CLEAN)/ +relx-rel: build clean -define bootstrap_helper - $i "Bootstrap a new relx release named $(1)" - $t mkdir $(1)/ - $t cp ../erlang.mk $(1)/ - $t $(MAKE) -C $(1) -f erlang.mk bootstrap bootstrap-rel $v -endef + $i "Bootstrap a new release named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap bootstrap-rel $v -relx-rel: clean-relx-rel - $(call bootstrap_helper,$(APP)) + $i "Build the release" + $t $(MAKE) -C $(APP) $v - $i "Build and create release via relx" - $t $(MAKE) -C $(APP) + $i "Check that relx was downloaded" + $t test -f $(APP)/.erlang.mk/relx - $i "Test if relx got downloaded correctly" - $t test -f $(APP)/relx - - $i "Check if release directories got generated as expected" + $i "Check that the release was built" $t test -d $(APP)/_rel $t test -d $(APP)/_rel/$(APP)_release $t test -d $(APP)/_rel/$(APP)_release/bin @@ -40,10 +31,10 @@ relx-rel: clean-relx-rel $t test -d $(APP)/_rel/$(APP)_release/releases $t test -d $(APP)/_rel/$(APP)_release/releases/1 - $i "Clean application" - $(MAKE) -C $(APP) clean + $i "Clean the application" + $t $(MAKE) -C $(APP) clean $v - $i "Check that _rel directory was not affected" + $i "Check that the release still exists" $t test -d $(APP)/_rel $t test -d $(APP)/_rel/$(APP)_release $t test -d $(APP)/_rel/$(APP)_release/bin @@ -51,167 +42,150 @@ relx-rel: clean-relx-rel $t test -d $(APP)/_rel/$(APP)_release/releases $t test -d $(APP)/_rel/$(APP)_release/releases/1 -relx-run: clean-relx-run - $t $(call bootstrap_helper,$(APP)) - - $i "Build and create release via relx" - $t $(MAKE) -C $(APP) - -ifeq ($(PLATFORM),msys2) - $i "Install and start release" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd install $v - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd start $v - $i "Sleeping for 1 second" - $t sleep 1 - $i "Ping release" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd ping $v - $i "Stop and uninstall release" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd stop $v - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd uninstall $v - $i "Ping release, expect failure" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd ping $v; test $$? -eq 1 -else - $i "Start release" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release start $v - $i "Sleeping for 1 second" - $t sleep 1 - $i "Ping release" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release ping $v - $i "Stop release" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release stop $v - $i "Ping release, expect failure" - $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release ping $v; test $$? -eq 1 -endif + $i "Distclean the application" + $t $(MAKE) -C $(APP) distclean $v -relx-rel-tar: clean-relx-rel-tar - $(call bootstrap_helper,$(APP)) - - $i "Build and create release tarball via relx" - $t $(MAKE) RELX_OPTS="release tar" -C $(APP) - - $i "Test if tar file got created" - $t test -f $(APP)/_rel/$(APP)_release/$(APP)_release-1.tar.gz - -relx-distclean-relx: clean-relx-distclean-relx - $(call bootstrap_helper,$(APP)) - - $i "Build and create release via relx" - $t $(MAKE) -C $(APP) - - $i "Test if relx got downloaded correctly" - $t test -f $(APP)/relx - - $i "Run distclean-relx" - $t $(MAKE) -C $(APP) distclean-relx - - $i "Test if relx got removed" - $t test ! -f $(APP)/relx - -relx-distclean-relx-rel: clean-relx-distclean-relx-rel - $(call bootstrap_helper,$(APP)) - - $i "Build and create release via relx" - $t $(MAKE) -C $(APP) - - $i "Test if _rel directory got created" - $t test -d $(APP)/_rel/ - - $i "Run distclean-relx-rel" - $t $(MAKE) -C $(APP) distclean-relx-rel - - $i "Test if _rel directory got removed" + $i "Check that the output directory was removed entirely" $t test ! -d $(APP)/_rel/ -relx-relup: clean-relx-relup - $(call bootstrap_helper,$(APP)) +relx-relup: build clean + + $i "Bootstrap a new release named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap bootstrap-rel $v - $i "Set version of application" + $i "Set the initial application version" ifeq ($(LEGACY),1) $t sed -i s/"{vsn, \"0.1.0\"}"/"{vsn, \"1\"}"/ $(APP)/src/$(APP).app.src else $t echo "PROJECT_VERSION = 1" >> $(APP)/Makefile endif - $i "Include sasl application" - $t sed -i s/"\[$(APP)\]"/"\[$(APP),sasl\]"/ -i $(APP)/relx.config - - $i "Add test module" + $i "Generate a test module" $t printf "%s\n"\ "-module(test)." \ "-export([test/0])." \ "test() -> old." > $(APP)/src/test.erl - $i "Build and create initial release via relx" - $t $(MAKE) -C $(APP) RELX_OPTS="release tar" + $i "Build the initial release as a tarball" + $t $(MAKE) -C $(APP) RELX_OPTS="release tar" $v - $i "Make changes to test module" + $i "Update the test module" $t sed -i s/"test() -> old."/"test() -> new."/ $(APP)/src/test.erl + $i "Bump the application version" ifeq ($(LEGACY),1) - $i "Change vsn tuple in .app.src" $t sed -i s/"{vsn, \"1\"}"/"{vsn, \"2\"}"/ $(APP)/src/$(APP).app.src else - $i "Change PROJECT_VERSION in Makefile" $t sed -i s/"PROJECT_VERSION = 1"/"PROJECT_VERSION = 2"/ $(APP)/Makefile endif - $i "Write .appup" + $i "Generate a .appup for the application" $t printf "%s\n" \ "{\"2\","\ " [{\"1\", [{load_module, test}]}],"\ " [{\"1\", [{load_module, test}]}]"\ "}." > $(APP)/ebin/$(APP).appup - $i "Bump release version" + $i "Bump the release version" $t sed -i s/"1"/"2"/ $(APP)/relx.config - $i "Build updated app, release and relup" - $t $(MAKE) -C $(APP) RELX_OPTS="release relup tar" + $i "Build a new release with a relup as a tarball" + $t $(MAKE) -C $(APP) RELX_OPTS="release relup tar" $v $i "Test that both releases are available" $t test -f $(APP)/_rel/$(APP)_release/$(APP)_release-1.tar.gz $t test -f $(APP)/_rel/$(APP)_release/$(APP)_release-2.tar.gz - $i "Unpack release '1' to tmp dir" + $i "Unpack initial release" $t mkdir $(APP)/tmp $t tar -xzf $(APP)/_rel/$(APP)_release/$(APP)_release-1.tar.gz -C $(APP)/tmp - $i "Start release '1' and query test:test()" + $i "Start initial release and confirm it runs the old code" ifeq ($(PLATFORM),msys2) $t $(APP)/tmp/bin/$(APP)_release.cmd install $v $t $(APP)/tmp/bin/$(APP)_release.cmd start $v - $i "Sleeping for 1 second" $t sleep 1 $t test `$(APP)/tmp/bin/$(APP)_release.cmd rpcterms test test` = old else $t $(APP)/tmp/bin/$(APP)_release start $v - $i "Sleeping for 1 second" $t sleep 1 $t test `$(APP)/tmp/bin/$(APP)_release rpcterms test test` = old endif - $i "Move relup to release directory and upgrade" + $i "Move the relup tarball to the release directory" $t mkdir $(APP)/tmp/releases/2 $t mv $(APP)/_rel/$(APP)_release/$(APP)_release-2.tar.gz $(APP)/tmp/releases/2/$(APP)_release.tar.gz + $i "Upgrade the release and confirm it runs the new code" ifeq ($(PLATFORM),msys2) - $i "Upgrade running release" $t $(APP)/tmp/bin/$(APP)_release.cmd upgrade "2/$(APP)_release" $v - $i "Sleeping for 1 second" $t sleep 1 - $i "Query updated test:test()" $t test `$(APP)/tmp/bin/$(APP)_release.cmd rpcterms test test` = new - $i "Stop and uninstall release" + $i "Stop the release" $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd stop $v $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd uninstall $v else $i "Upgrade running release" $t $(APP)/tmp/bin/$(APP)_release upgrade "2/$(APP)_release" $v - $i "Sleeping for 1 second" $t sleep 1 - $i "Query updated test:test()" $t test `$(APP)/tmp/bin/$(APP)_release rpcterms test test` = new - $i "Stop release" + + $i "Stop the release" + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release stop $v +endif + +relx-start-stop: build clean + + $i "Bootstrap a new release named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap bootstrap-rel $v + + $i "Build the release" + $t $(MAKE) -C $(APP) $v + +ifeq ($(PLATFORM),msys2) + $i "Install and start the release" + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd install $v + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd start $v + $t sleep 1 + + $i "Ping the release" + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd ping $v + + $i "Stop and uninstall the release" + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd stop $v + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd uninstall $v + + $i "Check that further pings get no replies" + $t ! $(APP)/_rel/$(APP)_release/bin/$(APP)_release.cmd ping $v +else + $i "Start the release" + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release start $v + $t sleep 1 + + $i "Ping the release" + $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release ping $v + + $i "Stop the release" $t $(APP)/_rel/$(APP)_release/bin/$(APP)_release stop $v + + $i "Check that further pings get no replies" + $t ! $(APP)/_rel/$(APP)_release/bin/$(APP)_release ping $v endif + +relx-tar: build clean + + $i "Bootstrap a new release named $(APP)" + $t mkdir $(APP)/ + $t cp ../erlang.mk $(APP)/ + $t $(MAKE) -C $(APP) -f erlang.mk bootstrap bootstrap-rel $v + + $i "Build the release as a tarball" + $t $(MAKE) RELX_OPTS="release tar" -C $(APP) $v + + $i "Check that tarball exists" + $t test -f $(APP)/_rel/$(APP)_release/$(APP)_release-1.tar.gz -- cgit v1.2.3