On Mon, Aug 29, 2016 at 12:36 PM, Lukas Slebodnik <[email protected]> wrote: > On (29/08/16 12:08), Fabiano Fidêncio wrote: >>On Mon, Aug 29, 2016 at 11:12 AM, Jakub Hrozek <[email protected]> wrote: >>> On Mon, Aug 29, 2016 at 10:38:46AM +0200, Lukas Slebodnik wrote: >>>> On (29/08/16 07:09), Fabiano Fidêncio wrote: >>>> >Hoiwdy! >>>> > >>>> > >>>> >On Fri, Aug 19, 2016 at 1:08 AM, Fabiano Fidêncio <[email protected]> >>>> >wrote: >>>> >> This patch is a first attempt to make "make intgcheck" less >>>> >> painful/time consuming than it is now. >>>> >> >>>> >> Although the patch provides a good improvement on having 5 new >>>> >> targets, I know it's still not ideal. The ideal case, IMO, would be >>>> >> being able to select which subset of tests would be run, but that's an >>>> >> improvement that can be done later on. >>>> >> >>>> >> Tips are welcome. >>>> >> >>>> >> Best Regards, >>>> > >>>> >After a few dicussions and some tests done when we met personally, I >>>> >found out that the patch was broken. >>>> >Taking Lukaš suggestion (almost) I've merged the -prepare and >>>> >-configure parts and re-worked the way we get the prefix. >>>> > >>>> >Now it seems to be working! >>>> > >>>> >Best Regards, >>>> >-- >>>> >Fabiano Fidêncio >>>> >>>> >From a33e1dffd063845e709f5fc1cfec93c330445ab4 Mon Sep 17 00:00:00 2001 >>>> >From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> >>>> >Date: Thu, 18 Aug 2016 16:24:17 +0200 >>>> >Subject: [PATCH v2] BUILD: Add a few more targets for intg tests >>>> >MIME-Version: 1.0 >>>> >Content-Type: text/plain; charset=UTF-8 >>>> >Content-Transfer-Encoding: 8bit >>>> > >>>> >Running "make intgcheck" has been proven to be a bit painful (mainly >>>> >when the developer is just writing down a single test case), as it >>>> >cleans up the build directory and fireis a new build before, finally, >>>> >run the tests. >>>> > >>>> >In order to make it a little less painful, let's break the whole >>>> >operation into 4 new targets: >>>> > intgcheck-{prepare,build,run,clean}. >>>> > >>>> >As expected, "make intgcheck" calls these 4 new operations in the same >>>> >order they were presented, not changing then the current behavior. >>>> > >>>> >Each operation will trigger the previous one in case there is no >>>> >"$$prefix" directory created and the directory is _only_ created in the >>>> >very first operation (intghceck-prepare). >>>> > >>>> >Signed-off-by: Fabiano Fidêncio <[email protected]> >>>> >--- >>>> > Makefile.am | 52 ++++++++++++++++++++++++++++++++++++---------------- >>>> > 1 file changed, 36 insertions(+), 16 deletions(-) >>>> > >>>> >diff --git a/Makefile.am b/Makefile.am >>>> >index 30d874e..8372b92 100644 >>>> >--- a/Makefile.am >>>> >+++ b/Makefile.am >>>> >@@ -3076,30 +3076,50 @@ endif >>>> > # Integration tests # >>>> > ##################### >>>> > >>>> >-intgcheck: >>>> >+intgcheck-prepare: >>>> > echo "temporarily disabled" >>>> > set -e; \ >>>> >- rm -Rf intg; \ >>>> >- $(MKDIR_P) intg/bld; \ >>>> >- : Use /hopefully/ short prefix to keep D-Bus socket path short; \ >>>> >- prefix=`mktemp --tmpdir --directory sssd-intg.XXXXXXXX`; \ >>>> >- $(LN_S) "$$prefix" intg/pfx; \ >>>> >- cd intg/bld; \ >>>> >+ rm -Rf intg ; \ >>>> >+ $(MKDIR_P) intg/bld ; \ >>>> >+ : Use /hopefully/ short prefix to keep D-Bus socket path short ; \ >>>> >+ prefix=`mktemp --tmpdir --directory sssd-intg.XXXXXXXX` ; \ >>>> >+ $(LN_S) "$$prefix" intg/pfx ; \ >>>> >+ cd intg/bld ; \ >>>> > $(abs_top_srcdir)/configure \ >>>> >- --prefix="$$prefix" \ >>>> >+ --prefix=$$prefix \ >>>> > --with-ldb-lib-dir="$$prefix"/lib/ldb \ >>>> > --enable-intgcheck-reqs \ >>>> > --without-semanage \ >>>> >- $(INTGCHECK_CONFIGURE_FLAGS); \ >>>> >- $(MAKE) $(AM_MAKEFLAGS); \ >>>> >- : Force single-thread install to workaround concurrency issues; \ >>>> >- $(MAKE) $(AM_MAKEFLAGS) -j1 install; \ >>>> >- : Remove .la files from LDB module directory to avoid loader >>>> >warnings; \ >>>> >- rm "$$prefix"/lib/ldb/*.la; \ >>>> >- $(MAKE) $(AM_MAKEFLAGS) -C src/tests/intg intgcheck-installed; \ >>>> >- cd ../..; \ >>>> >+ $(INTGCHECK_CONFIGURE_FLAGS) ; \ >>>> >+ cd ../.. >>>> >+ >>>> >+intgcheck-build: >>>> >+ if [ ! -d intg/pfx ]; then $(MAKE) intgcheck-prepare; fi ; \ >>>> >+ prefix=`readlink -e intg/pfx` ; \ >>>> >+ cd intg/bld ; \ >>>> >+ $(MAKE) $(AM_MAKEFLAGS) ; \ >>>> >+ : Force single-thread install to workaround concurrency issues ; \ >>>> >+ $(MAKE) $(AM_MAKEFLAGS) -j1 install ; \ >>>> >+ : Remove .la files from LDB module directory to avoid loader >>>> >warnings ; \ >>>> >+ rm "$$prefix"/lib/ldb/*.la ; \ >>>> >+ cd ../.. >>>> >+ >>>> >+intgcheck-run: >>>> >+ if [ ! -d intg/pfx ]; then $(MAKE) intgcheck-build; fi ; \ >>>> >+ cd intg/bld ; \ >>>> >+ $(MAKE) $(AM_MAKEFLAGS) -C src/tests/intg intgcheck-installed ; \ >>>> >+ cd ../.. >>>> >+ >>>> >+intgcheck-clean: >>>> >+ prefix=`readlink -e intg/pfx` ; \ >>>> > rm -Rf "$$prefix" intg >>>> > >>>> >+intgcheck: >>>> >+ $(MAKE) intgcheck-prepare >>>> >+ $(MAKE) intgcheck-build >>>> I would merge intgcheck-prepare and intgcheck-build bas well. >> >>Can be done. But if that's not a mandatory requirement I still think >>it may be useful for someone else in the way it's split. >> > "prepare" and "build" it's the same for me. > It is a prerequisity for > <userstory> > As a developer, I need a way to run a single test without > re-compiling SSSD every time and waiting for all the tests to > finish. > </userstory>
Okay. I've merged both and kept the "-build" name. > >>>> >>>> The reason is quite simple it simplify *my* workflow of >>>> test development. >>>> >>>> My current workflow is >>>> * run make intgcheck >>>> * break it before execution of pytest >>>> * change dir to "intg/build" >>>> * finish preparation >>>> make install >>>> * run tests (or just a particular test) >>>> make -C src/tests/intg intgcheck-installed INTGCHECK_PYTEST_ARGS="-k >>>> test_netgroup.py" >>>> >>>> (optional) >>>> * clean everything in custom prefix (after breaking stuff there) >>>> rm -rf ../pfx/* >>>> * prepare stuff for test one more time. >>>> make install >>>> * run tests one more time >>>> make -C src/tests/intg intgcheck-installed INTGCHECK_PYTEST_ARGS="-k >>>> test_netgroup.py" >>>> >> >>That's something really good to now! >> >>>> And now the question is: Do others want to use the same workflow >>>> or we should prefer to run all commands from current >>>> build_dir and not from special build_dir for integration tests. >>> >>> <userstory> >>> As a developer, I need a way to run a single test without >>> re-compiling SSSD every time and waiting for all the tests to >>> finish. >>> </userstory> >> >>I've tried to achieve this in the simplest way possible. Please, take >>a look in the attached patch (that should go on top of the v2 sent >>this morning). >> >>> >>> How we get there is not that relevant for me :) I'm fine with compiling >>> SSSD the first time I run integration tests. It would be nice if >>> multiple runs after I change SSSD code when debugging would allow me to >>> only compile the part that changed and run make install, but as a first >>> iteration, just having a cleaner way to run a single test than running >>> the full test suite would be nice. > Jakub, > as you could see it's possible even with current version :-) > But it's not very user friendly > > and "debugging would allow me to only compile the part that changed and run > make install" requires either to prefix all current targets with "intg" > e.g. "intg-all", "intg-check", "intg-install" ... > or to cd into build_dir for integration tests. > > > >From 4ff76411b6b8230c92345bf73bf88fd76908d0fb Mon Sep 17 00:00:00 2001 >>From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> >>Date: Mon, 29 Aug 2016 11:59:13 +0200 >>Subject: [PATCH] BUILD: Add the possibility to run a single integration test >> >>In order to be able to run a single integration test, let's add one new >>more rule to the Makefile (make intgcheck-run-single-test) that >>receives, from an environment variable called INTGCHECK_SINGLE_TEST, the >>test to be run. >> >>An command line example would be: >>INTGCHECK_SINGLE_TEST="test_netgroup.py" make intgcheck-run-single-test >>--- >> Makefile.am | 7 +++++++ >> 1 file changed, 7 insertions(+) >> >>diff --git a/Makefile.am b/Makefile.am >>index 8372b92..7e053d7 100644 >>--- a/Makefile.am >>+++ b/Makefile.am >>@@ -3114,6 +3114,13 @@ intgcheck-clean: >> prefix=`readlink -e intg/pfx` ; \ >> rm -Rf "$$prefix" intg >> >>+intgcheck-run-single-test: >>+ if [ ! -d intg/pfx ]; then $(MAKE) intgcheck-build; fi ; \ >>+ cd intg/bld ; \ >>+ $(MAKE) $(AM_MAKEFLAGS) -C src/tests/intg intgcheck-installed \ >>+ INTGCHECK_PYTEST_ARGS="-k $(INTGCHECK_SINGLE_TEST)" ; \ >>+ cd ../.. >>+ > I'm sorry but it's better to have less targets rather then more targets. > intgcheck-run needs to work with INTGCHECK_PYTEST_ARGS. > > IMHO, it's really confusing to have more env variables for the same purpose Okay. Please, see the attached patch. > > LS > _______________________________________________ > sssd-devel mailing list > [email protected] > https://lists.fedorahosted.org/admin/lists/[email protected]
From 953f5c4d7e4f171efdcd7b2fdf0e4aa58b296d44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabiano=20Fid=C3=AAncio?= <[email protected]> Date: Thu, 18 Aug 2016 16:24:17 +0200 Subject: [PATCH v3] BUILD: Add a few more targets for intg tests MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Running "make intgcheck" has been proven to be a bit painful (mainly when the developer is just writing down a single test case), as it cleans up the build directory and fireis a new build before, finally, run the tests. In order to make it a little less painful, let's break the whole operation into 3 new targets: intgcheck-{build,run,clean}. As expected, "make intgcheck" calls these 3 new operations in the same order they were presented, not changing then the current behavior. Each operation will trigger the previous one in case there is no "$$prefix" directory created and the directory is _only_ created in the very first operation (intghcheck-prepare). A note must be done about how to run a simple test file or a simple test from a test file when running "make intgcheck-run". The option always been here but only makes sense now that we have the intgcheck split in a few useful steps. See the examples below (and for more detailed information, check the py.test documentation): #Run a single file INTGCHECK_PYTEST_ARGS="-k test_netgroup.py" make intgcheck-run #Run a single test from a single file INTGCHECK_PYTEST_ARGS="test_netgroup.py -k test_add_empty_netgroup" make intgcheck-run Signed-off-by: Fabiano Fidêncio <[email protected]> --- Makefile.am | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/Makefile.am b/Makefile.am index 30d874e..b9c1a58 100644 --- a/Makefile.am +++ b/Makefile.am @@ -3076,7 +3076,7 @@ endif # Integration tests # ##################### -intgcheck: +intgcheck-build: echo "temporarily disabled" set -e; \ rm -Rf intg; \ @@ -3096,10 +3096,23 @@ intgcheck: $(MAKE) $(AM_MAKEFLAGS) -j1 install; \ : Remove .la files from LDB module directory to avoid loader warnings; \ rm "$$prefix"/lib/ldb/*.la; \ + cd ../.. + +intgcheck-run: + if [ ! -d intg/pfx ]; then $(MAKE) intgcheck-build; fi; \ + cd intg/bld; \ $(MAKE) $(AM_MAKEFLAGS) -C src/tests/intg intgcheck-installed; \ - cd ../..; \ + cd ../.. + +intgcheck-clean: + prefix=`readlink -e intg/pfx`; \ rm -Rf "$$prefix" intg +intgcheck: + $(MAKE) intgcheck-build + $(MAKE) intgcheck-run + $(MAKE) intgcheck-clean + #################### # Client Libraries # #################### -- 2.7.4
_______________________________________________ sssd-devel mailing list [email protected] https://lists.fedorahosted.org/admin/lists/[email protected]
