1313// limitations under the License.
1414
1515#include " google/cloud/storage/async/options.h"
16+
17+ // TODO(v-pratap): Remove this when EnableMD5ValidationOption and
18+ // EnableCrc32cValidationOption are removed.
19+ #include " google/cloud/internal/disable_deprecation_warnings.inc"
1620#include " google/cloud/storage/internal/async/connection_impl.h"
1721#include " google/cloud/storage/internal/async/default_options.h"
1822#include " google/cloud/storage/internal/crc32c.h"
@@ -75,15 +79,21 @@ auto GeneratedObjectChecksums(HashTestCase const& tc) {
7579std::ostream& operator <<(std::ostream& os, HashTestCase const & rhs) {
7680 os << " HashTestCase={options={" ;
7781 os << " expected_status_code=" << rhs.expected_status_code //
78- << std::boolalpha //
79- << " , enable_crc32c_validation="
80- << rhs.options .get <storage::EnableCrc32cValidationOption>();
82+ << std::boolalpha; //
83+ if (rhs.options .has <storage::DownloadChecksumValidationOption>()) {
84+ os << " , download_checksum="
85+ << static_cast <int >(
86+ rhs.options .get <storage::DownloadChecksumValidationOption>());
87+ } else {
88+ os << " , enable_crc32c_validation="
89+ << rhs.options .get <storage::EnableCrc32cValidationOption>();
90+ os << " , enable_md5_validation="
91+ << rhs.options .get <storage::EnableMD5ValidationOption>();
92+ }
8193 if (rhs.options .has <storage::UseCrc32cValueOption>()) {
8294 os << " , use_crc32_value="
8395 << rhs.options .get <storage::UseCrc32cValueOption>();
8496 }
85- os << " , enable_md5_validation="
86- << rhs.options .get <storage::EnableMD5ValidationOption>();
8797 if (rhs.options .has <storage::UseMD5ValueOption>()) {
8898 os << " , use_md5_value=" << rhs.options .get <storage::UseMD5ValueOption>();
8999 }
@@ -129,16 +139,14 @@ INSTANTIATE_TEST_SUITE_P(
129139 // This is the common case. Only CRC32C is enabled by default. The
130140 // service returns both CRC32C and MD5 values.
131141 StatusCode::kOk ,
132- Options{}
133- .set <storage::EnableCrc32cValidationOption>(true )
134- .set <storage::EnableMD5ValidationOption>(false ),
142+ Options{}.set <storage::DownloadChecksumValidationOption>(
143+ storage::ChecksumAlgorithm::kCrc32c ),
135144 kQuickFoxCrc32cChecksum , kQuickFoxMD5Hash },
136145 HashTestCase{
137146 // This is also common, the service does not return a MD5 value.
138147 StatusCode::kOk ,
139- Options{}
140- .set <storage::EnableCrc32cValidationOption>(true )
141- .set <storage::EnableMD5ValidationOption>(false ),
148+ Options{}.set <storage::DownloadChecksumValidationOption>(
149+ storage::ChecksumAlgorithm::kCrc32c ),
142150 kQuickFoxCrc32cChecksum , " " },
143151 // Make sure things work when both hashes are validated too.
144152 HashTestCase{StatusCode::kOk ,
@@ -148,6 +156,31 @@ INSTANTIATE_TEST_SUITE_P(
148156 kQuickFoxCrc32cChecksum , kQuickFoxMD5Hash },
149157 // In the next three cases we verify that disabling some validation
150158 // works.
159+ HashTestCase{StatusCode::kOk ,
160+ Options{}.set <storage::DownloadChecksumValidationOption>(
161+ storage::ChecksumAlgorithm::kCrc32c ),
162+ kQuickFoxCrc32cChecksum , kQuickFoxMD5HashBad },
163+ HashTestCase{StatusCode::kOk ,
164+ Options{}.set <storage::DownloadChecksumValidationOption>(
165+ storage::ChecksumAlgorithm::kMD5 ),
166+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5Hash },
167+ HashTestCase{StatusCode::kOk ,
168+ Options{}.set <storage::DownloadChecksumValidationOption>(
169+ storage::ChecksumAlgorithm::kNone ),
170+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
171+ HashTestCase{StatusCode::kOk ,
172+ Options{}.set <storage::DownloadChecksumValidationOption>(
173+ storage::ChecksumAlgorithm::kCrc32c ),
174+ kQuickFoxCrc32cChecksum , kQuickFoxMD5HashBad },
175+ HashTestCase{StatusCode::kOk ,
176+ Options{}.set <storage::DownloadChecksumValidationOption>(
177+ storage::ChecksumAlgorithm::kMD5 ),
178+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5Hash },
179+ HashTestCase{StatusCode::kOk ,
180+ Options{}.set <storage::DownloadChecksumValidationOption>(
181+ storage::ChecksumAlgorithm::kNone ),
182+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
183+ // Legacy options
151184 HashTestCase{StatusCode::kOk ,
152185 Options{}
153186 .set <storage::EnableCrc32cValidationOption>(true )
@@ -165,38 +198,55 @@ INSTANTIATE_TEST_SUITE_P(
165198 kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
166199 // In the next three cases we verify that validation works when the
167200 // returned values are not correct.
201+ HashTestCase{StatusCode::kInvalidArgument ,
202+ Options{}.set <storage::DownloadChecksumValidationOption>(
203+ storage::ChecksumAlgorithm::kMD5 ),
204+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
205+ HashTestCase{StatusCode::kInvalidArgument ,
206+ Options{}.set <storage::DownloadChecksumValidationOption>(
207+ storage::ChecksumAlgorithm::kCrc32c ),
208+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
168209 HashTestCase{StatusCode::kInvalidArgument ,
169210 Options{}
170- .set <storage::EnableCrc32cValidationOption>(false )
211+ .set <storage::EnableCrc32cValidationOption>(true )
171212 .set <storage::EnableMD5ValidationOption>(true ),
172213 kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
214+ HashTestCase{StatusCode::kInvalidArgument ,
215+ Options{}.set <storage::DownloadChecksumValidationOption>(
216+ storage::ChecksumAlgorithm::kCrc32c ),
217+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
218+ HashTestCase{StatusCode::kInvalidArgument ,
219+ Options{}.set <storage::DownloadChecksumValidationOption>(
220+ storage::ChecksumAlgorithm::kMD5 ),
221+ kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
222+ // Legacy options
173223 HashTestCase{StatusCode::kInvalidArgument ,
174224 Options{}
175- .set <storage::EnableCrc32cValidationOption>(true )
176- .set <storage::EnableMD5ValidationOption>(false ),
225+ .set <storage::EnableCrc32cValidationOption>(false )
226+ .set <storage::EnableMD5ValidationOption>(true ),
177227 kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
178228 HashTestCase{StatusCode::kInvalidArgument ,
179229 Options{}
180230 .set <storage::EnableCrc32cValidationOption>(true )
181- .set <storage::EnableMD5ValidationOption>(true ),
231+ .set <storage::EnableMD5ValidationOption>(false ),
182232 kQuickFoxCrc32cChecksumBad , kQuickFoxMD5HashBad },
183233 // The application may know what the values should be. Verify the
184234 // validation works correctly when the application provides correct
185235 // values.
186236 HashTestCase{
187237 StatusCode::kOk ,
188238 Options{}
189- .set <storage::EnableCrc32cValidationOption>( true )
190- . set < storage::EnableMD5ValidationOption>( true )
239+ .set <storage::DownloadChecksumValidationOption>(
240+ storage::ChecksumAlgorithm:: kCrc32c )
191241 .set <storage::UseCrc32cValueOption>(kQuickFoxCrc32cChecksum )
192242 .set <storage::UseMD5ValueOption>(BinaryMD5 (kQuickFoxMD5Hash )),
193243 kQuickFoxCrc32cChecksum , kQuickFoxMD5Hash },
194244 // Verify bad values are detected
195245 HashTestCase{
196246 StatusCode::kInvalidArgument ,
197247 Options{}
198- .set <storage::EnableCrc32cValidationOption>( true )
199- . set < storage::EnableMD5ValidationOption>( true )
248+ .set <storage::DownloadChecksumValidationOption>(
249+ storage::ChecksumAlgorithm:: kCrc32c )
200250 .set <storage::UseCrc32cValueOption>(kQuickFoxCrc32cChecksumBad )
201251 .set <storage::UseMD5ValueOption>(BinaryMD5 (kQuickFoxMD5Hash )),
202252 kQuickFoxCrc32cChecksum , kQuickFoxMD5Hash },
@@ -212,8 +262,8 @@ INSTANTIATE_TEST_SUITE_P(
212262 HashTestCase{
213263 StatusCode::kInvalidArgument ,
214264 Options{}
215- .set <storage::EnableCrc32cValidationOption>( true )
216- . set < storage::EnableMD5ValidationOption>( true )
265+ .set <storage::DownloadChecksumValidationOption>(
266+ storage::ChecksumAlgorithm:: kCrc32c )
217267 .set <storage::UseCrc32cValueOption>(kQuickFoxCrc32cChecksumBad )
218268 .set <storage::UseMD5ValueOption>(
219269 BinaryMD5 (kQuickFoxMD5HashBad )),
@@ -477,3 +527,4 @@ GOOGLE_CLOUD_CPP_INLINE_NAMESPACE_END
477527} // namespace storage_internal
478528} // namespace cloud
479529} // namespace google
530+ #include " google/cloud/internal/diagnostics_pop.inc"
0 commit comments