~bzr-pqm/bzr/bzr.dev

« back to all changes in this revision

Viewing changes to bzrlib/selftest/testhashcache.py

  • Committer: Martin Pool
  • Date: 2005-08-25 07:46:11 UTC
  • Revision ID: mbp@sourcefrog.net-20050825074611-98130ea6d05d9d2a
- add functions to enable and disable default logging, so that we can
  turn it off while running the tests

- default logging gets turned on from the bzr main function so that
  other applications using the library can make their own decisions

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