aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLoïc Hoguin <[email protected]>2016-10-28 17:50:59 +0300
committerLoïc Hoguin <[email protected]>2016-10-28 17:50:59 +0300
commit2a0a4e9606492c9a746ad2dc36899b3c32d074cc (patch)
tree9615ed0a0fb153b65cc95ee22a72b90f0ae5fe5a
parent7a62265786f351ca3f90bf4c5ef71fc382c95b5a (diff)
downloaderlang.mk-2a0a4e9606492c9a746ad2dc36899b3c32d074cc.tar.gz
erlang.mk-2a0a4e9606492c9a746ad2dc36899b3c32d074cc.tar.bz2
erlang.mk-2a0a4e9606492c9a746ad2dc36899b3c32d074cc.zip
Tweak Relx tests
-rw-r--r--test/plugin_relx.mk220
1 files changed, 97 insertions, 123 deletions
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