libbmq b6028b29b733bc7541593d2905a5f79a9f0192fc
Loading...
Searching...
No Matches
bmqa_mocksession.h
Go to the documentation of this file.
1// Copyright 2016-2023 Bloomberg Finance L.P.
2// SPDX-License-Identifier: Apache-2.0
3//
4// Licensed under the Apache License, Version 2.0 (the "License");
5// you may not use this file except in compliance with the License.
6// You may obtain a copy of the License at
7//
8// http://www.apache.org/licenses/LICENSE-2.0
9//
10// Unless required by applicable law or agreed to in writing, software
11// distributed under the License is distributed on an "AS IS" BASIS,
12// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13// See the License for the specific language governing permissions and
14// limitations under the License.
15
16// bmqa_mocksession.h -*-C++-*-
17#ifndef INCLUDED_BMQA_MOCKSESSION
18#define INCLUDED_BMQA_MOCKSESSION
19
550
551// BMQ
552#include <bmqa_abstractsession.h>
556#include <bmqa_openqueuestatus.h>
557#include <bmqa_queueid.h>
558#include <bmqa_session.h> // for 'bmqa::SessionEventHandler'
559#include <bmqt_queueoptions.h>
560#include <bmqt_sessionoptions.h>
561
562// BDE
563#include <ball_log.h>
564#include <bdlb_variant.h>
565#include <bdlbb_blob.h>
566#include <bdlbb_pooledblobbufferfactory.h>
567#include <bdlcc_sharedobjectpool.h>
568#include <bsl_cstddef.h>
569#include <bsl_deque.h>
570#include <bsl_functional.h>
571#include <bsl_memory.h>
572#include <bsl_string.h>
573#include <bsl_unordered_map.h>
574#include <bsl_unordered_set.h>
575#include <bsl_vector.h>
576#include <bslma_allocator.h>
577#include <bslma_managedptr.h>
578#include <bslma_usesbslmaallocator.h>
579#include <bslmf_nestedtraitdeclaration.h>
580#include <bslmt_mutex.h>
581#include <bsls_alignedbuffer.h>
582#include <bsls_assert.h>
583#include <bsls_timeinterval.h>
584#include <bsls_types.h>
585
586namespace BloombergLP {
587
588// FORWARD DECLARATION
589namespace bmqimp {
590class Event;
591}
592namespace bmqimp {
593class MessageCorrelationIdContainer;
594}
595namespace bmqimp {
596struct Stat;
597}
598namespace bmqst {
599class StatContext;
600}
601
602namespace bmqa {
603
604// FORWARD DECLARATION
605class ConfirmEventBuilder;
606
607// Record an expected method 'CALL' into the specified mock session 'OBJ'.
608#define BMQA_EXPECT_CALL(OBJ, CALL) \
609 (((OBJ).expect_##CALL).fromLocation(__FILE__, __LINE__))
610
611// ======================
612// struct MockSessionUtil
613// ======================
614
617 private:
618 // PRIVATE TYPES
619
621 typedef bdlcc::SharedObjectPool<
622 bdlbb::Blob,
623 bdlcc::ObjectPoolFunctors::DefaultCreator,
624 bdlcc::ObjectPoolFunctors::RemoveAll<bdlbb::Blob> >
625 BlobSpPool;
626
629 typedef bsl::shared_ptr<bmqimp::Event> EventImplSp;
630
633 typedef bsl::shared_ptr<bmqimp::Queue> QueueImplSp;
634
635 public:
636 // PUBLIC TYPES
637
639 struct AckParams {
640 // PUBLIC DATA
641
644
647
650
653
654 // CREATORS
655
659 const bmqt::CorrelationId& correlationId,
660 const bmqt::MessageGUID& guid,
661 const bmqa::QueueId& queueId);
662 };
663
664 // PUBLIC TYPES
665
668 // PUBLIC DATA
669
671 bdlbb::Blob d_payload;
672
675
678
681
682 // CREATORS
683
686 PushMessageParams(const bdlbb::Blob& payload,
687 const bmqa::QueueId& queueId,
688 const bmqt::MessageGUID& guid,
689 const MessageProperties& properties);
690 };
691
692 // CLASS METHODS
693
697 static Event createAckEvent(const bsl::vector<AckParams>& acks,
698 bdlbb::BlobBufferFactory* bufferFactory,
699 bslma::Allocator* allocator);
700
705 static Event
706 createPushEvent(const bsl::vector<PushMessageParams>& pushEventParams,
707 bdlbb::BlobBufferFactory* bufferFactory,
708 bslma::Allocator* allocator);
709
715 static Event
717 QueueId* queueId,
718 const bmqt::CorrelationId& correlationId,
719 int errorCode,
720 const bslstl::StringRef& errorDescription,
721 bslma::Allocator* allocator);
722
727 static Event
729 const bmqt::CorrelationId& correlationId,
730 const int errorCode,
731 const bslstl::StringRef& errorDescription,
732 bslma::Allocator* allocator);
733
737 static OpenQueueStatus
740 const bsl::string& errorDescription,
741 bslma::Allocator* allocator = 0);
742
749 const bsl::string& errorDescription,
750 bslma::Allocator* allocator = 0);
751
755 static CloseQueueStatus
758 const bsl::string& errorDescription,
759 bslma::Allocator* allocator = 0);
760};
761
762// =================
763// class MockSession
764// =================
765
768 public:
769 // TYPES
770
771 // CLASS METHODS
772
785 static void initialize(bslma::Allocator* allocator = 0);
786
793 static void shutdown();
794
795 // PUBLIC TYPES
796
801 typedef bsl::function<
802 void(const char* description, const char* file, int line)>
804
805 private:
806 // CLASS-SCOPE CATEGORY
807 BALL_LOG_SET_CLASS_CATEGORY("BMQA.MOCKSESSION");
808
809 private:
810 // CONSTANTS
811
816 static const int k_MAX_SIZEOF_BMQC_TWOKEYHASHMAP = 256;
817
818 // PRIVATE TYPES
819
821 typedef bdlcc::SharedObjectPool<
822 bdlbb::Blob,
823 bdlcc::ObjectPoolFunctors::DefaultCreator,
824 bdlcc::ObjectPoolFunctors::RemoveAll<bdlbb::Blob> >
825 BlobSpPool;
826
828 typedef bsl::shared_ptr<BlobSpPool> BlobSpPoolSp;
829
831 typedef bsls::AlignedBuffer<k_MAX_SIZEOF_BMQC_TWOKEYHASHMAP>
832 TwoKeyHashMapBuffer;
833
835 typedef bsl::shared_ptr<bmqimp::Queue> QueueImplSp;
836
838 typedef bsl::shared_ptr<bmqimp::Event> EventImplSp;
839
841 typedef bsl::shared_ptr<bmqimp::Stat> StatImplSp;
842
844 typedef bsl::shared_ptr<bmqimp::MessageCorrelationIdContainer>
845 CorrelationIdContainerSp;
846
847 typedef bsl::function<void()> CallbackFn;
848
851 struct Job {
852 // PUBLIC DATA
853
855 CallbackFn d_callback;
856
858 QueueImplSp d_queue;
859
863
865 int d_status;
866 };
867
868 typedef bdlb::Variant<Event, Job> EventOrJob;
869
872 enum Method {
873 e_START,
874 e_START_ASYNC,
875 e_STOP,
876 e_STOP_ASYNC,
877 e_FINALIZE_STOP,
878 e_OPEN_QUEUE,
879 e_OPEN_QUEUE_SYNC,
880 e_OPEN_QUEUE_ASYNC,
881 e_OPEN_QUEUE_ASYNC_CALLBACK,
882 e_CLOSE_QUEUE,
883 e_CLOSE_QUEUE_SYNC,
884 e_CLOSE_QUEUE_ASYNC,
885 e_CLOSE_QUEUE_ASYNC_CALLBACK,
886 e_CONFIGURE_QUEUE,
887 e_CONFIGURE_QUEUE_SYNC,
888 e_CONFIGURE_QUEUE_ASYNC,
889 e_CONFIGURE_QUEUE_ASYNC_CALLBACK,
890 e_NEXT_EVENT,
891 e_POST,
892 e_CONFIRM_MESSAGE,
893 e_CONFIRM_MESSAGES
894 };
895
896 struct Call {
897 // PUBLIC TYPES
898
900 typedef bsl::vector<EventOrJob> EventsAndJobs;
901
902 // PUBLIC DATA
903
905 int d_rc;
906
908 Method d_method;
909
911 int d_line;
912
914 bsl::string d_file;
915
917 bmqt::Uri d_uri;
918
920 bsls::Types::Uint64 d_flags;
921
923 bmqt::QueueOptions d_queueOptions;
924
926 bsls::TimeInterval d_timeout;
927
930 OpenQueueCallback d_openQueueCallback;
931
934 ConfigureQueueCallback d_configureQueueCallback;
935
938 CloseQueueCallback d_closeQueueCallback;
939
941 bmqa::OpenQueueStatus d_openQueueResult;
942
944 bmqa::ConfigureQueueStatus d_configureQueueResult;
945
947 bmqa::CloseQueueStatus d_closeQueueResult;
948
950 EventsAndJobs d_emittedEvents;
951
953 Event d_returnEvent;
954
956 MessageEvent d_messageEvent;
957
959 MessageConfirmationCookie d_cookie;
960
962 bslma::Allocator* d_allocator_p;
963
964 // TRAITS
965 BSLMF_NESTED_TRAIT_DECLARATION(Call, bslma::UsesBslmaAllocator)
966
967 // CREATORS
968
969
971 Call(Method method, bslma::Allocator* allocator);
972
973 Call(const Call& other, bslma::Allocator* allocator);
974
975 // MANIPULATORS
976
981 Call& fromLocation(const char* file, int line);
982
985 Call& returning(int rc);
986
990 Call& returning(const bmqa::OpenQueueStatus& result);
991
995 Call& returning(const bmqa::ConfigureQueueStatus& result);
996
1000 Call& returning(const bmqa::CloseQueueStatus& result);
1001
1004 Call& returning(const Event& event);
1005
1008 Call& emitting(const Event& event);
1009
1013 Call& emitting(const OpenQueueStatus& openQueueResult);
1014
1018 Call& emitting(const ConfigureQueueStatus& configureQueueResutl);
1019
1023 Call& emitting(const CloseQueueStatus& closeQueueResult);
1024
1025 // ACCESSORS
1026
1028 const char* methodName() const;
1029 };
1030
1032 typedef bsl::deque<Call> CallQueue;
1033
1035 typedef bsl::deque<bmqa::MessageEvent> PostedEvents;
1036
1037 // DATA
1038
1040 bdlbb::PooledBlobBufferFactory d_blobBufferFactory;
1041
1043 BlobSpPoolSp d_blobSpPool_sp;
1044
1046 bslma::ManagedPtr<SessionEventHandler> d_eventHandler_mp;
1047
1049 mutable CallQueue d_calls;
1050
1052 mutable bsl::deque<EventOrJob> d_eventsAndJobs;
1053
1055 bsl::unordered_set<bmqt::MessageGUID> d_unconfirmedGUIDs;
1056
1058 TwoKeyHashMapBuffer d_twoKeyHashMapBuffer;
1059
1062 FailureCb d_failureCb;
1063
1065 int d_lastQueueId;
1066
1068 CorrelationIdContainerSp d_corrIdContainer_sp;
1069
1071 PostedEvents d_postedEvents;
1072
1074 mutable bslmt::Mutex d_mutex;
1075
1077 bslma::ManagedPtr<bmqst::StatContext> d_rootStatContext_mp;
1078
1080 StatImplSp d_queuesStats_sp;
1081
1083 bmqt::SessionOptions d_sessionOptions;
1084
1086 bslma::Allocator* d_allocator_p;
1087
1088 private:
1089 // PRIVATE CLASS METHODS
1090
1092 static const char* toAscii(const Method method);
1093
1094 // PRIVATE MANIPULATORS
1095
1097 void initializeStats();
1098
1106 void openQueueImp(QueueId* queueId,
1107 const bmqt::QueueOptions& options,
1108 const bmqt::Uri& uri,
1109 bsls::Types::Uint64 flags,
1110 bool async);
1111
1115 void processIfQueueEvent(Event* event);
1116
1120 void processIfQueueJob(Job* job);
1121
1124 void processIfPushEvent(const Event& event);
1125
1126 // PRIVATE ACCESSORS
1127
1130 void assertWrongCall(const Method method) const;
1131
1134 void assertWrongCall(const Method method, const Call& expectedCall) const;
1135
1140 template <class T, class U>
1141 void assertWrongArg(const T& expected,
1142 const U& actual,
1143 const Method method,
1144 const char* arg,
1145 const Call& call) const;
1146
1147 public:
1148 // TRAITS
1149 BSLMF_NESTED_TRAIT_DECLARATION(MockSession, bslma::UsesBslmaAllocator)
1150
1151 // CREATORS
1152
1153
1158 explicit MockSession(
1159 const bmqt::SessionOptions& options = bmqt::SessionOptions(),
1160 bslma::Allocator* allocator = 0);
1161
1167 explicit MockSession(
1168 bslma::ManagedPtr<SessionEventHandler> eventHandler,
1169 const bmqt::SessionOptions& options = bmqt::SessionOptions(),
1170 bslma::Allocator* allocator = 0);
1171
1173 ~MockSession() BSLS_KEYWORD_OVERRIDE;
1174
1175 // MANIPULATORS
1176 // (specific to 'bmqa::MockSession')
1177
1181 void enqueueEvent(const bmqa::Event& event);
1182
1188 bool emitEvent(int numEvents = 1);
1189
1190 Call&
1191 expect_start(const bsls::TimeInterval& timeout = bsls::TimeInterval());
1193 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1197 Call&
1199 const bmqt::Uri& uri,
1200 bsls::Types::Uint64 flags,
1201 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1202 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1204 QueueId* queueId,
1205 const bmqt::Uri& uri,
1206 bsls::Types::Uint64 flags,
1207 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1208 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1209
1211 QueueId* queueId,
1212 const bmqt::Uri& uri,
1213 bsls::Types::Uint64 flags,
1214 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1215 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1217 QueueId* queueId,
1218 const bmqt::Uri& uri,
1219 bsls::Types::Uint64 flags,
1220 const OpenQueueCallback& callback,
1221 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1222 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1223
1225 QueueId* queueId,
1226 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1228 QueueId* queueId,
1229 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1230
1232 QueueId* queueId,
1233 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1235 QueueId* queueId,
1236 const CloseQueueCallback& callback,
1237 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1239 QueueId* queueId,
1240 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1241 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1243 QueueId* queueId,
1244 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1245 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1247 QueueId* queueId,
1248 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1249 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1250
1252 QueueId* queueId,
1253 const bmqt::QueueOptions& options,
1254 const ConfigureQueueCallback& callback,
1255 const bsls::TimeInterval& timeout = bsls::TimeInterval());
1256
1257 Call&
1258 expect_nextEvent(const bsls::TimeInterval& timeout = bsls::TimeInterval());
1259 Call& expect_post(const MessageEvent& messageEvent);
1260 Call& expect_confirmMessage(const Message& message);
1262
1269
1270 // MANIPULATORS
1271 // (virtual bmqa::AbstractSession)
1272 int start(const bsls::TimeInterval& timeout = bsls::TimeInterval())
1273 BSLS_KEYWORD_OVERRIDE;
1274
1279 int startAsync(const bsls::TimeInterval& timeout = bsls::TimeInterval())
1280 BSLS_KEYWORD_OVERRIDE;
1281
1282 void stop() BSLS_KEYWORD_OVERRIDE;
1283
1287 void stopAsync() BSLS_KEYWORD_OVERRIDE;
1288
1292 void finalizeStop() BSLS_KEYWORD_OVERRIDE;
1293
1297 BSLS_KEYWORD_OVERRIDE;
1298
1302 BSLS_KEYWORD_OVERRIDE;
1303
1306 void
1307 loadMessageProperties(MessageProperties* buffer) BSLS_KEYWORD_OVERRIDE;
1308
1311
1314 int getQueueId(QueueId* queueId,
1315 const bmqt::Uri& uri) BSLS_KEYWORD_OVERRIDE;
1316
1319 int getQueueId(QueueId* queueId, const bmqt::CorrelationId& correlationId)
1320 BSLS_KEYWORD_OVERRIDE;
1321
1325 int openQueue(QueueId* queueId,
1326 const bmqt::Uri& uri,
1327 bsls::Types::Uint64 flags,
1328 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1329 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1330 BSLS_KEYWORD_OVERRIDE;
1331
1342 const bmqt::Uri& uri,
1343 bsls::Types::Uint64 flags,
1344 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1345 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1346 BSLS_KEYWORD_OVERRIDE;
1347
1351 int
1353 const bmqt::Uri& uri,
1354 bsls::Types::Uint64 flags,
1355 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1356 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1357 BSLS_KEYWORD_OVERRIDE;
1358
1375 void
1377 const bmqt::Uri& uri,
1378 bsls::Types::Uint64 flags,
1379 const OpenQueueCallback& callback,
1380 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1381 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1382 BSLS_KEYWORD_OVERRIDE;
1383
1387 int
1389 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1390 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1391 BSLS_KEYWORD_OVERRIDE;
1392
1398 const bmqt::QueueOptions& options,
1399 const bsls::TimeInterval& timeout)
1400 BSLS_KEYWORD_OVERRIDE;
1401
1406 QueueId* queueId,
1407 const bmqt::QueueOptions& options = bmqt::QueueOptions(),
1408 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1409 BSLS_KEYWORD_OVERRIDE;
1410
1420 const bmqt::QueueOptions& options,
1421 const ConfigureQueueCallback& callback,
1422 const bsls::TimeInterval& timeout =
1423 bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE;
1424
1428 int closeQueue(QueueId* queueId,
1429 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1430 BSLS_KEYWORD_OVERRIDE;
1431
1439 const bsls::TimeInterval& timeout = bsls::TimeInterval())
1440 BSLS_KEYWORD_OVERRIDE;
1441
1446 const bsls::TimeInterval& timeout =
1447 bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE;
1448
1457 const CloseQueueCallback& callback,
1458 const bsls::TimeInterval& timeout =
1459 bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE;
1460
1467 Event nextEvent(const bsls::TimeInterval& timeout = bsls::TimeInterval())
1468 BSLS_KEYWORD_OVERRIDE;
1469
1474 int post(const MessageEvent& messageEvent) BSLS_KEYWORD_OVERRIDE;
1475
1476 int confirmMessage(const Message& message) BSLS_KEYWORD_OVERRIDE;
1478 BSLS_KEYWORD_OVERRIDE;
1479
1483 int confirmMessages(ConfirmEventBuilder* builder) BSLS_KEYWORD_OVERRIDE;
1484
1485 int configureMessageDumping(const bslstl::StringRef& command)
1486 BSLS_KEYWORD_OVERRIDE;
1487 // NOT IMPLEMENTED
1488
1492 void setFailureCallback(const FailureCb& failureCb);
1493
1497 bool popPostedEvent(bmqa::MessageEvent* event);
1498
1499 // ACCESSORS
1500
1504 size_t unconfirmedMessages() const;
1505};
1506
1507// ============================================================================
1508// INLINE DEFINITIONS
1509// ============================================================================
1510
1511// -----------------
1512// class MockSession
1513// -----------------
1514
1515inline void MockSession::setFailureCallback(const FailureCb& failureCb)
1516{
1517 d_failureCb = failureCb;
1518}
1519
1521{
1522 return d_unconfirmedGUIDs.size();
1523}
1524
1526{
1527 // PRECONDITIONS
1528 BSLS_ASSERT(event);
1529
1530 bslmt::LockGuard<bslmt::Mutex> guard(&d_mutex); // LOCKED
1531
1532 if (d_postedEvents.empty()) {
1533 return false; // RETURN
1534 }
1535
1536 *event = d_postedEvents.front();
1537 d_postedEvents.pop_front();
1538
1539 return true;
1540}
1541
1542} // close package namespace
1543} // close enterprise namespace
1544
1545#endif
Provide a pure protocol for a BlazingMQ session.
Provide Value-Semantic Type for a close queue operation status.
Provide Value-Semantic Type for a configure queue operation status.
Provide a builder for bmqa::MessageEvent objects.
Provide Value-Semantic Type for an open queue operation status.
Provide a value-semantic efficient identifier for a queue.
Provide access to the BlazingMQ broker.
Provide a value-semantic type for options related to a queue.
Provide a value-semantic type to configure session with the broker.
A pure protocol for a session.
Definition bmqa_abstractsession.h:50
bsl::function< void(const bmqa::CloseQueueStatus &result)> CloseQueueCallback
Definition bmqa_abstractsession.h:73
bsl::function< void(const bmqa::ConfigureQueueStatus &result)> ConfigureQueueCallback
Definition bmqa_abstractsession.h:66
bsl::function< void(const bmqa::OpenQueueStatus &result)> OpenQueueCallback
Definition bmqa_abstractsession.h:59
Definition bmqa_closequeuestatus.h:62
Definition bmqa_configurequeuestatus.h:61
Mechanism to build a batch of CONFIRM messages.
Definition bmqa_confirmeventbuilder.h:157
A variant type encompassing all types of events.
Definition bmqa_event.h:69
Cookie for async message confirmation.
Definition bmqa_message.h:137
A builder for MessageEvent objects.
Definition bmqa_messageeventbuilder.h:319
Definition bmqa_messageevent.h:64
Provide a VST representing message properties.
Definition bmqa_messageproperties.h:94
A message sent/received to/from the BlazingMQ broker.
Definition bmqa_message.h:176
Mechanism to mock a bmqa::Session
Definition bmqa_mocksession.h:767
void loadMessageProperties(MessageProperties *buffer) BSLS_KEYWORD_OVERRIDE
int confirmMessages(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
size_t unconfirmedMessages() const
Definition bmqa_mocksession.h:1520
void finalizeStop() BSLS_KEYWORD_OVERRIDE
void setFailureCallback(const FailureCb &failureCb)
Definition bmqa_mocksession.h:1515
Call & expect_start(const bsls::TimeInterval &timeout=bsls::TimeInterval())
int closeQueueAsync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int configureQueue(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
Call & expect_closeQueueSync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
static void initialize(bslma::Allocator *allocator=0)
void stopAsync() BSLS_KEYWORD_OVERRIDE
int getQueueId(QueueId *queueId, const bmqt::Uri &uri) BSLS_KEYWORD_OVERRIDE
int openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int startAsync(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
Call & expect_closeQueueAsync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
bool popPostedEvent(bmqa::MessageEvent *event)
Definition bmqa_mocksession.h:1525
Call & expect_nextEvent(const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_closeQueue(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval())
CloseQueueStatus closeQueueSync(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int confirmMessage(const Message &message) BSLS_KEYWORD_OVERRIDE
Call & expect_openQueueSync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_confirmMessage(const Message &message)
void stop() BSLS_KEYWORD_OVERRIDE
Call & expect_openQueueAsync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
OpenQueueStatus openQueueSync(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void loadConfirmEventBuilder(ConfirmEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
Call & expect_post(const MessageEvent &messageEvent)
Call & expect_confirmMessages(ConfirmEventBuilder *builder)
int configureQueueAsync(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
Call & expect_configureQueueSync(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
void loadMessageEventBuilder(MessageEventBuilder *builder) BSLS_KEYWORD_OVERRIDE
int start(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
Call & expect_openQueue(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
int closeQueue(QueueId *queueId, const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
ConfigureQueueStatus configureQueueSync(QueueId *queueId, const bmqt::QueueOptions &options, const bsls::TimeInterval &timeout) BSLS_KEYWORD_OVERRIDE
Event nextEvent(const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
void enqueueEvent(const bmqa::Event &event)
bool emitEvent(int numEvents=1)
bsl::function< void(const char *description, const char *file, int line)> FailureCb
Definition bmqa_mocksession.h:803
int openQueue(QueueId *queueId, const bmqt::Uri &uri, bsls::Types::Uint64 flags, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval()) BSLS_KEYWORD_OVERRIDE
int configureMessageDumping(const bslstl::StringRef &command) BSLS_KEYWORD_OVERRIDE
int post(const MessageEvent &messageEvent) BSLS_KEYWORD_OVERRIDE
Call & expect_configureQueue(QueueId *queueId, const bmqt::QueueOptions &options=bmqt::QueueOptions(), const bsls::TimeInterval &timeout=bsls::TimeInterval())
Call & expect_startAsync(const bsls::TimeInterval &timeout=bsls::TimeInterval())
Definition bmqa_openqueuestatus.h:62
Value-semantic efficient identifier for a queue.
Definition bmqa_queueid.h:59
Definition bmqa_session.h:611
Definition bmqt_correlationid.h:193
Definition bmqt_messageguid.h:96
Value-semantic type for options related to a queue.
Definition bmqt_queueoptions.h:67
Value semantic type representing a URI.
Definition bmqt_uri.h:157
Definition bmqa_abstractsession.h:42
Struct representing parameters for an ack message.
Definition bmqa_mocksession.h:639
QueueId d_queueId
QueueId for message being referred to.
Definition bmqa_mocksession.h:652
bmqt::MessageGUID d_guid
Message GUID of confirmed message.
Definition bmqa_mocksession.h:649
bmqt::CorrelationId d_correlationId
CorrelationId.
Definition bmqa_mocksession.h:646
AckParams(const bmqt::AckResult::Enum status, const bmqt::CorrelationId &correlationId, const bmqt::MessageGUID &guid, const bmqa::QueueId &queueId)
bmqt::AckResult::Enum d_status
Status code.
Definition bmqa_mocksession.h:643
Struct representing parameters for a push message.
Definition bmqa_mocksession.h:667
MessageProperties d_properties
Optionally specified properties for message.
Definition bmqa_mocksession.h:680
PushMessageParams(const bdlbb::Blob &payload, const bmqa::QueueId &queueId, const bmqt::MessageGUID &guid, const MessageProperties &properties)
QueueId d_queueId
QueueId for this message.
Definition bmqa_mocksession.h:674
bdlbb::Blob d_payload
Payload of message.
Definition bmqa_mocksession.h:671
bmqt::MessageGUID d_guid
GUID for message.
Definition bmqa_mocksession.h:677
Utility methods to create bmqa events.
Definition bmqa_mocksession.h:616
static Event createSessionEvent(bmqt::SessionEventType::Enum sessionEventType, const bmqt::CorrelationId &correlationId, const int errorCode, const bslstl::StringRef &errorDescription, bslma::Allocator *allocator)
static CloseQueueStatus createCloseQueueStatus(const QueueId &queueId, bmqt::CloseQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
static OpenQueueStatus createOpenQueueStatus(const QueueId &queueId, bmqt::OpenQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
static Event createAckEvent(const bsl::vector< AckParams > &acks, bdlbb::BlobBufferFactory *bufferFactory, bslma::Allocator *allocator)
static ConfigureQueueStatus createConfigureQueueStatus(const QueueId &queueId, bmqt::ConfigureQueueResult::Enum statusCode, const bsl::string &errorDescription, bslma::Allocator *allocator=0)
static Event createQueueSessionEvent(bmqt::SessionEventType::Enum sessionEventType, QueueId *queueId, const bmqt::CorrelationId &correlationId, int errorCode, const bslstl::StringRef &errorDescription, bslma::Allocator *allocator)
static Event createPushEvent(const bsl::vector< PushMessageParams > &pushEventParams, bdlbb::BlobBufferFactory *bufferFactory, bslma::Allocator *allocator)
Enum
Definition bmqt_resultcode.h:437
Enum
Definition bmqt_resultcode.h:287
Enum
Definition bmqt_resultcode.h:215
Enum
Definition bmqt_resultcode.h:137
Enum
Definition bmqt_sessioneventtype.h:116