FHIR server benchmark tool

FHIR server performance and load testing tool.

Tests

  • CRUD - basic FHIR CRUD api testing on US CORE profile Patient
  • Validation - testing $validate operation for 6 different profiles
  • Search - perform different search operations

Install

MAC OS

brew install k6

Debian/ubuntu

sudo gpg -k
sudo gpg --no-default-keyring --keyring /usr/share/keyrings/k6-archive-keyring.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys C5AD17C747E3415A3642D57D77C6C491D6AC1D69
echo "deb [signed-by=/usr/share/keyrings/k6-archive-keyring.gpg] https://dl.k6.io/deb stable main" | sudo tee /etc/apt/sources.list.d/k6.list
sudo apt-get update
sudo apt-get install k6

Required only for crud.js tests.

MAC OS

brew install go
go install go.k6.io/xk6/cmd/xk6@latest

Build with required xk6-kv plugin

https://github.com/oleiade/xk6-kv

cd bin
xk6 build --with github.com/oleiade/xk6-kv

Run test

k6 run test/crud.js \
  --tag runid=RUNID_001 \
  --tag suite=CRUD \
  --env BASE_URL='https://fhir.server.org/fhir' \
  --env AUTH_USER='_user_' \
  --env AUTH_PASSWORD='_password_'

k6 run test/validate.js \
  --tag runid=RUNID_001 \
  --tag suite=VALIDATE \
  --env BASE_URL='https://fhir.server.org/fhir' \
  --env AUTH_USER='_user_' \
  --env AUTH_PASSWORD='_password_'

k6 run test/search.js \
  --tag runid=RUNID_001 \
  --tag suite=SEARCH \
  --env BASE_URL='https://fhir.server.org/fhir' \
  --env AUTH_USER='_user_' \
  --env AUTH_PASSWORD='_password_'