Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
27 changes: 25 additions & 2 deletions gcs/object.py
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@
from google.protobuf import field_mask_pb2, json_format

import testbench
import testbench.common
from google.storage.v2 import storage_pb2

# Lock to prevent race condition while generating metadata versions:
Expand Down Expand Up @@ -115,10 +116,32 @@ def init(
cs = metadata.checksums
if len(cs.md5_hash) != 0 and actual_md5Hash != cs.md5_hash:
testbench.error.mismatch(
"md5Hash", cs.md5_hash, actual_md5Hash, context
"md5Hash", actual_md5Hash, cs.md5_hash, context
)
if cs.HasField("crc32c") and actual_crc32c != cs.crc32c:
testbench.error.mismatch("crc32c", cs.crc32c, actual_crc32c, context)
testbench.error.mismatch("crc32c", actual_crc32c, cs.crc32c, context)

# Check if checksum is present in x_emulator_crc32c field.
if (
"x_emulator_crc32c" in metadata.metadata
and len(metadata.metadata["x_emulator_crc32c"]) != 0
):
got_crc32c_encoded = metadata.metadata["x_emulator_crc32c"]
# Decode to int32.
got_crc32c = testbench.common.rest_crc32c_to_proto(got_crc32c_encoded)
if actual_crc32c != got_crc32c:
testbench.error.mismatch("crc32c", actual_crc32c, got_crc32c, context)

# Check if md5h hash is present in x_emulator_md5 field.
if (
"x_emulator_md5" in metadata.metadata
and len(metadata.metadata["x_emulator_md5"]) != 0
):
got_md5_encoded = metadata.metadata["x_emulator_md5"]
# Decode to bytes.
got_md5 = testbench.common.rest_md5_to_proto(got_md5_encoded)
if actual_md5Hash != got_md5:
testbench.error.mismatch("md5", actual_md5Hash, got_md5, context)
metadata.checksums.md5_hash = actual_md5Hash
metadata.checksums.crc32c = actual_crc32c
metadata.create_time.FromDatetime(timestamp)
Expand Down