Add trivial tests for gnt-* cli
[ganeti-local] / Makefile.am
index 4622403..c0d8129 100644 (file)
@@ -156,6 +156,7 @@ CLEANFILES = \
        stamp-srclinks \
        $(nodist_pkgpython_PYTHON) \
        $(HS_ALL_PROGS) $(HS_BUILT_SRCS) \
+       $(HS_BUILT_TEST_HELPERS) \
        .hpc/*.mix htools/*.tix \
        doc/hs-lint.html
 
@@ -353,11 +354,13 @@ docrst = \
        doc/upgrade.rst \
        doc/walkthrough.rst
 
-HS_PROGS = htools/htools htools/hconfd
+HS_PROGS = htools/htools
 HS_BIN_ROLES = hbal hscan hspace hinfo
 
-HS_ALL_PROGS = $(HS_PROGS) htools/test htools/hpc-htools
+HS_ALL_PROGS = $(HS_PROGS) htools/test htools/hpc-htools htools/hconfd
 HS_PROG_SRCS = $(patsubst %,%.hs,$(HS_ALL_PROGS))
+HS_BUILT_TEST_HELPERS = $(HS_BIN_ROLES:%=test/%) test/hail
+
 # we don't add -Werror by default
 HFLAGS = -O -Wall -fwarn-monomorphism-restriction -fwarn-tabs -ihtools
 # extra flags that can be overriden on the command line
@@ -411,6 +414,7 @@ HS_LIB_SRCS = \
        htools/Ganeti/Objects.hs \
        htools/Ganeti/OpCodes.hs \
        htools/Ganeti/Runtime.hs \
+       htools/Ganeti/Ssconf.hs \
        htools/Ganeti/THH.hs
 
 HS_BUILT_SRCS = htools/Ganeti/HTools/Version.hs htools/Ganeti/Constants.hs
@@ -478,13 +482,16 @@ gnt_scripts = \
        scripts/gnt-os
 
 PYTHON_BOOTSTRAP_SBIN = \
-       daemons/ganeti-confd \
        daemons/ganeti-masterd \
        daemons/ganeti-noded \
        daemons/ganeti-watcher \
        daemons/ganeti-rapi \
        $(gnt_scripts)
 
+if PY_CONFD
+PYTHON_BOOTSTRAP_SBIN += daemons/ganeti-confd
+endif
+
 PYTHON_BOOTSTRAP = \
        $(PYTHON_BOOTSTRAP_SBIN) \
        tools/ensure-dirs
@@ -516,6 +523,9 @@ install-exec-hook:
                $(LN_S) -f htools \
                           $(DESTDIR)$(bindir)/$$role ; \
        done
+if HS_CONFD
+       mv $(DESTDIR)$(sbindir)/hconfd $(DESTDIR)$(sbindir)/ganeti-confd
+endif
 endif
 
 $(HS_ALL_PROGS): %: %.hs $(HS_LIB_SRCS) $(HS_BUILT_SRCS) Makefile
@@ -534,7 +544,6 @@ $(HS_ALL_PROGS): %: %.hs $(HS_LIB_SRCS) $(HS_BUILT_SRCS) Makefile
          $(HTOOLS_NOCURL) $(HTOOLS_PARALLEL3) \
          -osuf $$BINARY.o -hisuf $$BINARY.hi \
          $(HEXTRA) $(HEXTRA_INT) $@
-
 # for the htools/test binary, we need to enable profiling/coverage
 htools/test: HEXTRA_INT=-fhpc -Wwarn -fno-warn-missing-signatures \
        -fno-warn-monomorphism-restriction -fno-warn-orphans \
@@ -567,6 +576,10 @@ nodist_sbin_SCRIPTS = \
        $(PYTHON_BOOTSTRAP_SBIN) \
        daemons/ganeti-cleaner
 
+if HS_CONFD
+nodist_sbin_SCRIPTS += htools/hconfd
+endif
+
 python_scripts = \
        tools/burnin \
        tools/cfgshell \
@@ -714,6 +727,7 @@ TEST_FILES = \
        test/data/sys_drbd_usermode_helper.txt \
        test/data/htools/hail-alloc-drbd.json \
        test/data/htools/hail-change-group.json \
+       test/data/htools/hail-invalid-reloc.json \
        test/data/htools/hail-node-evac.json \
        test/data/htools/hail-reloc-drbd.json \
        test/data/htools/common-suffix.data \
@@ -753,7 +767,21 @@ TEST_FILES = \
        test/data/vgreduce-removemissing-2.02.66-ok.txt \
        test/data/vgs-missing-pvs-2.02.02.txt \
        test/data/vgs-missing-pvs-2.02.66.txt \
-       test/import-export_unittest-helper
+       test/import-export_unittest-helper \
+       test/gnt-cli.test \
+       test/ganeti-cli.test \
+       test/htools-balancing.test \
+       test/htools-basic.test \
+       test/htools-dynutil.test \
+       test/htools-excl.test \
+       test/htools-hail.test \
+       test/htools-hspace.test \
+       test/htools-invalid.test \
+       test/htools-multi-group.test \
+       test/htools-no-backend.test \
+       test/htools-rapi.test \
+       test/htools-single-group.test \
+       test/htools-text-backend.test
 
 python_tests = \
        test/ganeti.asyncnotifier_unittest.py \
@@ -831,6 +859,7 @@ dist_TESTS = \
        test/daemon-util_unittest.bash \
        test/ganeti-cleaner_unittest.bash \
        test/import-export_unittest.bash \
+       test/cli-test.bash \
        $(python_tests)
 
 nodist_TESTS =
@@ -839,15 +868,17 @@ check_SCRIPTS =
 if WANT_HTOOLSTESTS
 nodist_TESTS += $(haskell_tests)
 dist_TESTS += htools/offline-test.sh
-check_SCRIPTS += htools/hpc-htools
+check_SCRIPTS += htools/hpc-htools $(HS_BUILT_TEST_HELPERS)
 endif
 
 TESTS = $(dist_TESTS) $(nodist_TESTS)
 
 # Environment for all tests
 PLAIN_TESTS_ENVIRONMENT = \
-       PYTHONPATH=. TOP_SRCDIR=$(abs_top_srcdir) PYTHON=$(PYTHON) \
-       FAKEROOT=$(FAKEROOT_PATH) $(RUN_IN_TEMPDIR)
+       PYTHONPATH=. \
+       TOP_SRCDIR=$(abs_top_srcdir) TOP_BUILDDIR=$(abs_top_builddir) \
+       PYTHON=$(PYTHON) FAKEROOT=$(FAKEROOT_PATH) \
+       $(RUN_IN_TEMPDIR)
 
 # Environment for tests run by automake
 TESTS_ENVIRONMENT = \
@@ -880,6 +911,7 @@ srclink_files = \
        test/daemon-util_unittest.bash \
        test/ganeti-cleaner_unittest.bash \
        test/import-export_unittest.bash \
+       test/cli-test.bash \
        htools/offline-test.sh \
        htools/cli-tests-defs.sh \
        $(all_python_code) \
@@ -1090,6 +1122,8 @@ lib/_autoconf.py: Makefile | lib/.dir
            echo "HTOOLS = False"; \
          fi; \
          echo "ENABLE_CONFD = $(ENABLE_CONFD)"; \
+         echo "PY_CONFD = $(PY_CONFD)"; \
+         echo "HS_CONFD = $(HS_CONFD)"; \
        } > $@
 
 lib/_vcsversion.py: Makefile vcs-version | lib/.dir
@@ -1149,6 +1183,7 @@ daemons/ganeti-%: MODULE = ganeti.server.$(patsubst ganeti-%,%,$(notdir $@))
 daemons/ganeti-watcher: MODULE = ganeti.watcher
 scripts/%: MODULE = ganeti.client.$(subst -,_,$(notdir $@))
 tools/ensure-dirs: MODULE = ganeti.tools.ensure_dirs
+$(HS_BUILT_TEST_HELPERS): TESTROLE = $(patsubst test/%,%,$@)
 
 $(PYTHON_BOOTSTRAP): Makefile | $(all_dirfiles)
        test -n "$(MODULE)" || { echo Missing module; exit 1; }
@@ -1177,6 +1212,17 @@ $(PYTHON_BOOTSTRAP): Makefile | $(all_dirfiles)
        } > $@
        chmod u+x $@
 
+$(HS_BUILT_TEST_HELPERS): Makefile
+       @test -n "$(TESTROLE)" || { echo Missing TESTROLE; exit 1; }
+       set -e; \
+       { echo '#!/bin/sh'; \
+         echo '# This file is automatically generated, do not edit!'; \
+         echo "# Edit Makefile.am instead."; \
+         echo; \
+         echo "HTOOLS=$(TESTROLE) exec ./htools/hpc-htools \"\$$@\""; \
+       } > $@
+       chmod u+x $@
+
 # We need to create symlinks because "make distcheck" will not install Python
 # files when building.
 stamp-srclinks: Makefile | $(all_dirfiles)
@@ -1236,7 +1282,7 @@ check-local: check-dirs $(BUILT_SOURCES)
        done
 
 .PHONY: hs-check
-hs-check: htools/test htools/hpc-htools
+hs-check: htools/test htools/hpc-htools $(HS_BUILT_TEST_HELPERS)
        @rm -f test.tix
        ./htools/test
        HBINARY="./htools/hpc-htools" ./htools/offline-test.sh