Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(83)

Unified Diff: components/gcm_driver/crypto/gcm_encryption_provider_unittest.cc

Issue 1707513002: Add various UMA histograms for measuring GCM crypto performance (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@gcm-remove-info
Patch Set: android fix Created 4 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: components/gcm_driver/crypto/gcm_encryption_provider_unittest.cc
diff --git a/components/gcm_driver/crypto/gcm_encryption_provider_unittest.cc b/components/gcm_driver/crypto/gcm_encryption_provider_unittest.cc
index ed4ab9365091d3f7153659bb7eb2b8e201ffeab0..233e8a49ca86a1c941bedbc74895defd52d3cf3b 100644
--- a/components/gcm_driver/crypto/gcm_encryption_provider_unittest.cc
+++ b/components/gcm_driver/crypto/gcm_encryption_provider_unittest.cc
@@ -17,6 +17,7 @@
#include "base/strings/string_number_conversions.h"
#include "base/strings/string_piece.h"
#include "base/strings/string_util.h"
+#include "base/test/histogram_tester.h"
#include "components/gcm_driver/common/gcm_messages.h"
#include "components/gcm_driver/crypto/gcm_key_store.h"
#include "components/gcm_driver/crypto/gcm_message_cryptographer.h"
@@ -76,62 +77,45 @@ class GCMEncryptionProviderTest : public ::testing::Test {
}
protected:
- // Tri-state enumaration listing whether the decryption operation is idle
- // (hasn't started yet), succeeded or failed.
- enum DecryptionResult {
- DECRYPTION_IDLE,
- DECRYPTION_SUCCEEDED,
- DECRYPTION_FAILED
- };
-
// Decrypts the |message| and then synchronously waits until either the
// success or failure callbacks has been invoked.
void Decrypt(const IncomingMessage& message) {
- decryption_result_ = DECRYPTION_IDLE;
encryption_provider_->DecryptMessage(
kExampleAppId, message,
- base::Bind(&GCMEncryptionProviderTest::OnDecryptionSucceeded,
- base::Unretained(this)),
- base::Bind(&GCMEncryptionProviderTest::OnDecryptionFailed,
+ base::Bind(&GCMEncryptionProviderTest::DidDecryptMessage,
base::Unretained(this)));
// The encryption keys will be read asynchronously.
base::RunLoop().RunUntilIdle();
-
- ASSERT_NE(decryption_result_, DECRYPTION_IDLE);
}
- DecryptionResult decryption_result() { return decryption_result_; }
+ // Returns the result of the previous decryption operation.
+ GCMEncryptionProvider::DecryptionResult decryption_result() {
+ return decryption_result_;
+ }
+ // Returns the message resulting from the previous decryption operation.
const IncomingMessage& decrypted_message() { return decrypted_message_; }
- GCMEncryptionProvider::DecryptionFailure failure_reason() {
- return failure_reason_;
- }
-
GCMEncryptionProvider* encryption_provider() {
return encryption_provider_.get();
}
private:
- void OnDecryptionSucceeded(const IncomingMessage& message) {
- decryption_result_ = DECRYPTION_SUCCEEDED;
+ void DidDecryptMessage(GCMEncryptionProvider::DecryptionResult result,
+ const IncomingMessage& message) {
+ decryption_result_ = result;
decrypted_message_ = message;
}
- void OnDecryptionFailed(GCMEncryptionProvider::DecryptionFailure reason) {
- decryption_result_ = DECRYPTION_FAILED;
- failure_reason_ = reason;
- }
-
base::MessageLoop message_loop_;
base::ScopedTempDir scoped_temp_dir_;
+ base::HistogramTester histogram_tester_;
scoped_ptr<GCMEncryptionProvider> encryption_provider_;
- DecryptionResult decryption_result_ = DECRYPTION_IDLE;
- GCMEncryptionProvider::DecryptionFailure failure_reason_ =
- GCMEncryptionProvider::DECRYPTION_FAILURE_UNKNOWN;
+ GCMEncryptionProvider::DecryptionResult decryption_result_ =
+ GCMEncryptionProvider::DECRYPTION_RESULT_UNENCRYPTED;
IncomingMessage decrypted_message_;
};
@@ -169,20 +153,20 @@ TEST_F(GCMEncryptionProviderTest, VerifiesEncryptionHeaderParsing) {
IncomingMessage invalid_message;
invalid_message.data["encryption"] = kInvalidEncryptionHeader;
invalid_message.data["crypto-key"] = kValidCryptoKeyHeader;
+ invalid_message.raw_data = "foo";
ASSERT_NO_FATAL_FAILURE(Decrypt(invalid_message));
- ASSERT_EQ(DECRYPTION_FAILED, decryption_result());
- EXPECT_EQ(GCMEncryptionProvider::DECRYPTION_FAILURE_INVALID_ENCRYPTION_HEADER,
- failure_reason());
+ EXPECT_EQ(GCMEncryptionProvider::DECRYPTION_RESULT_INVALID_ENCRYPTION_HEADER,
+ decryption_result());
IncomingMessage valid_message;
valid_message.data["encryption"] = kValidEncryptionHeader;
valid_message.data["crypto-key"] = kInvalidCryptoKeyHeader;
+ valid_message.raw_data = "foo";
ASSERT_NO_FATAL_FAILURE(Decrypt(valid_message));
- ASSERT_EQ(DECRYPTION_FAILED, decryption_result());
- EXPECT_NE(GCMEncryptionProvider::DECRYPTION_FAILURE_INVALID_ENCRYPTION_HEADER,
- failure_reason());
+ EXPECT_NE(GCMEncryptionProvider::DECRYPTION_RESULT_INVALID_ENCRYPTION_HEADER,
+ decryption_result());
}
TEST_F(GCMEncryptionProviderTest, VerifiesCryptoKeyHeaderParsing) {
@@ -192,20 +176,20 @@ TEST_F(GCMEncryptionProviderTest, VerifiesCryptoKeyHeaderParsing) {
IncomingMessage invalid_message;
invalid_message.data["encryption"] = kValidEncryptionHeader;
invalid_message.data["crypto-key"] = kInvalidCryptoKeyHeader;
+ invalid_message.raw_data = "foo";
ASSERT_NO_FATAL_FAILURE(Decrypt(invalid_message));
- ASSERT_EQ(DECRYPTION_FAILED, decryption_result());
- EXPECT_EQ(GCMEncryptionProvider::DECRYPTION_FAILURE_INVALID_CRYPTO_KEY_HEADER,
- failure_reason());
+ EXPECT_EQ(GCMEncryptionProvider::DECRYPTION_RESULT_INVALID_CRYPTO_KEY_HEADER,
+ decryption_result());
IncomingMessage valid_message;
valid_message.data["encryption"] = kInvalidEncryptionHeader;
valid_message.data["crypto-key"] = kValidCryptoKeyHeader;
+ valid_message.raw_data = "foo";
ASSERT_NO_FATAL_FAILURE(Decrypt(valid_message));
- ASSERT_EQ(DECRYPTION_FAILED, decryption_result());
- EXPECT_NE(GCMEncryptionProvider::DECRYPTION_FAILURE_INVALID_CRYPTO_KEY_HEADER,
- failure_reason());
+ EXPECT_NE(GCMEncryptionProvider::DECRYPTION_RESULT_INVALID_CRYPTO_KEY_HEADER,
+ decryption_result());
}
TEST_F(GCMEncryptionProviderTest, VerifiesExistingKeys) {
@@ -215,11 +199,11 @@ TEST_F(GCMEncryptionProviderTest, VerifiesExistingKeys) {
IncomingMessage message;
message.data["encryption"] = kValidEncryptionHeader;
message.data["crypto-key"] = kValidCryptoKeyHeader;
+ message.raw_data = "foo";
ASSERT_NO_FATAL_FAILURE(Decrypt(message));
- ASSERT_EQ(DECRYPTION_FAILED, decryption_result());
- EXPECT_EQ(GCMEncryptionProvider::DECRYPTION_FAILURE_NO_KEYS,
- failure_reason());
+ EXPECT_EQ(GCMEncryptionProvider::DECRYPTION_RESULT_NO_KEYS,
+ decryption_result());
std::string public_key, auth_secret;
encryption_provider()->GetEncryptionInfo(
@@ -234,9 +218,8 @@ TEST_F(GCMEncryptionProviderTest, VerifiesExistingKeys) {
ASSERT_GT(auth_secret.size(), 0u);
ASSERT_NO_FATAL_FAILURE(Decrypt(message));
- ASSERT_EQ(DECRYPTION_FAILED, decryption_result());
- EXPECT_NE(GCMEncryptionProvider::DECRYPTION_FAILURE_NO_KEYS,
- failure_reason());
+ EXPECT_NE(GCMEncryptionProvider::DECRYPTION_RESULT_NO_KEYS,
+ decryption_result());
}
TEST_F(GCMEncryptionProviderTest, EncryptionRoundTrip) {
@@ -312,7 +295,8 @@ TEST_F(GCMEncryptionProviderTest, EncryptionRoundTrip) {
// Decrypt the message, and expect everything to go wonderfully well.
ASSERT_NO_FATAL_FAILURE(Decrypt(message));
- ASSERT_EQ(DECRYPTION_SUCCEEDED, decryption_result());
+ ASSERT_EQ(GCMEncryptionProvider::DECRYPTION_RESULT_DECRYPTED,
+ decryption_result());
EXPECT_TRUE(decrypted_message().decrypted);
EXPECT_EQ(kExampleMessage, decrypted_message().raw_data);
« no previous file with comments | « components/gcm_driver/crypto/gcm_encryption_provider.cc ('k') | components/gcm_driver/crypto/gcm_key_store.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698