RFC V2 [2/2] test-in-container

Message ID xnvaeirx3b.fsf@greed.delorie.com
State New, archived
Headers

Commit Message

DJ Delorie Feb. 27, 2018, 8:34 p.m. UTC
  * nss/tst-nss-test3.c: Convert to test-in-container.
	* nss/tst-nss-test3.root/: New.
  

Comments

Florian Weimer June 26, 2018, 1:02 p.m. UTC | #1
On 02/27/2018 09:34 PM, DJ Delorie wrote:

> diff --git a/nss/Makefile b/nss/Makefile
> index a5cd2aacae..60a28a1519 100644
> --- a/nss/Makefile
> +++ b/nss/Makefile
> @@ -55,11 +55,13 @@ tests-internal		= tst-field
>   tests			= test-netdb test-digits-dots tst-nss-getpwent bug17079 \
>   			  tst-nss-test1 \
>   			  tst-nss-test2 \
> -			  tst-nss-test3 \
>   			  tst-nss-test4 \
>   			  tst-nss-test5
>   xtests			= bug-erange
>   
> +tests-container = \
> +			  tst-nss-test3
> +

> diff --git a/nss/tst-nss-test3.root/files.txt b/nss/tst-nss-test3.root/files.txt
> new file mode 100644
> index 0000000000..a10beb1e6c
> --- /dev/null
> +++ b/nss/tst-nss-test3.root/files.txt
> @@ -0,0 +1,2 @@
> +cp $B/nss/libnss_test1.so $L/libnss_test1.so.2
> +cp $B/nss/libnss_test2.so $L/libnss_test2.so.2

I like this interface for writing tests, but it doesn't quite work at 
present: the makefile doesn't know about the test dependency on 
libnss_test1.so.2 and libnss_test2.so.2, so you get spurious failures at 
high concurrency levels.

I'm not sure what the proper remedy is here.  Should we auto-generate a 
makefile fragment from the file copy instructions?  Should these 
instructions be included in the makefile instead?

Thanks,
Florian
  

Patch

diff --git a/nss/Makefile b/nss/Makefile
index a5cd2aacae..60a28a1519 100644
--- a/nss/Makefile
+++ b/nss/Makefile
@@ -55,11 +55,13 @@  tests-internal		= tst-field
 tests			= test-netdb test-digits-dots tst-nss-getpwent bug17079 \
 			  tst-nss-test1 \
 			  tst-nss-test2 \
-			  tst-nss-test3 \
 			  tst-nss-test4 \
 			  tst-nss-test5
 xtests			= bug-erange
 
+tests-container = \
+			  tst-nss-test3
+
 # Tests which need libdl
 ifeq (yes,$(build-shared))
 tests += tst-nss-files-hosts-erange
diff --git a/nss/tst-nss-test3.c b/nss/tst-nss-test3.c
index d9d708ae7b..4112231778 100644
--- a/nss/tst-nss-test3.c
+++ b/nss/tst-nss-test3.c
@@ -107,7 +107,11 @@  do_test (void)
   int i;
   struct group *g = NULL;
 
-  __nss_configure_lookup ("group", "test1");
+/* Previously we used __nss_configure_lookup to isolate the test
+   from the host environment and to get it to lookup from our new
+   test1 NSS service module, but now this test is run in a different
+   root filesystem via the test-container support and we directly
+   configure the use of the test1 NSS service.  */
 
   setgrent ();
 
diff --git a/nss/tst-nss-test3.root/etc/nsswitch.conf b/nss/tst-nss-test3.root/etc/nsswitch.conf
new file mode 100644
index 0000000000..5e08fe5eea
--- /dev/null
+++ b/nss/tst-nss-test3.root/etc/nsswitch.conf
@@ -0,0 +1 @@ 
+group	test1
diff --git a/nss/tst-nss-test3.root/files.txt b/nss/tst-nss-test3.root/files.txt
new file mode 100644
index 0000000000..a10beb1e6c
--- /dev/null
+++ b/nss/tst-nss-test3.root/files.txt
@@ -0,0 +1,2 @@ 
+cp $B/nss/libnss_test1.so $L/libnss_test1.so.2
+cp $B/nss/libnss_test2.so $L/libnss_test2.so.2