Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Info

This is quite a technical article, which covers lots of detail about different possible set-ups for PathCheck GPS Test Environments, how to choose between them and how to set them up.

If you just want a basic intro to GPS end to End Function, try this link instead:

GPS Function End to End - Basic Intro Video

Table of Contents

Key Concepts

Safe Places & PathCheck GPS Mobile App

Safe Places is a Web Application deployed at Health Departments for use by Contact Tracers to analyze, redact and publish location data shared by community members.

The PathCheck GPS Mobile App (referred to later as “Mobile App”) is the Mobile App (Android and iOS) that community members use to privately store their location history, share that history with Health Department Contact Tracers, and monitor published “points of concern” for Exposure Notifications.

For historical reasons, in some contexts the PathCheck GPS Mobile App may be referred to as “Safe Paths” - though we are trying to phase out this name.

End-to-End Testing

By this, we mean testing the Mobile App, together with an instance of the Safe Places software. It is possible (and sometimes desirable) to test the Mobile App in isolation, or Safe Places in isolation - See this article for some notes on what other options are available: Testability of Safe Places - PathCheck GPS Mobile App interactions

...

  • Alpha, Beta and Production builds all point to the Production YAML file

  • Developer & Develop builds point to the Staging YAML file.

    • Note that while these builds can easily be distributed on Android as APKs, there are technical difficulties distributing these builds on iOS.

  • Custom builds can be created to point to bespoke YAML files.

  • It is also possible, using a Feature Flag, to manually conigure any YAML file in the app. When this is configured, this YAML file is used in addition to to the data in the hardcoded YAML file.

Data

You can enable Feature Flags in the “About” screen by tapping 10x on “PathCheck GPS” to then add data points into the app, see Getting 14d of data onto a phone (or into Safe Places)

Examples:

10 data points: https://diarmidmackenzie.pythonanywhere.com/location-data?latitude=42&longitude=13&points=10

4032 data points: https://diarmidmackenzie.pythonanywhere.com/location-data?longitude=42&latitude=13&points=4032

Privacy and Safe Places

At the time of writing (July 8 2020) Safe Places is implemented in such a way that any user who has access to the system, has access to all the location data that has been uploaded to the system.

...

Individual testers with particular privacy concerns may prefer to work with a personal Safe Places instance, rather than a shared instance. If you’d like help or support here, or have other privacy-related concerns, please talk to Diarmid Mackenzie or Adam Leon Smith

Testing End-to-End - Example Setups

Key decisions

To test end to end, you need to make some key decisions:

...

Access details for these can be found on Slack in a pinned post in the “scrum_team_safe_places” channel, and also the “safe_places_testing” channel.

This includes At time of writing, details are as follows, but if these don’t work, please check the Slack channels for latest info:

Username : safeplaces@extremesolution.com
Password : Wx$sRj3E

On slack you can also find details of the API endpoints, but you shouldn’t need to worry about those details, because they should all be kept up-to-date in the Staging YAML.

...

Example 5 - Testing with a personal Safe Places instance

Some testers may wish to run a personal Safe Places instance, for their own sole use. This may be for privacy reasons, or becuase they want to test out some bespoke code changes, some new infrastructure arrangements etc.

Setting up a personal Safe Places instance is not trivial, and it’s beyond the scope of this article to explain how to do that - there is some guidance in the Safe Places repos:
https://github.com/Path-Check/safeplaces-backend
https://github.com/Path-Check/safeplaces-frontend

For end-to-end testiness with a personal Safe Places instance, answers to the setup questions will typically be:

  1. Use a personalSafe Places instance

  2. Create a bespoke YAML file for this instance or add this instance to the staging YAML file.

  3. EIther use a Development / Develop app build that natively uses the staging YAML, or configure the relevant YAML file using the available Feature Flag.

Testing End-to-End - How to Test

Sharing Location Data

For details & screenshots see here: GPS Mobile App - Overview of Function

In summary:

If Health Department is already available in the App for Location Sharing:

...

Note that at this point you could also “Create Record Manually” by selecting location points on the map. The following instructions relate to “Check Data Upload”

  • In the Mobile App, click “Share Location History” icon, allow Location Sharing (if you haven’t done so already), select the appropriate Health Department, then enter the code that was generated by Safe Places

  • Agree to all the various consents, until you get to “Done”

  • Back in Safe Places, click on “Check Data Upload” - if all is well, you should now see the data points on a map.

If Health Department is not yet available in the App:

  • Enable Feature Flags in the “About” screen by tapping 10x on “PathCheck GPS”

  • Under More / Feature Flags, enable “Custom Yaml URL”

  • Under Health Departments, choose “Manually Add Via URL”

  • Enter the URL of the YAML file that contains details of the Health Department (see “Key Concepts” and “Example Setups” above if you aren’t clear what this means!)

  • Once this is entered, your Health Department should now be available in the App for Location Sharing, so you can now perform the process above.

Publishing Location Data

To be completed…add details (Safe Places not working right now to confirm exact flows and grab screenshots.

(note you can also manually add data points).

  • Once the data is loaded, click “Stage All Data For Publishing”, then “Yes, I received consent” as below

...

  • Select “Publish Data” from the top menu

  • Click “Load Data For Publishing”

  • A popup will appear, select the correct data record and click “Open Selected Data”

  • Select “Submit All Data For Publishing” and the following popup screen will appear..

...

  • Select “Submit All Data For Publishing”

  • You are now all done!

Note: You can change the API endpoint in the Configuration screen here: https://safeplaces.extremesolution.com/settings/configuration

Generating Exposure Notifications

In the Health Departments screen in the Mobile App, click on the relevant Health Department so that a green check appears.

The App should now download this published location data.

If you published location data that came from this device, then it should generate Exposure Notifications for all the times that it had recorded locations (except for any data you may have redacted in Safe Places).

If you published location data that came from a different device, or was created manually, then results will vary depending on the level of overlap with location points stored on this device.

Note that Exposure Notifications only trigger if > 66% of points within a 30 minute period match (i.e. 4 or more points in a 30 minute period). These parameters can be changed in the data published by Safe Places, but there is not yet any Safe Places function to configure these.