Changeset 6625 for anuga_core
- Timestamp:
- Mar 26, 2009, 11:15:20 AM (16 years ago)
- Location:
- anuga_core/source/anuga/utilities
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
anuga_core/source/anuga/utilities/system_tools.py
r6620 r6625 10 10 import getpass 11 11 import tarfile 12 import md5 12 13 13 14 … … 387 388 o.extract(member, target_dir) 388 389 o.close() 390 391 392 ## 393 # @brief Return a hex digest (MD5) of a given file. 394 # @param filename Path to the file of interest. 395 # @return A hex digest string (16 bytes). 396 # @note Uses MD5 digest. 397 def get_file_hexdigest(filename): 398 '''Get a hex digest of a file.''' 399 400 BLOCKSIZE = 1024*1024*10 401 402 m = md5.new() 403 fd = open(filename, 'r') 404 405 while True: 406 data = fd.read(BLOCKSIZE) 407 if len(data) == 0: 408 break 409 m.update(data) 410 411 fd.close() 412 return m.hexdigest() 413 414 415 ## 416 # @brief Create a file containing a hexdigest string of a data file. 417 # @param data_file Path to the file to get the hexdigest from. 418 # @param digest_file Path to hexdigest file to create. 419 # @note Uses MD5 digest. 420 def make_digest_file(data_file, digest_file): 421 '''Create a file containing the hex digest string of a data file.''' 422 423 hexdigest = get_file_hexdigest(data_file) 424 fd = open(digest_file, 'w') 425 fd.write(hexdigest) 426 fd.close() 427 428 -
anuga_core/source/anuga/utilities/test_system_tools.py
r6615 r6625 164 164 test_it(source, expected) 165 165 166 166 167 def test_tar_untar_files(self): 167 168 '''Test that tarring & untarring files is OK.''' … … 209 210 os.remove(tar_filename) 210 211 212 213 def test_file_digest(self): 214 '''Test that file digest functions give 'correct' answer. 215 216 Not a good test as we get 'expected_digest' from a digest file, 217 but *does* alert us if the digest algorithm gives us a different string. 218 ''' 219 220 # we expect this digest string from the data file 221 expected_digest = '831a1dde6edd365ec4163a47871fa21b' 222 223 # prepare test directory and filenames 224 tmp_dir = tempfile.mkdtemp() 225 data_file = os.path.join(tmp_dir, 'test.data') 226 digest_file = os.path.join(tmp_dir, 'test.digest') 227 228 # create the data file 229 data_line = 'The quick brown fox jumps over the lazy dog. 0123456789\n' 230 fd = open(data_file, 'w') 231 for line in range(100): 232 fd.write(data_line) 233 fd.close() 234 235 # create the digest file 236 make_digest_file(data_file, digest_file) 237 238 # get digest string for the data file 239 digest = get_file_hexdigest(data_file) 240 241 # check that digest is as expected, string 242 msg = ("Digest string wrong, got '%s', expected '%s'" 243 % (digest, expected_digest)) 244 self.failUnless(expected_digest == digest, msg) 245 246 # check that digest is as expected, file 247 msg = ("Digest file wrong, got '%s', expected '%s'" 248 % (digest, expected_digest)) 249 fd = open(digest_file, 'r') 250 digest = fd.readline() 251 fd.close() 252 self.failUnless(expected_digest == digest, msg) 253 254 211 255 #------------------------------------------------------------- 212 256 if __name__ == "__main__":
Note: See TracChangeset
for help on using the changeset viewer.