location-service
Location Service Test Plan & Forensics Instructions
* Test plan for component: location-service
Component Checklist: https://wiki.ubuntu.com/Process/Merges/Checklists/location-service
Trunk URL: lp:location-service
Ubuntu Package URL (LP): http://launchpad.net/ubuntu/+source/location-service
Contents
Dependents/Clients
- qtubuntu-sensors
- Qt/QML applications:
- Browser
- osmTouch
Test Plan
This test plan is not supposed to be complete; use it to guide your manual testing so you don't miss big functional areas that are part of the component; also this should be used as guideline to inspire the exploratory testing which should be adapted smartly based on the real content of a MP.
Please note that if you're testing the GPS provider, the location service relies on GPS hardware to obtain a location fix. For that, it might be required that you execute the manual steps listed before close to a window or ideally outside, with good satellite visibility conditions.
Note: It can take up to 15 minutes for the GPS device to get a lock, due to lack of assisted GPS
- Install latest image on phone
- Install freshly built MPs that are needed for landing
Depending on the default configuration of location-service on the image, you may skip parts of this test plan. E.g. if GPS hardware is disabled, skip this part. You can see which providers are enabled by looking at the list of providers on the location-serviced command-line (ps fauxw | grep location-service, then look at the --provider flags).
Dummy provider
This tests forces location-service to use only the dummy provider; this providers a baseline test for the app to trust-store to location-service path.
- phablet-shell into the phone:
sudo service ubuntu-location-service stop && sudo /usr/bin/ubuntu-location-serviced --bus system --provider dummy::Provider --dummy::Provider::ReferenceLocationLat=48.857503 --dummy::Provider::ReferenceLocationLon=2.295072
As phablet, start the trust store again (it stops when location-service is stopped) with: start ubuntu-location-service-trust-stored
- Ensure that all AP tests for the webbrowser pass as expected
- Point the browser to maps.google.com (alternatively: here.com, maps.bing.fr).
- Request centering the map on current position and observe if it works correctly (should show the Eiffel tower)
- Install osmTouch from the app store
- Launch osmTouch and check if it centers on the Eiffel tower.
- Install a maps webapp such as HERE or Google Maps webapp from the app store
- Launch maps webapp and check if it centers on the Eiffel tower.
GPS Test Plan
This applies only if GPS provider is enabled.
- Add the silo.
sudo apt-get install ubuntu-location-service-tests
- If you want to send off crowdsourced information, i.e., information about visible wifis and visible radio cells for the obtained location fixes to Mozilla's location service and our own instance:
sudo GLOG_v=40 GLOG_logtostderr=1 GPS_TEST_ENABLE_HARVESTING_DURING_TESTS=1 /usr/bin/uls-tests/gps_provider_test --gtest_filter=*.time_to_first_fix_cold_start_without_supl_benchmark_requires_hardware
If you don't want to send off crowdsourced information:
sudo GLOG_v=40 GLOG_logtostderr=1 /usr/bin/uls-tests/gps_provider_test --gtest_filter=*.time_to_first_fix_cold_start_without_supl_benchmark_requires_hardware
- The test will output a lot of diagnostic information to the terminal and will take ~30 minutes. If satellite visibility is limited, it can take even longer. The test will automatically report success or failure.
Preliminary AGPS Test Plan
Does not apply to Krillin
Please note that the Krillin GPS chipset driver and its integration within Ubuntu does not support vanilla AGPS (i.e., SUPL) right now. For that, this test case is irrelevant for Krillin and is likely to fail.
This applied only if GPS provider and some other provider (giving Assistance) are enabled.
- Add the silo.
sudo apt-get install ubuntu-location-service-tests
- Obtain a (rough) location estimate for your current location on Google maps.
- Make sure to replace INSERT_ESTIMATE_HERE with the respective values obtained from Google maps.
- If you want to send off crowdsourced information, i.e., information about visible wifis and visible radio cells for the obtained location fixes to Mozilla's location service and our own instance:
sudo GLOG_v=40 GLOG_logtostderr=1 GPS_TEST_ENABLE_HARVESTING_DURING_TESTS=1 GPS_TEST_REF_LAT=INSERT_ESTIMATE_HERE GPS_TEST_REF_LON=INSERT_ESTIMATE_HERE /usr/bin/uls-tests/gps_provider_test --gtest_filter=*.time_to_first_fix_cold_start_with_supl_benchmark_requires_hardware
If you don't want to send off crowdsourced information:
sudo GLOG_v=40 GLOG_logtostderr=1 GPS_TEST_REF_LAT=INSERT_ESTIMATE_HERE GPS_TEST_REF_LON=INSERT_ESTIMATE_HERE /usr/bin/uls-tests/gps_provider_test --gtest_filter=*.time_to_first_fix_cold_start_with_supl_benchmark_requires_hardware
- The test will output a lot of diagnostic information to the terminal and will take ~10 minutes or less. The test will automatically report success or failure.
Espoo / HERE provider
This applies only if the Espoo / HERE remote provider is enabled. This provider should be enabled by default and may either work standalone as the only provider or as an assistance for the GPS hardware to lock.
Add the silo; special exception for lxc-android-config: see https://wiki.ubuntu.com/Touch/Testing/lxc-android-config
- If noted, deploy an updated custom tarball:
Download the tarball under /tmp (NOT under /)
Unpack there: cd /tmp; sudo tar xvf custom-vendor-here-*.tar.xz
Remove older bits: sudo rm -rf /custom/vendor/here/
Update custom bits: sudo mv /tmp/system/custom/vendor/here /custom/vendor
- Reboot
- After boot, check you have these three processes running on top of location-service:
- slpgwd
- posclientd
- ubuntu-espoo-service
- Workaround LP #1367244 by waiting for boot to settle, then restarting posclientd: "sudo restart ubuntu-location-provider-here-posclientd", wait 30s.
Make sure SIM is unlocked and attached to the network (has some reliable signal) and that WiFi is turned on.
- Install OSMTouch app
- Run OSMTouch app, hit the position button every other second until you get a blue circle showing your current location; this might take up to 30s until LP #XXX is fixed.
Connectivity API
For integration of network-based positioning providers, the location service offers a connectivity API that provides access to wifi and cell measurements as well as information on the current overall connectivity status of the device. Please execute the following commands on a newly flashed device with a writable image:
sudo apt-get update && sudo apt-get build-dep location-service && sudo apt-get install libubuntu-location-service-dev ubuntu-location-service-examples
mkdir /tmp/build && cd /tmp/build && cmake /usr/share/ubuntu-location-service/examples/standalone/connectivity/ && make
GLOG_logtostderr=1 ./connectivity
Verify that the output looks similar to:
phablet@ubuntu-phablet:/tmp/build$ ./connectivity Is wifi enabled: true Is wifi hw enabled: true Is wwan enabled: false Is wwan hw enabled: true umts(mcc: 262, mnc: 2, lac: 5313, id: 131948771, asu: 7) (bssid: BC:F2:AF:AF:19:A2, ssid: devolo-bcf2afaf19a2, last seen: 1408955086, mode: Mode::infrastructure, frequency: 2462, strength: 72) (bssid: 00:22:3F:35:43:58, ssid: JustAnotherWLAN, last seen: 1408955086, mode: Mode::infrastructure, frequency: 2412, strength: 24) (bssid: 82:C7:A6:40:8C:4E, ssid: EasyBox-44D054, last seen: 1408955206, mode: Mode::infrastructure, frequency: 2417, strength: 17) (bssid: 00:24:01:B8:32:8D, ssid: gra, last seen: 1408955086, mode: Mode::infrastructure, frequency: 2412, strength: 12) (bssid: C0:25:06:3C:28:22, ssid: FRITZ!Box 6360 Cable, last seen: 1408954966, mode: Mode::infrastructure, frequency: 2412, strength: 17) (bssid: 00:1C:4A:A5:B7:59, ssid: FRITZ!Box Fon WLAN 7170, last seen: 1408954966, mode: Mode::infrastructure, frequency: 2437, strength: 10) Last seen changed for wifi (bssid: BC:F2:AF:AF:19:A2, ssid: devolo-bcf2afaf19a2, last seen: 1408955257, mode: Mode::infrastructure, frequency: 2462, strength: 72) Last seen changed for wifi (bssid: 00:22:3F:35:43:58, ssid: JustAnotherWLAN, last seen: 1408955257, mode: Mode::infrastructure, frequency: 2412, strength: 24) Signal strength changed for wifi: (bssid: BC:F2:AF:AF:19:A2, ssid: devolo-bcf2afaf19a2, last seen: 1408955257, mode: Mode::infrastructure, frequency: 2462, strength: 73)
Trust Store Integration
Please note that we are assuming a freshly wiped system for testing here. If you cannot fulfill that pre-condition, please run rm -rf /home/phablet/.local/share/UbuntuLocationService prior to running the tests:
Unconfined
- Open the browser, go to maps.google.com
- Observe the in-browser dialog asking for granting access to location.
Confined Web-App
- Open the Nokia Here web app, observe the trust dialog appearing.
Confined Application
- Open osmtouch and observe the osmtouch surface sliding up, presenting you with a trust dialog.
Debugging
Location not working? Here's how to debug.
Forensics
If you encounter issues on a phone and you feel comfortable using the command line, please collect the following information to augment bug reports:
- /var/log/ubuntu-location-service*
- /var/log/upstart/ubuntu-location-service.log
- /var/log/syslog
The output of: sudo /system/bin/logcat
The output of: ubuntu-location-serviced-cli --bus system --get --property visible_space_vehicles
The output of sudo GLOG_v=1000 GLOG_logtostderr=1 ubuntu-location-serviced-cli --bus system --test
Layers
Test in OSMTouch (QML app using Qt API) before testing in webapps or webbrowser app. Different results? File a bug where it doesn't work. Same result of no location? Next step.
Check that stack works with dummy provider
Edit /etc/init/ubuntu-location-provider.override to start location-serviced with just the dummy provider; this should work. Doesn't work? File a bug against location-service. Works? Reset config to defaults and try the next thing.
Hardware GPS breaking all of location-service
GPS provider is built-in into location-service and might break all of it if it goes south (working on splitting it out); try enabling only the HERE provider on the location-serviced command-line and see if that works. Works? File a bug against location-service. Doesn't work? Move one
HERE test
To test whether the low-level HERE stack gets a location, put http://people.canonical.com/~lool/espoo-cli on your phone (will be included along HERE bits in the future) and run with:
chmod a+x espoo-cli GLOG_logtostderr=1 GLOG_v=100 LD_LIBRARY_PATH=/custom/vendor/here/location-provider/lib/arm-linux-gnueabihf ./espoo-cli 5
NB: 5 is the number of location updates after which the tool exits; updates should come in at approx 15s interval. Output looks like:
I1101 21:30:01.285964 4403 cli.cpp:117] Requested number of updates is 2 I1101 21:30:01.299002 4403 cli.cpp:133] Starting location updates I1101 21:30:01.301888 4403 cli.cpp:141] Starting GLib main loop I1101 21:30:11.304612 4403 cli.cpp:158] Location: tstamp=1414891811 lat=xyz long=foo hor. acc.=2569 alt=nan vert. acc.=nan tech=cell I1101 21:30:11.306061 4403 cli.cpp:170] Remaining updates: 1 I1101 21:30:26.736821 4403 cli.cpp:158] Location: tstamp=1414891826 lat=xyz long=foo hor. acc.=2824 alt=nan vert. acc.=nan tech=cell I1101 21:30:26.738348 4403 cli.cpp:148] Stopping location updates
Low-level HERE stack works but location-serviced with just HERE provider doesn't work? File a bug against espoo projet (HERE) and/or location-service. Low-level HERE stack doesn't work? Move on
location-service and espoo-service debug
Collect some debug data by editing /etc/init/ubuntu-espoo-service.conf and /etc/init/ubuntu-location-service.override and changing the start sequence to add some env vars:
export GLOG_v=200 export GLOG_logtostderr=1
before the exec. Reboot, and start some app. You should have some log files under /var/log/upstart/ubuntu-espoo-service.log and /var/log/upstart/ubuntu-location-service.log to attach to a bug report; e.g. a working espoo log looks like this:
WARNING: Logging before InitGoogleLogging() is written to STDERR I1105 16:30:10.221474 1620 provider.cpp:568] StartPositionUpdates I1105 16:30:10.224901 1620 provider.cpp:122] Successfully started position updates. I1105 16:30:10.228739 1620 provider.cpp:596] StartVelocityUpdates I1105 16:30:13.046851 1621 provider.cpp:83] Received location: Position(lat: Coordinate(12.34 deg), lon: Coordinate(12.34 deg), alt: Coordinate(nan m), hor.acc.: 1430 m, ver.acc.: nan m)
No position there? check connectivity API works by running:
cd /tmp wget http://people.ubuntu.com/~lool/connectivity GLOG_v=200 GLOG_logtostderr=1 ./connectivity
you should see something like:
I1105 16:47:26.431466 11140 cached_radio_cell.cpp:160] (mcc: 123, mnc: 2, lac: 1234, id: 123456, asu: 1) I1105 16:47:26.533818 11140 connectivity.cpp:47] Is wifi enabled: true I1105 16:47:26.533963 11140 connectivity.cpp:48] Is wifi hw enabled: true I1105 16:47:26.534010 11140 connectivity.cpp:49] Is wwan enabled: true I1105 16:47:26.534050 11140 connectivity.cpp:50] Is wwan hw enabled: true I1105 16:47:26.534442 11140 connectivity.cpp:122] umts(mcc: 123, mnc: 2, lac: 1234, id: 123456, asu: 1) I1105 16:47:26.534633 11140 connectivity.cpp:155] (bssid: 12:12:12:12:12:12, ssid: xyz, last seen: 1415224046, mode: Mode::infrastructure, frequency: 2442, strength: 63) I1105 16:47:26.534828 11140 connectivity.cpp:155] (bssid: 12:12:12:12:12:12, ssid: boing, last seen: 1415224046, mode: Mode::infrastructure, frequency: 2467, strength: 57)
Also, please attach output of /usr/share/ofono/scripts/list-modems > list-modems-output.txt
TODO: document dbus-monitor / d-feet capturing of client / system traffic with snooping config.
Mark HERE license as accepted from cmdline
sudo LC_ALL=C gdbus call --system --dest org.freedesktop.Accounts --object-path /org/freedesktop/Accounts/User32011 --method org.freedesktop.DBus.Properties.Set com.ubuntu.location.providers.here.AccountsService LicenseAccepted '<true>'
Force startup after ofono and NM are started
This is a *workaround* to get connectivity API to collect; mount your system read-write and edit /etc/init/ubuntu-location-provider-here-slpgwd.conf:
sudo mount -o remount,rw / sudo vi /etc/init/ubuntu-location-provider-here-slpgwd.conf change: start on started dbus and (started ofono or started network-manager) to: start on started dbus and started ofono and started network-manager sudo mount -o remount,ro / sync sudo reboot
Process/Merges/TestPlan/location-service (last edited 2015-10-21 07:41:12 by ip-178-200-214-125)