~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/tests/test_hashcache.py

  • Committer: Tarmac
  • Author(s): Vincent Ladeuil
  • Date: 2017-01-30 14:42:05 UTC
  • mfrom: (6620.1.1 trunk)
  • Revision ID: tarmac-20170130144205-r8fh2xpmiuxyozpv
Merge  2.7 into trunk including fix for bug #1657238 [r=vila]

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
# Copyright (C) 2005-2009, 2011 Canonical Ltd
 
1
# Copyright (C) 2005-2011, 2016 Canonical Ltd
2
2
#
3
3
# This program is free software; you can redistribute it and/or modify
4
4
# it under the terms of the GNU General Public License as published by
22
22
from bzrlib.errors import BzrError
23
23
from bzrlib.hashcache import HashCache
24
24
from bzrlib.tests import (
 
25
    TestCaseInTempDir,
 
26
    )
 
27
from bzrlib.tests.features import (
25
28
    OsFifoFeature,
26
 
    TestCaseInTempDir,
27
29
    )
28
30
 
29
31
 
52
54
        """Get correct hash from an empty hashcache"""
53
55
        hc = self.make_hashcache()
54
56
        self.build_tree_contents([('foo', 'hello')])
55
 
        self.assertEquals(hc.get_sha1('foo'),
 
57
        self.assertEqual(hc.get_sha1('foo'),
56
58
                          'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
57
 
        self.assertEquals(hc.miss_count, 1)
58
 
        self.assertEquals(hc.hit_count, 0)
 
59
        self.assertEqual(hc.miss_count, 1)
 
60
        self.assertEqual(hc.hit_count, 0)
59
61
 
60
62
    def test_hashcache_new_file(self):
61
63
        hc = self.make_hashcache()
62
64
        self.build_tree_contents([('foo', 'goodbye')])
63
65
        # now read without pausing; it may not be possible to cache it as its
64
66
        # so new
65
 
        self.assertEquals(hc.get_sha1('foo'), sha1('goodbye'))
 
67
        self.assertEqual(hc.get_sha1('foo'), sha1('goodbye'))
66
68
 
67
69
    def test_hashcache_nonexistent_file(self):
68
70
        hc = self.make_hashcache()
69
 
        self.assertEquals(hc.get_sha1('no-name-yet'), None)
 
71
        self.assertEqual(hc.get_sha1('no-name-yet'), None)
70
72
 
71
73
    def test_hashcache_replaced_file(self):
72
74
        hc = self.make_hashcache()
73
75
        self.build_tree_contents([('foo', 'goodbye')])
74
 
        self.assertEquals(hc.get_sha1('foo'), sha1('goodbye'))
 
76
        self.assertEqual(hc.get_sha1('foo'), sha1('goodbye'))
75
77
        os.remove('foo')
76
 
        self.assertEquals(hc.get_sha1('foo'), None)
 
78
        self.assertEqual(hc.get_sha1('foo'), None)
77
79
        self.build_tree_contents([('foo', 'new content')])
78
 
        self.assertEquals(hc.get_sha1('foo'), sha1('new content'))
 
80
        self.assertEqual(hc.get_sha1('foo'), sha1('new content'))
79
81
 
80
82
    def test_hashcache_not_file(self):
81
83
        hc = self.make_hashcache()
82
84
        self.build_tree(['subdir/'])
83
 
        self.assertEquals(hc.get_sha1('subdir'), None)
 
85
        self.assertEqual(hc.get_sha1('subdir'), None)
84
86
 
85
87
    def test_hashcache_load(self):
86
88
        hc = self.make_hashcache()
87
89
        self.build_tree_contents([('foo', 'contents')])
88
90
        pause()
89
 
        self.assertEquals(hc.get_sha1('foo'), sha1('contents'))
 
91
        self.assertEqual(hc.get_sha1('foo'), sha1('contents'))
90
92
        hc.write()
91
93
        hc = self.reopen_hashcache()
92
 
        self.assertEquals(hc.get_sha1('foo'), sha1('contents'))
93
 
        self.assertEquals(hc.hit_count, 1)
 
94
        self.assertEqual(hc.get_sha1('foo'), sha1('contents'))
 
95
        self.assertEqual(hc.hit_count, 1)
94
96
 
95
97
    def test_hammer_hashcache(self):
96
98
        hc = self.make_hashcache()
106
108
            self.log("iteration %d: %r -> %r",
107
109
                     i, last_content, last_sha1)
108
110
            got_sha1 = hc.get_sha1('foo')
109
 
            self.assertEquals(got_sha1, last_sha1)
 
111
            self.assertEqual(got_sha1, last_sha1)
110
112
            hc.write()
111
113
            hc = self.reopen_hashcache()
112
114
 
171
173
        """A new file gives the right sha1 but misses"""
172
174
        hc = self.make_hashcache()
173
175
        hc.put_file('foo', 'hello')
174
 
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
175
 
        self.assertEquals(hc.miss_count, 1)
176
 
        self.assertEquals(hc.hit_count, 0)
 
176
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
177
        self.assertEqual(hc.miss_count, 1)
 
178
        self.assertEqual(hc.hit_count, 0)
177
179
        # if we try again it's still too new;
178
 
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
179
 
        self.assertEquals(hc.miss_count, 2)
180
 
        self.assertEquals(hc.hit_count, 0)
 
180
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
181
        self.assertEqual(hc.miss_count, 2)
 
182
        self.assertEqual(hc.hit_count, 0)
181
183
 
182
184
    def test_hashcache_old_file(self):
183
185
        """An old file gives the right sha1 and hits"""
185
187
        hc.put_file('foo', 'hello')
186
188
        hc.pretend_to_sleep(20)
187
189
        # file is new; should get the correct hash but miss
188
 
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
189
 
        self.assertEquals(hc.miss_count, 1)
190
 
        self.assertEquals(hc.hit_count, 0)
 
190
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
191
        self.assertEqual(hc.miss_count, 1)
 
192
        self.assertEqual(hc.hit_count, 0)
191
193
        # and can now be hit
192
 
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
193
 
        self.assertEquals(hc.miss_count, 1)
194
 
        self.assertEquals(hc.hit_count, 1)
 
194
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
195
        self.assertEqual(hc.miss_count, 1)
 
196
        self.assertEqual(hc.hit_count, 1)
195
197
        hc.pretend_to_sleep(3)
196
198
        # and again
197
 
        self.assertEquals(hc.get_sha1('foo'), sha1('hello'))
198
 
        self.assertEquals(hc.miss_count, 1)
199
 
        self.assertEquals(hc.hit_count, 2)
 
199
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
200
        self.assertEqual(hc.miss_count, 1)
 
201
        self.assertEqual(hc.hit_count, 2)
200
202
 
201
203
    def test_hashcache_invalidates(self):
202
204
        hc = self.make_hashcache()
204
206
        hc.pretend_to_sleep(20)
205
207
        hc.get_sha1('foo')
206
208
        hc.put_file('foo', 'h1llo')
207
 
        self.assertEquals(hc.get_sha1('foo'), sha1('h1llo'))
208
 
        self.assertEquals(hc.miss_count, 2)
209
 
        self.assertEquals(hc.hit_count, 0)
 
209
        self.assertEqual(hc.get_sha1('foo'), sha1('h1llo'))
 
210
        self.assertEqual(hc.miss_count, 2)
 
211
        self.assertEqual(hc.hit_count, 0)