Merge pull request #49166 from aleksclark/ensure-identical-dump-files

ensure identical md5 sums for gzip schema cache
This commit is contained in:
Jean Boussier 2023-09-06 20:00:59 +02:00 committed by GitHub
commit 9044d35c2f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 22 additions and 0 deletions

@ -471,6 +471,7 @@ def open(filename)
File.atomic_write(filename) do |file|
if File.extname(filename) == ".gz"
zipper = Zlib::GzipWriter.new file
zipper.mtime = 0
yield zipper
zipper.flush
zipper.close

@ -334,6 +334,27 @@ def test_marshal_dump_and_load_with_gzip
tempfile.unlink
end
def test_gzip_dumps_identical
# Create an empty cache.
cache = new_bound_reflection
tempfile_a = Tempfile.new(["schema_cache-", ".dump.gz"])
# Dump it. It should get populated before dumping.
cache.dump_to(tempfile_a.path)
digest_a = Digest::MD5.file(tempfile_a).hexdigest
sleep(1) # ensure timestamp changes
tempfile_b = Tempfile.new(["schema_cache-", ".dump.gz"])
# Dump it. It should get populated before dumping.
cache.dump_to(tempfile_b.path)
digest_b = Digest::MD5.file(tempfile_b).hexdigest
assert_equal digest_a, digest_b
ensure
tempfile_a.unlink
tempfile_b.unlink
end
def test_data_source_exist
assert @cache.data_source_exists?("courses")
assert_not @cache.data_source_exists?("foo")