~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testhashcache.py

  • Committer: Robert Collins
  • Date: 2005-10-06 22:15:52 UTC
  • mfrom: (1185.13.2)
  • mto: This revision was merged to the branch mainline in revision 1420.
  • Revision ID: robertc@robertcollins.net-20051006221552-9b15c96fa504e0ad
mergeĀ fromĀ upstream

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