Versions Compared

Key

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

...

This article explains this function & how to use it, and also highlights a few pitfalls to watch out for.

The function may also be useful for getting smaller amounts of data onto a phone quickly - e.g. 30 mins of data for a quick test on an emulated device, or a device in Perfecto cloud.

Import Location Data onto the Mobile App

...

Just add a “points” parameter (e.g. “&points=4032”) to specify the number of data points that you want.

Data points are generated exactly 5 minutes apart.

Important Note: The tool includes a representative number “hashes” in the data, but these are random numbers, rather than properly computed hashes (to save compute resource). They should give a realistic model of hash storage for exposure notification performance testing - but they will not generate accurate exposure notificationsIn terms of hashes generated for these data points, we have made a compromize because generating large numbers of hashes is (intentionally) expensive. WIth this in mind:

  • If you generate 287 data points or fewer (up to 1 day), the hashes generated are real. With current hash cost of 12, this takes ~60 seconds on our server.

  • If you generate 288 data points or more (>= 1 day), the hashes generated are fake random numbers. It’s srill worth including them as the mobile app will store them compare them with hashes etc. so we’ll get a realistic view of intersection calculation performance. But we won’t generate any real intersections.

[actually there is a further issue: the current App code (15/7) does not load the hashes into the DB but discards them, we are working on a fix]

Some enhancements I’m considering:

  • Make timestamps a bit more variable: 5 mins +/- a random amount. This will make the data more realistic.

  • Allow data to be created up to time X, where X may be in the past. This will avoid overlapping data points in the case where someone installed the app some hours before they added the fake location data

  • Make the hashes added to the data correct (not random), so that the data can be used to test Exposure NotificationsMore control over when hashes are real vs. fake (real hashes are needed for Exposure Notifications to actually trigger) - e.g. ability to make the most recent 100 hashes real, and the rest of the hashes fake.

  • More control over the shape of the data that is generated - right now it’s a slow random walk. We could make it more predictable, follow specific paths/shapes etc.

Requests on the above to Diarmid Mackenzie - I will also put the code into GitHub if others want to contribute (it’s a very simply fairly simple Python Flask server).

Pitfalls

...

For the same reasons that we want to test the GPS Mobile App with 14d data, we also want to test Safe Places with 14d data.Currently, the best technique we have for doing this is to load

There are two main ways of doing this:

  1. Load 14d data into the Mobile App, using the techniques described above, and then share location data with Safe Places.

...

  1. Upload 14d data set directly to Safe Places without using the Mobile App,

...

  1. by following How to add multiple data points directly in SafePlaces

Further information

There are a number of improvements we could make to better support isolated testing of Safe Places - see Testability of Safe Places - PathCheck GPS Mobile App interactions for details.