/brz/remove-bazaar

To get this branch, use:
bzr branch http://gegoxaren.bato24.eu/bzr/brz/remove-bazaar

« back to all changes in this revision

Viewing changes to breezy/tests/test_hashcache.py

  • Committer: Jelmer Vernooij
  • Date: 2017-11-13 20:08:37 UTC
  • mfrom: (6813.3.1 py3_hashcache)
  • Revision ID: jelmer@jelmer.uk-20171113200837-fo1w7jxpl2gf74dc
Merge lp:~gz/brz/py3_hashcache

Show diffs side-by-side

added added

removed removed

Lines of Context:
53
53
    def test_hashcache_initial_miss(self):
54
54
        """Get correct hash from an empty hashcache"""
55
55
        hc = self.make_hashcache()
56
 
        self.build_tree_contents([('foo', 'hello')])
 
56
        self.build_tree_contents([('foo', b'hello')])
57
57
        self.assertEqual(hc.get_sha1('foo'),
58
 
                          'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
 
58
                          b'aaf4c61ddcc5e8a2dabede0f3b482cd9aea9434d')
59
59
        self.assertEqual(hc.miss_count, 1)
60
60
        self.assertEqual(hc.hit_count, 0)
61
61
 
62
62
    def test_hashcache_new_file(self):
63
63
        hc = self.make_hashcache()
64
 
        self.build_tree_contents([('foo', 'goodbye')])
 
64
        self.build_tree_contents([('foo', b'goodbye')])
65
65
        # now read without pausing; it may not be possible to cache it as its
66
66
        # so new
67
 
        self.assertEqual(hc.get_sha1('foo'), sha1('goodbye'))
 
67
        self.assertEqual(hc.get_sha1('foo'), sha1(b'goodbye'))
68
68
 
69
69
    def test_hashcache_nonexistent_file(self):
70
70
        hc = self.make_hashcache()
72
72
 
73
73
    def test_hashcache_replaced_file(self):
74
74
        hc = self.make_hashcache()
75
 
        self.build_tree_contents([('foo', 'goodbye')])
76
 
        self.assertEqual(hc.get_sha1('foo'), sha1('goodbye'))
 
75
        self.build_tree_contents([('foo', b'goodbye')])
 
76
        self.assertEqual(hc.get_sha1('foo'), sha1(b'goodbye'))
77
77
        os.remove('foo')
78
78
        self.assertEqual(hc.get_sha1('foo'), None)
79
 
        self.build_tree_contents([('foo', 'new content')])
80
 
        self.assertEqual(hc.get_sha1('foo'), sha1('new content'))
 
79
        self.build_tree_contents([('foo', b'new content')])
 
80
        self.assertEqual(hc.get_sha1('foo'), sha1(b'new content'))
81
81
 
82
82
    def test_hashcache_not_file(self):
83
83
        hc = self.make_hashcache()
86
86
 
87
87
    def test_hashcache_load(self):
88
88
        hc = self.make_hashcache()
89
 
        self.build_tree_contents([('foo', 'contents')])
 
89
        self.build_tree_contents([('foo', b'contents')])
90
90
        pause()
91
 
        self.assertEqual(hc.get_sha1('foo'), sha1('contents'))
 
91
        self.assertEqual(hc.get_sha1('foo'), sha1(b'contents'))
92
92
        hc.write()
93
93
        hc = self.reopen_hashcache()
94
 
        self.assertEqual(hc.get_sha1('foo'), sha1('contents'))
 
94
        self.assertEqual(hc.get_sha1('foo'), sha1(b'contents'))
95
95
        self.assertEqual(hc.hit_count, 1)
96
96
 
97
97
    def test_hammer_hashcache(self):
98
98
        hc = self.make_hashcache()
99
99
        for i in range(10000):
100
 
            self.log('start writing at %s', time.time())
101
 
            f = file('foo', 'w')
102
 
            try:
103
 
                last_content = '%08x' % i
 
100
            with open('foo', 'wb') as f:
 
101
                last_content = b'%08x' % i
104
102
                f.write(last_content)
105
 
            finally:
106
 
                f.close()
107
103
            last_sha1 = sha1(last_content)
108
104
            self.log("iteration %d: %r -> %r",
109
105
                     i, last_content, last_sha1)
172
168
    def test_hashcache_miss_new_file(self):
173
169
        """A new file gives the right sha1 but misses"""
174
170
        hc = self.make_hashcache()
175
 
        hc.put_file('foo', 'hello')
176
 
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
171
        hc.put_file('foo', b'hello')
 
172
        self.assertEqual(hc.get_sha1('foo'), sha1(b'hello'))
177
173
        self.assertEqual(hc.miss_count, 1)
178
174
        self.assertEqual(hc.hit_count, 0)
179
175
        # if we try again it's still too new;
180
 
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
176
        self.assertEqual(hc.get_sha1('foo'), sha1(b'hello'))
181
177
        self.assertEqual(hc.miss_count, 2)
182
178
        self.assertEqual(hc.hit_count, 0)
183
179
 
184
180
    def test_hashcache_old_file(self):
185
181
        """An old file gives the right sha1 and hits"""
186
182
        hc = self.make_hashcache()
187
 
        hc.put_file('foo', 'hello')
 
183
        hc.put_file('foo', b'hello')
188
184
        hc.pretend_to_sleep(20)
189
185
        # file is new; should get the correct hash but miss
190
 
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
186
        self.assertEqual(hc.get_sha1('foo'), sha1(b'hello'))
191
187
        self.assertEqual(hc.miss_count, 1)
192
188
        self.assertEqual(hc.hit_count, 0)
193
189
        # and can now be hit
194
 
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
190
        self.assertEqual(hc.get_sha1('foo'), sha1(b'hello'))
195
191
        self.assertEqual(hc.miss_count, 1)
196
192
        self.assertEqual(hc.hit_count, 1)
197
193
        hc.pretend_to_sleep(3)
198
194
        # and again
199
 
        self.assertEqual(hc.get_sha1('foo'), sha1('hello'))
 
195
        self.assertEqual(hc.get_sha1('foo'), sha1(b'hello'))
200
196
        self.assertEqual(hc.miss_count, 1)
201
197
        self.assertEqual(hc.hit_count, 2)
202
198
 
203
199
    def test_hashcache_invalidates(self):
204
200
        hc = self.make_hashcache()
205
 
        hc.put_file('foo', 'hello')
 
201
        hc.put_file('foo', b'hello')
206
202
        hc.pretend_to_sleep(20)
207
203
        hc.get_sha1('foo')
208
 
        hc.put_file('foo', 'h1llo')
209
 
        self.assertEqual(hc.get_sha1('foo'), sha1('h1llo'))
 
204
        hc.put_file('foo', b'h1llo')
 
205
        self.assertEqual(hc.get_sha1('foo'), sha1(b'h1llo'))
210
206
        self.assertEqual(hc.miss_count, 2)
211
207
        self.assertEqual(hc.hit_count, 0)