Skip to content

Commit b5c8fec

Browse files
chore: add checksum validation on x_emulator_crc32c and x_emulator_md5 fields (#753)
* chore: add checksum validation on x_emulator_crc32c and x_emulator_md5 fields * chore: fix formatting
1 parent e2a2cf3 commit b5c8fec

1 file changed

Lines changed: 25 additions & 2 deletions

File tree

gcs/object.py

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
from google.protobuf import field_mask_pb2, json_format
3131

3232
import testbench
33+
import testbench.common
3334
from google.storage.v2 import storage_pb2
3435

3536
# Lock to prevent race condition while generating metadata versions:
@@ -116,10 +117,32 @@ def init(
116117
cs = metadata.checksums
117118
if len(cs.md5_hash) != 0 and actual_md5Hash != cs.md5_hash:
118119
testbench.error.mismatch(
119-
"md5Hash", cs.md5_hash, actual_md5Hash, context
120+
"md5Hash", actual_md5Hash, cs.md5_hash, context
120121
)
121122
if cs.HasField("crc32c") and actual_crc32c != cs.crc32c:
122-
testbench.error.mismatch("crc32c", cs.crc32c, actual_crc32c, context)
123+
testbench.error.mismatch("crc32c", actual_crc32c, cs.crc32c, context)
124+
125+
# Check if checksum is present in x_emulator_crc32c field.
126+
if (
127+
"x_emulator_crc32c" in metadata.metadata
128+
and len(metadata.metadata["x_emulator_crc32c"]) != 0
129+
):
130+
got_crc32c_encoded = metadata.metadata["x_emulator_crc32c"]
131+
# Decode to int32.
132+
got_crc32c = testbench.common.rest_crc32c_to_proto(got_crc32c_encoded)
133+
if actual_crc32c != got_crc32c:
134+
testbench.error.mismatch("crc32c", actual_crc32c, got_crc32c, context)
135+
136+
# Check if md5h hash is present in x_emulator_md5 field.
137+
if (
138+
"x_emulator_md5" in metadata.metadata
139+
and len(metadata.metadata["x_emulator_md5"]) != 0
140+
):
141+
got_md5_encoded = metadata.metadata["x_emulator_md5"]
142+
# Decode to bytes.
143+
got_md5 = testbench.common.rest_md5_to_proto(got_md5_encoded)
144+
if actual_md5Hash != got_md5:
145+
testbench.error.mismatch("md5", actual_md5Hash, got_md5, context)
123146
metadata.checksums.md5_hash = actual_md5Hash
124147
metadata.checksums.crc32c = actual_crc32c
125148
metadata.create_time.FromDatetime(timestamp)

0 commit comments

Comments
 (0)