Index: sync/sessions/nudge_tracker_unittest.cc |
diff --git a/sync/sessions/nudge_tracker_unittest.cc b/sync/sessions/nudge_tracker_unittest.cc |
index dc7f5ba7e43899bbb433c7edbc7777a18e55adc7..53b38a7b08a45a124b2eba526f8bdb7a134828eb 100644 |
--- a/sync/sessions/nudge_tracker_unittest.cc |
+++ b/sync/sessions/nudge_tracker_unittest.cc |
@@ -9,6 +9,9 @@ |
#include "sync/notifier/mock_ack_handler.h" |
#include "sync/notifier/object_id_invalidation_map.h" |
#include "sync/sessions/nudge_tracker.h" |
+#include "sync/test/mock_invalidation.h" |
+#include "sync/test/mock_invalidation_tracker.h" |
+#include "sync/test/trackable_mock_invalidation.h" |
#include "testing/gtest/include/gtest/gtest.h" |
namespace syncer { |
@@ -25,14 +28,6 @@ testing::AssertionResult ModelTypeSetEquals(ModelTypeSet a, ModelTypeSet b) { |
} |
} |
-syncer::Invalidation BuildUnknownVersionInvalidation(ModelType type) { |
- invalidation::ObjectId id; |
- bool result = RealModelTypeToObjectId(type, &id); |
- DCHECK(result); |
- return Invalidation::InitUnknownVersion(id); |
-} |
- |
- |
} // namespace |
namespace sessions { |
@@ -72,6 +67,18 @@ class NudgeTrackerTest : public ::testing::Test { |
nudge_tracker_.RecordSuccessfulSyncCycle(); |
} |
+ scoped_ptr<InvalidationInterface> BuildInvalidation( |
+ int64 version, |
+ const std::string& payload) { |
+ return MockInvalidation::Build(version, payload) |
+ .PassAs<InvalidationInterface>(); |
+ } |
+ |
+ static scoped_ptr<InvalidationInterface> BuildUnknownVersionInvalidation() { |
+ return MockInvalidation::BuildUnknownVersion() |
+ .PassAs<InvalidationInterface>(); |
+ } |
+ |
protected: |
NudgeTracker nudge_tracker_; |
}; |
@@ -119,9 +126,8 @@ TEST_F(NudgeTrackerTest, SourcePriorities) { |
nudge_tracker_.GetLegacySource()); |
// An invalidation will override the refresh request source. |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(PREFERENCES, 1, "hint"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(PREFERENCES, |
+ BuildInvalidation(1, "hint")); |
EXPECT_EQ(sync_pb::GetUpdatesCallerInfo::NOTIFICATION, |
nudge_tracker_.GetLegacySource()); |
@@ -138,9 +144,8 @@ TEST_F(NudgeTrackerTest, SourcePriorities) { |
TEST_F(NudgeTrackerTest, HintCoalescing) { |
// Easy case: record one hint. |
{ |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(BOOKMARKS, 1, "bm_hint_1"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildInvalidation(1, "bm_hint_1")); |
sync_pb::GetUpdateTriggers gu_trigger; |
nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
@@ -151,9 +156,8 @@ TEST_F(NudgeTrackerTest, HintCoalescing) { |
// Record a second hint for the same type. |
{ |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(BOOKMARKS, 2, "bm_hint_2"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildInvalidation(2, "bm_hint_2")); |
sync_pb::GetUpdateTriggers gu_trigger; |
nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
@@ -167,9 +171,8 @@ TEST_F(NudgeTrackerTest, HintCoalescing) { |
// Record a hint for a different type. |
{ |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(PASSWORDS, 1, "pw_hint_1"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(PASSWORDS, |
+ BuildInvalidation(1, "pw_hint_1")); |
// Re-verify the bookmarks to make sure they're unaffected. |
sync_pb::GetUpdateTriggers bm_gu_trigger; |
@@ -192,9 +195,8 @@ TEST_F(NudgeTrackerTest, HintCoalescing) { |
// Test the dropping of invalidation hints. Receives invalidations one by one. |
TEST_F(NudgeTrackerTest, DropHintsLocally_OneAtATime) { |
for (size_t i = 0; i < GetHintBufferSize(); ++i) { |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(BOOKMARKS, i, "hint"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildInvalidation(i, "hint")); |
} |
{ |
sync_pb::GetUpdateTriggers gu_trigger; |
@@ -205,9 +207,8 @@ TEST_F(NudgeTrackerTest, DropHintsLocally_OneAtATime) { |
} |
// Force an overflow. |
- ObjectIdInvalidationMap invalidation_map2 = |
- BuildInvalidationMap(BOOKMARKS, 1000, "new_hint"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map2); |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildInvalidation(1000, "new_hint")); |
{ |
sync_pb::GetUpdateTriggers gu_trigger; |
@@ -224,52 +225,11 @@ TEST_F(NudgeTrackerTest, DropHintsLocally_OneAtATime) { |
} |
} |
-// Test the dropping of invalidation hints. |
-// Receives invalidations in large batches. |
-TEST_F(NudgeTrackerTest, DropHintsLocally_ManyHints) { |
- ObjectIdInvalidationMap invalidation_map; |
- for (size_t i = 0; i < GetHintBufferSize(); ++i) { |
- invalidation_map.Insert(BuildInvalidation(BOOKMARKS, i, "hint")); |
- } |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
- { |
- sync_pb::GetUpdateTriggers gu_trigger; |
- nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
- EXPECT_EQ(GetHintBufferSize(), |
- static_cast<size_t>(gu_trigger.notification_hint_size())); |
- EXPECT_FALSE(gu_trigger.client_dropped_hints()); |
- } |
- |
- // Force an overflow. |
- ObjectIdInvalidationMap invalidation_map2; |
- invalidation_map2.Insert(BuildInvalidation(BOOKMARKS, 1000, "new_hint")); |
- invalidation_map2.Insert(BuildInvalidation(BOOKMARKS, 1001, "newer_hint")); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map2); |
- |
- { |
- sync_pb::GetUpdateTriggers gu_trigger; |
- nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
- EXPECT_TRUE(gu_trigger.client_dropped_hints()); |
- ASSERT_EQ(GetHintBufferSize(), |
- static_cast<size_t>(gu_trigger.notification_hint_size())); |
- |
- // Verify the newest hints were not dropped and are the last in the list. |
- EXPECT_EQ("newer_hint", |
- gu_trigger.notification_hint(GetHintBufferSize()-1)); |
- EXPECT_EQ("new_hint", gu_trigger.notification_hint(GetHintBufferSize()-2)); |
- |
- // Verify the oldest hint, too. |
- EXPECT_EQ("hint", gu_trigger.notification_hint(0)); |
- } |
-} |
- |
// Tests the receipt of 'unknown version' invalidations. |
TEST_F(NudgeTrackerTest, DropHintsAtServer_Alone) { |
- ObjectIdInvalidationMap invalidation_map; |
- invalidation_map.Insert(BuildUnknownVersionInvalidation(BOOKMARKS)); |
- |
// Record the unknown version invalidation. |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildUnknownVersionInvalidation()); |
{ |
sync_pb::GetUpdateTriggers gu_trigger; |
nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
@@ -292,12 +252,12 @@ TEST_F(NudgeTrackerTest, DropHintsAtServer_Alone) { |
// Tests the receipt of 'unknown version' invalidations. This test also |
// includes a known version invalidation to mix things up a bit. |
TEST_F(NudgeTrackerTest, DropHintsAtServer_WithOtherInvalidations) { |
- ObjectIdInvalidationMap invalidation_map; |
- invalidation_map.Insert(BuildUnknownVersionInvalidation(BOOKMARKS)); |
- invalidation_map.Insert(BuildInvalidation(BOOKMARKS, 10, "hint")); |
+ // Record the two invalidations, one with unknown version, the other known. |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildUnknownVersionInvalidation()); |
+ nudge_tracker_.RecordRemoteInvalidation(BOOKMARKS, |
+ BuildInvalidation(10, "hint")); |
- // Record the two invalidations, one with unknown version, the other unknown. |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
{ |
sync_pb::GetUpdateTriggers gu_trigger; |
nudge_tracker_.FillProtoMessage(BOOKMARKS, &gu_trigger); |
@@ -400,9 +360,8 @@ TEST_F(NudgeTrackerTest, IsSyncRequired) { |
EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
// Invalidations. |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(PREFERENCES, 1, "hint"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(PREFERENCES, |
+ BuildInvalidation(1, "hint")); |
EXPECT_TRUE(nudge_tracker_.IsSyncRequired()); |
nudge_tracker_.RecordSuccessfulSyncCycle(); |
EXPECT_FALSE(nudge_tracker_.IsSyncRequired()); |
@@ -425,9 +384,8 @@ TEST_F(NudgeTrackerTest, IsGetUpdatesRequired) { |
EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); |
// Invalidations. |
- ObjectIdInvalidationMap invalidation_map = |
- BuildInvalidationMap(PREFERENCES, 1, "hint"); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation(PREFERENCES, |
+ BuildInvalidation(1, "hint")); |
EXPECT_TRUE(nudge_tracker_.IsGetUpdatesRequired()); |
nudge_tracker_.RecordSuccessfulSyncCycle(); |
EXPECT_FALSE(nudge_tracker_.IsGetUpdatesRequired()); |
@@ -744,60 +702,48 @@ class NudgeTrackerAckTrackingTest : public NudgeTrackerTest { |
public: |
NudgeTrackerAckTrackingTest() {} |
- bool IsInvalidationUnacknowledged(const syncer::Invalidation& invalidation) { |
- // Run pending tasks before checking with the MockAckHandler. |
- // The WeakHandle may have posted some tasks for it. |
- base::RunLoop().RunUntilIdle(); |
- return mock_ack_handler_.IsUnacked(invalidation); |
+ bool IsInvalidationUnacknowledged(int tracking_id) { |
+ return tracker_.IsUnacked(tracking_id); |
} |
- bool IsInvalidationAcknowledged(const syncer::Invalidation& invalidation) { |
- // Run pending tasks before checking with the MockAckHandler. |
- // The WeakHandle may have posted some tasks for it. |
- base::RunLoop().RunUntilIdle(); |
- return mock_ack_handler_.IsAcknowledged(invalidation); |
+ bool IsInvalidationAcknowledged(int tracking_id) { |
+ return tracker_.IsAcknowledged(tracking_id); |
} |
- bool IsInvalidationDropped(const syncer::Invalidation& invalidation) { |
- // Run pending tasks before checking with the MockAckHandler. |
- // The WeakHandle may have posted some tasks for it. |
- base::RunLoop().RunUntilIdle(); |
- return mock_ack_handler_.IsDropped(invalidation); |
+ bool IsInvalidationDropped(int tracking_id) { |
+ return tracker_.IsDropped(tracking_id); |
} |
- bool AllInvalidationsAccountedFor() { |
- return mock_ack_handler_.AllInvalidationsAccountedFor(); |
- } |
- |
- Invalidation SendInvalidation( |
- ModelType type, |
- int64 version, |
- const std::string& hint) { |
+ int SendInvalidation(ModelType type, int version, const std::string& hint) { |
// Build and register the invalidation. |
- syncer::Invalidation invalidation = BuildInvalidation(type, version, hint); |
- mock_ack_handler_.RegisterInvalidation(&invalidation); |
+ scoped_ptr<TrackableMockInvalidation> inv = |
+ tracker_.IssueInvalidation(version, hint); |
+ int id = inv->GetTrackingId(); |
// Send it to the NudgeTracker. |
- ObjectIdInvalidationMap invalidation_map; |
- invalidation_map.Insert(invalidation); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation( |
+ type, inv.PassAs<InvalidationInterface>()); |
- // Return it to the test framework for use in assertions. |
- return invalidation; |
+ // Return its ID to the test framework for use in assertions. |
+ return id; |
} |
- Invalidation SendUnknownVersionInvalidation(ModelType type) { |
+ int SendUnknownVersionInvalidation(ModelType type) { |
// Build and register the invalidation. |
- syncer::Invalidation invalidation = BuildUnknownVersionInvalidation(type); |
- mock_ack_handler_.RegisterInvalidation(&invalidation); |
+ scoped_ptr<TrackableMockInvalidation> inv = |
+ tracker_.IssueUnknownVersionInvalidation(); |
+ int id = inv->GetTrackingId(); |
// Send it to the NudgeTracker. |
- ObjectIdInvalidationMap invalidation_map; |
- invalidation_map.Insert(invalidation); |
- nudge_tracker_.RecordRemoteInvalidation(invalidation_map); |
+ nudge_tracker_.RecordRemoteInvalidation( |
+ type, inv.PassAs<InvalidationInterface>()); |
+ |
+ // Return its ID to the test framework for use in assertions. |
+ return id; |
+ } |
- // Return it to the test framework for use in assertions. |
- return invalidation; |
+ bool AllInvalidationsAccountedFor() const { |
+ return tracker_.AllInvalidationsAccountedFor(); |
} |
void RecordSuccessfulSyncCycle() { |
@@ -805,109 +751,110 @@ class NudgeTrackerAckTrackingTest : public NudgeTrackerTest { |
} |
private: |
- syncer::MockAckHandler mock_ack_handler_; |
- base::MessageLoop loop_; |
+ MockInvalidationTracker tracker_; |
}; |
// Test the acknowledgement of a single invalidation. |
TEST_F(NudgeTrackerAckTrackingTest, SimpleAcknowledgement) { |
- Invalidation inv = SendInvalidation(BOOKMARKS, 10, "hint"); |
+ int inv_id = SendInvalidation(BOOKMARKS, 10, "hint"); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv_id)); |
RecordSuccessfulSyncCycle(); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv_id)); |
EXPECT_TRUE(AllInvalidationsAccountedFor()); |
} |
// Test the acknowledgement of many invalidations. |
TEST_F(NudgeTrackerAckTrackingTest, ManyAcknowledgements) { |
- Invalidation inv1 = SendInvalidation(BOOKMARKS, 10, "hint"); |
- Invalidation inv2 = SendInvalidation(BOOKMARKS, 14, "hint2"); |
- Invalidation inv3 = SendInvalidation(PREFERENCES, 8, "hint3"); |
+ int inv1_id = SendInvalidation(BOOKMARKS, 10, "hint"); |
+ int inv2_id = SendInvalidation(BOOKMARKS, 14, "hint2"); |
+ int inv3_id = SendInvalidation(PREFERENCES, 8, "hint3"); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv1)); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv2)); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv3)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv1_id)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv2_id)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv3_id)); |
RecordSuccessfulSyncCycle(); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv1)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv2)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv3)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv1_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id)); |
EXPECT_TRUE(AllInvalidationsAccountedFor()); |
} |
// Test dropping when the buffer overflows and subsequent drop recovery. |
TEST_F(NudgeTrackerAckTrackingTest, OverflowAndRecover) { |
- std::vector<Invalidation> invalidations; |
+ std::vector<int> invalidation_ids; |
- Invalidation inv10 = SendInvalidation(BOOKMARKS, 10, "hint"); |
+ int inv10_id = SendInvalidation(BOOKMARKS, 10, "hint"); |
for (size_t i = 1; i < GetHintBufferSize(); ++i) { |
- invalidations.push_back(SendInvalidation(BOOKMARKS, i+10, "hint")); |
+ invalidation_ids.push_back(SendInvalidation(BOOKMARKS, i + 10, "hint")); |
} |
- for (std::vector<Invalidation>::iterator it = invalidations.begin(); |
- it != invalidations.end(); ++it) { |
+ for (std::vector<int>::iterator it = invalidation_ids.begin(); |
+ it != invalidation_ids.end(); |
+ ++it) { |
EXPECT_TRUE(IsInvalidationUnacknowledged(*it)); |
} |
// This invalidation, though arriving the most recently, has the oldest |
// version number so it should be dropped first. |
- Invalidation inv5 = SendInvalidation(BOOKMARKS, 5, "old_hint"); |
- EXPECT_TRUE(IsInvalidationDropped(inv5)); |
+ int inv5_id = SendInvalidation(BOOKMARKS, 5, "old_hint"); |
+ EXPECT_TRUE(IsInvalidationDropped(inv5_id)); |
// This invalidation has a larger version number, so it will force a |
// previously delivered invalidation to be dropped. |
- Invalidation inv100 = SendInvalidation(BOOKMARKS, 100, "new_hint"); |
- EXPECT_TRUE(IsInvalidationDropped(inv10)); |
+ int inv100_id = SendInvalidation(BOOKMARKS, 100, "new_hint"); |
+ EXPECT_TRUE(IsInvalidationDropped(inv10_id)); |
// This should recover from the drop and bring us back into sync. |
RecordSuccessfulSyncCycle(); |
- for (std::vector<Invalidation>::iterator it = invalidations.begin(); |
- it != invalidations.end(); ++it) { |
+ for (std::vector<int>::iterator it = invalidation_ids.begin(); |
+ it != invalidation_ids.end(); |
+ ++it) { |
EXPECT_TRUE(IsInvalidationAcknowledged(*it)); |
} |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv100)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv100_id)); |
EXPECT_TRUE(AllInvalidationsAccountedFor()); |
} |
// Test receipt of an unknown version invalidation from the server. |
TEST_F(NudgeTrackerAckTrackingTest, UnknownVersionFromServer_Simple) { |
- Invalidation inv = SendUnknownVersionInvalidation(BOOKMARKS); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv)); |
+ int inv_id = SendUnknownVersionInvalidation(BOOKMARKS); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv_id)); |
RecordSuccessfulSyncCycle(); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv_id)); |
EXPECT_TRUE(AllInvalidationsAccountedFor()); |
} |
// Test receipt of multiple unknown version invalidations from the server. |
TEST_F(NudgeTrackerAckTrackingTest, UnknownVersionFromServer_Complex) { |
- Invalidation inv1 = SendUnknownVersionInvalidation(BOOKMARKS); |
- Invalidation inv2 = SendInvalidation(BOOKMARKS, 10, "hint"); |
- Invalidation inv3 = SendUnknownVersionInvalidation(BOOKMARKS); |
- Invalidation inv4 = SendUnknownVersionInvalidation(BOOKMARKS); |
- Invalidation inv5 = SendInvalidation(BOOKMARKS, 20, "hint2"); |
+ int inv1_id = SendUnknownVersionInvalidation(BOOKMARKS); |
+ int inv2_id = SendInvalidation(BOOKMARKS, 10, "hint"); |
+ int inv3_id = SendUnknownVersionInvalidation(BOOKMARKS); |
+ int inv4_id = SendUnknownVersionInvalidation(BOOKMARKS); |
+ int inv5_id = SendInvalidation(BOOKMARKS, 20, "hint2"); |
// These invalidations have been overridden, so they got acked early. |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv1)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv3)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv1_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id)); |
// These invalidations are still waiting to be used. |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv2)); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv4)); |
- EXPECT_TRUE(IsInvalidationUnacknowledged(inv5)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv2_id)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv4_id)); |
+ EXPECT_TRUE(IsInvalidationUnacknowledged(inv5_id)); |
// Finish the sync cycle and expect all remaining invalidations to be acked. |
RecordSuccessfulSyncCycle(); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv1)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv2)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv3)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv4)); |
- EXPECT_TRUE(IsInvalidationAcknowledged(inv5)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv1_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv2_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv3_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv4_id)); |
+ EXPECT_TRUE(IsInvalidationAcknowledged(inv5_id)); |
EXPECT_TRUE(AllInvalidationsAccountedFor()); |
} |