1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374 |
- #pragma once
- #include <library/cpp/testing/unittest/registar.h>
- #include <library/cpp/messagebus/remote_client_connection.h>
- #include <library/cpp/messagebus/remote_client_session.h>
- #include <library/cpp/messagebus/remote_server_connection.h>
- #include <library/cpp/messagebus/remote_server_session.h>
- #include <library/cpp/messagebus/ybus.h>
- #include <library/cpp/messagebus/oldmodule/module.h>
- #include <library/cpp/messagebus/scheduler/scheduler.h>
- #include <util/generic/object_counter.h>
- #include <util/system/type_name.h>
- #include <util/stream/output.h>
- #include <typeinfo>
- struct TObjectCountCheck {
- bool Enabled;
- template <typename T>
- struct TReset {
- TObjectCountCheck* const Thiz;
- TReset(TObjectCountCheck* thiz)
- : Thiz(thiz)
- {
- }
- void operator()() {
- long oldValue = TObjectCounter<T>::ResetObjectCount();
- if (oldValue != 0) {
- Cerr << "warning: previous counter: " << oldValue << " for " << TypeName<T>() << Endl;
- Cerr << "won't check in this test" << Endl;
- Thiz->Enabled = false;
- }
- }
- };
- TObjectCountCheck() {
- Enabled = true;
- DoForAllCounters<TReset>();
- }
- template <typename T>
- struct TCheckZero {
- TCheckZero(TObjectCountCheck*) {
- }
- void operator()() {
- UNIT_ASSERT_VALUES_EQUAL_C(0L, TObjectCounter<T>::ObjectCount(), TypeName<T>());
- }
- };
- ~TObjectCountCheck() {
- if (Enabled) {
- DoForAllCounters<TCheckZero>();
- }
- }
- template <template <typename> class TOp>
- void DoForAllCounters() {
- TOp< ::NBus::NPrivate::TRemoteClientConnection>(this)();
- TOp< ::NBus::NPrivate::TRemoteServerConnection>(this)();
- TOp< ::NBus::NPrivate::TRemoteClientSession>(this)();
- TOp< ::NBus::NPrivate::TRemoteServerSession>(this)();
- TOp< ::NBus::NPrivate::TScheduler>(this)();
- TOp< ::NEventLoop::TEventLoop>(this)();
- TOp< ::NEventLoop::TChannel>(this)();
- TOp< ::NBus::TBusModule>(this)();
- TOp< ::NBus::TBusJob>(this)();
- }
- };
|