~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testhashcache.py

  • Committer: Martin Pool
  • Date: 2005-09-05 08:00:35 UTC
  • Revision ID: mbp@sourcefrog.net-20050905080035-e0439293f8b6b9f9
- start splitting code for xml (de)serialization away from objects
  preparatory to supporting multiple formats by a single library

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