BIND 10 master, updated. 443be4318110331b2761b8d945dab4f05d765a1a Merge branch 'trac2623'

BIND 10 source code commits bind10-changes at lists.isc.org
Sun Jan 27 23:15:41 UTC 2013


The branch, master has been updated
       via  443be4318110331b2761b8d945dab4f05d765a1a (commit)
       via  8a33bc3ac5aa1fd9e9532b08d9622530c2b5998b (commit)
       via  8f2bbf55feb66a26d6b2c416fd902f488f9848ac (commit)
       via  4a7f643283ece35b839644bc5aeadbdce6766c2d (commit)
       via  ac808e9e265fdafa0182e15da1f5acd1e94d797b (commit)
       via  9b3c959af13111af1fa248c5010aa33ee7e307ee (commit)
       via  6d750aafaabefdec3e2d3bb75343bc520b8ef6b5 (commit)
       via  750c848d04cca9137a34383c6b44bb203e3d2a94 (commit)
       via  c00795e0f9d07c7f0d47f04098addd3144dce7d4 (commit)
       via  388434f8a4c3693e76b95dba9cb9d6ae183a6407 (commit)
      from  0a85e0e55c24798e91bdbbd39bd1fbe97d72f3f8 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 443be4318110331b2761b8d945dab4f05d765a1a
Merge: 8f2bbf5 8a33bc3
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Jan 28 04:45:02 2013 +0530

    Merge branch 'trac2623'

commit 8a33bc3ac5aa1fd9e9532b08d9622530c2b5998b
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Jan 21 01:45:26 2013 +0530

    [2623] Fix test failures in msgq_test.py under Python 3.3

commit 8f2bbf55feb66a26d6b2c416fd902f488f9848ac
Merge: 9b3c959 4a7f643
Author: Mukund Sivaraman <muks at isc.org>
Date:   Mon Jan 28 04:40:47 2013 +0530

    Merge branch 'trac2622'

-----------------------------------------------------------------------

Summary of changes:
 src/bin/dbutil/dbutil.py.in                        |    8 +-
 src/bin/dbutil/tests/dbutil_test.sh.in             |  102 ++++++++++++++------
 src/bin/dbutil/tests/testdata/Makefile.am          |    1 +
 .../tests/testdata/{v2_1.sqlite3 => v2_2.sqlite3}  |  Bin 15360 -> 16384 bytes
 src/bin/msgq/tests/msgq_test.py                    |    6 +-
 src/lib/datasrc/sqlite3_accessor.cc                |    5 +-
 src/lib/python/isc/config/tests/cfgmgr_test.py     |   70 +++++++-------
 .../python/isc/config/tests/config_data_test.py    |   27 +++---
 .../python/isc/config/tests/module_spec_test.py    |    2 +-
 src/lib/python/isc/datasrc/sqlite3_ds.py           |    4 +-
 10 files changed, 135 insertions(+), 90 deletions(-)
 copy src/bin/dbutil/tests/testdata/{v2_1.sqlite3 => v2_2.sqlite3} (91%)

-----------------------------------------------------------------------
diff --git a/src/bin/dbutil/dbutil.py.in b/src/bin/dbutil/dbutil.py.in
index a844484..7a1469c 100755
--- a/src/bin/dbutil/dbutil.py.in
+++ b/src/bin/dbutil/dbutil.py.in
@@ -200,10 +200,16 @@ UPGRADES = [
             "CREATE INDEX nsec3_byhash_and_rdtype ON nsec3 " +
                 "(hash, rdtype)"
         ]
+    },
+
+    {'from': (2, 1), 'to': (2, 2),
+        'statements': [
+            "CREATE INDEX records_byrname_and_rdtype ON records (rname, rdtype)"
+        ]
     }
 
 # To extend this, leave the above statements in place and add another
-# dictionary to the list.  The "from" version should be (2, 1), the "to"
+# dictionary to the list.  The "from" version should be (2, 2), the "to"
 # version whatever the version the update is to, and the SQL statements are
 # the statements required to perform the upgrade.  This way, the upgrade
 # program will be able to upgrade both a V1.0 and a V2.0 database.
diff --git a/src/bin/dbutil/tests/dbutil_test.sh.in b/src/bin/dbutil/tests/dbutil_test.sh.in
index d60f186..4bc9f85 100755
--- a/src/bin/dbutil/tests/dbutil_test.sh.in
+++ b/src/bin/dbutil/tests/dbutil_test.sh.in
@@ -165,7 +165,7 @@ upgrade_ok_test() {
     if [ $? -eq 0 ]
     then
         # Compare schema with the reference
-        get_schema $testdata/v2_1.sqlite3
+        get_schema $testdata/v2_2.sqlite3
         expected_schema=$db_schema
         get_schema $tempfile
         actual_schema=$db_schema
@@ -177,7 +177,7 @@ upgrade_ok_test() {
         fi
 
         # Check the version is set correctly
-        check_version $tempfile "V2.1"
+        check_version $tempfile "V2.2"
 
         # Check that a backup was made
         check_backup $1 $2
@@ -303,26 +303,32 @@ check_version_fail() {
 
 rm -f $tempfile $backupfile
 
-# Test 1 - check that the utility fails if the database does not exist
-echo "1.1. Non-existent database - check"
+# This is the section number that is echoed during tests. It is
+# incremented when each section is run.
+sec=0
+
+# Test: check that the utility fails if the database does not exist
+sec=`expr $sec + 1`
+echo $sec".1. Non-existent database - check"
 ${SHELL} ../run_dbutil.sh --check $tempfile
 failzero $?
 check_no_backup $tempfile $backupfile
 
-echo "1.2. Non-existent database - upgrade"
+echo $sec".2. Non-existent database - upgrade"
 ${SHELL} ../run_dbutil.sh --upgrade --noconfirm $tempfile
 failzero $?
 check_no_backup $tempfile $backupfile
 rm -f $tempfile $backupfile
 
 
-# Test 2 - should fail to check an empty file and fail to upgrade it
-echo "2.1. Database is an empty file - check"
+# Test: should fail to check an empty file and fail to upgrade it
+sec=`expr $sec + 1`
+echo $sec".1. Database is an empty file - check"
 touch $tempfile
 check_version_fail $tempfile $backupfile
 rm -f $tempfile $backupfile
 
-echo "2.2. Database is an empty file - upgrade"
+echo $sec".2. Database is an empty file - upgrade"
 touch $tempfile
 ${SHELL} ../run_dbutil.sh --upgrade --noconfirm $tempfile
 failzero $?
@@ -330,13 +336,13 @@ failzero $?
 check_backup $tempfile $backupfile
 rm -f $tempfile $backupfile
 
-
-echo "3.1. Database is not an SQLite file - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is not an SQLite file - check"
 echo "This is not an sqlite3 database" > $tempfile
 check_version_fail $tempfile $backupfile
 rm -f $tempfile $backupfile
 
-echo "3.2. Database is not an SQLite file - upgrade"
+echo $sec".2. Database is not an SQLite file - upgrade"
 echo "This is not an sqlite3 database" > $tempfile
 ${SHELL} ../run_dbutil.sh --upgrade --noconfirm $tempfile
 failzero $?
@@ -345,81 +351,113 @@ check_backup $tempfile $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "4.1. Database is an SQLite3 file without the schema table - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is an SQLite3 file without the schema table - check"
 check_version_fail $testdata/no_schema.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
-echo "4.1. Database is an SQLite3 file without the schema table - upgrade"
+echo $sec".1. Database is an SQLite3 file without the schema table - upgrade"
 upgrade_fail_test $testdata/no_schema.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "5.1. Database is an old V1 database - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is an old V1 database - check"
 check_version $testdata/old_v1.sqlite3 "V1.0"
 check_no_backup $tempfile $backupfile
 rm -f $tempfile $backupfile
 
-echo "5.2. Database is an old V1 database - upgrade"
+echo $sec".2. Database is an old V1 database - upgrade"
 upgrade_ok_test $testdata/old_v1.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "6.1. Database is new V1 database - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is new V1 database - check"
 check_version $testdata/new_v1.sqlite3 "V1.0"
 check_no_backup $tempfile $backupfile
 rm -f $tempfile $backupfile
 
-echo "6.2. Database is a new V1 database - upgrade"
+echo $sec".2. Database is a new V1 database - upgrade"
 upgrade_ok_test $testdata/new_v1.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "7.1. Database is V2.0 database - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is V2.0 database - check"
 check_version $testdata/v2_0.sqlite3 "V2.0"
 check_no_backup $tempfile $backupfile
 rm -f $tempfile $backupfile
 
-echo "7.2. Database is a V2.0 database - upgrade"
+echo $sec".2. Database is a V2.0 database - upgrade"
 upgrade_ok_test $testdata/v2_0.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "8.1. Database is V2.0 database with empty schema table - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is V2.1 database - check"
+check_version $testdata/v2_1.sqlite3 "V2.1"
+check_no_backup $tempfile $backupfile
+rm -f $tempfile $backupfile
+
+echo $sec".2. Database is a V2.1 database - upgrade"
+upgrade_ok_test $testdata/v2_1.sqlite3 $backupfile
+rm -f $tempfile $backupfile
+
+
+sec=`expr $sec + 1`
+echo $sec".1. Database is V2.2 database - check"
+check_version $testdata/v2_2.sqlite3 "V2.2"
+check_no_backup $tempfile $backupfile
+rm -f $tempfile $backupfile
+
+echo $sec".2. Database is a V2.2 database - upgrade"
+upgrade_ok_test $testdata/v2_2.sqlite3 $backupfile
+rm -f $tempfile $backupfile
+
+
+sec=`expr $sec + 1`
+echo $sec".1. Database is V2.0 database with empty schema table - check"
 check_version_fail $testdata/empty_version.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
-echo "8.2. Database is V2.0 database with empty schema table - upgrade"
+echo $sec".2. Database is V2.0 database with empty schema table - upgrade"
 upgrade_fail_test $testdata/empty_version.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "9.1. Database is V2.0 database with over-full schema table - check"
+sec=`expr $sec + 1`
+echo $sec".1. Database is V2.0 database with over-full schema table - check"
 check_version_fail $testdata/too_many_version.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
-echo "9.2. Database is V2.0 database with over-full schema table - upgrade"
+echo $sec".2. Database is V2.0 database with over-full schema table - upgrade"
 upgrade_fail_test $testdata/too_many_version.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "10.0. Upgrade corrupt database"
+sec=`expr $sec + 1`
+echo $sec". Upgrade corrupt database"
 upgrade_fail_test $testdata/corrupt.sqlite3 $backupfile
 rm -f $tempfile $backupfile
 
 
-echo "11. Record count test"
+sec=`expr $sec + 1`
+echo $sec". Record count test"
 record_count_test $testdata/new_v1.sqlite3
 rm -f $tempfile $backupfile
 
 
-echo "12. Backup file already exists"
+sec=`expr $sec + 1`
+echo $sec". Backup file already exists"
 touch $backupfile
 touch ${backupfile}-1
 upgrade_ok_test $testdata/v2_0.sqlite3 ${backupfile}-2
 rm -f $tempfile $backupfile ${backupfile}-1 ${backupfile}-2
 
 
-echo "13.1 Command-line errors"
+sec=`expr $sec + 1`
+echo $sec".1 Command-line errors"
 copy_file $testdata/old_v1.sqlite3 $tempfile
 ${SHELL} ../run_dbutil.sh $tempfile
 failzero $?
@@ -437,22 +475,22 @@ ${SHELL} ../run_dbutil.sh --upgrade --noconfirm $tempfile $backupfile
 failzero $?
 rm -f $tempfile $backupfile
 
-echo "13.2 verbose flag"
+echo $sec".2 verbose flag"
 copy_file $testdata/old_v1.sqlite3 $tempfile
 ${SHELL} ../run_dbutil.sh --upgrade --noconfirm --verbose $tempfile
 passzero $?
 rm -f $tempfile $backupfile
 
-echo "13.3 Interactive prompt - yes"
+echo $sec".3 Interactive prompt - yes"
 copy_file $testdata/old_v1.sqlite3 $tempfile
 ${SHELL} ../run_dbutil.sh --upgrade $tempfile << .
 Yes
 .
 passzero $?
-check_version $tempfile "V2.1"
+check_version $tempfile "V2.2"
 rm -f $tempfile $backupfile
 
-echo "13.4 Interactive prompt - no"
+echo $sec".4 Interactive prompt - no"
 copy_file $testdata/old_v1.sqlite3 $tempfile
 ${SHELL} ../run_dbutil.sh --upgrade $tempfile << .
 no
@@ -462,7 +500,7 @@ diff $testdata/old_v1.sqlite3 $tempfile > /dev/null
 passzero $?
 rm -f $tempfile $backupfile
 
-echo "13.5 quiet flag"
+echo $sec".5 quiet flag"
 copy_file $testdata/old_v1.sqlite3 $tempfile
 ${SHELL} ../run_dbutil.sh --check --quiet $tempfile 2>&1 | grep .
 failzero $?
diff --git a/src/bin/dbutil/tests/testdata/Makefile.am b/src/bin/dbutil/tests/testdata/Makefile.am
index f4873f4..23149b9 100644
--- a/src/bin/dbutil/tests/testdata/Makefile.am
+++ b/src/bin/dbutil/tests/testdata/Makefile.am
@@ -11,3 +11,4 @@ EXTRA_DIST += README
 EXTRA_DIST += too_many_version.sqlite3
 EXTRA_DIST += v2_0.sqlite3
 EXTRA_DIST += v2_1.sqlite3
+EXTRA_DIST += v2_2.sqlite3
diff --git a/src/bin/dbutil/tests/testdata/v2_2.sqlite3 b/src/bin/dbutil/tests/testdata/v2_2.sqlite3
new file mode 100644
index 0000000..b8d6369
Binary files /dev/null and b/src/bin/dbutil/tests/testdata/v2_2.sqlite3 differ
diff --git a/src/bin/msgq/tests/msgq_test.py b/src/bin/msgq/tests/msgq_test.py
index 00e15d8..88bb022 100644
--- a/src/bin/msgq/tests/msgq_test.py
+++ b/src/bin/msgq/tests/msgq_test.py
@@ -454,9 +454,8 @@ class SendNonblock(unittest.TestCase):
         Two tests are done: one where the error is raised on the 3rd octet,
                             and one on the 23rd.
         """
-        sockerr = socket.error
         for err in [ errno.EAGAIN, errno.EWOULDBLOCK, errno.EINTR ]:
-            sockerr.errno = err
+            sockerr = socket.error(err, 'Socket error')
             self.do_send_with_send_error(3, sockerr)
             self.do_send_with_send_error(23, sockerr)
 
@@ -467,9 +466,8 @@ class SendNonblock(unittest.TestCase):
         Two tests are done: one where the error is raised on the 3rd octet,
                             and one on the 23rd.
         """
-        sockerr = socket.error
         for err in [ errno.EPIPE, errno.ENOBUFS, errno.ECONNRESET ]:
-            sockerr.errno = err
+            sockerr = socket.error(err, 'Socket error')
             self.do_send_with_send_error(3, sockerr, False)
             self.do_send_with_send_error(23, sockerr, False)
 
diff --git a/src/lib/datasrc/sqlite3_accessor.cc b/src/lib/datasrc/sqlite3_accessor.cc
index bd71544..632c271 100644
--- a/src/lib/datasrc/sqlite3_accessor.cc
+++ b/src/lib/datasrc/sqlite3_accessor.cc
@@ -44,7 +44,7 @@ namespace {
 // program may not be taking advantage of features (possibly performance
 // improvements) added to the database.
 const int SQLITE_SCHEMA_MAJOR_VERSION = 2;
-const int SQLITE_SCHEMA_MINOR_VERSION = 1;
+const int SQLITE_SCHEMA_MINOR_VERSION = 2;
 }
 
 namespace isc {
@@ -338,7 +338,7 @@ public:
 const char* const SCHEMA_LIST[] = {
     "CREATE TABLE schema_version (version INTEGER NOT NULL, "
         "minor INTEGER NOT NULL DEFAULT 0)",
-    "INSERT INTO schema_version VALUES (2, 1)",
+    "INSERT INTO schema_version VALUES (2, 2)",
     "CREATE TABLE zones (id INTEGER PRIMARY KEY, "
     "name TEXT NOT NULL COLLATE NOCASE, "
     "rdclass TEXT NOT NULL COLLATE NOCASE DEFAULT 'IN', "
@@ -358,6 +358,7 @@ const char* const SCHEMA_LIST[] = {
     // defining a separate index for rdtype only doesn't work either; SQLite3
     // would then create a temporary B-tree for "ORDER BY").
     "CREATE INDEX records_bytype_and_rname ON records (rdtype, rname)",
+    "CREATE INDEX records_byrname_and_rdtype ON records (rname, rdtype)",
     "CREATE TABLE nsec3 (id INTEGER PRIMARY KEY, zone_id INTEGER NOT NULL, "
         "hash TEXT NOT NULL COLLATE NOCASE, "
         "owner TEXT NOT NULL COLLATE NOCASE, "
diff --git a/src/lib/python/isc/config/tests/cfgmgr_test.py b/src/lib/python/isc/config/tests/cfgmgr_test.py
index 891a7d7..5322901 100644
--- a/src/lib/python/isc/config/tests/cfgmgr_test.py
+++ b/src/lib/python/isc/config/tests/cfgmgr_test.py
@@ -29,7 +29,7 @@ class TestConfigManagerData(unittest.TestCase):
         self.writable_data_path = os.environ['CONFIG_WR_TESTDATA_PATH']
         self.config_manager_data = ConfigManagerData(self.writable_data_path,
                                                      file_name="b10-config.db")
-        self.assert_(self.config_manager_data)
+        self.assertTrue(self.config_manager_data)
 
     def test_abs_file(self):
         """
@@ -170,65 +170,61 @@ class TestConfigManager(unittest.TestCase):
                          cm.config.db_filename)
 
     def test_init(self):
-        self.assert_(self.cm.module_specs == {})
-        self.assert_(self.cm.data_path == self.writable_data_path)
-        self.assert_(self.cm.config != None)
-        self.assert_(self.fake_session.has_subscription("ConfigManager"))
-        self.assert_(self.fake_session.has_subscription("Boss", "ConfigManager"))
+        self.assertEqual(self.cm.module_specs, {})
+        self.assertEqual(self.cm.data_path, self.writable_data_path)
+        self.assertIsNotNone(self.cm.config)
+        self.assertTrue(self.fake_session.has_subscription("ConfigManager"))
+        self.assertTrue(self.fake_session.has_subscription("Boss", "ConfigManager"))
         self.assertFalse(self.cm.running)
 
     def test_notify_boss(self):
         self.cm.notify_boss()
         msg = self.fake_session.get_message("Boss", None)
-        self.assert_(msg)
+        self.assertTrue(msg)
         # this one is actually wrong, but 'current status quo'
         self.assertEqual(msg, {"running": "ConfigManager"})
 
     def test_set_module_spec(self):
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
-        self.assert_(module_spec.get_module_name() not in
-                     self.cm.virtual_modules)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.virtual_modules)
 
     def test_remove_module_spec(self):
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.remove_module_spec(module_spec.get_module_name())
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
-        self.assert_(module_spec.get_module_name() not in
-                     self.cm.virtual_modules)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.virtual_modules)
 
     def test_add_remove_virtual_module(self):
         module_spec = isc.config.module_spec.module_spec_from_file(
             self.data_path + os.sep + "spec1.spec")
         check_func = lambda: True
         # Make sure it's not in there before
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
-        self.assert_(module_spec.get_module_name() not in
-                     self.cm.virtual_modules)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.virtual_modules)
         # Add it there
         self.cm.set_virtual_module(module_spec, check_func)
         # Check it's in there
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         self.assertEqual(self.cm.module_specs[module_spec.get_module_name()],
                       module_spec)
         self.assertEqual(self.cm.virtual_modules[module_spec.get_module_name()],
                       check_func)
         # Remove it again
         self.cm.remove_module_spec(module_spec.get_module_name())
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
-        self.assert_(module_spec.get_module_name() not in
-                     self.cm.virtual_modules)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.virtual_modules)
 
     def test_get_module_spec(self):
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         module_spec2 = self.cm.get_module_spec(module_spec.get_module_name())
         self.assertEqual(module_spec.get_full_spec(), module_spec2)
 
@@ -238,16 +234,16 @@ class TestConfigManager(unittest.TestCase):
         config_spec = self.cm.get_config_spec()
         self.assertEqual(config_spec, {})
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         config_spec = self.cm.get_config_spec()
         self.assertEqual(config_spec, { 'Spec1': None })
         self.cm.remove_module_spec('Spec1')
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec2.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         config_spec = self.cm.get_config_spec()
         self.assertEqual(config_spec['Spec2'], module_spec.get_config_spec())
         config_spec = self.cm.get_config_spec('Spec2')
@@ -258,16 +254,16 @@ class TestConfigManager(unittest.TestCase):
         commands_spec = self.cm.get_commands_spec()
         self.assertEqual(commands_spec, {})
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         commands_spec = self.cm.get_commands_spec()
         self.assertEqual(commands_spec, { 'Spec1': None })
         self.cm.remove_module_spec('Spec1')
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec2.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         commands_spec = self.cm.get_commands_spec()
         self.assertEqual(commands_spec['Spec2'], module_spec.get_commands_spec())
         commands_spec = self.cm.get_commands_spec('Spec2')
@@ -277,16 +273,16 @@ class TestConfigManager(unittest.TestCase):
         statistics_spec = self.cm.get_statistics_spec()
         self.assertEqual(statistics_spec, {})
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec1.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         statistics_spec = self.cm.get_statistics_spec()
         self.assertEqual(statistics_spec, { 'Spec1': None })
         self.cm.remove_module_spec('Spec1')
         module_spec = isc.config.module_spec.module_spec_from_file(self.data_path + os.sep + "spec2.spec")
-        self.assert_(module_spec.get_module_name() not in self.cm.module_specs)
+        self.assertNotIn(module_spec.get_module_name(), self.cm.module_specs)
         self.cm.set_module_spec(module_spec)
-        self.assert_(module_spec.get_module_name() in self.cm.module_specs)
+        self.assertIn(module_spec.get_module_name(), self.cm.module_specs)
         statistics_spec = self.cm.get_statistics_spec()
         self.assertEqual(statistics_spec['Spec2'], module_spec.get_statistics_spec())
         statistics_spec = self.cm.get_statistics_spec('Spec2')
diff --git a/src/lib/python/isc/config/tests/config_data_test.py b/src/lib/python/isc/config/tests/config_data_test.py
index 45feb35..ddeabb6 100644
--- a/src/lib/python/isc/config/tests/config_data_test.py
+++ b/src/lib/python/isc/config/tests/config_data_test.py
@@ -360,8 +360,8 @@ class TestMultiConfigData(unittest.TestCase):
         self.assertFalse(self.mcd.have_specification(module_spec.get_module_name()))
         self.mcd.set_specification(module_spec)
         self.assertTrue(self.mcd.have_specification(module_spec.get_module_name()))
-        self.assert_(module_spec.get_module_name() in self.mcd._specifications)
-        self.assertEquals(module_spec, self.mcd._specifications[module_spec.get_module_name()])
+        self.assertIn(module_spec.get_module_name(), self.mcd._specifications)
+        self.assertEqual(module_spec, self.mcd._specifications[module_spec.get_module_name()])
         self.assertRaises(ConfigDataError, self.mcd.set_specification, "asdf")
         self.mcd.remove_specification(module_spec.get_module_name())
         self.assertFalse(self.mcd.have_specification(module_spec.get_module_name()))
@@ -693,12 +693,15 @@ class TestMultiConfigData(unittest.TestCase):
                            'name': 'Spec32', 'value': None,
                            'modified': False}], maps)
         maps = self.mcd.get_value_maps("/Spec32/named_set_item")
-        self.assertEqual([{'default': True, 'type': 'integer',
-                           'name': 'Spec32/named_set_item/a',
-                           'value': 1, 'modified': False},
-                          {'default': True, 'type': 'integer',
-                           'name': 'Spec32/named_set_item/b',
-                           'value': 2, 'modified': False}], maps)
+        self.assertEqual(len(maps), 2)
+        self.assertIn({'default': True, 'type': 'integer',
+                       'name': 'Spec32/named_set_item/a',
+                       'value': 1, 'modified': False},
+                      maps)
+        self.assertIn({'default': True, 'type': 'integer',
+                       'name': 'Spec32/named_set_item/b',
+                       'value': 2, 'modified': False},
+                      maps)
         maps = self.mcd.get_value_maps("/Spec32/named_set_item/a")
         self.assertEqual([{'default': True, 'type': 'integer',
                            'name': 'Spec32/named_set_item/a',
@@ -829,10 +832,10 @@ class TestMultiConfigData(unittest.TestCase):
                                                       "bbbb": 6})
         config_items = self.mcd.get_config_item_list("/Spec32/named_set_item",
                                                      True)
-        self.assertEqual(['Spec32/named_set_item/aaaa',
-                          'Spec32/named_set_item/aabb',
-                          'Spec32/named_set_item/bbbb',
-                         ], config_items)
+        self.assertEqual(len(config_items), 3)
+        self.assertIn('Spec32/named_set_item/aaaa', config_items)
+        self.assertIn('Spec32/named_set_item/aabb', config_items)
+        self.assertIn('Spec32/named_set_item/bbbb', config_items)
 
         self.mcd.set_value('Spec32/named_set_item', {})
         config_items = self.mcd.get_config_item_list("/Spec32/named_set_item",
diff --git a/src/lib/python/isc/config/tests/module_spec_test.py b/src/lib/python/isc/config/tests/module_spec_test.py
index a2a2daf..4767860 100644
--- a/src/lib/python/isc/config/tests/module_spec_test.py
+++ b/src/lib/python/isc/config/tests/module_spec_test.py
@@ -38,7 +38,7 @@ class TestModuleSpec(unittest.TestCase):
 
     def spec1(self, dd):
         module_spec = dd.get_full_spec()
-        self.assert_('module_name' in module_spec)
+        self.assertIn('module_name', module_spec)
         self.assertEqual(module_spec['module_name'], "Spec1")
         
     def test_open_file_name(self):
diff --git a/src/lib/python/isc/datasrc/sqlite3_ds.py b/src/lib/python/isc/datasrc/sqlite3_ds.py
index dc80afd..19d8581 100644
--- a/src/lib/python/isc/datasrc/sqlite3_ds.py
+++ b/src/lib/python/isc/datasrc/sqlite3_ds.py
@@ -25,7 +25,7 @@ RR_RDATA_INDEX = 7
 
 # Current major and minor versions of schema
 SCHEMA_MAJOR_VERSION = 2
-SCHEMA_MINOR_VERSION = 1
+SCHEMA_MINOR_VERSION = 2
 
 class Sqlite3DSError(Exception):
     """ Define exceptions."""
@@ -73,6 +73,8 @@ def create(cur):
         cur.execute("CREATE INDEX records_byrname ON records (rname)")
         cur.execute("""CREATE INDEX records_bytype_and_rname ON records
                        (rdtype, rname)""")
+        cur.execute("""CREATE INDEX records_byrname_and_rdtype ON records
+                       (rname, rdtype)""")
         cur.execute("""CREATE TABLE nsec3 (id INTEGER PRIMARY KEY,
                     zone_id INTEGER NOT NULL,
                     hash TEXT NOT NULL COLLATE NOCASE,



More information about the bind10-changes mailing list