Merge lp:~thomas-voss/dbus-cpp/add_fixture_for_testing_purposes into lp:dbus-cpp

Proposed by Thomas Voß
Status: Merged
Approved by: Pete Woods
Approved revision: 27
Merged at revision: 18
Proposed branch: lp:~thomas-voss/dbus-cpp/add_fixture_for_testing_purposes
Merge into: lp:dbus-cpp
Diff against target: 1821 lines (+914/-294)
25 files modified
CMakeLists.txt (+4/-0)
data/CMakeLists.txt (+6/-0)
data/session.conf (+42/-0)
data/system.conf (+23/-0)
debian/control (+1/-1)
debian/libdbus-cpp1.symbols.amd64 (+41/-1)
debian/libdbus-cpp1.symbols.armhf (+44/-0)
debian/libdbus-cpp1.symbols.i386 (+44/-0)
include/core/dbus/bus.h (+6/-0)
include/core/dbus/dbus.h (+24/-13)
include/core/dbus/fixture.h (+153/-0)
include/core/dbus/impl/property.h (+32/-33)
src/core/dbus/CMakeLists.txt (+9/-1)
src/core/dbus/bus.cpp (+45/-4)
src/core/dbus/dbus.cpp (+27/-0)
src/core/dbus/fixture.cpp.in (+132/-0)
tests/CMakeLists.txt (+18/-42)
tests/bus_test.cpp (+38/-30)
tests/compiler_test.cpp (+26/-26)
tests/dbus_test.cpp (+34/-20)
tests/executor_test.cpp (+37/-22)
tests/message_test.cpp (+18/-17)
tests/service_test.cpp (+93/-83)
tests/stl_codec_test.cpp (+3/-0)
tests/test_data.h.in (+14/-1)
To merge this branch: bzr merge lp:~thomas-voss/dbus-cpp/add_fixture_for_testing_purposes
Reviewer Review Type Date Requested Status
Pete Woods (community) Approve
PS Jenkins bot continuous-integration Approve
Review via email: mp+201169@code.launchpad.net

Commit message

Add fixture for testing purposes.

Description of the change

Add fixture for testing purposes.

To post a comment you must log in.
Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Needs Fixing (continuous-integration)
25. By Thomas Voß

Remove two obsolete sleeps.
Remove two obsolete std::cout's.

26. By Thomas Voß

Adjust i386 symbols file.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
27. By Thomas Voß

Clean up indentation.

Revision history for this message
PS Jenkins bot (ps-jenkins) wrote :
review: Approve (continuous-integration)
Revision history for this message
Pete Woods (pete-woods) :
review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2013-11-27 18:57:42 +0000
3+++ CMakeLists.txt 2014-01-13 07:51:24 +0000
4@@ -20,6 +20,10 @@
5
6 find_package(Boost COMPONENTS filesystem program_options system REQUIRED)
7 find_package(LibXml2 REQUIRED)
8+find_package(PkgConfig REQUIRED)
9+
10+pkg_check_modules(DBUS dbus-1)
11+pkg_check_modules(PROCESS_CPP process-cpp)
12
13 set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake)
14
15
16=== modified file 'data/CMakeLists.txt'
17--- data/CMakeLists.txt 2013-11-04 15:33:03 +0000
18+++ data/CMakeLists.txt 2014-01-13 07:51:24 +0000
19@@ -23,3 +23,9 @@
20 DESTINATION ${CMAKE_INSTALL_LIBDIR}/pkgconfig
21 )
22
23+install(
24+ FILES ${CMAKE_CURRENT_SOURCE_DIR}/session.conf ${CMAKE_CURRENT_SOURCE_DIR}/system.conf
25+ DESTINATION
26+ "${CMAKE_INSTALL_DATADIR}/dbus-cpp/"
27+)
28+
29
30=== added file 'data/session.conf'
31--- data/session.conf 1970-01-01 00:00:00 +0000
32+++ data/session.conf 2014-01-13 07:51:24 +0000
33@@ -0,0 +1,42 @@
34+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
35+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
36+<busconfig>
37+ <!-- If we fork, keep the user's original umask to avoid affecting
38+ the behavior of child processes. -->
39+ <keep_umask/>
40+
41+ <type>session</type>
42+
43+ <listen>unix:tmpdir=/tmp</listen>
44+
45+ <standard_session_servicedirs />
46+
47+ <policy context="default">
48+ <!-- Allow everything to be sent -->
49+ <allow send_destination="*" eavesdrop="true"/>
50+ <!-- Allow everything to be received -->
51+ <allow eavesdrop="true"/>
52+ <!-- Allow anyone to own anything -->
53+ <allow own="*"/>
54+ </policy>
55+
56+ <!-- raise the service start timeout to 40 seconds as it can timeout
57+ on the live cd on slow machines -->
58+ <limit name="service_start_timeout">60000</limit>
59+
60+ <!-- the memory limits are 1G instead of say 4G because they can't exceed 32-bit signed int max -->
61+ <limit name="max_incoming_bytes">1000000000</limit>
62+ <limit name="max_outgoing_bytes">1000000000</limit>
63+ <limit name="max_message_size">1000000000</limit>
64+ <limit name="service_start_timeout">120000</limit>
65+ <limit name="auth_timeout">240000</limit>
66+ <limit name="max_completed_connections">100000</limit>
67+ <limit name="max_incomplete_connections">10000</limit>
68+ <limit name="max_connections_per_user">100000</limit>
69+ <limit name="max_pending_service_starts">10000</limit>
70+ <limit name="max_names_per_connection">50000</limit>
71+ <limit name="max_match_rules_per_connection">50000</limit>
72+ <limit name="max_replies_per_connection">50000</limit>
73+ <limit name="reply_timeout">300000</limit>
74+
75+</busconfig>
76
77=== added file 'data/system.conf'
78--- data/system.conf 1970-01-01 00:00:00 +0000
79+++ data/system.conf 2014-01-13 07:51:24 +0000
80@@ -0,0 +1,23 @@
81+<!DOCTYPE busconfig PUBLIC "-//freedesktop//DTD D-Bus Bus Configuration 1.0//EN"
82+ "http://www.freedesktop.org/standards/dbus/1.0/busconfig.dtd">
83+<busconfig>
84+ <!-- If we fork, keep the user's original umask to avoid affecting
85+ the behavior of child processes. -->
86+ <keep_umask/>
87+
88+ <type>system</type>
89+
90+ <listen>unix:tmpdir=/tmp</listen>
91+
92+ <standard_system_servicedirs/>
93+
94+ <policy context="default">
95+ <!-- Allow everything to be sent -->
96+ <allow send_destination="*" eavesdrop="true"/>
97+ <!-- Allow everything to be received -->
98+ <allow eavesdrop="true"/>
99+ <!-- Allow anyone to own anything -->
100+ <allow own="*"/>
101+ </policy>
102+
103+</busconfig>
104
105=== modified file 'debian/control'
106--- debian/control 2014-01-03 07:35:26 +0000
107+++ debian/control 2014-01-13 07:51:24 +0000
108@@ -2,7 +2,7 @@
109 Priority: optional
110 Maintainer: Thomas Voß <thomas.voss@ubuntu.com>
111 Build-Depends: cmake,
112- dbus-test-runner,
113+ dbus,
114 debhelper (>= 9),
115 doxygen,
116 google-mock,
117
118=== modified file 'debian/libdbus-cpp1.symbols.amd64'
119--- debian/libdbus-cpp1.symbols.amd64 2014-01-05 18:58:19 +0000
120+++ debian/libdbus-cpp1.symbols.amd64 2014-01-13 07:51:24 +0000
121@@ -304,7 +304,6 @@
122 (c++)"std::__detail::_Hash_node<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, true>* std::_Hashtable<core::dbus::types::ObjectPath, std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::types::ObjectPath>, std::hash<core::dbus::types::ObjectPath>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_allocate_node<std::piecewise_construct_t const&, std::tuple<core::dbus::types::ObjectPath const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<core::dbus::types::ObjectPath const&>&&, std::tuple<>&&)@Base" 0replaceme
123 (c++)"std::__detail::_Hash_node<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, true>* std::_Hashtable<core::dbus::types::ObjectPath, std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::types::ObjectPath>, std::hash<core::dbus::types::ObjectPath>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_allocate_node<std::piecewise_construct_t const&, std::tuple<core::dbus::types::ObjectPath const&>, std::tuple<> >(std::piecewise_construct_t const&, std::tuple<core::dbus::types::ObjectPath const&>&&, std::tuple<>&&)@Base" 0replaceme
124 (c++)"std::_Hashtable<core::dbus::types::ObjectPath, std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::types::ObjectPath>, std::hash<core::dbus::types::ObjectPath>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, true>*)@Base" 0replaceme
125- (c++)"std::_Hashtable<core::dbus::types::ObjectPath, std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::types::ObjectPath>, std::hash<core::dbus::types::ObjectPath>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::clear()@Base" 0replaceme
126 (c++)"std::_Hashtable<core::dbus::types::ObjectPath, std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::types::ObjectPath>, std::hash<core::dbus::types::ObjectPath>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_rehash(unsigned long, unsigned long const&)@Base" 0replaceme
127 (c++)"std::_Hashtable<core::dbus::Message::Type, std::pair<core::dbus::Message::Type const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::Message::Type const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::Message::Type>, std::hash<core::dbus::Message::Type>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>)@Base" 0replaceme
128 (c++)"std::_Hashtable<core::dbus::Message::Type, std::pair<core::dbus::Message::Type const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::Message::Type const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::Message::Type>, std::hash<core::dbus::Message::Type>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<core::dbus::Message::Type const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, true>*)@Base" 0replaceme
129@@ -352,6 +351,46 @@
130 (c++)"typeinfo for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
131 (c++)"typeinfo name for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
132 (c++)"vtable for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
133+ (c++)"guard variable for core::dbus::DBus::Hello::name()::s@Base" 0replaceme
134+ (c++)"core::dbus::Bus::Bus(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
135+ (c++)"core::dbus::Bus::Bus(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
136+ (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 0replaceme
137+ (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 0replaceme
138+ (c++)"core::dbus::Fixture::Fixture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
139+ (c++)"core::dbus::Fixture::Fixture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
140+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
141+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
142+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
143+ (c++)"core::dbus::DBus::hello() const@Base" 0replaceme
144+ (c++)"std::_Function_base::_Base_manager<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}> const&, std::_Manager_operation)@Base" 0replaceme
145+ (c++)"std::_Function_base::_Base_manager<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}> const&, std::_Manager_operation)@Base" 0replaceme
146+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 0replaceme
147+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 0replaceme
148+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 0replaceme
149+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
150+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
151+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
152+ (c++)"std::_Function_handler<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_invoke(std::_Any_data const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
153+ (c++)"std::_Function_handler<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_invoke(std::_Any_data const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
154+ (c++)"std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~pair()@Base" 0replaceme
155+ (c++)"std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~pair()@Base" 0replaceme
156+ (c++)"std::_Rb_tree_iterator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)@Base" 0replaceme
157+ (c++)"std::pair<std::_Rb_tree_iterator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, bool> std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)@Base" 0replaceme
158+ (c++)"std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_get_insert_unique_pos(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
159+ (c++)"std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@Base" 0replaceme
160+ (c++)"typeinfo for core::dbus::Fixture@Base" 0replaceme
161+ (c++)"typeinfo for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
162+ (c++)"typeinfo for core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
163+ (c++)"typeinfo for core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
164+ (c++)"typeinfo name for core::dbus::Fixture@Base" 0replaceme
165+ (c++)"typeinfo name for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
166+ (c++)"typeinfo name for core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
167+ (c++)"typeinfo name for core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
168+ (c++)"vtable for core::dbus::Fixture@Base" 0replaceme
169+ (c++)"vtable for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
170+ (c++)"core::dbus::DBus::Hello::name()::s@Base" 0replaceme
171+ (c++)"core::dbus::Fixture::default_system_bus_config_file()@Base" 0replaceme
172+ (c++)"core::dbus::Fixture::default_session_bus_config_file()@Base" 0replaceme
173 (c++|optional)"boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector(boost::exception_detail::error_info_injector<boost::system::system_error> const&)@Base" 0replaceme
174 (c++|optional)"boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector(boost::exception_detail::error_info_injector<boost::system::system_error> const&)@Base" 0replaceme
175 (c++|optional)"boost::exception_detail::error_info_injector<std::runtime_error>::error_info_injector(boost::exception_detail::error_info_injector<std::runtime_error> const&)@Base" 0replaceme
176@@ -362,3 +401,4 @@
177 (c++|optional)"std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)@Base" 0replaceme
178 (c++|optional)"std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
179 (c++|optional)"std::basic_string<char, std::char_traits<char>, std::allocator<char> > std::operator+<char, std::char_traits<char>, std::allocator<char> >(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, char const*)@Base" 0replaceme
180+ (c++|optional)"std::_Hashtable<core::dbus::types::ObjectPath, std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> >, std::allocator<std::pair<core::dbus::types::ObjectPath const, std::function<void (std::shared_ptr<core::dbus::Message> const&)> > >, std::__detail::_Select1st, std::equal_to<core::dbus::types::ObjectPath>, std::hash<core::dbus::types::ObjectPath>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::clear()@Base" 0replaceme
181
182=== modified file 'debian/libdbus-cpp1.symbols.armhf'
183--- debian/libdbus-cpp1.symbols.armhf 2014-01-05 18:58:19 +0000
184+++ debian/libdbus-cpp1.symbols.armhf 2014-01-13 07:51:24 +0000
185@@ -378,6 +378,50 @@
186 (c++)"typeinfo for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
187 (c++)"typeinfo name for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
188 (c++)"vtable for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
189+ (c++)"guard variable for core::dbus::DBus::Hello::name()::s@Base" 0replaceme
190+ (c++)"core::dbus::Bus::Bus(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
191+ (c++)"core::dbus::Bus::Bus(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
192+ (c++)"core::dbus::Fixture::default_system_bus_config_file()@Base" 0replaceme
193+ (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 0replaceme
194+ (c++)"core::dbus::Fixture::default_session_bus_config_file()@Base" 0replaceme
195+ (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 0replaceme
196+ (c++)"core::dbus::Fixture::Fixture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
197+ (c++)"core::dbus::Fixture::Fixture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
198+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
199+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
200+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
201+ (c++)"core::dbus::DBus::hello() const@Base" 0replaceme
202+ (c++)"std::_Function_base::_Base_manager<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}> const&, std::_Manager_operation)@Base" 0replaceme
203+ (c++)"std::_Function_base::_Base_manager<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}> const&, std::_Manager_operation)@Base" 0replaceme
204+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 0replaceme
205+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 0replaceme
206+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 0replaceme
207+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
208+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
209+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
210+ (c++)"std::_Function_handler<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_invoke(std::_Any_data const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
211+ (c++)"std::_Function_handler<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_invoke(std::_Any_data const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
212+ (c++)"std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~pair()@Base" 0replaceme
213+ (c++)"std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~pair()@Base" 0replaceme
214+ (c++)"std::_Rb_tree_iterator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)@Base" 0replaceme
215+ (c++)"std::pair<std::_Rb_tree_iterator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, bool> std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)@Base" 0replaceme
216+ (c++)"std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_get_insert_unique_pos(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
217+ (c++)"std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@Base" 0replaceme
218+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
219+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
220+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
221+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
222+ (c++)"typeinfo for core::dbus::Fixture@Base" 0replaceme
223+ (c++)"typeinfo for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
224+ (c++)"typeinfo for core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
225+ (c++)"typeinfo for core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
226+ (c++)"typeinfo name for core::dbus::Fixture@Base" 0replaceme
227+ (c++)"typeinfo name for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
228+ (c++)"typeinfo name for core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
229+ (c++)"typeinfo name for core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
230+ (c++)"vtable for core::dbus::Fixture@Base" 0replaceme
231+ (c++)"vtable for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
232+ (c++)"core::dbus::DBus::Hello::name()::s@Base" 0replaceme
233 (c++|optional)"boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector(boost::exception_detail::error_info_injector<boost::system::system_error> const&)@Base" 0replaceme
234 (c++|optional)"boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector(boost::exception_detail::error_info_injector<boost::system::system_error> const&)@Base" 0replaceme
235 (c++|optional)"boost::exception_detail::error_info_injector<std::runtime_error>::error_info_injector(boost::exception_detail::error_info_injector<std::runtime_error> const&)@Base" 0replaceme
236
237=== modified file 'debian/libdbus-cpp1.symbols.i386'
238--- debian/libdbus-cpp1.symbols.i386 2014-01-05 18:58:19 +0000
239+++ debian/libdbus-cpp1.symbols.i386 2014-01-13 07:51:24 +0000
240@@ -378,6 +378,50 @@
241 (c++)"typeinfo for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
242 (c++)"typeinfo name for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
243 (c++)"vtable for std::_Sp_counted_ptr<core::dbus::Message::Reader::Private*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
244+ (c++)"guard variable for core::dbus::DBus::Hello::name()::s@Base" 0replaceme
245+ (c++)"core::dbus::Bus::Bus(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
246+ (c++)"core::dbus::Bus::Bus(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
247+ (c++)"core::dbus::Fixture::default_system_bus_config_file()@Base" 0replaceme
248+ (c++)"core::dbus::Fixture::create_connection_to_system_bus()@Base" 0replaceme
249+ (c++)"core::dbus::Fixture::default_session_bus_config_file()@Base" 0replaceme
250+ (c++)"core::dbus::Fixture::create_connection_to_session_bus()@Base" 0replaceme
251+ (c++)"core::dbus::Fixture::Fixture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
252+ (c++)"core::dbus::Fixture::Fixture(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
253+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
254+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
255+ (c++)"core::dbus::Fixture::~Fixture()@Base" 0replaceme
256+ (c++)"core::dbus::DBus::hello() const@Base" 0replaceme
257+ (c++)"std::_Function_base::_Base_manager<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}> const&, std::_Manager_operation)@Base" 0replaceme
258+ (c++)"std::_Function_base::_Base_manager<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_manager(std::_Any_data&, std::_Function_base::_Base_manager<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}> const&, std::_Manager_operation)@Base" 0replaceme
259+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_destroy()@Base" 0replaceme
260+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_dispose()@Base" 0replaceme
261+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::_M_get_deleter(std::type_info const&)@Base" 0replaceme
262+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
263+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
264+ (c++)"std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>::~_Sp_counted_ptr()@Base" 0replaceme
265+ (c++)"std::_Function_handler<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_invoke(std::_Any_data const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
266+ (c++)"std::_Function_handler<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&), core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}>::_M_invoke(std::_Any_data const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
267+ (c++)"std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~pair()@Base" 0replaceme
268+ (c++)"std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >::~pair()@Base" 0replaceme
269+ (c++)"std::_Rb_tree_iterator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::_Rb_tree_node_base*, std::_Rb_tree_node_base*, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)@Base" 0replaceme
270+ (c++)"std::pair<std::_Rb_tree_iterator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, bool> std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_insert_unique<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&)@Base" 0replaceme
271+ (c++)"std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_get_insert_unique_pos(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0replaceme
272+ (c++)"std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > >::_M_erase(std::_Rb_tree_node<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*)@Base" 0replaceme
273+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
274+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
275+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
276+ (c++)"std::function<void (std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)>::function<core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}, void>(core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1})@Base" 0replaceme
277+ (c++)"typeinfo for core::dbus::Fixture@Base" 0replaceme
278+ (c++)"typeinfo for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
279+ (c++)"typeinfo for core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
280+ (c++)"typeinfo for core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
281+ (c++)"typeinfo name for core::dbus::Fixture@Base" 0replaceme
282+ (c++)"typeinfo name for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
283+ (c++)"typeinfo name for core::dbus::Fixture::Private::System::System(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
284+ (c++)"typeinfo name for core::dbus::Fixture::Private::Session::Session(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)::{lambda(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)#1}@Base" 0replaceme
285+ (c++)"vtable for core::dbus::Fixture@Base" 0replaceme
286+ (c++)"vtable for std::_Sp_counted_ptr<core::dbus::Bus*, (__gnu_cxx::_Lock_policy)2>@Base" 0replaceme
287+ (c++)"core::dbus::DBus::Hello::name()::s@Base" 0replaceme
288 (c++|optional)"boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector(boost::exception_detail::error_info_injector<boost::system::system_error> const&)@Base" 0replaceme
289 (c++|optional)"boost::exception_detail::error_info_injector<boost::system::system_error>::error_info_injector(boost::exception_detail::error_info_injector<boost::system::system_error> const&)@Base" 0replaceme
290 (c++|optional)"boost::exception_detail::error_info_injector<std::runtime_error>::error_info_injector(boost::exception_detail::error_info_injector<std::runtime_error> const&)@Base" 0replaceme
291
292=== modified file 'include/core/dbus/bus.h'
293--- include/core/dbus/bus.h 2013-11-27 18:57:42 +0000
294+++ include/core/dbus/bus.h 2014-01-13 07:51:24 +0000
295@@ -172,6 +172,12 @@
296 typedef std::function<MessageHandlerResult(const Message::Ptr& msg)> MessageHandler;
297
298 /**
299+ * @brief Constructs an instance of Bus and connected to the bus specified by address.
300+ * @param address The address of the bus to connect to.
301+ */
302+ explicit Bus(const std::string& address);
303+
304+ /**
305 * @brief Creates a connection to a well-known bus. The implementation takes care of setting up thread-safety flags for DBus.
306 * @param bus The well-known bus the instance should connect to.
307 */
308
309=== modified file 'include/core/dbus/dbus.h'
310--- include/core/dbus/dbus.h 2013-11-28 08:48:17 +0000
311+++ include/core/dbus/dbus.h 2014-01-13 07:51:24 +0000
312@@ -18,19 +18,23 @@
313 #ifndef CORE_DBUS_DBUS_H_
314 #define CORE_DBUS_DBUS_H_
315
316-#include <core/dbus/bus.h>
317-#include <core/dbus/codec.h>
318-#include <core/dbus/object.h>
319-#include <core/dbus/service.h>
320 #include <core/dbus/visibility.h>
321-#include <core/dbus/types/object_path.h>
322
323-#include <sstream>
324+#include <memory>
325+#include <string>
326+#include <vector>
327
328 namespace core
329 {
330 namespace dbus
331 {
332+class Bus;
333+class Object;
334+class Service;
335+namespace types
336+{
337+class ObjectPath;
338+}
339 /**
340 * @brief The DBus class provides access to dbus daemon on the bus.
341 */
342@@ -46,7 +50,7 @@
343 /** @brief Query the interface name of the DBus daemon. */
344 static const std::string& interface();
345
346- DBus(const Bus::Ptr& bus);
347+ DBus(const std::shared_ptr<Bus>& bus);
348 DBus(const DBus&) = delete;
349
350 DBus& operator=(const DBus&) = delete;
351@@ -57,29 +61,36 @@
352 * @param [in] name Name of the remote peer.
353 * @return The process id of the remote peer.
354 */
355- ORG_FREEDESKTOP_DBUS_DLL_PUBLIC uint32_t get_connection_unix_process_id(const std::string& name) const;
356+ uint32_t get_connection_unix_process_id(const std::string& name) const;
357
358 /**
359 * @brief Queries the user ID given a name on the bus.
360 * @param [in] name Name of the remote peer.
361 * @return The user id that the remote peer runs under.
362 */
363- ORG_FREEDESKTOP_DBUS_DLL_PUBLIC uint32_t get_connection_unix_user(const std::string& name) const;
364+ uint32_t get_connection_unix_user(const std::string& name) const;
365+
366+ /**
367+ * @brief Say hello to the message bus daemon.
368+ * @return The unique name assigned to this connection.
369+ */
370+ std::string hello() const;
371
372 /**
373 * @brief List all known names on the bus.
374 * @return A vector of all known participants on the bus.
375 */
376- ORG_FREEDESKTOP_DBUS_DLL_PUBLIC std::vector<std::string> list_names() const;
377+ std::vector<std::string> list_names() const;
378
379 private:
380 struct ListNames;
381+ struct Hello;
382 struct GetConnectionUnixProcessID;
383 struct GetConnectionUnixUser;
384
385- Bus::Ptr bus;
386- Service::Ptr service;
387- Object::Ptr object;
388+ std::shared_ptr<Bus> bus;
389+ std::shared_ptr<Service> service;
390+ std::shared_ptr<Object> object;
391 };
392 }
393 }
394
395=== added file 'include/core/dbus/fixture.h'
396--- include/core/dbus/fixture.h 1970-01-01 00:00:00 +0000
397+++ include/core/dbus/fixture.h 2014-01-13 07:51:24 +0000
398@@ -0,0 +1,153 @@
399+/*
400+ * Copyright © 2012 Canonical Ltd.
401+ *
402+ * This program is free software: you can redistribute it and/or modify it
403+ * under the terms of the GNU Lesser General Public License version 3,
404+ * as published by the Free Software Foundation.
405+ *
406+ * This program is distributed in the hope that it will be useful,
407+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
408+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
409+ * GNU Lesser General Public License for more details.
410+ *
411+ * You should have received a copy of the GNU Lesser General Public License
412+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
413+ *
414+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
415+ */
416+#ifndef CORE_DBUS_FIXTURE_H_
417+#define CORE_DBUS_FIXTURE_H_
418+
419+#include <core/dbus/visibility.h>
420+
421+#include <memory>
422+#include <string>
423+
424+namespace core
425+{
426+namespace dbus
427+{
428+class Bus;
429+
430+/**
431+ * @brief The Fixture class provides private session and system bus instances for testing purposes.
432+ */
433+class ORG_FREEDESKTOP_DBUS_DLL_PUBLIC Fixture
434+{
435+public:
436+
437+ /**
438+ * @brief default_session_bus_config_file provides the filename of the default session
439+ * bus configuration file.
440+ */
441+ static const std::string& default_session_bus_config_file();
442+
443+ /**
444+ * @brief default_system_bus_config_file provides the filename of the default system
445+ * bus configuration file.
446+ */
447+ static const std::string& default_system_bus_config_file();
448+
449+ /**
450+ * @brief Constructs a fixture instance with the two given configuration files.
451+ *
452+ * Any test running within the scope of this fixture will access the private
453+ * session- and system-bus instances setup by this class.
454+ *
455+ * @param session_bus_config_file Path to the session-bus configuration file.
456+ * @param system_bus_config_file Path to the system-bus configuration file.
457+ */
458+ Fixture(const std::string& session_bus_config_file,
459+ const std::string& system_bus_config_file);
460+
461+ virtual ~Fixture();
462+
463+ /**
464+ * @brief create_connection_to_session_bus creates a new connection to the testing session bus instance.
465+ */
466+ std::shared_ptr<Bus> create_connection_to_session_bus();
467+
468+ /**
469+ * @brief create_connection_to_system_bus creates a new connection to the testing system bus instance.
470+ */
471+ std::shared_ptr<Bus> create_connection_to_system_bus();
472+
473+private:
474+ struct Private;
475+ std::unique_ptr<Private> d;
476+};
477+}
478+}
479+
480+#if defined(CORE_DBUS_ENABLE_GOOGLE_TEST_FIXTURE)
481+#include <gtest/gtest.h>
482+namespace core
483+{
484+namespace dbus
485+{
486+namespace testing
487+{
488+/**
489+ * @brief The Fixture class provides a Google Test fixture for running
490+ * tests in a private dbus environment.
491+ */
492+class Fixture : public ::testing::Test
493+{
494+public:
495+
496+ /**
497+ * @brief default_session_bus_config_file provides the filename of the default session
498+ * bus configuration file.
499+ */
500+ inline static std::string& default_session_bus_config_file()
501+ {
502+ static std::string s{core::dbus::Fixture::default_session_bus_config_file()};
503+ return s;
504+ }
505+
506+ /**
507+ * @brief default_system_bus_config_file provides the filename of the default system
508+ * bus configuration file.
509+ */
510+ inline static std::string& default_system_bus_config_file()
511+ {
512+ static std::string s{core::dbus::Fixture::default_system_bus_config_file()};
513+ return s;
514+ }
515+
516+ /**
517+ * @brief Constructs an instance and sets up connections to the private
518+ * session and system bus.
519+ *
520+ * @throw std::runtime_error in case of issues.
521+ */
522+ inline Fixture() :
523+ fixture(default_session_bus_config_file(),
524+ default_system_bus_config_file())
525+ {
526+ }
527+
528+ /**
529+ * @brief session_bus provides access to the private session bus.
530+ */
531+ inline std::shared_ptr<Bus> session_bus()
532+ {
533+ return fixture.create_connection_to_session_bus();
534+ }
535+
536+ /**
537+ * @brief system_bus provides access to the private system bus.
538+ */
539+ inline std::shared_ptr<Bus> system_bus()
540+ {
541+ return fixture.create_connection_to_system_bus();
542+ }
543+
544+private:
545+ core::dbus::Fixture fixture;
546+};
547+}
548+}
549+}
550+#endif // CORE_DBUS_ENABLE_GOOGLE_TEST_FIXTURE
551+#endif // CORE_DBUS_FIXTURE_H_
552
553=== modified file 'include/core/dbus/impl/property.h'
554--- include/core/dbus/impl/property.h 2014-01-05 18:58:19 +0000
555+++ include/core/dbus/impl/property.h 2014-01-13 07:51:24 +0000
556@@ -65,47 +65,46 @@
557
558 template<typename PropertyType>
559 std::shared_ptr<Property<PropertyType>>
560- Property<PropertyType>::make_property(
561- const std::shared_ptr<Object>& parent)
562+Property<PropertyType>::make_property(const std::shared_ptr<Object>& parent)
563 {
564- return std::shared_ptr<Property<PropertyType>>(
565- new Property<PropertyType>(
566- parent,
567- traits::Service<typename PropertyType::Interface>::interface_name(),
568- PropertyType::name(),
569- PropertyType::writable));
570+ return std::shared_ptr<Property<PropertyType>>(
571+ new Property<PropertyType>(
572+ parent,
573+ traits::Service<typename PropertyType::Interface>::interface_name(),
574+ PropertyType::name(),
575+ PropertyType::writable));
576 }
577
578- template<typename PropertyType>
579- Property<PropertyType>::Property(
580- const std::shared_ptr<Object>& parent,
581- const std::string& interface,
582- const std::string& name,
583- bool writable)
584- : parent(parent),
585-interface(interface),
586-name(name),
587-writable(writable)
588+template<typename PropertyType>
589+Property<PropertyType>::Property(
590+ const std::shared_ptr<Object>& parent,
591+ const std::string& interface,
592+ const std::string& name,
593+ bool writable)
594+ : parent(parent),
595+ interface(interface),
596+ name(name),
597+ writable(writable)
598 {
599 if (!parent->is_stub())
600 {
601 parent->get_property_router.install_route(
602- Object::PropertyKey
603- {
604- traits::Service<typename PropertyType::Interface>::interface_name(),
605- PropertyType::name()
606- },
607- std::bind(&Property::handle_get, this, std::placeholders::_1));
608+ Object::PropertyKey
609+ {
610+ traits::Service<typename PropertyType::Interface>::interface_name(),
611+ PropertyType::name()
612+ },
613+ std::bind(&Property::handle_get, this, std::placeholders::_1));
614 parent->set_property_router.install_route(
615- Object::PropertyKey
616- {
617- traits::Service<typename PropertyType::Interface>::interface_name(),
618- PropertyType::name()
619- },
620- std::bind(
621- &Property::handle_set,
622- this,
623- std::placeholders::_1));
624+ Object::PropertyKey
625+ {
626+ traits::Service<typename PropertyType::Interface>::interface_name(),
627+ PropertyType::name()
628+ },
629+ std::bind(
630+ &Property::handle_set,
631+ this,
632+ std::placeholders::_1));
633 }
634 }
635
636
637=== modified file 'src/core/dbus/CMakeLists.txt'
638--- src/core/dbus/CMakeLists.txt 2013-11-27 18:57:42 +0000
639+++ src/core/dbus/CMakeLists.txt 2014-01-13 07:51:24 +0000
640@@ -23,11 +23,18 @@
641 ${CMAKE_SOURCE_DIR}/include
642 ${DBUS_INCLUDE_DIRS}
643 ${Boost_INCLUDE_DIRS}
644- )
645+ ${PROCESS_CPP_INCLUDE_DIR}
646+)
647+
648+configure_file(
649+ fixture.cpp.in ${CMAKE_CURRENT_BINARY_DIR}/fixture.cpp @ONLY
650+)
651
652 add_library(
653 dbus-cpp SHARED
654
655+ ${CMAKE_CURRENT_BINARY_DIR}/fixture.cpp
656+
657 bus.cpp
658 dbus.cpp
659 error.cpp
660@@ -46,6 +53,7 @@
661 ${Boost_LIBRARIES}
662 ${DBUS_LIBRARIES}
663 ${LIBXML2_LIBRARIES}
664+ ${PROCESS_CPP_LIBRARIES}
665 )
666
667 set_target_properties(
668
669=== modified file 'src/core/dbus/bus.cpp'
670--- src/core/dbus/bus.cpp 2013-11-27 18:57:42 +0000
671+++ src/core/dbus/bus.cpp 2014-01-13 07:51:24 +0000
672@@ -17,7 +17,7 @@
673 */
674
675 #include <core/dbus/bus.h>
676-
677+#include <core/dbus/dbus.h>
678 #include <core/dbus/match_rule.h>
679 #include <core/dbus/object.h>
680
681@@ -68,6 +68,12 @@
682 core::dbus::Message::from_raw_message(
683 message)));
684 }
685+
686+void init_libdbus_thread_support_and_install_shutdown_handler()
687+{
688+ static std::once_flag once;
689+ std::call_once(once, []() { dbus_threads_init_default(); std::atexit(dbus_shutdown); });
690+}
691 }
692
693 namespace core
694@@ -101,6 +107,7 @@
695 message_type_router([](const Message::Ptr& msg) { return msg->type(); }),
696 signal_router([](const Message::Ptr& msg){ return msg->path(); })
697 {
698+ init_libdbus_thread_support_and_install_shutdown_handler();
699 }
700
701 std::shared_ptr<DBusConnection> connection;
702@@ -116,12 +123,46 @@
703 return Bus::MessageHandlerResult::not_yet_handled;
704 }
705
706+Bus::Bus(const std::string& address)
707+ : d(new Private())
708+{
709+ Error se;
710+ d->connection.reset(
711+ dbus_connection_open_private(address.c_str(), std::addressof(se.raw())),
712+ [](DBusConnection*){}
713+ );
714+
715+ if (!d->connection)
716+ throw std::runtime_error(se.print());
717+
718+ d->message_type_router.install_route(
719+ Message::Type::signal,
720+ std::bind(
721+ &Bus::SignalRouter::operator(),
722+ std::ref(d->signal_router),
723+ std::placeholders::_1));
724+
725+ dbus_connection_add_filter(
726+ d->connection.get(),
727+ static_handle_message,
728+ this,
729+ nullptr);
730+
731+ auto message = dbus::Message::make_method_call(
732+ DBus::name(),
733+ DBus::path(),
734+ DBus::interface(),
735+ "Hello");
736+
737+ auto reply = send_with_reply_and_block_for_at_most(message, std::chrono::seconds(1));
738+
739+ if (reply->type() == Message::Type::error)
740+ throw std::runtime_error(reply->error().print());
741+}
742+
743 Bus::Bus(WellKnownBus bus)
744 : d(new Private())
745 {
746- static std::once_flag once;
747- std::call_once(once, []() { dbus_threads_init_default(); std::atexit(dbus_shutdown); });
748-
749 Error se;
750 d->connection.reset(
751 dbus_bus_get_private(static_cast<DBusBusType>(bus), std::addressof(se.raw())),
752
753=== modified file 'src/core/dbus/dbus.cpp'
754--- src/core/dbus/dbus.cpp 2013-11-27 18:57:42 +0000
755+++ src/core/dbus/dbus.cpp 2014-01-13 07:51:24 +0000
756@@ -18,6 +18,9 @@
757
758 #include <core/dbus/dbus.h>
759
760+#include <core/dbus/object.h>
761+#include <core/dbus/service.h>
762+
763 #include <core/dbus/types/stl/string.h>
764 #include <core/dbus/types/stl/vector.h>
765
766@@ -44,6 +47,25 @@
767 }
768 };
769
770+struct DBus::Hello
771+{
772+ typedef DBus Interface;
773+
774+ inline static const std::string& name()
775+ {
776+ static const std::string s
777+ {
778+ "Hello"
779+ };
780+ return s;
781+ }
782+
783+ inline static const std::chrono::milliseconds default_timeout()
784+ {
785+ return std::chrono::seconds{1};
786+ }
787+};
788+
789 struct DBus::GetConnectionUnixProcessID
790 {
791 typedef DBus Interface;
792@@ -121,5 +143,10 @@
793 {
794 return object->invoke_method_synchronously<GetConnectionUnixUser, uint32_t>(name).value();
795 }
796+
797+std::string DBus::hello() const
798+{
799+ return object->invoke_method_synchronously<Hello, std::string>().value();
800+}
801 }
802 }
803
804=== added file 'src/core/dbus/fixture.cpp.in'
805--- src/core/dbus/fixture.cpp.in 1970-01-01 00:00:00 +0000
806+++ src/core/dbus/fixture.cpp.in 2014-01-13 07:51:24 +0000
807@@ -0,0 +1,132 @@
808+/*
809+ * Copyright © 2012 Canonical Ltd.
810+ *
811+ * This program is free software: you can redistribute it and/or modify it
812+ * under the terms of the GNU Lesser General Public License version 3,
813+ * as published by the Free Software Foundation.
814+ *
815+ * This program is distributed in the hope that it will be useful,
816+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
817+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
818+ * GNU Lesser General Public License for more details.
819+ *
820+ * You should have received a copy of the GNU Lesser General Public License
821+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
822+ *
823+ * Authored by: Thomas Voß <thomas.voss@canonical.com>
824+ */
825+
826+#include <core/dbus/fixture.h>
827+
828+#include <core/dbus/bus.h>
829+
830+#include <core/posix/exec.h>
831+#include <core/posix/this_process.h>
832+
833+struct core::dbus::Fixture::Private
834+{
835+ struct Session
836+ {
837+ Session(const std::string& config_file)
838+ {
839+ std::vector<std::string> argv
840+ {
841+ "--config-file",
842+ config_file,
843+ "--print-address"
844+ };
845+
846+ std::map<std::string, std::string> env;
847+ core::posix::this_process::env::for_each([&env](const std::string& key, const std::string& value)
848+ {
849+ env.insert(std::make_pair(key, value));
850+ });
851+
852+ daemon = core::posix::exec(
853+ "/bin/dbus-daemon",
854+ argv,
855+ env,
856+ core::posix::StandardStream::stdout);
857+
858+ daemon.cout() >> address;
859+
860+ if (address.empty())
861+ throw std::runtime_error("Session: Could not read address of bus instance.");
862+
863+ core::posix::this_process::env::set_or_throw("DBUS_SESSION_BUS_ADDRESS", address);
864+ core::posix::this_process::env::set_or_throw("DBUS_STARTER_ADDRESS", address);
865+ core::posix::this_process::env::set_or_throw("DBUS_STARTER_BUS_TYPE", "session");
866+ }
867+
868+ core::posix::ChildProcess daemon = core::posix::ChildProcess::invalid();
869+ std::string address;
870+ } session;
871+
872+ struct System
873+ {
874+ System(const std::string& config_file)
875+ {
876+ std::vector<std::string> argv
877+ {
878+ "--config-file",
879+ config_file,
880+ "--print-address"
881+ };
882+
883+ std::map<std::string, std::string> env;
884+ core::posix::this_process::env::for_each([&env](const std::string& key, const std::string& value)
885+ {
886+ env.insert(std::make_pair(key, value));
887+ });
888+
889+ daemon = core::posix::exec(
890+ "/bin/dbus-daemon",
891+ argv,
892+ env,
893+ core::posix::StandardStream::stdout);
894+
895+ daemon.cout() >> address;
896+
897+ if (address.empty())
898+ throw std::runtime_error("System: Could not read address of bus instance.");
899+
900+ core::posix::this_process::env::set_or_throw("DBUS_SYSTEM_BUS_ADDRESS", address);
901+ }
902+
903+ core::posix::ChildProcess daemon = core::posix::ChildProcess::invalid();
904+ std::string address;
905+ } system;
906+};
907+
908+const std::string& core::dbus::Fixture::default_session_bus_config_file()
909+{
910+ static const std::string s{"@CMAKE_INSTALL_DATADIR@/dbus-cpp/session.conf"};
911+ return s;
912+}
913+
914+const std::string& core::dbus::Fixture::default_system_bus_config_file()
915+{
916+ static const std::string s{"@CMAKE_INSTALL_DATADIR@/dbus-cpp/system.conf"};
917+ return s;
918+}
919+
920+core::dbus::Fixture::Fixture(const std::string& session_bus_configuration_file,
921+ const std::string& system_bus_configuration_file)
922+ : d(new Private{Private::Session{session_bus_configuration_file},
923+ Private::System{system_bus_configuration_file}})
924+{
925+}
926+
927+core::dbus::Fixture::~Fixture()
928+{
929+}
930+
931+std::shared_ptr<core::dbus::Bus> core::dbus::Fixture::create_connection_to_session_bus()
932+{
933+ return std::shared_ptr<core::dbus::Bus>(new core::dbus::Bus{d->session.address});
934+}
935+
936+std::shared_ptr<core::dbus::Bus> core::dbus::Fixture::create_connection_to_system_bus()
937+{
938+ return std::shared_ptr<core::dbus::Bus>(new core::dbus::Bus{d->system.address});
939+}
940
941=== modified file 'tests/CMakeLists.txt'
942--- tests/CMakeLists.txt 2013-10-27 18:15:45 +0000
943+++ tests/CMakeLists.txt 2014-01-13 07:51:24 +0000
944@@ -21,36 +21,24 @@
945 include_directories(${GMOCK_INCLUDE_DIR} ${GTEST_INCLUDE_DIR})
946 set (CMAKE_CXX_FLAGS ${OLD_CMAKE_CXX_FLAGS})
947
948-# We actually deliberately ignore the result of read and write in our tests
949-set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-error=unused-result")
950-
951-find_package(PkgConfig)
952 find_package(Threads)
953
954-pkg_check_modules(DBUS dbus-1)
955+add_definitions(-DCORE_DBUS_ENABLE_GOOGLE_TEST_FIXTURE)
956
957 configure_file(
958 ${CMAKE_CURRENT_SOURCE_DIR}/test_data.h.in
959 ${CMAKE_CURRENT_BINARY_DIR}/test_data.h @ONLY)
960
961-include_directories(${CMAKE_CURRENT_BINARY_DIR})
962-
963-option(
964- DBUS_CPP_ENABLE_DBUS_TEST_RUNNER
965- "Rely on dbus test runner to start a private session for testing purposes"
966- ON
967- )
968-
969-if (DBUS_CPP_ENABLE_DBUS_TEST_RUNNER)
970- find_program(DBUS_TEST_RUNNER_EXECUTABLE dbus-test-runner)
971- message(STATUS "Executing test suite under dbus-test-runner")
972-endif (DBUS_CPP_ENABLE_DBUS_TEST_RUNNER)
973+include_directories(
974+ ${CMAKE_CURRENT_BINARY_DIR}
975+)
976
977 include_directories(
978 ${DBUS_INCLUDE_DIRS}
979 ${Boost_INCLUDE_DIRS}
980 ${GTEST_INCLUDE_DIRS}
981- )
982+ ${PROCESS_CPP_INCLUDE_DIRS}
983+)
984
985 add_executable(
986 bus_test
987@@ -112,7 +100,8 @@
988 ${Boost_LIBRARIES}
989 ${DBUS_LIBRARIES}
990 ${GTEST_BOTH_LIBRARIES}
991- )
992+ ${PROCESS_CPP_LIBRARIES}
993+)
994
995 target_link_libraries(
996 dbus_test
997@@ -224,26 +213,13 @@
998 ${GTEST_BOTH_LIBRARIES}
999 )
1000
1001-if (DBUS_CPP_ENABLE_DBUS_TEST_RUNNER)
1002- add_test(bus_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/bus_test)
1003- add_test(dbus_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/dbus_test)
1004- add_test(executor_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/executor_test)
1005- add_test(codec_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/codec_test)
1006- add_test(compiler_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/compiler_test)
1007- add_test(stl_codec_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/stl_codec_test)
1008- add_test(message_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/message_test)
1009- add_test(match_rule_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/match_rule_test)
1010- add_test(message_router_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/message_router_test)
1011- add_test(service_test ${DBUS_TEST_RUNNER_EXECUTABLE} --task=${CMAKE_CURRENT_BINARY_DIR}/service_test)
1012-else(DBUS_CPP_ENABLE_DBUS_TEST_RUNNER)
1013- add_test(bus_test ${CMAKE_CURRENT_BINARY_DIR}/bus_test)
1014- add_test(dbus_test ${CMAKE_CURRENT_BINARY_DIR}/dbus_test)
1015- add_test(executor_test ${CMAKE_CURRENT_BINARY_DIR}/executor_test)
1016- add_test(codec_test ${CMAKE_CURRENT_BINARY_DIR}/codec_test)
1017- add_test(compiler_test ${CMAKE_CURRENT_BINARY_DIR}/compiler_test)
1018- add_test(stl_codec_test ${CMAKE_CURRENT_BINARY_DIR}/stl_codec_test)
1019- add_test(message_test ${CMAKE_CURRENT_BINARY_DIR}/message_test)
1020- add_test(match_rule_test ${CMAKE_CURRENT_BINARY_DIR}/match_rule_test)
1021- add_test(message_router_test ${CMAKE_CURRENT_BINARY_DIR}/message_router_test)
1022- add_test(service_test ${CMAKE_CURRENT_BINARY_DIR}/service_test)
1023-endif(DBUS_CPP_ENABLE_DBUS_TEST_RUNNER)
1024+add_test(bus_test ${CMAKE_CURRENT_BINARY_DIR}/bus_test)
1025+add_test(dbus_test ${CMAKE_CURRENT_BINARY_DIR}/dbus_test)
1026+add_test(executor_test ${CMAKE_CURRENT_BINARY_DIR}/executor_test)
1027+add_test(codec_test ${CMAKE_CURRENT_BINARY_DIR}/codec_test)
1028+add_test(compiler_test ${CMAKE_CURRENT_BINARY_DIR}/compiler_test)
1029+add_test(stl_codec_test ${CMAKE_CURRENT_BINARY_DIR}/stl_codec_test)
1030+add_test(message_test ${CMAKE_CURRENT_BINARY_DIR}/message_test)
1031+add_test(match_rule_test ${CMAKE_CURRENT_BINARY_DIR}/match_rule_test)
1032+add_test(message_router_test ${CMAKE_CURRENT_BINARY_DIR}/message_router_test)
1033+add_test(service_test ${CMAKE_CURRENT_BINARY_DIR}/service_test)
1034
1035=== modified file 'tests/bus_test.cpp'
1036--- tests/bus_test.cpp 2013-11-27 18:57:42 +0000
1037+++ tests/bus_test.cpp 2014-01-13 07:51:24 +0000
1038@@ -17,11 +17,21 @@
1039 */
1040
1041 #include <core/dbus/bus.h>
1042+#include <core/dbus/codec.h>
1043 #include <core/dbus/dbus.h>
1044+#include <core/dbus/fixture.h>
1045 #include <core/dbus/match_rule.h>
1046+#include <core/dbus/message_streaming_operators.h>
1047+
1048+#include <core/dbus/types/stl/string.h>
1049+#include <core/dbus/types/stl/vector.h>
1050
1051 #include <core/dbus/asio/executor.h>
1052
1053+#include "test_data.h"
1054+
1055+#include <core/posix/exec.h>
1056+
1057 #include <boost/asio.hpp>
1058
1059 #include <gtest/gtest.h>
1060@@ -33,22 +43,21 @@
1061
1062 namespace
1063 {
1064-core::dbus::Bus::Ptr the_session_bus()
1065-{
1066- core::dbus::Bus::Ptr session_bus = std::make_shared<core::dbus::Bus>(core::dbus::WellKnownBus::session);
1067- return session_bus;
1068-}
1069-}
1070-
1071-TEST(Bus, ConstructionForSessionBusDoesNotThrow)
1072-{
1073- std::shared_ptr<core::dbus::Bus> bus;
1074- EXPECT_NO_THROW(bus.reset(new core::dbus::Bus(core::dbus::WellKnownBus::session)););
1075-
1076- EXPECT_TRUE(bus->raw() != nullptr);
1077-}
1078-
1079-TEST(Bus, BlockingMethodInvocationSucceedsForValidMessage)
1080+struct Bus : public core::dbus::testing::Fixture
1081+{
1082+};
1083+
1084+auto session_bus_config_file =
1085+ core::dbus::testing::Fixture::default_session_bus_config_file() =
1086+ core::testing::session_bus_configuration_file();
1087+
1088+auto system_bus_config_file =
1089+ core::dbus::testing::Fixture::default_system_bus_config_file() =
1090+ core::testing::system_bus_configuration_file();
1091+
1092+}
1093+
1094+TEST_F(Bus, BlockingMethodInvocationSucceedsForValidMessage)
1095 {
1096 static const char* expected_signature = DBUS_TYPE_ARRAY_AS_STRING DBUS_TYPE_STRING_AS_STRING;
1097 auto msg = core::dbus::Message::make_method_call(
1098@@ -57,7 +66,7 @@
1099 dbus::DBus::name(),
1100 "ListNames");
1101
1102- auto bus = the_session_bus();
1103+ auto bus = session_bus();
1104 const std::chrono::milliseconds timeout = std::chrono::seconds(10);
1105 std::shared_ptr<core::dbus::Message> reply = nullptr;
1106 EXPECT_NO_THROW(
1107@@ -70,7 +79,7 @@
1108 EXPECT_EQ(expected_signature, reply->signature());
1109 }
1110
1111-TEST(Bus, NonBlockingMethodInvocationSucceedsForValidMessage)
1112+TEST_F(Bus, NonBlockingMethodInvocationSucceedsForValidMessage)
1113 {
1114 auto msg = core::dbus::Message::make_method_call(
1115 dbus::DBus::name(),
1116@@ -78,7 +87,7 @@
1117 dbus::DBus::name(),
1118 "ListNames");
1119
1120- auto bus = the_session_bus();
1121+ auto bus = session_bus();
1122 const std::chrono::milliseconds timeout = std::chrono::seconds(10);
1123
1124 auto call = bus->send_with_reply_and_timeout(msg, timeout);
1125@@ -88,23 +97,22 @@
1126 EXPECT_TRUE(result.size() > 0);
1127 }
1128
1129-TEST(Bus, HasOwnerForNameReturnsTrueForExistingName)
1130+TEST_F(Bus, HasOwnerForNameReturnsTrueForExistingName)
1131 {
1132- core::dbus::Bus bus(core::dbus::WellKnownBus::session);
1133-
1134- EXPECT_TRUE(bus.has_owner_for_name(dbus::DBus::name()));
1135+ auto bus = session_bus();
1136+ EXPECT_TRUE(bus->has_owner_for_name(dbus::DBus::name()));
1137 }
1138
1139-TEST(Bus, HasOwnerForNameReturnsFalseForNonExistingName)
1140+TEST_F(Bus, HasOwnerForNameReturnsFalseForNonExistingName)
1141 {
1142- auto bus = the_session_bus();
1143+ auto bus = session_bus();
1144 static const std::string non_existing_name = "com.canonical.does.not.exist";
1145 EXPECT_FALSE(bus->has_owner_for_name(non_existing_name));
1146 }
1147
1148-TEST(Bus, AddingAndRemovingAValidMatchRuleDoesNotThrow)
1149+TEST_F(Bus, AddingAndRemovingAValidMatchRuleDoesNotThrow)
1150 {
1151- auto bus = the_session_bus();
1152+ auto bus = session_bus();
1153
1154 static const dbus::MatchRule valid_match_rule = dbus::MatchRule().type(dbus::Message::Type::signal);
1155
1156@@ -137,12 +145,13 @@
1157 name);
1158 }
1159 }
1160-TEST(Bus, InstallingARouteForSignalsResultsInTheRouteBeingInvoked)
1161+
1162+TEST_F(Bus, InstallingARouteForSignalsResultsInTheRouteBeingInvoked)
1163 {
1164 const std::string path{"/org/gnome/SettingsDaemon/Power"};
1165 const core::dbus::types::ObjectPath to_route_for(path);
1166 bool invoked {false};
1167- auto bus = the_session_bus();
1168+ auto bus = session_bus();
1169 bus->install_executor(core::dbus::asio::make_executor(bus));
1170 bus->access_signal_router().install_route(to_route_for,[&](const dbus::Message::Ptr&)
1171 {
1172@@ -155,4 +164,3 @@
1173 "LaLeLu");
1174 bus->access_signal_router()(signal);
1175 }
1176-
1177
1178=== modified file 'tests/compiler_test.cpp'
1179--- tests/compiler_test.cpp 2013-11-27 18:57:42 +0000
1180+++ tests/compiler_test.cpp 2014-01-13 07:51:24 +0000
1181@@ -262,35 +262,35 @@
1182 const char* argv[] =
1183 {
1184 "dbus-cppc",
1185- testing::com::canonical::user_metrics_introspection_file()
1186+ core::testing::com::canonical::user_metrics_introspection_file()
1187 };
1188
1189 EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1190
1191- argv[1] = testing::com::canonical::url_dispatcher_introspection_file();
1192- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1193-
1194- argv[1] = testing::org::freedesktop::modem_manager::modem::cdma_introspection_file();
1195- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1196-
1197- argv[1] = testing::org::freedesktop::modem_manager::modem::firmware_introspection_file();
1198- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1199-
1200- argv[1] = testing::org::freedesktop::modem_manager::modem::gsm::card_introspection_file();
1201- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1202-
1203- argv[1] = testing::org::freedesktop::modem_manager::modem::gsm::contact_introspection_file();
1204- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1205-
1206- argv[1] = testing::org::freedesktop::modem_manager::modem::gsm::hso_introspection_file();
1207- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1208-
1209- argv[1] = testing::org::freedesktop::modem_manager::modem::gsm::network_introspection_file();
1210- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1211-
1212- argv[1] = testing::org::freedesktop::modem_manager::modem::gsm::sms_introspection_file();
1213- EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1214-
1215- argv[1] = testing::org::freedesktop::modem_manager::modem::gsm::ussd_introspection_file();
1216+ argv[1] = core::testing::com::canonical::url_dispatcher_introspection_file();
1217+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1218+
1219+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::cdma_introspection_file();
1220+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1221+
1222+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::firmware_introspection_file();
1223+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1224+
1225+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::gsm::card_introspection_file();
1226+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1227+
1228+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::gsm::contact_introspection_file();
1229+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1230+
1231+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::gsm::hso_introspection_file();
1232+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1233+
1234+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::gsm::network_introspection_file();
1235+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1236+
1237+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::gsm::sms_introspection_file();
1238+ EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1239+
1240+ argv[1] = core::testing::org::freedesktop::modem_manager::modem::gsm::ussd_introspection_file();
1241 EXPECT_EQ(EXIT_SUCCESS, dbus::Compiler::main(2, argv));
1242 }
1243
1244=== modified file 'tests/dbus_test.cpp'
1245--- tests/dbus_test.cpp 2013-11-27 18:57:42 +0000
1246+++ tests/dbus_test.cpp 2014-01-13 07:51:24 +0000
1247@@ -17,12 +17,16 @@
1248 */
1249
1250 #include <core/dbus/dbus.h>
1251-
1252+#include <core/dbus/fixture.h>
1253+#include <core/dbus/object.h>
1254+#include <core/dbus/service.h>
1255 #include <core/dbus/asio/executor.h>
1256
1257+#include "test_data.h"
1258 #include "test_service.h"
1259-#include "cross_process_sync.h"
1260-#include "fork_and_run.h"
1261+
1262+#include <core/testing/cross_process_sync.h>
1263+#include <core/testing/fork_and_run.h>
1264
1265 #include <gtest/gtest.h>
1266
1267@@ -30,25 +34,31 @@
1268
1269 namespace
1270 {
1271-dbus::Bus::Ptr the_session_bus()
1272+struct DBus : public core::dbus::testing::Fixture
1273 {
1274- dbus::Bus::Ptr session_bus = std::make_shared<dbus::Bus>(dbus::WellKnownBus::session);
1275- return session_bus;
1276-}
1277-}
1278-
1279-TEST(DBus, QueryingUnixProcessIdReturnsCorrectResult)
1280+};
1281+
1282+auto session_bus_config_file =
1283+ core::dbus::testing::Fixture::default_session_bus_config_file() =
1284+ core::testing::session_bus_configuration_file();
1285+
1286+auto system_bus_config_file =
1287+ core::dbus::testing::Fixture::default_system_bus_config_file() =
1288+ core::testing::system_bus_configuration_file();
1289+}
1290+
1291+TEST_F(DBus, QueryingUnixProcessIdReturnsCorrectResult)
1292 {
1293 const std::string path{"/this/is/just/a/test/service"};
1294
1295 uint32_t pid = getpid();
1296 uint32_t uid = getuid();
1297
1298- test::CrossProcessSync barrier;
1299+ core::testing::CrossProcessSync barrier;
1300
1301- auto child = [path, pid, uid, &barrier]()
1302+ auto service = [this, path, pid, uid, &barrier]()
1303 {
1304- auto bus = the_session_bus();
1305+ auto bus = session_bus();
1306 bus->install_executor(core::dbus::asio::make_executor(bus));
1307 dbus::DBus daemon{bus};
1308
1309@@ -69,24 +79,28 @@
1310 };
1311
1312 object->install_method_handler<test::Service::Method>(handler);
1313- barrier.signal_ready();
1314+ barrier.try_signal_ready_for(std::chrono::milliseconds{500});
1315 bus->run();
1316
1317 EXPECT_EQ(pid, sender_pid);
1318 EXPECT_EQ(uid, sender_uid);
1319+
1320+ return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
1321 };
1322
1323- auto parent = [path, &barrier]()
1324+ auto client = [this, path, &barrier]()
1325 {
1326- auto bus = the_session_bus();
1327+ auto bus = session_bus();
1328
1329 auto service = dbus::Service::use_service<test::Service>(bus);
1330 auto object = service->object_for_path(dbus::types::ObjectPath{path});
1331
1332- barrier.wait_for_signal_ready();
1333-
1334- object->invoke_method_synchronously<test::Service::Method, void>();
1335+ barrier.wait_for_signal_ready_for(std::chrono::milliseconds{500});
1336+
1337+ object->invoke_method_synchronously<test::Service::Method, void>();
1338+
1339+ return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
1340 };
1341
1342- ASSERT_NO_FATAL_FAILURE(test::fork_and_run(child, parent));
1343+ ASSERT_NO_FATAL_FAILURE(core::testing::fork_and_run(service, client));
1344 }
1345
1346=== modified file 'tests/executor_test.cpp'
1347--- tests/executor_test.cpp 2013-11-27 18:57:42 +0000
1348+++ tests/executor_test.cpp 2014-01-13 07:51:24 +0000
1349@@ -19,44 +19,54 @@
1350 #include <core/dbus/asio/executor.h>
1351
1352 #include <core/dbus/dbus.h>
1353+#include <core/dbus/fixture.h>
1354+#include <core/dbus/object.h>
1355 #include <core/dbus/service.h>
1356
1357-#include "cross_process_sync.h"
1358-#include "fork_and_run.h"
1359+#include "test_data.h"
1360 #include "test_service.h"
1361
1362+#include <core/testing/cross_process_sync.h>
1363+#include <core/testing/fork_and_run.h>
1364+
1365 #include <gtest/gtest.h>
1366
1367 namespace dbus = core::dbus;
1368
1369 namespace
1370 {
1371-dbus::Bus::Ptr the_session_bus()
1372+struct Executor : public core::dbus::testing::Fixture
1373 {
1374- dbus::Bus::Ptr session_bus = std::make_shared<dbus::Bus>(dbus::WellKnownBus::session);
1375- return session_bus;
1376-}
1377-}
1378-
1379-TEST(Executor, ThrowsOnConstructionFromNullBus)
1380+};
1381+
1382+auto session_bus_config_file =
1383+ core::dbus::testing::Fixture::default_session_bus_config_file() =
1384+ core::testing::session_bus_configuration_file();
1385+
1386+auto system_bus_config_file =
1387+ core::dbus::testing::Fixture::default_system_bus_config_file() =
1388+ core::testing::system_bus_configuration_file();
1389+}
1390+
1391+TEST_F(Executor, ThrowsOnConstructionFromNullBus)
1392 {
1393 EXPECT_ANY_THROW(core::dbus::asio::make_executor(core::dbus::Bus::Ptr{}));
1394 }
1395
1396-TEST(Executor, DoesNotThrowForExistingBus)
1397+TEST_F(Executor, DoesNotThrowForExistingBus)
1398 {
1399- core::dbus::Bus::Ptr bus{new core::dbus::Bus{core::dbus::WellKnownBus::session}};
1400+ auto bus = session_bus();
1401 EXPECT_NO_THROW(bus->install_executor(core::dbus::asio::make_executor(bus)));
1402 }
1403
1404-TEST(Executor, ABusRunByAnExecutorReceivesSignals)
1405+TEST_F(Executor, ABusRunByAnExecutorReceivesSignals)
1406 {
1407- test::CrossProcessSync cross_process_sync;
1408+ core::testing::CrossProcessSync cross_process_sync;
1409
1410 const int64_t expected_value = 42;
1411- auto child = [expected_value, &cross_process_sync]()
1412+ auto service = [this, expected_value, &cross_process_sync]()
1413 {
1414- auto bus = the_session_bus();
1415+ auto bus = session_bus();
1416 bus->install_executor(dbus::asio::make_executor(bus));
1417 auto service = dbus::Service::add_service<test::Service>(bus);
1418 auto skeleton = service->add_object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1419@@ -68,16 +78,19 @@
1420 bus->send(reply);
1421 skeleton->emit_signal<test::Service::Signals::Dummy, int64_t>(expected_value);
1422 });
1423- cross_process_sync.signal_ready();
1424+ cross_process_sync.try_signal_ready_for(std::chrono::milliseconds{500});
1425 bus->run();
1426+
1427+ return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
1428 };
1429- auto parent = [expected_value, cross_process_sync]()
1430+
1431+ auto client = [this, expected_value, &cross_process_sync]() -> core::posix::exit::Status
1432 {
1433- auto bus = the_session_bus();
1434+ auto bus = session_bus();
1435 bus->install_executor(dbus::asio::make_executor(bus));
1436 std::thread t{[bus](){bus->run();}};
1437
1438- cross_process_sync.wait_for_signal_ready();
1439+ EXPECT_EQ(1, cross_process_sync.wait_for_signal_ready_for(std::chrono::milliseconds{500}));
1440
1441 auto stub_service = dbus::Service::use_service(bus, dbus::traits::Service<test::Service>::interface_name());
1442 auto stub = stub_service->object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1443@@ -93,12 +106,14 @@
1444 if (t.joinable())
1445 t.join();
1446
1447- ASSERT_FALSE(result.is_error());
1448- ASSERT_EQ(expected_value, result.value());
1449+ EXPECT_FALSE(result.is_error());
1450+ EXPECT_EQ(expected_value, result.value());
1451 EXPECT_EQ(expected_value, received_signal_value);
1452+
1453+ return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
1454 };
1455
1456- EXPECT_NO_FATAL_FAILURE(test::fork_and_run(child, parent));
1457+ EXPECT_NO_FATAL_FAILURE(core::testing::fork_and_run(service, client));
1458 }
1459
1460 /*TEST(Bus, TimeoutThrowsForNullDBusWatch)
1461
1462=== modified file 'tests/message_test.cpp'
1463--- tests/message_test.cpp 2013-11-27 18:57:42 +0000
1464+++ tests/message_test.cpp 2014-01-13 07:51:24 +0000
1465@@ -16,6 +16,7 @@
1466 * Authored by: Thomas Voß <thomas.voss@canonical.com>
1467 */
1468
1469+#include <core/dbus/dbus.h>
1470 #include <core/dbus/message.h>
1471
1472 #include <gtest/gtest.h>
1473@@ -27,9 +28,9 @@
1474
1475 TEST(Message, BuildingAMethodCallMessageSucceedsForValidArguments)
1476 {
1477- const std::string destination = DBUS_SERVICE_DBUS;
1478- const std::string path = DBUS_PATH_DBUS;
1479- const std::string interface = DBUS_SERVICE_DBUS;
1480+ const std::string destination = core::dbus::DBus::name();
1481+ const std::string path = core::dbus::DBus::path().as_string();
1482+ const std::string interface = core::dbus::DBus::name();
1483 const std::string member = "ListNames";
1484
1485 std::shared_ptr<core::dbus::Message> msg;
1486@@ -39,9 +40,9 @@
1487
1488 TEST(Message, BuildingAMethodCallMessageThrowsForInvalidArguments)
1489 {
1490- const std::string destination = DBUS_SERVICE_DBUS;
1491+ const std::string destination = core::dbus::DBus::name();
1492 const std::string path = "an:invalid:path";
1493- const std::string interface = DBUS_SERVICE_DBUS;
1494+ const std::string interface = core::dbus::DBus::name();
1495 const std::string member = "ListNames";
1496
1497 std::shared_ptr<core::dbus::Message> msg;
1498@@ -51,9 +52,9 @@
1499
1500 TEST(Message, AccessingAReaderOnAnEmptyMessageThrows)
1501 {
1502- const std::string destination = DBUS_SERVICE_DBUS;
1503- const std::string path = DBUS_PATH_DBUS;
1504- const std::string interface = DBUS_SERVICE_DBUS;
1505+ const std::string destination = core::dbus::DBus::name();
1506+ const std::string path = core::dbus::DBus::path().as_string();
1507+ const std::string interface = core::dbus::DBus::name();
1508 const std::string member = "ListNames";
1509
1510 auto msg = core::dbus::Message::make_method_call(destination, path, interface, member);
1511@@ -63,9 +64,9 @@
1512
1513 TEST(Message, AccessingAWriterOnAnyMessageSucceeds)
1514 {
1515- const std::string destination = DBUS_SERVICE_DBUS;
1516- const std::string path = DBUS_PATH_DBUS;
1517- const std::string interface = DBUS_SERVICE_DBUS;
1518+ const std::string destination = core::dbus::DBus::name();
1519+ const std::string path = core::dbus::DBus::path().as_string();
1520+ const std::string interface = core::dbus::DBus::name();
1521 const std::string member = "ListNames";
1522
1523 auto msg = core::dbus::Message::make_method_call(
1524@@ -86,9 +87,9 @@
1525
1526 TEST(Message, WriteAndSuccessiveReadAreIdempotent)
1527 {
1528- const std::string destination = DBUS_SERVICE_DBUS;
1529- const std::string path = DBUS_PATH_DBUS;
1530- const std::string interface = DBUS_SERVICE_DBUS;
1531+ const std::string destination = core::dbus::DBus::name();
1532+ const std::string path = core::dbus::DBus::path().as_string();
1533+ const std::string interface = core::dbus::DBus::name();
1534 const std::string member = "ListNames";
1535
1536 auto msg = core::dbus::Message::make_method_call(
1537@@ -122,9 +123,9 @@
1538
1539 TEST(Message, WriteAndSuccessiveIterationAreIdempotent)
1540 {
1541- const std::string destination = DBUS_SERVICE_DBUS;
1542- const std::string path = DBUS_PATH_DBUS;
1543- const std::string interface = DBUS_SERVICE_DBUS;
1544+ const std::string destination = core::dbus::DBus::name();
1545+ const std::string path = core::dbus::DBus::path().as_string();
1546+ const std::string interface = core::dbus::DBus::name();
1547 const std::string member = "ListNames";
1548
1549 auto msg = core::dbus::Message::make_method_call(
1550
1551=== modified file 'tests/service_test.cpp'
1552--- tests/service_test.cpp 2013-12-25 10:16:19 +0000
1553+++ tests/service_test.cpp 2014-01-13 07:51:24 +0000
1554@@ -17,6 +17,7 @@
1555 */
1556
1557 #include <core/dbus/dbus.h>
1558+#include <core/dbus/fixture.h>
1559 #include <core/dbus/object.h>
1560 #include <core/dbus/property.h>
1561 #include <core/dbus/service.h>
1562@@ -26,10 +27,12 @@
1563
1564 #include <core/dbus/asio/executor.h>
1565
1566-#include "cross_process_sync.h"
1567-#include "fork_and_run.h"
1568+#include "test_data.h"
1569 #include "test_service.h"
1570
1571+#include <core/testing/cross_process_sync.h>
1572+#include <core/testing/fork_and_run.h>
1573+
1574 #include <gtest/gtest.h>
1575
1576 #include <thread>
1577@@ -38,108 +41,115 @@
1578
1579 namespace
1580 {
1581-dbus::Bus::Ptr the_session_bus()
1582-{
1583- dbus::Bus::Ptr session_bus = std::make_shared<dbus::Bus>(dbus::WellKnownBus::session);
1584- return session_bus;
1585-}
1586-}
1587-
1588-TEST(Service, AccessingAnExistingServiceAndItsObjectsOnTheBusWorks)
1589-{
1590- auto bus = the_session_bus();
1591+struct Service : public core::dbus::testing::Fixture
1592+{
1593+};
1594+
1595+auto session_bus_config_file =
1596+ core::dbus::testing::Fixture::default_session_bus_config_file() =
1597+ core::testing::session_bus_configuration_file();
1598+
1599+auto system_bus_config_file =
1600+ core::dbus::testing::Fixture::default_system_bus_config_file() =
1601+ core::testing::system_bus_configuration_file();
1602+}
1603+
1604+TEST_F(Service, AccessingAnExistingServiceAndItsObjectsOnTheBusWorks)
1605+{
1606+ auto bus = session_bus();
1607 auto names = dbus::DBus(bus).list_names();
1608
1609 ASSERT_GT(names.size(), std::size_t{0});
1610 }
1611
1612-TEST(Service, AddingServiceAndObjectAndCallingIntoItSucceeds)
1613+TEST_F(Service, AddingServiceAndObjectAndCallingIntoItSucceeds)
1614 {
1615- test::CrossProcessSync cps1;
1616-
1617- const int64_t expected_value = 42;
1618-
1619- auto child = [expected_value, &cps1]()
1620- {
1621- auto bus = the_session_bus();
1622- bus->install_executor(core::dbus::asio::make_executor(bus));
1623- auto service = dbus::Service::add_service<test::Service>(bus);
1624- auto skeleton = service->add_object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1625- auto signal = skeleton->get_signal<test::Service::Signals::Dummy>();
1626- auto writable_property = skeleton->get_property<test::Service::Properties::Dummy>();
1627- writable_property->set(expected_value);
1628-
1629- skeleton->install_method_handler<test::Service::Method>([bus, skeleton, expected_value](const dbus::Message::Ptr& msg)
1630- {
1631- std::cout << __PRETTY_FUNCTION__ << std::endl;
1632- auto reply = dbus::Message::make_method_return(msg);
1633- reply->writer() << expected_value;
1634- bus->send(reply);
1635- skeleton->emit_signal<test::Service::Signals::Dummy, int64_t>(expected_value);
1636- });
1637-
1638- std::thread t{[bus](){ bus->run(); }};
1639- cps1.signal_ready();
1640- if (t.joinable())
1641- t.join();
1642- };
1643-
1644- auto parent = [expected_value, cps1]()
1645- {
1646- auto bus = the_session_bus();
1647- bus->install_executor(core::dbus::asio::make_executor(bus));
1648- std::thread t{[bus](){ bus->run(); }};
1649- cps1.wait_for_signal_ready();
1650-
1651- auto stub_service = dbus::Service::use_service(bus, dbus::traits::Service<test::Service>::interface_name());
1652- auto stub = stub_service->object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1653- auto writable_property = stub->get_property<test::Service::Properties::Dummy>();
1654- writable_property->changed().connect([](double d)
1655- {
1656- std::cout << "Dummy property changed: " << d << std::endl;
1657- });
1658- auto signal = stub->get_signal<test::Service::Signals::Dummy>();
1659- int64_t received_signal_value = -1;
1660- signal->connect([bus, &received_signal_value](const int32_t& value)
1661- {
1662- received_signal_value = value;
1663- bus->stop();
1664- });
1665- auto result = stub->invoke_method_synchronously<test::Service::Method, int64_t>();
1666- ASSERT_FALSE(result.is_error());
1667- ASSERT_EQ(expected_value, result.value());
1668- ASSERT_EQ(expected_value, writable_property->get());
1669- ASSERT_NO_THROW(writable_property->set(4242));
1670- ASSERT_EQ(4242, writable_property->get());
1671-
1672- if (t.joinable())
1673- t.join();
1674-
1675- EXPECT_EQ(expected_value, received_signal_value);
1676- };
1677-
1678- EXPECT_NO_FATAL_FAILURE(test::fork_and_run(child, parent));
1679+ core::testing::CrossProcessSync cps1;
1680+
1681+ const int64_t expected_value = 42;
1682+
1683+ auto service = [this, expected_value, &cps1]()
1684+ {
1685+ auto bus = session_bus();
1686+ bus->install_executor(core::dbus::asio::make_executor(bus));
1687+ auto service = dbus::Service::add_service<test::Service>(bus);
1688+ auto skeleton = service->add_object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1689+ auto signal = skeleton->get_signal<test::Service::Signals::Dummy>();
1690+ auto writable_property = skeleton->get_property<test::Service::Properties::Dummy>();
1691+ writable_property->set(expected_value);
1692+
1693+ skeleton->install_method_handler<test::Service::Method>([bus, skeleton, expected_value](const dbus::Message::Ptr& msg)
1694+ {
1695+ auto reply = dbus::Message::make_method_return(msg);
1696+ reply->writer() << expected_value;
1697+ bus->send(reply);
1698+ skeleton->emit_signal<test::Service::Signals::Dummy, int64_t>(expected_value);
1699+ });
1700+
1701+ std::thread t{[bus](){ bus->run(); }};
1702+ cps1.try_signal_ready_for(std::chrono::milliseconds{500});
1703+ if (t.joinable())
1704+ t.join();
1705+
1706+ return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
1707+ };
1708+
1709+ auto client = [this, expected_value, &cps1]()
1710+ {
1711+ auto bus = session_bus();
1712+ bus->install_executor(core::dbus::asio::make_executor(bus));
1713+ std::thread t{[bus](){ bus->run(); }};
1714+ EXPECT_EQ(1, cps1.wait_for_signal_ready_for(std::chrono::milliseconds{500}));
1715+
1716+ auto stub_service = dbus::Service::use_service(bus, dbus::traits::Service<test::Service>::interface_name());
1717+ auto stub = stub_service->object_for_path(dbus::types::ObjectPath("/this/is/unlikely/to/exist/Service"));
1718+ auto writable_property = stub->get_property<test::Service::Properties::Dummy>();
1719+ writable_property->changed().connect([](double d)
1720+ {
1721+ std::cout << "Dummy property changed: " << d << std::endl;
1722+ });
1723+ auto signal = stub->get_signal<test::Service::Signals::Dummy>();
1724+ int64_t received_signal_value = -1;
1725+ signal->connect([bus, &received_signal_value](const int32_t& value)
1726+ {
1727+ received_signal_value = value;
1728+ bus->stop();
1729+ });
1730+ auto result = stub->invoke_method_synchronously<test::Service::Method, int64_t>();
1731+ EXPECT_FALSE(result.is_error());
1732+ EXPECT_EQ(expected_value, result.value());
1733+ EXPECT_EQ(expected_value, writable_property->get());
1734+ EXPECT_NO_THROW(writable_property->set(4242));
1735+ EXPECT_EQ(4242, writable_property->get());
1736+
1737+ if (t.joinable())
1738+ t.join();
1739+
1740+ EXPECT_EQ(expected_value, received_signal_value);
1741+
1742+ return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
1743+ };
1744+
1745+ EXPECT_NO_FATAL_FAILURE(core::testing::fork_and_run(service, client));
1746 }
1747
1748-TEST(Service, AddingANonExistingServiceDoesNotThrow)
1749+TEST_F(Service, AddingANonExistingServiceDoesNotThrow)
1750 {
1751- auto bus = the_session_bus();
1752 const std::string service_name
1753 {
1754 "very.unlikely.that.this.name.exists"
1755 };
1756- ASSERT_NO_THROW(auto service = dbus::Service::add_service<test::Service>(bus););
1757+ ASSERT_NO_THROW(auto service = dbus::Service::add_service<test::Service>(session_bus()););
1758 }
1759
1760-TEST(Service, AddingAnExistingServiceThrowsForSpecificFlags)
1761+TEST_F(Service, AddingAnExistingServiceThrowsForSpecificFlags)
1762 {
1763- auto bus = the_session_bus();
1764 const std::string service_name
1765 {
1766 "org.freedesktop.DBus"
1767 };
1768 dbus::Bus::RequestNameFlag flags{dbus::Bus::RequestNameFlag::not_set};
1769- ASSERT_ANY_THROW(auto service = dbus::Service::add_service<dbus::DBus>(bus, flags););
1770+ ASSERT_ANY_THROW(auto service = dbus::Service::add_service<dbus::DBus>(session_bus(), flags););
1771 }
1772
1773 TEST(VoidResult, DefaultConstructionYieldsANonErrorResult)
1774
1775=== modified file 'tests/stl_codec_test.cpp'
1776--- tests/stl_codec_test.cpp 2014-01-05 18:58:19 +0000
1777+++ tests/stl_codec_test.cpp 2014-01-13 07:51:24 +0000
1778@@ -17,7 +17,10 @@
1779 */
1780
1781 #include <core/dbus/dbus.h>
1782+#include <core/dbus/message_streaming_operators.h>
1783+
1784 #include <core/dbus/types/stl/map.h>
1785+#include <core/dbus/types/stl/string.h>
1786 #include <core/dbus/types/stl/tuple.h>
1787
1788 #include <gtest/gtest.h>
1789
1790=== modified file 'tests/test_data.h.in'
1791--- tests/test_data.h.in 2013-10-27 18:18:38 +0000
1792+++ tests/test_data.h.in 2014-01-13 07:51:24 +0000
1793@@ -19,8 +19,21 @@
1794 #ifndef TEST_DATA_H_
1795 #define TEST_DATA_H_
1796
1797+namespace core
1798+{
1799 namespace testing
1800 {
1801+
1802+const char* session_bus_configuration_file()
1803+{
1804+ return "@CMAKE_SOURCE_DIR@/data/session.conf";
1805+}
1806+
1807+const char* system_bus_configuration_file()
1808+{
1809+ return "@CMAKE_SOURCE_DIR@/data/system.conf";
1810+}
1811+
1812 namespace com
1813 {
1814 namespace canonical
1815@@ -92,5 +105,5 @@
1816 }
1817 }
1818 }
1819-
1820+}
1821 #endif // TEST_DATA_H_

Subscribers

People subscribed via source and target branches