Merge lp:~mardy/location-service/old-location-1604446 into lp:location-service/trunk

Proposed by Alberto Mardegan
Status: Merged
Approved by: Thomas Voß
Approved revision: 263
Merged at revision: 266
Proposed branch: lp:~mardy/location-service/old-location-1604446
Merge into: lp:location-service/trunk
Diff against target: 143 lines (+1/-123)
2 files modified
src/location_service/com/ubuntu/location/service/implementation.cpp (+1/-19)
tests/acceptance_tests.cpp (+0/-104)
To merge this branch: bzr merge lp:~mardy/location-service/old-location-1604446
Reviewer Review Type Date Requested Status
Thomas Voß (community) Approve
Review via email: mp+301143@code.launchpad.net

Commit message

Don't sent last known position to new sessions

Description of the change

Don't sent last known position to new sessions

To post a comment you must log in.
Revision history for this message
Thomas Voß (thomas-voss) wrote :

LGTM

review: Approve

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'src/location_service/com/ubuntu/location/service/implementation.cpp'
2--- src/location_service/com/ubuntu/location/service/implementation.cpp 2016-05-20 15:24:39 +0000
3+++ src/location_service/com/ubuntu/location/service/implementation.cpp 2016-07-26 08:50:39 +0000
4@@ -177,23 +177,5 @@
5 new ProxyProvider{provider_selection}
6 };
7
8- session::Interface::Ptr session_iface{new session::Implementation(proxy_provider)};
9- std::weak_ptr<session::Interface> session_weak{session_iface};
10- session_iface->updates().position_status.changed().connect([this, session_weak](const session::Interface::Updates::Status& status)
11- {
12- cul::Optional<cul::Update<cul::Position>> last_known_position = configuration.engine->updates.last_known_location.get();
13- bool has_last_known_position = last_known_position ? true : false;
14- bool is_session_enabled = status == culs::session::Interface::Updates::Status::enabled;
15- bool is_session_on_or_active = configuration.engine->configuration.engine_state != Engine::Status::off;
16-
17- if (has_last_known_position && is_session_enabled && is_session_on_or_active)
18- {
19- // Immediately send the last known position to the client
20- if (auto session_iface = session_weak.lock())
21- {
22- session_iface->updates().position = last_known_position.get();
23- }
24- }
25- });
26- return session_iface;
27+ return session::Interface::Ptr{new culs::session::Implementation(proxy_provider)};
28 }
29
30=== modified file 'tests/acceptance_tests.cpp'
31--- tests/acceptance_tests.cpp 2016-05-24 07:34:26 +0000
32+++ tests/acceptance_tests.cpp 2016-07-26 08:50:39 +0000
33@@ -666,110 +666,6 @@
34 EXPECT_EQ(core::testing::ForkAndRunResult::empty, core::testing::fork_and_run(server, client));
35 }
36
37-TEST_F(LocationServiceStandalone, NewSessionsGetLastKnownPosition)
38-{
39- core::testing::CrossProcessSync sync_start;
40-
41- auto server = [this, &sync_start]()
42- {
43- SCOPED_TRACE("Server");
44-
45- auto trap = core::posix::trap_signals_for_all_subsequent_threads({core::posix::Signal::sig_term});
46- trap->signal_raised().connect([trap](core::posix::Signal)
47- {
48- trap->stop();
49- });
50-
51- auto incoming = session_bus();
52- auto outgoing = session_bus();
53-
54- incoming->install_executor(core::dbus::asio::make_executor(incoming));
55- outgoing->install_executor(core::dbus::asio::make_executor(outgoing));
56-
57- auto dummy = new DummyProvider();
58- cul::Provider::Ptr helper(dummy);
59-
60- cul::service::DefaultConfiguration config;
61- cul::service::Implementation::Configuration configuration
62- {
63- incoming,
64- outgoing,
65- config.the_engine(config.the_provider_set(helper), config.the_provider_selection_policy(), null_settings()),
66- config.the_permission_manager(incoming),
67- cul::service::Harvester::Configuration
68- {
69- cul::connectivity::platform_default_manager(),
70- std::make_shared<NullReporter>()
71- }
72- };
73- auto location_service = std::make_shared<cul::service::Implementation>(configuration);
74-
75- configuration.engine->updates.last_known_location.set(reference_position_update);
76- std::thread t1{[incoming](){incoming->run();}};
77- std::thread t2{[outgoing](){outgoing->run();}};
78-
79- sync_start.try_signal_ready_for(std::chrono::milliseconds{500});
80-
81- trap->run();
82-
83- incoming->stop();
84- outgoing->stop();
85-
86- if (t1.joinable())
87- t1.join();
88-
89- if (t2.joinable())
90- t2.join();
91-
92- return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
93- };
94-
95- auto client = [this, &sync_start]()
96- {
97- SCOPED_TRACE("Client");
98-
99- EXPECT_EQ(1, sync_start.wait_for_signal_ready_for(std::chrono::milliseconds{500}));
100-
101- auto bus = session_bus();
102- bus->install_executor(dbus::asio::make_executor(bus));
103- std::thread t{[bus](){bus->run();}};
104-
105- auto location_service = dbus::resolve_service_on_bus<
106- cul::service::Interface,
107- cul::service::Stub>(bus);
108-
109- auto s1 = location_service->create_session_for_criteria(cul::Criteria{});
110-
111- std::cout << "Successfully created session" << std::endl;
112-
113- cul::Update<cul::Position> position;
114- auto c1 = s1->updates().position.changed().connect(
115- [&](const cul::Update<cul::Position>& new_position) {
116- std::cout << "On position updated: " << new_position << std::endl;
117- position = new_position;
118- });
119-
120- std::cout << "Created event connections, starting updates..." << std::endl;
121-
122- s1->updates().position_status = culss::Interface::Updates::Status::enabled;
123-
124- std::cout << "done" << std::endl;
125-
126- std::this_thread::sleep_for(std::chrono::milliseconds{1000});
127-
128- bus->stop();
129-
130- if (t.joinable())
131- t.join();
132-
133- EXPECT_EQ(reference_position_update, position);
134-
135- return ::testing::Test::HasFailure() ? core::posix::exit::Status::failure : core::posix::exit::Status::success;
136- };
137-
138- EXPECT_EQ(core::testing::ForkAndRunResult::empty, core::testing::fork_and_run(server, client));
139-}
140-
141 namespace
142 {
143 struct LocationServiceStandaloneLoad : public LocationServiceStandalone

Subscribers

People subscribed via source and target branches