summaryrefslogtreecommitdiff
diff options
authorMarco Trevisan (Treviño) <mail@3v1n0.net>2012-07-20 00:12:05 +0200
committerMarco Trevisan (Treviño) <mail@3v1n0.net>2012-07-20 00:12:05 +0200
commitb8a9cafe23c547853726489747443d0e75e3911a (patch)
tree0513edfc47c4cb9e0253beec78659abd52000af4
parent4c5d036835fb705e7a706d63d90c5062b24ab68a (diff)
test_edge_barrier_controller: added tests for temporary released barrier
(bzr r2509.1.25)
-rw-r--r--tests/test_edge_barrier_controller.cpp43
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/test_edge_barrier_controller.cpp b/tests/test_edge_barrier_controller.cpp
index b5179799e..ddbcb37de 100644
--- a/tests/test_edge_barrier_controller.cpp
+++ b/tests/test_edge_barrier_controller.cpp
@@ -76,6 +76,7 @@ public:
virtual void SetUp()
{
bc.options = std::make_shared<launcher::Options>();
+ bc.options()->edge_passed_disabled_ms = 150;
for (int i = 0; i < max_num_monitors; ++i)
{
@@ -163,4 +164,46 @@ TEST_F(TestEdgeBarrierController, ProcessUnHandledEventOnReleasedBarrier)
bc.ProcessBarrierEvent(&owner, not_breaking_barrier_event);
}
+TEST_F(TestEdgeBarrierController, BreakingEdgeTemporaryReleasesBarrier)
+{
+ MockPointerBarrier owner;
+
+ EXPECT_CALL(owner, ReleaseBarrier(1));
+ bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(1, true));
+ ASSERT_TRUE(owner.released());
+
+ Utils::WaitForTimeoutMSec(bc.options()->edge_passed_disabled_ms);
+ EXPECT_FALSE(owner.released());
+}
+
+TEST_F(TestEdgeBarrierController, BreakingEdgeTemporaryReleasesBarrierForNotHandledEvents)
+{
+ MockPointerBarrier owner;
+ int monitor = 0;
+ subscribers_[monitor].handles_ = false;
+
+ EXPECT_CALL(owner, ReleaseBarrier(5));
+ bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(5, true));
+ ASSERT_TRUE(owner.released());
+
+ subscribers_[monitor].handles_ = false;
+ EXPECT_CALL(owner, ReleaseBarrier(6));
+ bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(6, false));
+}
+
+TEST_F(TestEdgeBarrierController, BreakingEdgeDontReleasesBarrierForHandledEvents)
+{
+ MockPointerBarrier owner;
+ int monitor = 0;
+ subscribers_[monitor].handles_ = false;
+
+ EXPECT_CALL(owner, ReleaseBarrier(5));
+ bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(5, true));
+ ASSERT_TRUE(owner.released());
+
+ subscribers_[monitor].handles_ = true;
+ EXPECT_CALL(owner, ReleaseBarrier(_)).Times(0);
+ bc.ProcessBarrierEvent(&owner, MakeBarrierEvent(6, true));
+}
+
}