diff options
| author | Michael Vogt <michael.vogt@ubuntu.com> | 2010-06-25 17:31:28 +0200 |
|---|---|---|
| committer | Michael Vogt <michael.vogt@ubuntu.com> | 2010-06-25 17:31:28 +0200 |
| commit | 340f6a3d54f5705801267f365fb08b5d20228fe6 (patch) | |
| tree | 52d3bd94c02ae9be75fb11bfd423043ef10838cc /tests | |
| parent | d6cc940087ee8897bad4e6a25d04403d28c5dc0a (diff) | |
| parent | 337fec14957b98c01bc61a5b516bcf8cd98ccb82 (diff) | |
| download | python-apt-340f6a3d54f5705801267f365fb08b5d20228fe6.tar.gz | |
* tests/test_apt_cache.py: Test accessing the record of all packages during
iteration. This both ensures that it's well-formatted and structured, and
also that accessing it does not take an inordinate amount of time. This
exposes a severe performance problem when using gzip compressed package
indexes.
* apt/cache.py: When iterating over the cache, do so sorted by package name.
With this we read the the package lists linearly if we need to access the
package records, instead of having to do thousands of random seeks; the
latter is disastrous if we use compressed package indexes, and slower than
necessary for uncompressed indexes.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_apt_cache.py | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/tests/test_apt_cache.py b/tests/test_apt_cache.py index fdcf482d..a00fa08b 100644 --- a/tests/test_apt_cache.py +++ b/tests/test_apt_cache.py @@ -30,5 +30,14 @@ class TestAptCache(unittest.TestCase): self.assertTrue(isinstance(dep.relation, str)) self.assertTrue(dep.pre_depend in (True, False)) + # accessing record should take a reasonable time; in + # particular, when using compressed indexes, it should not use + # tons of seek operations + r = pkg.candidate.record + self.assertEqual(r['Package'], pkg.name) + self.assert_('Version' in r) + self.assert_(len(r['Description']) > 0) + self.assert_(str(r).startswith('Package: %s\n' % pkg.name)) + if __name__ == "__main__": unittest.main() |
