diff PerfsDb/README.md @ 156:f1a75985caa8

first Db test framework - work in progress
author am@osimis.io
date Thu, 16 Aug 2018 17:13:32 +0200
parents
children df1f9946571c
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/PerfsDb/README.md	Thu Aug 16 17:13:32 2018 +0200
@@ -0,0 +1,69 @@
+Performance Db tests
+====================
+
+Introduction
+------------
+
+This project performs benchmark tests of Orthanc with its various DB servers.
+
+It can be used to:
+
+- compare DB servers performance
+- compare performance between small and big DB
+- test the effectiveness of some code refactoring
+
+In a first step, the project creates a set of DB servers and populates them.
+Then, it will perform a set of basic operations on Orthanc with each of these servers
+and measure the time required for each operation.
+
+Timings are measured at the API level.  Since we want to measure mainly the DB performance,
+we'll mainly use very small DICOM files (without pixels data).
+
+Prerequisites
+-------------
+
+- install python3, pip3 and pipenv
+
+```bash
+sudo apt-get install -y python3 python3-pip python3-venv
+```
+
+- [install Docker-CE](https://docs.docker.com/install/linux/docker-ce/ubuntu/#set-up-the-repository)
+- [install docker-compose](https://docs.docker.com/compose/install/)
+- have access to docker without typing `sudo`.  This is done by typing: `sudo groupadd docker` and `sudo usermod -aG docker $USER`
+- have Orthanc and its DB plugins natively installed or compiled on your host system
+
+Once all prerequisites are installed, you should always execute all commands from a python virtual-env.  To initialize the virtual env the first time:
+
+```bash
+python3 -m venv .env
+source .env/bin/activate
+pip install -r requirements.txt
+```
+
+To enter the virtual-env the next times:
+
+```bash
+source .env/bin/activate
+```
+
+Initializing a DB before tests
+-----------------
+
+```bash
+python run.py --orthanc-path=/home/amazy/builds/orthanc-build-release/ --plugins-path=/home/amazy/builds/mysql-release/ --init --mysql-small
+```
+
+Clearing a DB
+-----------------
+
+```bash
+python run.py --orthanc-path=/home/amazy/builds/orthanc-build-release/ --plugins-path=/home/amazy/builds/mysql-release/ --clear --mysql-small
+```
+
+Runing tests on two DBs
+-----------------
+
+```bash
+python run.py --orthanc-path=/home/amazy/builds/orthanc-build-release/ --plugins-path=/home/amazy/builds/mysql-release/ --run --mysql-large --mysql-small 
+```