[Fuego] [PATCH] bind: Add test cases for commands of bind(chroot).

Tim.Bird at sony.com Tim.Bird at sony.com
Fri Oct 12 04:35:09 UTC 2018


Comments and questions inline below...

> -----Original Message-----
> From: Wang Mingyu
Would be nice to get some description of what's going on here
in the commit message body.
But I'm going to apply this without it.

> 
> Signed-off-by: Wang Mingyu <wangmy at cn.fujitsu.com>
> ---
>  engine/tests/Functional.bind/bind_test.sh          |   4 +
>  .../data/bind9/0.168.192.in-addr.arpa.db           |  10 ++
>  .../data/bind9/20.24.10.in-addr.arpa.db            |  10 ++
>  .../data/bind9/246.168.192.in-addr.arpa.db         |  10 ++
>  .../Functional.bind/data/bind9/fjelinux.com.db     |  10 ++
>  engine/tests/Functional.bind/data/bind9/hosts      |   3 +
>  .../data/bind9/linux_test.com.db_ARMV8             |  10 ++
>  .../data/bind9/linux_test.com.db_MPC               |  10 ++
>  .../data/bind9/linux_test.com.db_fedora            |  10 ++
>  .../data/bind9/linux_test.com.db_p1020             |  10 ++
>  .../data/bind9/linux_test.com.db_p2020             |  10 ++
>  .../data/bind9/linux_test.com.db_p4080             |  10 ++
>  .../data/bind9/linux_test.com.db_pandaboard        |  10 ++
>  .../data/bind9/linux_test.com.db_x86               |  10 ++
>  .../data/bind9/linux_test.com.db_x86_64            |  10 ++
>  .../data/bind9/linux_test.com.db_zunq              |  10 ++
>  engine/tests/Functional.bind/data/bind9/named      |   7 ++
>  engine/tests/Functional.bind/data/bind9/named.conf |  48 ++++++++
>  .../tests/Functional.bind/data/bind9/resolv.conf   |   0
>  engine/tests/Functional.bind/data/bind9/rndc.conf  |  34 +++++
>  engine/tests/Functional.bind/data/bind9/rndc.key   |   4 +
>  .../Functional.bind/data/bind9/sysconfig/named     |   7 ++
>  .../data/bind9/sysconfig/named.nochroot            |   7 ++
>  .../Functional.bind/data/bind9/x86_64_named.conf   |  76 ++++++++++++
>  .../tests/Functional.bind/data/linux_test.com.db   |  10 ++
>  .../Functional.bind/data/linux_test.com.db_24      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_27      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_29      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_30      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_31      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_34      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_36      |  10 ++
>  .../Functional.bind/data/linux_test.com.db_38      |  10 ++
>  .../tests/Functional.bind/data/linux_test.com.db_8 |  10 ++
>  engine/tests/Functional.bind/fuego_test.sh         |  33 +++++
>  engine/tests/Functional.bind/parser.py             |  22 ++++
>  engine/tests/Functional.bind/spec.json             |   7 ++
>  .../Functional.bind/tests/bind_chroot_chkconf.sh   |  52 ++++++++
>  .../Functional.bind/tests/bind_chroot_dig1.sh      | 112
> +++++++++++++++++
>  .../Functional.bind/tests/bind_chroot_dig2.sh      | 118
> ++++++++++++++++++
>  .../Functional.bind/tests/bind_chroot_lport.sh     | 130
> +++++++++++++++++++
>  .../tests/Functional.bind/tests/bind_chroot_pid.sh | 137
> +++++++++++++++++++++
>  .../tests/Functional.bind/tests/bind_chroot_ps.sh  |  45 +++++++
>  .../tests/bind_chroot_rndc-confgen.sh              |  57 +++++++++
>  .../Functional.bind/tests/bind_chroot_syslog-ng.sh |  56 +++++++++
>  45 files changed, 1199 insertions(+)
>  create mode 100755 engine/tests/Functional.bind/bind_test.sh
>  create mode 100644 engine/tests/Functional.bind/data/bind9/0.168.192.in-
> addr.arpa.db
>  create mode 100644 engine/tests/Functional.bind/data/bind9/20.24.10.in-
> addr.arpa.db
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/246.168.192.in-addr.arpa.db
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/fjelinux.com.db
>  create mode 100644 engine/tests/Functional.bind/data/bind9/hosts
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_ARMV8
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_MPC
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_fedora
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_p1020
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_p2020
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_p4080
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_pandaboard
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86_64
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/linux_test.com.db_zunq
>  create mode 100644 engine/tests/Functional.bind/data/bind9/named
>  create mode 100644 engine/tests/Functional.bind/data/bind9/named.conf
>  create mode 100644 engine/tests/Functional.bind/data/bind9/resolv.conf
>  create mode 100644 engine/tests/Functional.bind/data/bind9/rndc.conf
>  create mode 100644 engine/tests/Functional.bind/data/bind9/rndc.key
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/sysconfig/named
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/sysconfig/named.nochroot
>  create mode 100644
> engine/tests/Functional.bind/data/bind9/x86_64_named.conf
>  create mode 100644 engine/tests/Functional.bind/data/linux_test.com.db
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_24
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_27
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_29
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_30
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_31
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_34
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_36
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_38
>  create mode 100644
> engine/tests/Functional.bind/data/linux_test.com.db_8
>  create mode 100644 engine/tests/Functional.bind/fuego_test.sh
>  create mode 100644 engine/tests/Functional.bind/parser.py
>  create mode 100644 engine/tests/Functional.bind/spec.json
>  create mode 100644
> engine/tests/Functional.bind/tests/bind_chroot_chkconf.sh
>  create mode 100644
> engine/tests/Functional.bind/tests/bind_chroot_dig1.sh
>  create mode 100644
> engine/tests/Functional.bind/tests/bind_chroot_dig2.sh
>  create mode 100644
> engine/tests/Functional.bind/tests/bind_chroot_lport.sh
>  create mode 100644 engine/tests/Functional.bind/tests/bind_chroot_pid.sh
>  create mode 100644 engine/tests/Functional.bind/tests/bind_chroot_ps.sh
>  create mode 100644 engine/tests/Functional.bind/tests/bind_chroot_rndc-
> confgen.sh
>  create mode 100644
> engine/tests/Functional.bind/tests/bind_chroot_syslog-ng.sh
> 
> diff --git a/engine/tests/Functional.bind/bind_test.sh
> b/engine/tests/Functional.bind/bind_test.sh
> new file mode 100755
> index 0000000..dd5ce37
> --- /dev/null
> +++ b/engine/tests/Functional.bind/bind_test.sh
> @@ -0,0 +1,4 @@
> +#!/bin/sh
> +for i in tests/*.sh; do
> +    sh $i
> +done
> diff --git a/engine/tests/Functional.bind/data/bind9/0.168.192.in-
> addr.arpa.db b/engine/tests/Functional.bind/data/bind9/0.168.192.in-
> addr.arpa.db
> new file mode 100644
> index 0000000..3100047
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/0.168.192.in-addr.arpa.db
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +1		IN PTR		linux-test.com.
> diff --git a/engine/tests/Functional.bind/data/bind9/20.24.10.in-
> addr.arpa.db b/engine/tests/Functional.bind/data/bind9/20.24.10.in-
> addr.arpa.db
> new file mode 100644
> index 0000000..3100047
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/20.24.10.in-addr.arpa.db
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +1		IN PTR		linux-test.com.
> diff --git a/engine/tests/Functional.bind/data/bind9/246.168.192.in-
> addr.arpa.db b/engine/tests/Functional.bind/data/bind9/246.168.192.in-
> addr.arpa.db
> new file mode 100644
> index 0000000..3100047
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/246.168.192.in-addr.arpa.db
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +1		IN PTR		linux-test.com.
> diff --git a/engine/tests/Functional.bind/data/bind9/fjelinux.com.db
> b/engine/tests/Functional.bind/data/bind9/fjelinux.com.db
> new file mode 100644
> index 0000000..45d3d19
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/fjelinux.com.db
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  fjelinux.com. root.fjelinux.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           fjelinux.com.
> +		IN MX 10	fjelinux.com.
> +@		IN A		192.168.0.9
> diff --git a/engine/tests/Functional.bind/data/bind9/hosts
> b/engine/tests/Functional.bind/data/bind9/hosts
> new file mode 100644
> index 0000000..c7b9f21
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/hosts
> @@ -0,0 +1,3 @@
> +# /etc/hosts test
> +#
> +127.0.0.1	localhost.localdomain	localhost
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_ARMV8
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_ARMV8
> new file mode 100644
> index 0000000..880166b
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_ARMV8
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.59
> diff --git a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_MPC
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_MPC
> new file mode 100644
> index 0000000..02b6086
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_MPC
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.87
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_fedora
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_fedora
> new file mode 100644
> index 0000000..7846fd5
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_fedora
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.41
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p1020
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p1020
> new file mode 100644
> index 0000000..f39f5fb
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p1020
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.85
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p2020
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p2020
> new file mode 100644
> index 0000000..f4a8377
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p2020
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.86
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p4080
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p4080
> new file mode 100644
> index 0000000..9f942f2
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_p4080
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.90
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_pandaboard
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_pandaboard
> new file mode 100644
> index 0000000..dc373bb
> --- /dev/null
> +++
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_pandaboard
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.129
> diff --git a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86
> new file mode 100644
> index 0000000..7846fd5
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.41
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86_64
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86_64
> new file mode 100644
> index 0000000..ca836b5
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_x86_64
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.61
> diff --git
> a/engine/tests/Functional.bind/data/bind9/linux_test.com.db_zunq
> b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_zunq
> new file mode 100644
> index 0000000..d24501f
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/linux_test.com.db_zunq
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.136
> diff --git a/engine/tests/Functional.bind/data/bind9/named
> b/engine/tests/Functional.bind/data/bind9/named
> new file mode 100644
> index 0000000..82e6b6b
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/named
> @@ -0,0 +1,7 @@
> +# Currently, you can use the following options:
> +# ROOTDIR="/some/where"  --  will run named in a chroot environment.
> +#                            you must set up the chroot environment before
> +#                            doing this.
> +# OPTIONS="whatever" -- These additional options will be passed to named
> +#                       at startup. Don't add -t here, use ROOTDIR instead.
> +ROOTDIR=/var/named/chroot
> diff --git a/engine/tests/Functional.bind/data/bind9/named.conf
> b/engine/tests/Functional.bind/data/bind9/named.conf
> new file mode 100644
> index 0000000..cbe9b3b
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/named.conf
> @@ -0,0 +1,48 @@
> +// This is the primary configuration file for the BIND DNS server named.
> +//
> +// If you are just adding zones, please do that in /etc/bind/named.conf.local
> +
> +include "/etc/bind/named.conf.options";
> +
> +// prime the server with knowledge of the root servers
> +zone "." {
> +	type hint;
> +	file "/etc/bind/db.root";
> +};
> +
> +// be authoritative for the localhost forward and reverse zones, and for
> +// broadcast zones as per RFC 1912
> +
> +zone "localhost" {
> +	type master;
> +	file "/etc/bind/db.local";
> +};
> +
> +zone "127.in-addr.arpa" {
> +	type master;
> +	file "/etc/bind/db.127";
> +};
> +
> +zone "0.in-addr.arpa" {
> +	type master;
> +	file "/etc/bind/db.0";
> +};
> +
> +//zone "255.in-addr.arpa" {
> +//	type master;
> +//	file "/etc/bind/db.255";
> +//};
> +
> +zone "linux-test.com" IN {
> +	type master;
> +	file "/var/named/linux_test.com.db";
> +	allow-update { none; };
> +};
> +
> +zone "246.168.192.in-addr.arpa" IN {
> +	type master;
> +	file "/var/named/246.168.192.in-addr.arpa.db";
> +	allow-update { none; };
> +};
> +
> +include "/etc/bind/named.conf.local";
> diff --git a/engine/tests/Functional.bind/data/bind9/resolv.conf
> b/engine/tests/Functional.bind/data/bind9/resolv.conf
> new file mode 100644
> index 0000000..e69de29
> diff --git a/engine/tests/Functional.bind/data/bind9/rndc.conf
> b/engine/tests/Functional.bind/data/bind9/rndc.conf
> new file mode 100644
> index 0000000..5e85bfa
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/rndc.conf
> @@ -0,0 +1,34 @@
> +/*
> + * Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC")
> + * Copyright (C) 2000, 2001  Internet Software Consortium.
> + *
> + * Permission to use, copy, modify, and distribute this software for any
> + * purpose with or without fee is hereby granted, provided that the above
> + * copyright notice and this permission notice appear in all copies.
> + *
> + * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL
> WARRANTIES WITH
> + * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
> MERCHANTABILITY
> + * AND FITNESS.  IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL,
> DIRECT,
> + * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
> WHATSOEVER RESULTING FROM
> + * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
> NEGLIGENCE
> + * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
> WITH THE USE OR
> + * PERFORMANCE OF THIS SOFTWARE.
> + */
> +
> +/* $Id: rndc.conf,v 1.7.2.1 2004/03/09 06:09:27 marka Exp $ */
> +
> +/*
> + * Sample rndc configuration file.
> + */
> +
> +options {
> +        default-server  localhost;
> +        default-key     "rndckey";
> +};
> +
> +server localhost {
> +        key     "rndckey";
> +};
> +
> +include "/etc/bind/rndc.key";
> +
> diff --git a/engine/tests/Functional.bind/data/bind9/rndc.key
> b/engine/tests/Functional.bind/data/bind9/rndc.key
> new file mode 100644
> index 0000000..aca0e86
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/rndc.key
> @@ -0,0 +1,4 @@
> +key "rndckey" {
> +	algorithm hmac-md5;
> +	secret "mH48lXo3q1gxhMeeFxFJ9A==";
> +};
> diff --git a/engine/tests/Functional.bind/data/bind9/sysconfig/named
> b/engine/tests/Functional.bind/data/bind9/sysconfig/named
> new file mode 100644
> index 0000000..82e6b6b
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/sysconfig/named
> @@ -0,0 +1,7 @@
> +# Currently, you can use the following options:
> +# ROOTDIR="/some/where"  --  will run named in a chroot environment.
> +#                            you must set up the chroot environment before
> +#                            doing this.
> +# OPTIONS="whatever" -- These additional options will be passed to named
> +#                       at startup. Don't add -t here, use ROOTDIR instead.
> +ROOTDIR=/var/named/chroot
> diff --git
> a/engine/tests/Functional.bind/data/bind9/sysconfig/named.nochroot
> b/engine/tests/Functional.bind/data/bind9/sysconfig/named.nochroot
> new file mode 100644
> index 0000000..595051d
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/sysconfig/named.nochroot
> @@ -0,0 +1,7 @@
> +# Currently, you can use the following options:
> +# ROOTDIR="/some/where"  --  will run named in a chroot environment.
> +#                            you must set up the chroot environment before
> +#                            doing this.
> +# OPTIONS="whatever" -- These additional options will be passed to named
> +#                       at startup. Don't add -t here, use ROOTDIR instead.
> +ROOTDIR=/
> diff --git a/engine/tests/Functional.bind/data/bind9/x86_64_named.conf
> b/engine/tests/Functional.bind/data/bind9/x86_64_named.conf
> new file mode 100644
> index 0000000..8c76e30
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/bind9/x86_64_named.conf
> @@ -0,0 +1,76 @@
> +#
> +# /etc/named.conf
> +#
> +
> +options {
> +
> +	directory "/var/named";
> +	pid-file "/var/run/named/named.pid";
> +
> +	/*
> +	 * If there is a firewall between you and nameservers you want
> +	 * to talk to, you might need to uncomment the query-source
> +	 * directive below.  Previous versions of BIND always asked
> +	 * questions using port 53, but BIND 8.1 uses an unprivileged
> +	 * port by default.
> +	 */
> +
> +	// query-source address * port 53;
> +
> +	allow-query{
> +		127.0.0.1;
> +		192.168.0.0/24;
> +	};
> +
> +	allow-recursion{
> +		127.0.0.1;
> +		192.168.0.0/24;
> +	};
> +
> +	allow-transfer{
> +		127.0.0.1;
> +		192.168.0.0/24;
> +	};
> +
> +	forwarders{
> +		// 192.168.0.1;
> +	};
> +};
> +
> +//
> +// a caching only nameserver config
> +//
> +
> +controls {
> +	inet 127.0.0.1 allow { localhost; } keys { rndckey; };
> +};
> +
> +logging {
> +	category lame-servers { null; };
> +};
> +
> +include "/etc/bind/rndc.key";
> +
> +zone "linux-test.com" IN {
> +	type master;
> +	file "linux_test.com.db";
> +	allow-update { none; };
> +};
> +
> +# zone "0.168.192.in-addr.arpa" IN {
> +#        type master;
> +#        file "0.168.192.in-addr.arpa.db";
> +#        allow-update { none; };
> +# };
> +
> +zone "246.168.192.in-addr.arpa" IN {
> +	type master;
> +	file "246.168.192.in-addr.arpa.db";
> +	allow-update { none; };
> +};
> +
> +#zone "20.24.10.in-addr.arpa" IN {
> +#	type master;
> +#	file "20.24.10.in-addr.arpa.db";
> +#	allow-update { none; };
> +#};
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db
> b/engine/tests/Functional.bind/data/linux_test.com.db
> new file mode 100644
> index 0000000..7846fd5
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.41
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_24
> b/engine/tests/Functional.bind/data/linux_test.com.db_24
> new file mode 100644
> index 0000000..02b6086
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_24
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.87

Does this test require that the device under test be on the 192.168 network?

I'm not familiar enough with named and bind to know.

> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_27
> b/engine/tests/Functional.bind/data/linux_test.com.db_27
> new file mode 100644
> index 0000000..ca836b5
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_27
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.61
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_29
> b/engine/tests/Functional.bind/data/linux_test.com.db_29
> new file mode 100644
> index 0000000..f4a8377
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_29
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.86
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_30
> b/engine/tests/Functional.bind/data/linux_test.com.db_30
> new file mode 100644
> index 0000000..dc373bb
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_30
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.129
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_31
> b/engine/tests/Functional.bind/data/linux_test.com.db_31
> new file mode 100644
> index 0000000..f39f5fb
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_31
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.85
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_34
> b/engine/tests/Functional.bind/data/linux_test.com.db_34
> new file mode 100644
> index 0000000..9f942f2
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_34
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.90
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_36
> b/engine/tests/Functional.bind/data/linux_test.com.db_36
> new file mode 100644
> index 0000000..d24501f
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_36
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.136
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_38
> b/engine/tests/Functional.bind/data/linux_test.com.db_38
> new file mode 100644
> index 0000000..880166b
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_38
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.59
> diff --git a/engine/tests/Functional.bind/data/linux_test.com.db_8
> b/engine/tests/Functional.bind/data/linux_test.com.db_8
> new file mode 100644
> index 0000000..7846fd5
> --- /dev/null
> +++ b/engine/tests/Functional.bind/data/linux_test.com.db_8
> @@ -0,0 +1,10 @@
> +$TTL    86400
> +@               IN SOA  linux-test.com. root.linux-test.com. (
> +                                        42              ; serial (d. adams)
> +                                        3H              ; refresh
> +                                        15M             ; retry
> +                                        1W              ; expiry
> +                                        1D )            ; minimum
> +                IN NS           linux-test.com.
> +		IN MX 10	linux-test.com.
> +@		IN A	        192.168.246.41
> diff --git a/engine/tests/Functional.bind/fuego_test.sh
> b/engine/tests/Functional.bind/fuego_test.sh
> new file mode 100644
> index 0000000..7e4fa2d
> --- /dev/null
> +++ b/engine/tests/Functional.bind/fuego_test.sh
> @@ -0,0 +1,33 @@
> +function test_pre_check {
> +    is_on_target_path named-checkconf PROGRAM_CHECKCONF
> +    assert_define PROGRAM_CHECKCONF "Missing 'bind' program on target
> board"
> +    is_on_target_path dig PROGRAM_DIG
> +    assert_define PROGRAM_DIG "Missing 'dig' program on target board"
> +    is_on_target_path named PROGRAM_NAMED
> +    assert_define PROGRAM_NAMED "Missing 'named' program on target
> board"
> +    is_on_target_path netstat PROGRAM_NETSTAT
> +    assert_define PROGRAM_NETSTAT "Missing 'netstat' program on target
> board"
> +    is_on_target_path rndc-confgen PROGRAM_CONFGEN
> +    assert_define PROGRAM_CONFGEN "Missing 'rndc-confgen' program on
> target board"
> +    is_on_target_path named-checkzone PROGRAM_CHECKZONE
> +    assert_define PROGRAM_CHECKZONE "Missing 'named-checkzone'
> program on target board"

Would be good to check for pgrep here.  It is not a command that is common
to some of the very low-end systems, and it is used extensively throughout
the subtests.

It might be possible to write a simple shell function to perform the same
operation as pgrep (at least the way it is used now, which is limited
to just grep'ping ps for a single program name (ie - not using any of the
flags for filtering the process list by other attributes).

This would be a good candidate to put into fuego_board_function_lib.sh,
to provide this feature if pgrep is not present on a board.  (Then we wouldn't
be dependent on pgrep being present).

> +}
> +
> +function test_deploy {
> +    put $TEST_HOME/bind_test.sh $BOARD_TESTDIR/fuego.$TESTDIR/
> +    put $FUEGO_CORE/engine/scripts/fuego_board_function_lib.sh
> $BOARD_TESTDIR/fuego.$TESTDIR
> +    put -r $TEST_HOME/tests $BOARD_TESTDIR/fuego.$TESTDIR/
> +    put -r $TEST_HOME/data $BOARD_TESTDIR/fuego.$TESTDIR/
> +}
> +
> +function test_run {
> +    report "cd $BOARD_TESTDIR/fuego.$TESTDIR;\
> +    export tst_bind_file=246.168.192.in-addr.arpa.db;\

will this work on a board on any network?  Or does the board being
tested have to be on a 192.168.246 network?


> +    export test_target_conf=x86_64;\
> +    export remotehost=$IPADDR;\
> +    ./bind_test.sh"
> +}
> +
> +function test_processing {
> +    log_compare "$TESTDIR" "0" "TEST-FAIL" "n"
> +}
> diff --git a/engine/tests/Functional.bind/parser.py
> b/engine/tests/Functional.bind/parser.py
> new file mode 100644
> index 0000000..d85abd7
> --- /dev/null
> +++ b/engine/tests/Functional.bind/parser.py
> @@ -0,0 +1,22 @@
> +#!/usr/bin/python
> +# See common.py for description of command-line arguments
> +
> +import os, sys, collections
> +
> +sys.path.insert(0, os.environ['FUEGO_CORE'] + '/engine/scripts/parser')
> +import common as plib
> +
> +measurements = {}
> +measurements = collections.OrderedDict()
> +
> +regex_string = '^ -> (.*): TEST-(.*)$'
> +matches = plib.parse_log(regex_string)
> +
> +if matches:
> +    for m in matches:
> +        measurements['default.' + m[0]] = 'PASS' if m[1] == 'PASS' else 'FAIL'
> +
> +# split the output for each testcase
> +plib.split_output_per_testcase(regex_string, measurements)
> +
> +sys.exit(plib.process(measurements))
> diff --git a/engine/tests/Functional.bind/spec.json
> b/engine/tests/Functional.bind/spec.json
> new file mode 100644
> index 0000000..00a56f9
> --- /dev/null
> +++ b/engine/tests/Functional.bind/spec.json
> @@ -0,0 +1,7 @@
> +{
> +    "testName": "Functional.bind",
> +    "specs": {
> +        "default": {}
> +    }
> +}
> +
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_chkconf.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_chkconf.sh
> new file mode 100644
> index 0000000..5a6fbb7
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_chkconf.sh
> @@ -0,0 +1,52 @@
> +#!/bin/sh
> +
> +#  After running the/etc/named.conf to the target, run the named
> checkconf command in the chroot environment to verify the normal
> termination.
> +
> +test="chroot_chkconf"
> +
> +kill -9 $(pgrep named)

Could this be accomplished with "killall -9 named"?
I believe Fuego requires killall, but not pgrep, on boards
under test.

It would be good to record here whether named was already running,
and start it again (after restoring the configuration files), so that the
machine is left in the same state it was in before the test started.

> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +cp /etc/sysconfig/named /etc/sysconfig/named_bak
> +cp data/bind9/sysconfig/named /etc/sysconfig/named
> +
> +if [ ! -f /var/named/chroot/etc/bind/named.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/named.conf
> +fi
> +
> +cp data/bind9/named.conf /var/named/chroot/etc/bind/named.conf
> +
> +if named-checkconf -t /var/named/chroot
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +rm -rf /var/named

Does this remove anything from the board that this test did not
put there?  If so, that's bad.  We should try to leave the board in
the same state we left it.  If /var/named existed before this test
was run, we should not be destroying it at the end of this test.


> +mv /etc/sysconfig/named_bak /etc/sysconfig/named
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_dig1.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_dig1.sh
> new file mode 100644
> index 0000000..ccd261d
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_dig1.sh
> @@ -0,0 +1,112 @@
> +#!/bin/sh
> +
> +#  In the target start named chroot, and confirm that an IP address is pulled
> from the name.
> +
> +test="chroot_dig1"
> +
> +kill -9 $(pgrep named)
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +if [ ! -f /etc/resolv.conf ]
> +then
> +    touch /etc/resolv.conf
> +fi
> +
> +cp /etc/resolv.conf /etc/resolv.conf_bak
> +cp data/bind9/resolv.conf /etc/resolv.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/named.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/named.conf
> +fi
> +
> +cp data/bind9/named.conf /var/named/chroot/etc/bind/named.conf
> +
> +if [ ! -f /etc/bind/named.conf ]
> +then
> +    touch /etc/bind/named.conf
> +fi
> +mv /etc/bind/named.conf /etc/bind/named.conf_bak
> +ln -s /var/named/chroot/etc/bind/named.conf /etc/bind/named.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.conf
> +fi
> +cp data/bind9/rndc.conf /var/named/chroot/etc/bind/rndc.conf
> +
> +if [ ! -f /etc/bind/rndc.conf ]
> +then
> +    touch /etc/bind/rndc.conf
> +fi
> +mv /etc/bind/rndc.conf /etc/bind/rndc.conf_bak
> +ln -s /var/named/chroot/etc/bind/rndc.conf /etc/bind/rndc.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.key ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.key
> +fi
> +cp data/bind9/rndc.key /var/named/chroot/etc/bind/rndc.key
> +
> +if [ ! -f /etc/bind/rndc.key ]
> +then
> +    touch /etc/bind/rndc.key
> +fi
> +mv /etc/bind/rndc.key /etc/bind/rndc.key_bak
> +ln -s /var/named/chroot/etc/bind/rndc.key /etc/bind/rndc.key
> +
> +cp data/bind9/$tst_bind_file
> /var/named/chroot/var/named/$tst_bind_file
> +cp data/bind9/linux_test.com.db_$test_target_conf
> /var/named/chroot/var/named/linux_test.com.db
> +if [ ! -f /etc/hosts ]
> +then
> +    touch /etc/hosts
> +fi
> +cp /etc/hosts /etc/hosts_bak
> +cp data/bind9/hosts /etc/hosts
> +
> +restore_target() {
> +    rm -rf /var/named
> +    mv /etc/resolv.conf_bak /etc/resolv.conf
> +    mv /etc/hosts_bak /etc/hosts
> +    mv /etc/bind/named.conf_bak /etc/bind/named.conf
> +    mv /etc/bind/rndc.conf_bak /etc/bind/rndc.conf
> +    mv /etc/bind/rndc.key_bak /etc/bind/rndc.key
> +    chown root.named /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf

Does this test require root privileges to perform all these
operations (particularly the chown)?  If so, there should
be a NEED_ROOT=1 in fuego_test.sh to indicate this.

> +    chmod 644 /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +}
> +
> +named -t /var/named/chroot
> +
> +if dig linux-test.com | grep $remotehost
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +kill -9 $(pgrep named)
> +restore_target
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_dig2.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_dig2.sh
> new file mode 100644
> index 0000000..bbeb981
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_dig2.sh
> @@ -0,0 +1,118 @@
> +#!/bin/sh
> +
> +#  In the target start named chroot, and confirm that an IP address is pulled
> from the name.
> +
> +test="chroot_dig2"
> +
> +kill -9 $(pgrep named)
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +cp /etc/sysconfig/named /etc/sysconfig/named_bak
> +cp data/bind9/sysconfig/named /etc/sysconfig/named
> +
> +if [ ! -f /etc/resolv.conf ]
> +then
> +    touch /etc/resolv.conf
> +fi
> +
> +cp /etc/resolv.conf /etc/resolv.conf_bak
> +cp data/bind9/resolv.conf /etc/resolv.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/named.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/named.conf
> +fi
> +
> +cp data/bind9/named.conf /var/named/chroot/etc/bind/named.conf
> +
> +if [ ! -f /etc/bind/named.conf ]
> +then
> +    touch /etc/bind/named.conf
> +fi
> +mv /etc/bind/named.conf /etc/bind/named.conf_bak
> +ln -s /var/named/chroot/etc/bind/named.conf /etc/bind/named.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.conf
> +fi
> +cp data/bind9/rndc.conf /var/named/chroot/etc/bind/rndc.conf
> +
> +if [ ! -f /etc/bind/rndc.conf ]
> +then
> +    touch /etc/bind/rndc.conf
> +fi
> +mv /etc/bind/rndc.conf /etc/bind/rndc.conf_bak
> +ln -s /var/named/chroot/etc/bind/rndc.conf /etc/bind/rndc.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.key ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.key
> +fi
> +cp data/bind9/rndc.key /var/named/chroot/etc/bind/rndc.key
> +
> +if [ ! -f /etc/bind/rndc.key ]
> +then
> +    touch /etc/bind/rndc.key
> +fi
> +mv /etc/bind/rndc.key /etc/bind/rndc.key_bak
> +ln -s /var/named/chroot/etc/bind/rndc.key /etc/bind/rndc.key
> +
> +cp data/bind9/$tst_bind_file
> /var/named/chroot/var/named/$tst_bind_file
> +cp data/bind9/linux_test.com.db_$test_target_conf
> /var/named/chroot/var/named/linux_test.com.db
> +if [ ! -f /etc/hosts ]
> +then
> +    touch /etc/hosts
> +fi
> +cp /etc/hosts /etc/hosts_bak
> +cp data/bind9/hosts /etc/hosts
> +
> +restore_target() {
> +    rm -rf /var/named
> +    mv /etc/sysconfig/named_bak /etc/sysconfig/named
> +    mv /etc/resolv.conf_bak /etc/resolv.conf
> +    mv /etc/hosts_bak /etc/hosts
> +    mv /etc/bind/named.conf_bak /etc/bind/named.conf
> +    mv /etc/bind/rndc.conf_bak /etc/bind/rndc.conf
> +    mv /etc/bind/rndc.key_bak /etc/bind/rndc.key
> +    chown root.named /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +    chmod 644 /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +}
> +
> +named -t /var/named/chroot
> +
> +sleep 5
> +
> +if dig -x $remotehost | grep "linux-test.com"
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +kill -9 $(pgrep named)
> +restore_target

If named was running before this test started, it should be restarted
when the test finishes, after all the configuration files have been restored.


> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_lport.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_lport.sh
> new file mode 100644
> index 0000000..88456c0
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_lport.sh
> @@ -0,0 +1,130 @@
> +#!/bin/sh
> +
> +#  In the target start named chroot, and confirm Listening port "53" "953".
> +
> +test="chroot_lport"
> +
> +kill -9 $(pgrep named)
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +cp /etc/sysconfig/named /etc/sysconfig/named_bak
> +cp data/bind9/sysconfig/named /etc/sysconfig/named
> +
> +if [ ! -f /etc/resolv.conf ]
> +then
> +    touch /etc/resolv.conf
> +fi
> +
> +cp /etc/resolv.conf /etc/resolv.conf_bak
> +cp data/bind9/resolv.conf /etc/resolv.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/named.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/named.conf
> +fi
> +
> +cp /var/named/chroot/etc/bind/named.conf
> /var/named/chroot/etc/bind/named.conf_bak
> +cp data/bind9/named.conf /var/named/chroot/etc/bind/named.conf
> +
> +if [ ! -f /etc/bind/named.conf ]
> +then
> +    touch /etc/bind/named.conf
> +fi
> +mv /etc/bind/named.conf /etc/bind/named.conf_bak
> +ln -s /var/named/chroot/etc/bind/named.conf /etc/bind/named.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.conf
> +fi
> +cp /var/named/chroot/etc/bind/rndc.conf
> /var/named/chroot/etc/bind/rndc.conf_bak
> +cp data/bind9/rndc.conf /var/named/chroot/etc/bind/rndc.conf
> +
> +if [ ! -f /etc/bind/rndc.conf ]
> +then
> +    touch /etc/bind/rndc.conf
> +fi
> +mv /etc/bind/rndc.conf /etc/bind/rndc.conf_bak
> +ln -s /var/named/chroot/etc/bind/rndc.conf /etc/bind/rndc.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.key ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.key
> +fi
> +cp /var/named/chroot/etc/bind/rndc.key
> /var/named/chroot/etc/bind/rndc.key_bak
> +cp data/bind9/rndc.key /var/named/chroot/etc/bind/rndc.key
> +
> +if [ ! -f /etc/bind/rndc.key ]
> +then
> +    touch /etc/bind/rndc.key
> +fi
> +mv /etc/bind/rndc.key /etc/bind/rndc.key_bak
> +ln -s /var/named/chroot/etc/bind/rndc.key /etc/bind/rndc.key
> +
> +cp data/bind9/$tst_bind_file
> /var/named/chroot/var/named/$tst_bind_file
> +cp data/bind9/linux_test.com.db_$test_target_conf
> /var/named/chroot/var/named/linux_test.com.db
> +if [ ! -f /etc/hosts ]
> +then
> +    touch /etc/hosts
> +fi
> +cp /etc/hosts /etc/hosts_bak
> +cp data/bind9/hosts /etc/hosts
> +
> +restore_target() {
> +    rm -rf /var/named
> +    mv /etc/sysconfig/named_bak /etc/sysconfig/named
> +    mv /etc/resolv.conf_bak /etc/resolv.conf
> +    mv /etc/hosts_bak /etc/hosts
> +    mv /etc/bind/named.conf_bak /etc/bind/named.conf
> +    mv /etc/bind/rndc.conf_bak /etc/bind/rndc.conf
> +    mv /etc/bind/rndc.key_bak /etc/bind/rndc.key
> +    chown root.named /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +    chmod 644 /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +}
> +
> +named -t /var/named/chroot
> +
> +if netstat -ln | grep ":53"
> +then
> +    echo " -> port 53 is active."
> +else
> +    echo " -> port 53 is not active."
> +    echo " -> $test: TEST-FAIL"
> +    kill -9 $(pgrep named)
> +    restore_target
> +    exit
> +fi
> +
> +if netstat -ln | grep ":953"
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +kill -9 $(pgrep named)
> +restore_target
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_pid.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_pid.sh
> new file mode 100644
> index 0000000..70f872b
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_pid.sh
> @@ -0,0 +1,137 @@
> +#!/bin/sh
> +
> +#  In the target start named chroot, and confirm the process file id.
> +
> +test="chroot_pid"
> +
> +killall named
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +if [ -f /var/named/chroot/var/run/named/named.pid ]
> +then
> +    rm -f /var/named/chroot/var/run/named/named.pid
> +fi
> +
> +cp /etc/sysconfig/named /etc/sysconfig/named_bak
> +cp data/bind9/sysconfig/named /etc/sysconfig/named
> +
> +if [ ! -f /etc/resolv.conf ]
> +then
> +    touch /etc/resolv.conf
> +fi
> +
> +cp /etc/resolv.conf /etc/resolv.conf_bak
> +cp data/bind9/resolv.conf /etc/resolv.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/named.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/named.conf
> +fi
> +
> +cp /var/named/chroot/etc/bind/named.conf
> /var/named/chroot/etc/bind/named.conf_bak
> +cp data/bind9/named.conf /var/named/chroot/etc/bind/named.conf
> +
> +if [ ! -f /etc/bind/named.conf ]
> +then
> +    touch /etc/bind/named.conf
> +fi
> +mv /etc/bind/named.conf /etc/bind/named.conf_bak
> +ln -s /var/named/chroot/etc/bind/named.conf /etc/bind/named.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.conf ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.conf
> +fi
> +cp /var/named/chroot/etc/bind/rndc.conf
> /var/named/chroot/etc/bind/rndc.conf_bak
> +cp data/bind9/rndc.conf /var/named/chroot/etc/bind/rndc.conf
> +
> +if [ ! -f /etc/bind/rndc.conf ]
> +then
> +    touch /etc/bind/rndc.conf
> +fi
> +mv /etc/bind/rndc.conf /etc/bind/rndc.conf_bak
> +ln -s /var/named/chroot/etc/bind/rndc.conf /etc/bind/rndc.conf
> +
> +if [ ! -f /var/named/chroot/etc/bind/rndc.key ]
> +then
> +    touch /var/named/chroot/etc/bind/rndc.key
> +fi
> +cp /var/named/chroot/etc/bind/rndc.key
> /var/named/chroot/etc/bind/rndc.key_bak
> +cp data/bind9/rndc.key /var/named/chroot/etc/bind/rndc.key
> +
> +if [ ! -f /etc/bind/rndc.key ]
> +then
> +    touch /etc/bind/rndc.key
> +fi
> +mv /etc/bind/rndc.key /etc/bind/rndc.key_bak
> +ln -s /var/named/chroot/etc/bind/rndc.key /etc/bind/rndc.key
> +
> +cp data/bind9/$tst_bind_file
> /var/named/chroot/var/named/$tst_bind_file
> +cp data/bind9/linux_test.com.db_$test_target_conf
> /var/named/chroot/var/named/linux_test.com.db
> +if [ ! -f /etc/hosts ]
> +then
> +    touch /etc/hosts
> +fi
> +mv /etc/hosts /etc/hosts_bak
> +cp data/bind9/hosts /etc/hosts
> +
> +restore_target() {
> +    rm -rf /var/named
> +    mv /etc/sysconfig/named_bak /etc/sysconfig/named
> +    mv /etc/resolv.conf_bak /etc/resolv.conf
> +    mv /etc/hosts_bak /etc/hosts
> +    mv /etc/bind/named.conf_bak /etc/bind/named.conf
> +    mv /etc/bind/rndc.conf_bak /etc/bind/rndc.conf
> +    mv /etc/bind/rndc.key_bak /etc/bind/rndc.key
> +    chown root.named /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +    chmod 644 /etc/bind/rndc.key /etc/bind/rndc.conf
> /etc/bind/named.conf
> +}
> +
> +named -t /var/named/chroot
> +
> +if ls /var/named/chroot/var/run/named/named.pid
> +then
> +    echo " -> pid file is exist."
> +else
> +    echo " -> pid file is not exist."
> +    echo " -> $test: TEST-FAIL"
> +    killall named
> +    restore_target
> +    exit
> +fi
> +
> +killall named
> +
> +sleep 5
> +
> +if test -f /var/named/chroot/var/run/named/named.pid
> +then
> +    echo " -> $test: TEST-FAIL"
> +else
> +    echo " -> $test: TEST-PASS"
> +fi
> +restore_target
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_ps.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_ps.sh
> new file mode 100644
> index 0000000..d99c3cb
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_ps.sh
> @@ -0,0 +1,45 @@
> +#!/bin/sh
> +
> +#  In the target start named chroot, and confirm the process condition by
> command ps.
> +
> +test="chroot_ps"
> +
> +kill -9 $(pgrep named)
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +named -t /var/named/chroot
> +
> +if ps aux | grep "[/]var/named/chroot"
> +then
> +    echo " -> get the process of named."
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> can't get the process of named."
> +    echo " -> $test: TEST-FAIL"
> +fi
> +kill -9 $(pgrep named)
> +rm -rf /var/named
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_rndc-confgen.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_rndc-confgen.sh
> new file mode 100644
> index 0000000..be1919d
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_rndc-confgen.sh
> @@ -0,0 +1,57 @@
> +#!/bin/sh
> +
> +#  Run the rndc-confgen command in the chroot environment to find the
> rndc.key file.
> +
> +test="chroot_rndc-confgen"
> +
> +kill -9 $(pgrep named)
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +cp /etc/sysconfig/named /etc/sysconfig/named_bak
> +cp data/bind9/sysconfig/named /etc/sysconfig/named
> +
> +if [ -f /etc/bind/rndc.key ]
> +then
> +    mv /etc/bind/rndc.key /etc/bind/rndc.key_bak
> +fi
> +
> +if [ -f /var/named/chroot/etc/bind/rndc.key ]
> +then
> +    rm /var/named/chroot/etc/bind/rndc.key
> +fi
> +
> +rndc-confgen -a -k rndckey -t /var/named/chroot
> +if ls /var/named/chroot/etc/bind/rndc.key
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +
> +rm -rf /var/named
> +mv /etc/sysconfig/named_bak /etc/sysconfig/named
> +mv /etc/bind/rndc.key_bak /etc/bind/rndc.key
> diff --git a/engine/tests/Functional.bind/tests/bind_chroot_syslog-ng.sh
> b/engine/tests/Functional.bind/tests/bind_chroot_syslog-ng.sh
> new file mode 100644
> index 0000000..195410f
> --- /dev/null
> +++ b/engine/tests/Functional.bind/tests/bind_chroot_syslog-ng.sh
> @@ -0,0 +1,56 @@
> +#!/bin/sh
> +
> +#  Launch named chroot with the target and check if syslogis exist.
> +
> +test="chroot_syslog-ng"
> +
> +kill -9 $(pgrep named)
> +
> +. ./fuego_board_function_lib.sh
> +
> +set_init_manager
> +
> +exec_service_on_target syslog-ng stop
> +
> +if [ -f /var/log/syslog ]
> +then
> +    mv /var/log/syslog /var/log/syslog_bak
> +fi
> +
> +if [ ! -d /var/named/chroot/etc/bind ]
> +then
> +    mkdir -p /var/named/chroot/etc/bind
> +fi
> +
> +if [ ! $(ls /var/named/chroot/etc/bind/) ]
> +then
> +    cp -f /etc/bind/* /var/named/chroot/etc/bind/
> +fi
> +
> +if [ ! -d /var/named/chroot/var/named ]
> +then
> +    mkdir -p /var/named/chroot/var/named
> +fi
> +
> +if [ ! -d /var/named/chroot/var/cache/bind ]
> +then
> +    mkdir -p /var/named/chroot/var/cache/bind
> +fi
> +
> +if [ ! -d /var/named/chroot/var/run/named ]
> +then
> +    mkdir -p /var/named/chroot/var/run/named
> +fi
> +
> +exec_service_on_target syslog-ng restart
> +
> +named -t /var/named/chroot
> +
> +if cat /var/log/syslog | grep "starting up"
> +then
> +    echo " -> $test: TEST-PASS"
> +else
> +    echo " -> $test: TEST-FAIL"
> +fi
> +kill -9 $(pgrep named)
> +rm -rf /var/named
> --
> 1.8.3.1

Overall, this is a nice test of named functionality.  Despite the issues I have with
some parts, I'm going to apply it.

However, please answer my questions above, and try to fix the issues I've raised
in a new patch on top of this one.

Thanks.  Applied.
 -- Tim



More information about the Fuego mailing list