Skip to content

App that continuously monitors Enketo's loading and validation performance of a set of benchmark XForms and posts results to a Graphite server.

License

Notifications You must be signed in to change notification settings

enketo/enketo-core-performance-monitor

Repository files navigation

Enketo Core Performance Monitor

An app that continuously monitors Enketo Core's loading performance in Chrome for a set of benchmark XForms. It posts results to a Graphite server.

The app runs forms in Chrome Headless. We'll also try to update this browser regularly, so performance changes could be caused by Chrome updates or Enketo Core updates. This reflects the user experience well which is what really matters.

Unfortunately the server running this app is not always constant. In the past Digital Ocean has throttled this server.

Live Results

Notes:

  • For all graphs between 22/02/2018 and 08/07/2018 grunt failed which meant the javascript built file was not updated. The results are useless in this period.
  • From the 7th of August 2018 onwards the app switched to Chrome headless. Best to discard data from before this date.
  • From enketo-core 4.56.0 (Aug 7, 2018) and 5.16.2 enketo-core failed to update. This was resolved on July 1st 2020. The data is useless in this period.

Setup

  1. Install graphite server and configure (after many failures I finally settled on these retentions with the default average aggregation: 1h:1d,1d:5y,7d:10y)
  2. Install node 14, and grunt-cli
  3. Install build-essential apt-get install build-essential
  4. git clone enketo-core and build with npm install && grunt
  5. git clone this app as a sibling of enketo-core and run 'npm install'
  6. configure in config.json
  7. test by running node /path/to/enketo-core-performance-monitor/benchmark -f widgets.xml
  8. setup cron job for node /path/to/enketo-core-performance-monitor/benchmark -a every hour with the above retention. cronjob frequency = smallest retention frequency
  9. set up post-commit hook - run with pm2 or forever - to always keep enketo-core up-to-date and rebuild using a shell script.
  10. drop any additional forms you would to include in /forms.

About

App that continuously monitors Enketo's loading and validation performance of a set of benchmark XForms and posts results to a Graphite server.

Resources

License

Stars

Watchers

Forks

Packages

No packages published