|
These are initial thoughts about adding performance tests to folio modules. We have done alot of work optimizing mod-inventory-storage to perform on millions of instances. We want to make sure we maintain that performance even when changes to the database / queries need to be made to support new functionality / improve existing functionality
1. set up an existing environment with 3M records - each module will need to provide a way to load relevant data. for example, mod-inv-storage may use the data loader to load the harvard data with some scripts to load holdings and item info (will attach examples for that below) - i dont believe we will have too many modules managing that amount of data.
a. the environment should be static - in aws, this means we can potentially create an image with our own postgres installation and the 3M records. and bring it up for testing and down when tests complete. Will need to get updated manually / custom script when schema changes are needed (this is similar to an upgrade script that should be supported by rmb modules OOTB - so this may potentially be used and exercised). but re-loading data should be done occasionally and not daily or even weekly, unless changes are needed (so this can be scripted / sql'd / if needed for production - this can be additional functionality added to the module (loading data))
2. jmeter script template - a template that can run a GET with cql and then a random full display on the returned results - with perf configurable thresholds for each of the two request types - including avg, std, saved to csv for reference - for example, we can start with a baseline for instances based on the existing implementation - run on a per git pull request. high response times should block? the merge...
a. it should take a couple of minutes to get the image up and running (unless it is always running), and running a 50-100 query sanity query file should not take more then a minute or two to run
when a change to an sql / db is needed - implement the unsupported sql in the module using postgresClient select / mutate functions and if a decision is made that the functionality should be supported by rmb, add to rmb and migrate to that rmb version in next release
|