Page tree
Skip to end of metadata
Go to start of metadata

QTIP Developer Guide

This guide is about how to develop QTIP.

If you just want to use it for performance benchmark, check the user guide instead.

Getting Started

Source code

~$ git clone


It is recommended to use virtualenv to isolate your development environment from system, especially when you are working on several different projects.


QTIP use tox to automate the testing tasks

$ pip install tox
$ tox

Undering macOS system, it will happen to a fatal error when installing package cryptograph:

'openssl/opensslv.h' file not found
#incude <openssl/opensslv.h>
1 error generated.

It is for macOS uses TLS instead of OpenSSL and no header files supported. The solutions is:

# brew install openssl

# #add these lines in to your shell profiles, such as .bash_profile, .zshrc
# export CPPFLAGS='-I $openssl_install_path/include'
# export LDFLAGS='-L $openssl_install_path/lib'

Third Party Code

QTIP includes a few third party code via subrepo. All third party code are stored in /third-party.

To pull the changes from remote repository, use

git subrepo pull third-party/<subdir>

It will create a new commit in parent repo, i.e. qtip. However, the auto generated commit message does not include mandatory tags such as Change-Id required by gerrit. You need to manually amend the commit to append those.

git commit --amend -s

Example of final commit message

Include third party script for license checking and amending
The following commit message are generated automatically by git-subrepo
git subrepo clone third-party/License

  subdir:   "third-party/License"
  merged:   "61489da"
  origin:   ""
  branch:   "master"
  commit:   "61489da"
  version:  "0.3.0"
  origin:   ""
  commit:   "988f8c8"
Change-Id: I8eab86a8ce3f26995af3e3535f31f361b4826a8b
Signed-off-by: Yujun Zhang <>

Sometimes you may modify the third-party code to adapt it in qtip. To push the changes to remote repository, run

git subrepo push third-party/<subdir>

If you want to include a new repository of third party code. Use

git subrepo clone <remote-url> [<subdir>]

  • No labels