~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testhashcache.py

  • Committer: Robert Collins
  • Date: 2005-08-25 12:46:42 UTC
  • mfrom: (1116)
  • mto: (974.1.50) (1185.1.10) (1092.3.1)
  • mto: This revision was merged to the branch mainline in revision 1139.
  • Revision ID: robertc@robertcollins.net-20050825124642-45ed1cd74db10370
merge from mpool

Show diffs side-by-side

added added

removed removed

Lines of Context:
14
14
# along with this program; if not, write to the Free Software
15
15
# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
16
16
 
17
 
import os
18
 
import time
19
 
from bzrlib.selftest import TestCaseInTempDir
 
17
from bzrlib.selftest import InTempDir
20
18
 
21
19
 
22
20
 
26
24
 
27
25
 
28
26
def pause():
29
 
    if False:
30
 
        return
31
 
    if os.name == 'nt':
32
 
        time.sleep(3)
33
 
        return
 
27
    import time
34
28
    # allow it to stabilize
35
29
    start = int(time.time())
36
30
    while int(time.time()) == start:
37
31
        time.sleep(0.2)
38
32
    
39
33
 
40
 
class TestHashCache(TestCaseInTempDir):
 
34
class TestHashCache(InTempDir):
41
35
 
42
36
    def test_hashcache(self):
43
37
        """Functional tests for hashcache"""
44
38
        from bzrlib.hashcache import HashCache
45
39
        import os
 
40
        import time
46
41
 
47
42
        # make a dummy bzr directory just to hold the cache
48
43
        os.mkdir('.bzr')
60
55
        # check we hit without re-reading
61
56
        self.assertEquals(hc.get_sha1('foo'),
62
57
                          'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
63
 
        ##self.assertEquals(hc.miss_count, 1)
64
 
        ##self.assertEquals(hc.hit_count, 1)
 
58
        self.assertEquals(hc.miss_count, 1)
 
59
        self.assertEquals(hc.hit_count, 1)
65
60
 
66
61
        # check again without re-reading
67
62
        self.assertEquals(hc.get_sha1('foo'),
68
63
                          'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
69
 
        ##self.assertEquals(hc.miss_count, 1)
70
 
        ##self.assertEquals(hc.hit_count, 2)
 
64
        self.assertEquals(hc.miss_count, 1)
 
65
        self.assertEquals(hc.hit_count, 2)
71
66
 
72
67
        # write new file and make sure it is seen
73
68
        file('foo', 'wb').write('goodbye')
74
69
        pause()
75
70
        self.assertEquals(hc.get_sha1('foo'),
76
71
                          '3c8ec4874488f6090a157b014ce3397ca8e06d4f')
77
 
        ##self.assertEquals(hc.miss_count, 2)
 
72
        self.assertEquals(hc.miss_count, 2)
78
73
 
79
74
        # quickly write new file of same size and make sure it is seen
80
75
        # this may rely on detection of timestamps that are too close
100
95
 
101
96
        # should now be safe to cache it if we reread them
102
97
        self.assertEquals(hc.get_sha1('foo'), sha1('g00dbye'))
103
 
        ##self.assertEquals(len(hc._cache), 1)
 
98
        self.assertEquals(len(hc._cache), 1)
104
99
        self.assertEquals(hc.get_sha1('foo2'), sha1('new content'))
105
 
        ##self.assertEquals(len(hc._cache), 2)
 
100
        self.assertEquals(len(hc._cache), 2)
106
101
 
107
102
        # write out, read back in and check that we don't need to
108
103
        # re-read any files
112
107
        hc = HashCache('.')
113
108
        hc.read()
114
109
 
115
 
        ##self.assertEquals(len(hc._cache), 2)
 
110
        self.assertEquals(len(hc._cache), 2)
116
111
        self.assertEquals(hc.get_sha1('foo'), sha1('g00dbye'))
117
 
        ##self.assertEquals(hc.hit_count, 1)
118
 
        ##self.assertEquals(hc.miss_count, 0)
 
112
        self.assertEquals(hc.hit_count, 1)
 
113
        self.assertEquals(hc.miss_count, 0)
119
114
        self.assertEquals(hc.get_sha1('foo2'), sha1('new content'))