Skip to content

Latest commit

 

History

History
113 lines (78 loc) · 5.79 KB

CONTRIBUTING.md

File metadata and controls

113 lines (78 loc) · 5.79 KB

Contributing to QuickPerf

Thank you for your interest in contributing to QuickPerf!

🚩 Table of contents

Code of conduct

Various types of contribution

Submission guidelines

Build QuickPerf

Test several JDK with Docker

Technical resources

Paris Hackergarten

Legal stuff

Code of conduct

Help us keep QuickPerf open and inclusive. We have adopted the Contributor Covenant Code of Conduct that we expect project participants to adhere to. Please read our code of conduct.

Various types of contribution

You can contribute in many ways to QuickPerf:

Submission guidelines

When you start to work on an issue, please leave a comment "I start to work on this issue", so we can assign it to you. Do not hesitate to ask for information about the issue.

Please rebase your PR on master (no merge). We prefer integrating PR by squashing all the commits and rebase it to master, if your PR has diverged and needs to integrate with master, please rebase on master but do not merge as it will prevent rebasing later on.

Need some help with Git or Github? Don't worry, you can read this blog spot or watch these videos.

Please add a license header on each new file: mvn license:format

Build QuickPerf

JDK requirements

The JDK must have a version equal to or greater than 1.8.

Also, the JDK must be able to profile with the JDK Flight Recorder that is available with

  • OpenJDK JDK >= 11
  • OpenJDK JDK 8 with a version greater than u262/u272 (following vendors)
    👉 Article from Marcus Hirt giving details: http://hirt.se/blog/?p=1235
  • Oracle JDK >= 1.7u40

Steps to build QuickPerf

  1. Clone the repository

    Execute git clone https://github.com/quick-perf/quickperf.git.

  2. Navigate to the quickperf repository

  3. Build QuickPerf with Maven

    1. Use Maven installed locally

      You need Maven 3.

      Execute mvn clean install.

    2. Use a Maven wrapper

      The QuickPerf repository includes Maven Wrapper scripts (./mvnw or mvnw.bat) to build QuickPerf without having to install Maven locally.

      On Mac or Linux run ./mvnw clean install.

      On Windows run mvnw.cmd clean install.

Tips

💡 To disable Spring Boot tests: mvn clean install -P -SpringBootTests

💡 To disable the jfr-annotations module: mvn clean install -P -jfr

💡 To build with the Testcontainers tests: mvn clean install -P testcontainers

Test several JDK with Docker

To quickly test multiple linux openjdk locally, you can execute the following command line:

$> docker container run --rm --name mvn-quickperf-cleaninstall -v $HOME/.m2:/root/.m2 -v $(pwd):/usr/src/quickperf -w /usr/src/quickperf maven:3-jdk-11 mvn clean install
$> docker container run --rm --name mvn-quickperf-cleaninstall -v $HOME/.m2:/root/.m2 -v $(pwd):/usr/src/quickperf -w /usr/src/quickperf maven:3-jdk-12 mvn clean install

You can look at the versions available for the Maven image in the dockerhub.

The following command line allows to test a list of openjdk on unix systems :

$> for i in {11..12};  do echo "******** Testing with maven:3-jdk-$i **********"; docker container run --rm --name mvn-quickperf-cleaninstall -v $HOME/.m2:/root/.m2 -v $(pwd):/usr/src/quickperf -w /usr/src/quickperf maven:3-jdk-$i mvn clean install; if [[ $? != 0 ]]; then break; fi; done

It will fail as soon as one mvn clean install fails.

Notice: Maven images are packaged only with openjdk not oraclejdk.

Technical resources

Paris Hackergarten

You live in Paris? Jean Bisutti, a QuickPerf contributor, regularly attends Paris Hackergarten. He can help you to contribute to QuickPerf during this event.

Legal stuff

Project License: Apache License Version 2.0

  • You will only Submit Contributions where You have authored 100% of the content.
  • You will only Submit Contributions to which You have the necessary rights. This means that if You are employed You have received the necessary permissions from Your employer to make the Contributions.
  • Whatever content You Contribute will be provided under the Project License(s).