summaryrefslogtreecommitdiffstats
path: root/storage/src/tests/distributor/distributortest.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'storage/src/tests/distributor/distributortest.cpp')
-rw-r--r--storage/src/tests/distributor/distributortest.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/storage/src/tests/distributor/distributortest.cpp b/storage/src/tests/distributor/distributortest.cpp
index 12a4118aa08..d0941571a6a 100644
--- a/storage/src/tests/distributor/distributortest.cpp
+++ b/storage/src/tests/distributor/distributortest.cpp
@@ -50,6 +50,7 @@ class Distributor_Test : public CppUnit::TestFixture,
CPPUNIT_TEST(merge_busy_inhibit_duration_is_propagated_to_pending_message_tracker);
CPPUNIT_TEST(external_client_requests_are_handled_individually_in_priority_order);
CPPUNIT_TEST(internal_messages_are_started_in_fifo_order_batch);
+ CPPUNIT_TEST(closing_aborts_priority_queued_client_requests);
CPPUNIT_TEST_SUITE_END();
protected:
@@ -81,6 +82,7 @@ protected:
void merge_busy_inhibit_duration_is_propagated_to_pending_message_tracker();
void external_client_requests_are_handled_individually_in_priority_order();
void internal_messages_are_started_in_fifo_order_batch();
+ void closing_aborts_priority_queued_client_requests();
public:
void setUp() override {
@@ -927,6 +929,27 @@ void Distributor_Test::internal_messages_are_started_in_fifo_order_batch() {
CPPUNIT_ASSERT_EQUAL(api::BucketInfo(1, 1, 1), e.getBucketInfo().getNode(0)->getBucketInfo());
}
+void Distributor_Test::closing_aborts_priority_queued_client_requests() {
+ setupDistributor(Redundancy(1), NodeCount(1), "storage:1 distributor:1");
+ document::BucketId bucket(16, 1);
+ addNodesToBucketDB(bucket, "0=1/1/1/t");
+
+ document::DocumentId id("id:foo:testdoctype1:n=1:foo");
+ vespalib::stringref field_set = "";
+ for (int i = 0; i < 10; ++i) {
+ auto cmd = std::make_shared<api::GetCommand>(document::BucketId(), id, field_set);
+ _distributor->onDown(cmd);
+ }
+ tickDistributorNTimes(1);
+ // Closing should trigger 1 abort via startet GetOperation and 9 aborts from pri queue
+ _distributor->close();
+ CPPUNIT_ASSERT_EQUAL(size_t(10), _sender.replies.size());
+ for (auto& msg : _sender.replies) {
+ CPPUNIT_ASSERT_EQUAL(api::ReturnCode::ABORTED,
+ dynamic_cast<api::StorageReply&>(*msg).getResult().getResult());
+ }
+}
+
}
}