├── .gitignore ├── README.md ├── perf-test-with-gatling ├── build.gradle ├── gradle │ └── wrapper │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties ├── gradlew ├── gradlew.bat ├── reports │ └── gatling │ │ ├── bootloadsimulation-1520240033559 │ │ ├── index.html │ │ ├── js │ │ │ ├── all_sessions.js │ │ │ ├── assertions.json │ │ │ ├── assertions.xml │ │ │ ├── bootstrap.min.js │ │ │ ├── gatling.js │ │ │ ├── global_stats.json │ │ │ ├── highcharts-more.js │ │ │ ├── highstock.js │ │ │ ├── jquery.min.js │ │ │ ├── menu.js │ │ │ ├── moment.min.js │ │ │ ├── stats.js │ │ │ ├── stats.json │ │ │ ├── theme.js │ │ │ └── unpack.js │ │ ├── req_add-person-test-ac713.html │ │ ├── simulation.log │ │ └── style │ │ │ ├── arrow_down.png │ │ │ ├── arrow_down_black.png │ │ │ ├── arrow_right.png │ │ │ ├── arrow_right_black.png │ │ │ ├── bootstrap.min.css │ │ │ ├── cible.png │ │ │ ├── favicon.ico │ │ │ ├── fond-degrade.gif │ │ │ ├── fond-lueur.gif │ │ │ ├── little_arrow_right.png │ │ │ ├── logo-gatling.jpg │ │ │ ├── logo.png │ │ │ ├── sortable.png │ │ │ ├── sorted-down.png │ │ │ ├── sorted-up.png │ │ │ ├── stat-fleche-bas.png │ │ │ ├── stat-fond.png │ │ │ ├── stat-l-roue.png │ │ │ ├── stat-l-temps.png │ │ │ └── style.css │ │ ├── bootloadsimulation-1520240493472 │ │ ├── index.html │ │ ├── js │ │ │ ├── all_sessions.js │ │ │ ├── assertions.json │ │ │ ├── assertions.xml │ │ │ ├── bootstrap.min.js │ │ │ ├── gatling.js │ │ │ ├── global_stats.json │ │ │ ├── highcharts-more.js │ │ │ ├── highstock.js │ │ │ ├── jquery.min.js │ │ │ ├── menu.js │ │ │ ├── moment.min.js │ │ │ ├── stats.js │ │ │ ├── stats.json │ │ │ ├── theme.js │ │ │ └── unpack.js │ │ ├── req_add-person-test-ac713.html │ │ ├── simulation.log │ │ └── style │ │ │ ├── arrow_down.png │ │ │ ├── arrow_down_black.png │ │ │ ├── arrow_right.png │ │ │ ├── arrow_right_black.png │ │ │ ├── bootstrap.min.css │ │ │ ├── cible.png │ │ │ ├── favicon.ico │ │ │ ├── fond-degrade.gif │ │ │ ├── fond-lueur.gif │ │ │ ├── little_arrow_right.png │ │ │ ├── logo-gatling.jpg │ │ │ ├── logo.png │ │ │ ├── sortable.png │ │ │ ├── sorted-down.png │ │ │ ├── sorted-up.png │ │ │ ├── stat-fleche-bas.png │ │ │ ├── stat-fond.png │ │ │ ├── stat-l-roue.png │ │ │ ├── stat-l-temps.png │ │ │ └── style.css │ │ ├── bootloadsimulation-1520241352996 │ │ ├── index.html │ │ ├── js │ │ │ ├── all_sessions.js │ │ │ ├── assertions.json │ │ │ ├── assertions.xml │ │ │ ├── bootstrap.min.js │ │ │ ├── gatling.js │ │ │ ├── global_stats.json │ │ │ ├── highcharts-more.js │ │ │ ├── highstock.js │ │ │ ├── jquery.min.js │ │ │ ├── menu.js │ │ │ ├── moment.min.js │ │ │ ├── stats.js │ │ │ ├── stats.json │ │ │ ├── theme.js │ │ │ └── unpack.js │ │ ├── req_add-person-test-ac713.html │ │ ├── simulation.log │ │ └── style │ │ │ ├── arrow_down.png │ │ │ ├── arrow_down_black.png │ │ │ ├── arrow_right.png │ │ │ ├── arrow_right_black.png │ │ │ ├── bootstrap.min.css │ │ │ ├── cible.png │ │ │ ├── favicon.ico │ │ │ ├── fond-degrade.gif │ │ │ ├── fond-lueur.gif │ │ │ ├── little_arrow_right.png │ │ │ ├── logo-gatling.jpg │ │ │ ├── logo.png │ │ │ ├── sortable.png │ │ │ ├── sorted-down.png │ │ │ ├── sorted-up.png │ │ │ ├── stat-fleche-bas.png │ │ │ ├── stat-fond.png │ │ │ ├── stat-l-roue.png │ │ │ ├── stat-l-temps.png │ │ │ └── style.css │ │ ├── bootloadsimulation-1520241881803 │ │ ├── index.html │ │ ├── js │ │ │ ├── all_sessions.js │ │ │ ├── assertions.json │ │ │ ├── assertions.xml │ │ │ ├── bootstrap.min.js │ │ │ ├── gatling.js │ │ │ ├── global_stats.json │ │ │ ├── highcharts-more.js │ │ │ ├── highstock.js │ │ │ ├── jquery.min.js │ │ │ ├── menu.js │ │ │ ├── moment.min.js │ │ │ ├── stats.js │ │ │ ├── stats.json │ │ │ ├── theme.js │ │ │ └── unpack.js │ │ ├── req_add-person-test-ac713.html │ │ ├── simulation.log │ │ └── style │ │ │ ├── arrow_down.png │ │ │ ├── arrow_down_black.png │ │ │ ├── arrow_right.png │ │ │ ├── arrow_right_black.png │ │ │ ├── bootstrap.min.css │ │ │ ├── cible.png │ │ │ ├── favicon.ico │ │ │ ├── fond-degrade.gif │ │ │ ├── fond-lueur.gif │ │ │ ├── little_arrow_right.png │ │ │ ├── logo-gatling.jpg │ │ │ ├── logo.png │ │ │ ├── sortable.png │ │ │ ├── sorted-down.png │ │ │ ├── sorted-up.png │ │ │ ├── stat-fleche-bas.png │ │ │ ├── stat-fond.png │ │ │ ├── stat-l-roue.png │ │ │ ├── stat-l-temps.png │ │ │ └── style.css │ │ ├── bootloadsimulation-1520242082281 │ │ ├── index.html │ │ ├── js │ │ │ ├── all_sessions.js │ │ │ ├── assertions.json │ │ │ ├── assertions.xml │ │ │ ├── bootstrap.min.js │ │ │ ├── gatling.js │ │ │ ├── global_stats.json │ │ │ ├── highcharts-more.js │ │ │ ├── highstock.js │ │ │ ├── jquery.min.js │ │ │ ├── menu.js │ │ │ ├── moment.min.js │ │ │ ├── stats.js │ │ │ ├── stats.json │ │ │ ├── theme.js │ │ │ └── unpack.js │ │ ├── req_add-person-test-ac713.html │ │ ├── simulation.log │ │ └── style │ │ │ ├── arrow_down.png │ │ │ ├── arrow_down_black.png │ │ │ ├── arrow_right.png │ │ │ ├── arrow_right_black.png │ │ │ ├── bootstrap.min.css │ │ │ ├── cible.png │ │ │ ├── favicon.ico │ │ │ ├── fond-degrade.gif │ │ │ ├── fond-lueur.gif │ │ │ ├── little_arrow_right.png │ │ │ ├── logo-gatling.jpg │ │ │ ├── logo.png │ │ │ ├── sortable.png │ │ │ ├── sorted-down.png │ │ │ ├── sorted-up.png │ │ │ ├── stat-fleche-bas.png │ │ │ ├── stat-fond.png │ │ │ ├── stat-l-roue.png │ │ │ ├── stat-l-temps.png │ │ │ └── style.css │ │ └── bootloadsimulation-1520242453415 │ │ ├── index.html │ │ ├── js │ │ ├── all_sessions.js │ │ ├── assertions.json │ │ ├── assertions.xml │ │ ├── bootstrap.min.js │ │ ├── gatling.js │ │ ├── global_stats.json │ │ ├── highcharts-more.js │ │ ├── highstock.js │ │ ├── jquery.min.js │ │ ├── menu.js │ │ ├── moment.min.js │ │ ├── stats.js │ │ ├── stats.json │ │ ├── theme.js │ │ └── unpack.js │ │ ├── req_add-person-test-ac713.html │ │ ├── simulation.log │ │ └── style │ │ ├── arrow_down.png │ │ ├── arrow_down_black.png │ │ ├── arrow_right.png │ │ ├── arrow_right_black.png │ │ ├── bootstrap.min.css │ │ ├── cible.png │ │ ├── favicon.ico │ │ ├── fond-degrade.gif │ │ ├── fond-lueur.gif │ │ ├── little_arrow_right.png │ │ ├── logo-gatling.jpg │ │ ├── logo.png │ │ ├── sortable.png │ │ ├── sorted-down.png │ │ ├── sorted-up.png │ │ ├── stat-fleche-bas.png │ │ ├── stat-fond.png │ │ ├── stat-l-roue.png │ │ ├── stat-l-temps.png │ │ └── style.css ├── settings.gradle └── src │ └── test │ └── scala │ └── BootLoadSimulation.scala ├── person-registration-slow-service ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── xyzz │ │ │ └── gsdd │ │ │ └── personregistrationslowservice │ │ │ ├── PersonRegistrationSlowServiceApplication.kt │ │ │ ├── controllers │ │ │ └── RegistrationController.kt │ │ │ └── models │ │ │ └── Person.kt │ └── resources │ │ └── application.properties │ └── test │ └── kotlin │ └── com │ └── xyzz │ └── gsdd │ └── personregistrationslowservice │ ├── PersonRegistrationSlowServiceApplicationTests.kt │ └── controllers │ └── RegistrationControllerTest.kt ├── sample-reactive-spring-boot-2 ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── xyzz │ │ │ └── gsdd │ │ │ └── samplereactivespringboot2 │ │ │ ├── SampleReactiveSpringBoot2Application.kt │ │ │ ├── controllers │ │ │ └── PersonController.kt │ │ │ ├── models │ │ │ └── Person.kt │ │ │ └── services │ │ │ └── PersonRegistrationService.kt │ └── resources │ │ └── application.properties │ └── test │ └── kotlin │ └── com │ └── xyzz │ └── gsdd │ └── samplereactivespringboot2 │ ├── SampleReactiveSpringBoot2ApplicationTests.kt │ ├── controllers │ └── PersonControllerTest.kt │ └── services │ └── PersonRegistrationServiceTest.kt ├── sample-spring-boot-1 ├── .gitignore ├── .mvn │ └── wrapper │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src │ ├── main │ ├── kotlin │ │ └── com │ │ │ └── xyzz │ │ │ └── gsdd │ │ │ └── samplespringboot1 │ │ │ ├── SampleSpringBoot1Application.kt │ │ │ ├── controllers │ │ │ └── PersonController.kt │ │ │ ├── models │ │ │ └── Person.kt │ │ │ └── services │ │ │ └── PersonRegistrationService.kt │ └── resources │ │ └── application.properties │ └── test │ └── kotlin │ └── com │ └── xyzz │ └── gsdd │ └── samplespringboot1 │ ├── SampleSpringBoot1ApplicationTests.kt │ ├── controllers │ └── PersonControllerTest.kt │ └── services │ └── PersonRegistrationServiceTest.kt └── sample-spring-boot-2 ├── .gitignore ├── .mvn └── wrapper │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── mvnw ├── mvnw.cmd ├── pom.xml └── src ├── main ├── kotlin │ └── com │ │ └── xyzz │ │ └── gsdd │ │ └── samplespringboot2 │ │ ├── SampleSpringBoot2Application.kt │ │ ├── controllers │ │ └── PersonController.kt │ │ ├── models │ │ └── Person.kt │ │ └── services │ │ └── PersonRegistrationService.kt └── resources │ └── application.properties └── test └── kotlin └── com └── xyzz └── gsdd └── samplespringboot2 ├── SampleSpringBoot2ApplicationTests.kt ├── controllers └── PersonControllerTest.kt └── services └── PersonRegistrationServiceTest.kt /.gitignore: -------------------------------------------------------------------------------- 1 | build 2 | out 3 | .gradle 4 | 5 | ### IntelliJ IDEA ### 6 | .idea 7 | *.iws 8 | *.iml 9 | *.ipr 10 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # spring-boot-1-vs-2-performance 2 | 3 | The aim of the project is to analyze the performance of spring-boot web against the spring-boot web-reactive framework. We are comparing: 4 | * Spring-boot web - 1.5.10.RELEASE 5 | * spring-boot web - 2.0.0.RELEASE 6 | * spring-boot reactive-web - 2.0.0.RELEASE 7 | 8 | For testing, we have a rest endpoint `POST /persons` that accepts a json `Person` object and returns an object with UUID. 9 | **[Gatlin](https://gatling.io/)** is used to run the tests and generate report. 10 | 11 | ### Start the app with 12 | ``` 13 | mvn spring-boot:run 14 | ``` 15 | 16 | ### Start the backing service 17 | 18 | To run the benchmark, you'll need the backing service at the beginning. 19 | 20 | ```bash 21 | cd person-registration-slow-service 22 | mvn spring-boot:run 23 | ``` 24 | 25 | ### Run tests with 26 | ``` 27 | ./gradlew loadTest -D SIM_USERS=5000 28 | ``` 29 | -------------------------------------------------------------------------------- /perf-test-with-gatling/build.gradle: -------------------------------------------------------------------------------- 1 | apply plugin: 'scala' 2 | 3 | repositories { 4 | mavenCentral() 5 | } 6 | 7 | group 'com.xyzz.gsdd' 8 | version '1.0-SNAPSHOT' 9 | dependencies { 10 | compile 'org.scala-lang:scala-library:2.12.4' 11 | compile 'io.gatling:gatling-app:2.3.0' 12 | compile 'io.gatling.highcharts:gatling-charts-highcharts:2.3.0' 13 | } 14 | 15 | task loadTest(type: JavaExec) { 16 | description = 'Run gatling tests' 17 | new File("${buildDir}/reports/gatling").mkdirs() 18 | 19 | systemProperties System.getProperties() 20 | 21 | classpath = sourceSets.test.runtimeClasspath + configurations.testCompile + configurations.compile 22 | 23 | main = "io.gatling.app.Gatling" 24 | args = ['-s', 'BootLoadSimulation', // -- simulation 25 | '-rf', "${buildDir}/reports/gatling" //-- results-folder 26 | ] 27 | } 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/gradle/wrapper/gradle-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/gradle/wrapper/gradle-wrapper.jar -------------------------------------------------------------------------------- /perf-test-with-gatling/gradle/wrapper/gradle-wrapper.properties: -------------------------------------------------------------------------------- 1 | #Thu Mar 01 11:33:47 CET 2018 2 | distributionBase=GRADLE_USER_HOME 3 | distributionPath=wrapper/dists 4 | zipStoreBase=GRADLE_USER_HOME 5 | zipStorePath=wrapper/dists 6 | distributionUrl=https\://services.gradle.org/distributions/gradle-4.0-all.zip 7 | -------------------------------------------------------------------------------- /perf-test-with-gatling/gradlew.bat: -------------------------------------------------------------------------------- 1 | @if "%DEBUG%" == "" @echo off 2 | @rem ########################################################################## 3 | @rem 4 | @rem Gradle startup script for Windows 5 | @rem 6 | @rem ########################################################################## 7 | 8 | @rem Set local scope for the variables with windows NT shell 9 | if "%OS%"=="Windows_NT" setlocal 10 | 11 | set DIRNAME=%~dp0 12 | if "%DIRNAME%" == "" set DIRNAME=. 13 | set APP_BASE_NAME=%~n0 14 | set APP_HOME=%DIRNAME% 15 | 16 | @rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. 17 | set DEFAULT_JVM_OPTS= 18 | 19 | @rem Find java.exe 20 | if defined JAVA_HOME goto findJavaFromJavaHome 21 | 22 | set JAVA_EXE=java.exe 23 | %JAVA_EXE% -version >NUL 2>&1 24 | if "%ERRORLEVEL%" == "0" goto init 25 | 26 | echo. 27 | echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 28 | echo. 29 | echo Please set the JAVA_HOME variable in your environment to match the 30 | echo location of your Java installation. 31 | 32 | goto fail 33 | 34 | :findJavaFromJavaHome 35 | set JAVA_HOME=%JAVA_HOME:"=% 36 | set JAVA_EXE=%JAVA_HOME%/bin/java.exe 37 | 38 | if exist "%JAVA_EXE%" goto init 39 | 40 | echo. 41 | echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 42 | echo. 43 | echo Please set the JAVA_HOME variable in your environment to match the 44 | echo location of your Java installation. 45 | 46 | goto fail 47 | 48 | :init 49 | @rem Get command-line arguments, handling Windows variants 50 | 51 | if not "%OS%" == "Windows_NT" goto win9xME_args 52 | 53 | :win9xME_args 54 | @rem Slurp the command line arguments. 55 | set CMD_LINE_ARGS= 56 | set _SKIP=2 57 | 58 | :win9xME_args_slurp 59 | if "x%~1" == "x" goto execute 60 | 61 | set CMD_LINE_ARGS=%* 62 | 63 | :execute 64 | @rem Setup the command line 65 | 66 | set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar 67 | 68 | @rem Execute Gradle 69 | "%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS% 70 | 71 | :end 72 | @rem End local scope for the variables with windows NT shell 73 | if "%ERRORLEVEL%"=="0" goto mainEnd 74 | 75 | :fail 76 | rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of 77 | rem the _cmd.exe /c_ return code! 78 | if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1 79 | exit /b 1 80 | 81 | :mainEnd 82 | if "%OS%"=="Windows_NT" endlocal 83 | 84 | :omega 85 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/all_sessions.js: -------------------------------------------------------------------------------- 1 | allUsersData = { 2 | 3 | color: '#FF9D00', 4 | name: 'All Users', 5 | data: [ 6 | [1520240034000,141],[1520240035000,243],[1520240036000,285],[1520240037000,241],[1520240038000,254],[1520240039000,250],[1520240040000,264],[1520240041000,332],[1520240042000,275],[1520240043000,275],[1520240044000,292],[1520240045000,268],[1520240046000,286],[1520240047000,288],[1520240048000,318],[1520240049000,345],[1520240050000,327],[1520240051000,380],[1520240052000,378],[1520240053000,270],[1520240054000,110] 7 | ], 8 | tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } 9 | , zIndex: 20 10 | , yAxis: 1 11 | }; -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/assertions.json: -------------------------------------------------------------------------------- 1 | { 2 | "simulation": "BootLoadSimulation", 3 | "simulationId": "bootloadsimulation", 4 | "start": 1520240033559, 5 | "description": "", 6 | "scenarios": ["BootLoadSimulation"], 7 | "assertions": [ 8 | 9 | ] 10 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/assertions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/gatling.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | (function ($) { 17 | $.fn.expandable = function () { 18 | var scope = this; 19 | 20 | this.find('.expand-button:not([class*=hidden])').addClass('collapse').click(function () { 21 | var $this = $(this); 22 | 23 | if ($this.hasClass('expand')) 24 | $this.expand(scope); 25 | else 26 | $this.collapse(scope); 27 | }); 28 | 29 | this.find('.expand-all-button').click(function () { 30 | $(this).expandAll(scope); 31 | }); 32 | 33 | this.find('.collapse-all-button').click(function () { 34 | $(this).collapseAll(scope); 35 | }); 36 | 37 | this.collapseAll(this); 38 | 39 | return this; 40 | }; 41 | 42 | $.fn.expand = function (scope, recursive) { 43 | return this.each(function () { 44 | var $this = $(this); 45 | 46 | if (recursive) { 47 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.expand').expand(scope, true); 48 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.collapse').expand(scope, true); 49 | } 50 | 51 | if ($this.hasClass('expand')) { 52 | scope.find('.child-of-' + $this.attr('id')).toggle(true); 53 | $this.toggleClass('expand').toggleClass('collapse'); 54 | } 55 | }); 56 | }; 57 | 58 | $.fn.expandAll = function (scope) { 59 | $('.child-of-ROOT .expand-button.expand').expand(scope, true); 60 | $('.child-of-ROOT .expand-button.collapse').expand(scope, true); 61 | }; 62 | 63 | $.fn.collapse = function (scope) { 64 | return this.each(function () { 65 | var $this = $(this); 66 | 67 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.collapse').collapse(scope); 68 | scope.find('.child-of-' + $this.attr('id')).toggle(false); 69 | $this.toggleClass('expand').toggleClass('collapse'); 70 | }); 71 | }; 72 | 73 | $.fn.collapseAll = function (scope) { 74 | $('.child-of-ROOT .expand-button.collapse').collapse(scope); 75 | }; 76 | 77 | $.fn.sortable = function (target) { 78 | var table = this; 79 | 80 | this.find('thead .sortable').click( function () { 81 | var $this = $(this); 82 | 83 | if ($this.hasClass('sorted-down')) { 84 | var desc = false; 85 | var style = 'sorted-up'; 86 | } 87 | else { 88 | var desc = true; 89 | var style = 'sorted-down'; 90 | } 91 | 92 | $(target).sortTable($this.attr('id'), desc); 93 | 94 | table.find('thead .sortable').removeClass('sorted-up sorted-down'); 95 | $this.addClass(style); 96 | 97 | return false; 98 | }); 99 | 100 | return this; 101 | }; 102 | 103 | $.fn.sortTable = function (col, desc) { 104 | function getValue(line) { 105 | var cell = $(line).find('.' + col); 106 | 107 | if (cell.hasClass('value')) 108 | var value = cell.text(); 109 | else 110 | var value = cell.find('.value').text(); 111 | 112 | return parseInt(value); 113 | } 114 | 115 | function sortLines (lines, group) { 116 | var notErrorTable = col.search("error") == -1; 117 | var linesToSort = notErrorTable ? lines.filter('.child-of-' + group) : lines; 118 | 119 | var sortedLines = linesToSort.sort(function (a, b) { 120 | return desc ? getValue(b) - getValue(a): getValue(a) - getValue(b); 121 | }).toArray(); 122 | 123 | var result = []; 124 | $.each(sortedLines, function (i, line) { 125 | result.push(line); 126 | if (notErrorTable) 127 | result = result.concat(sortLines(lines, $(line).attr('id'))); 128 | }); 129 | 130 | return result; 131 | } 132 | 133 | this.find('tbody').append(sortLines(this.find('tbody tr').detach(), 'ROOT')); 134 | 135 | return this; 136 | }; 137 | })(jQuery); 138 | 139 | 140 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/global_stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Global Information", 3 | "numberOfRequests": { 4 | "total": 10000, 5 | "ok": 10000, 6 | "ko": 0 7 | }, 8 | "minResponseTime": { 9 | "total": 202, 10 | "ok": 202, 11 | "ko": 0 12 | }, 13 | "maxResponseTime": { 14 | "total": 1053, 15 | "ok": 1053, 16 | "ko": 0 17 | }, 18 | "meanResponseTime": { 19 | "total": 331, 20 | "ok": 331, 21 | "ko": 0 22 | }, 23 | "standardDeviation": { 24 | "total": 108, 25 | "ok": 108, 26 | "ko": 0 27 | }, 28 | "percentiles1": { 29 | "total": 302, 30 | "ok": 302, 31 | "ko": 0 32 | }, 33 | "percentiles2": { 34 | "total": 382, 35 | "ok": 382, 36 | "ko": 0 37 | }, 38 | "percentiles3": { 39 | "total": 552, 40 | "ok": 552, 41 | "ko": 0 42 | }, 43 | "percentiles4": { 44 | "total": 700, 45 | "ok": 700, 46 | "ko": 0 47 | }, 48 | "group1": { 49 | "name": "t < 800 ms", 50 | "count": 9977, 51 | "percentage": 100 52 | }, 53 | "group2": { 54 | "name": "800 ms < t < 1200 ms", 55 | "count": 23, 56 | "percentage": 0 57 | }, 58 | "group3": { 59 | "name": "t > 1200 ms", 60 | "count": 0, 61 | "percentage": 0 62 | }, 63 | "group4": { 64 | "name": "failed", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "meanNumberOfRequestsPerSecond": { 69 | "total": 476.1904761904762, 70 | "ok": 476.1904761904762, 71 | "ko": 0 72 | } 73 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/menu.js: -------------------------------------------------------------------------------- 1 | 2 | function getItemLink(item){ 3 | return item.pathFormatted + '.html'; 4 | } 5 | 6 | function setDetailsLinkUrl(){ 7 | $.each(stats.contents, function (name, data) { 8 | $('#details_link').attr('href', getItemLink(data)); 9 | return false; 10 | }); 11 | } 12 | 13 | var MENU_ITEM_MAX_LENGTH = 50; 14 | 15 | function menuItem(item, level, parent, group) { 16 | if (group) 17 | var style = 'group'; 18 | else 19 | var style = ''; 20 | 21 | if (item.name.length > MENU_ITEM_MAX_LENGTH) { 22 | var title = ' title="' + item.name + '"'; 23 | var displayName = item.name.substr(0, MENU_ITEM_MAX_LENGTH) + '...'; 24 | } 25 | else { 26 | var title = ''; 27 | var displayName = item.name; 28 | } 29 | 30 | if (parent) { 31 | if (level == 0) 32 | var childOfRoot = 'child-of-ROOT '; 33 | else 34 | var childOfRoot = ''; 35 | 36 | var style = ' class="' + childOfRoot + 'child-of-menu-' + parent + '"'; 37 | } else 38 | var style = ''; 39 | 40 | if (group) 41 | var expandButton = ' '; 42 | else 43 | var expandButton = ''; 44 | 45 | return '
' + expandButton + '' + displayName + '
'; 46 | } 47 | 48 | function menuItemsForGroup(group, level, parent) { 49 | var items = ''; 50 | 51 | if (level > 0) 52 | items += menuItem(group, level - 1, parent, true); 53 | 54 | $.each(group.contents, function (contentName, content) { 55 | if (content.type == 'GROUP') 56 | items += menuItemsForGroup(content, level + 1, group.pathFormatted); 57 | else if (content.type == 'REQUEST') 58 | items += menuItem(content, level, group.pathFormatted); 59 | }); 60 | 61 | return items; 62 | } 63 | 64 | function setDetailsMenu(){ 65 | $('.nav ul').append(menuItemsForGroup(stats, 0)); 66 | 67 | $('.nav').expandable(); 68 | } 69 | 70 | function setGlobalMenu(){ 71 | $('.nav ul').append('
  • \ 72 |
  • \ 73 |
  • '); 74 | } 75 | 76 | function getLink(link){ 77 | var a = link.split('/'); 78 | return (a.length<=1)? link : a[a.length-1]; 79 | } 80 | 81 | function setActiveMenu(){ 82 | $('.nav a').each(function(){ 83 | if(!$(this).hasClass('expand-button') && $(this).attr('href') == getLink(window.location.pathname)){ 84 | $(this).parents('li').addClass('on'); 85 | return false; 86 | } 87 | }); 88 | } 89 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "GROUP", 3 | "name": "Global Information", 4 | "path": "", 5 | "pathFormatted": "group_missing-name-b06d1", 6 | "stats": { 7 | "name": "Global Information", 8 | "numberOfRequests": { 9 | "total": 10000, 10 | "ok": 10000, 11 | "ko": 0 12 | }, 13 | "minResponseTime": { 14 | "total": 202, 15 | "ok": 202, 16 | "ko": 0 17 | }, 18 | "maxResponseTime": { 19 | "total": 1053, 20 | "ok": 1053, 21 | "ko": 0 22 | }, 23 | "meanResponseTime": { 24 | "total": 331, 25 | "ok": 331, 26 | "ko": 0 27 | }, 28 | "standardDeviation": { 29 | "total": 108, 30 | "ok": 108, 31 | "ko": 0 32 | }, 33 | "percentiles1": { 34 | "total": 302, 35 | "ok": 302, 36 | "ko": 0 37 | }, 38 | "percentiles2": { 39 | "total": 382, 40 | "ok": 382, 41 | "ko": 0 42 | }, 43 | "percentiles3": { 44 | "total": 552, 45 | "ok": 552, 46 | "ko": 0 47 | }, 48 | "percentiles4": { 49 | "total": 700, 50 | "ok": 700, 51 | "ko": 0 52 | }, 53 | "group1": { 54 | "name": "t < 800 ms", 55 | "count": 9977, 56 | "percentage": 100 57 | }, 58 | "group2": { 59 | "name": "800 ms < t < 1200 ms", 60 | "count": 23, 61 | "percentage": 0 62 | }, 63 | "group3": { 64 | "name": "t > 1200 ms", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "group4": { 69 | "name": "failed", 70 | "count": 0, 71 | "percentage": 0 72 | }, 73 | "meanNumberOfRequestsPerSecond": { 74 | "total": 476.1904761904762, 75 | "ok": 476.1904761904762, 76 | "ko": 0 77 | } 78 | }, 79 | "contents": { 80 | "req_add-person-test-ac713": { 81 | "type": "REQUEST", 82 | "name": "add-person-test", 83 | "path": "add-person-test", 84 | "pathFormatted": "req_add-person-test-ac713", 85 | "stats": { 86 | "name": "add-person-test", 87 | "numberOfRequests": { 88 | "total": 10000, 89 | "ok": 10000, 90 | "ko": 0 91 | }, 92 | "minResponseTime": { 93 | "total": 202, 94 | "ok": 202, 95 | "ko": 0 96 | }, 97 | "maxResponseTime": { 98 | "total": 1053, 99 | "ok": 1053, 100 | "ko": 0 101 | }, 102 | "meanResponseTime": { 103 | "total": 331, 104 | "ok": 331, 105 | "ko": 0 106 | }, 107 | "standardDeviation": { 108 | "total": 108, 109 | "ok": 108, 110 | "ko": 0 111 | }, 112 | "percentiles1": { 113 | "total": 302, 114 | "ok": 302, 115 | "ko": 0 116 | }, 117 | "percentiles2": { 118 | "total": 382, 119 | "ok": 382, 120 | "ko": 0 121 | }, 122 | "percentiles3": { 123 | "total": 552, 124 | "ok": 552, 125 | "ko": 0 126 | }, 127 | "percentiles4": { 128 | "total": 700, 129 | "ok": 700, 130 | "ko": 0 131 | }, 132 | "group1": { 133 | "name": "t < 800 ms", 134 | "count": 9977, 135 | "percentage": 100 136 | }, 137 | "group2": { 138 | "name": "800 ms < t < 1200 ms", 139 | "count": 23, 140 | "percentage": 0 141 | }, 142 | "group3": { 143 | "name": "t > 1200 ms", 144 | "count": 0, 145 | "percentage": 0 146 | }, 147 | "group4": { 148 | "name": "failed", 149 | "count": 0, 150 | "percentage": 0 151 | }, 152 | "meanNumberOfRequestsPerSecond": { 153 | "total": 476.1904761904762, 154 | "ok": 476.1904761904762, 155 | "ko": 0 156 | } 157 | } 158 | } 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/theme.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Gatling Highcharts License 5 | */ 6 | Highcharts.theme = { 7 | chart: { 8 | backgroundColor: '#e6e5e0', 9 | borderWidth: 0, 10 | borderRadius: 8, 11 | plotBackgroundColor: null, 12 | plotShadow: false, 13 | plotBorderWidth: 0 14 | }, 15 | xAxis: { 16 | gridLineWidth: 0, 17 | lineColor: '#666', 18 | tickColor: '#666', 19 | labels: { 20 | style: { 21 | color: '#666' 22 | } 23 | }, 24 | title: { 25 | style: { 26 | color: '#666' 27 | } 28 | } 29 | }, 30 | yAxis: { 31 | alternateGridColor: null, 32 | minorTickInterval: null, 33 | gridLineColor: '#999', 34 | lineWidth: 0, 35 | tickWidth: 0, 36 | labels: { 37 | style: { 38 | color: '#666', 39 | fontWeight: 'bold' 40 | } 41 | }, 42 | title: { 43 | style: { 44 | color: '#666', 45 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 46 | } 47 | } 48 | }, 49 | labels: { 50 | style: { 51 | color: '#CCC' 52 | } 53 | }, 54 | 55 | 56 | rangeSelector: { 57 | buttonTheme: { 58 | fill: '#cfc9c6', 59 | stroke: '#000000', 60 | style: { 61 | color: '#34332e', 62 | fontWeight: 'bold', 63 | borderColor: '#b2b2a9' 64 | }, 65 | states: { 66 | hover: { 67 | fill: '#92918C', 68 | stroke: '#000000', 69 | style: { 70 | color: '#34332e', 71 | fontWeight: 'bold', 72 | borderColor: '#8b897d' 73 | } 74 | }, 75 | select: { 76 | fill: '#E37400', 77 | stroke: '#000000', 78 | style: { 79 | color: '#FFF' 80 | } 81 | } 82 | } 83 | }, 84 | inputStyle: { 85 | backgroundColor: '#333', 86 | color: 'silver' 87 | }, 88 | labelStyle: { 89 | color: '#8b897d' 90 | } 91 | }, 92 | 93 | navigator: { 94 | handles: { 95 | backgroundColor: '#e6e5e0', 96 | borderColor: '#92918C' 97 | }, 98 | outlineColor: '#92918C', 99 | outlineWidth: 1, 100 | maskFill: 'rgba(146, 145, 140, 0.5)', 101 | series: { 102 | color: '#4572A7', 103 | lineColor: '#4572A7' 104 | } 105 | }, 106 | 107 | scrollbar: { 108 | buttonBackgroundColor: '#e6e5e0', 109 | buttonBorderWidth: 1, 110 | buttonBorderColor: '#92918C', 111 | buttonArrowColor: '#92918C', 112 | buttonBorderRadius: 2, 113 | 114 | barBorderWidth: 1, 115 | barBorderRadius: 0, 116 | barBackgroundColor: '#92918C', 117 | barBorderColor: '#92918C', 118 | 119 | rifleColor: '#92918C', 120 | 121 | trackBackgroundColor: '#b0b0a8', 122 | trackBorderWidth: 1, 123 | trackBorderColor: '#b0b0a8' 124 | } 125 | }; 126 | 127 | Highcharts.setOptions(Highcharts.theme); -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/js/unpack.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var unpack = function (array) { 4 | var findNbSeries = function (array) { 5 | var currentPlotPack; 6 | var length = array.length; 7 | 8 | for (var i = 0; i < length; i++) { 9 | currentPlotPack = array[i][1]; 10 | if(currentPlotPack !== null) { 11 | return currentPlotPack.length; 12 | } 13 | } 14 | return 0; 15 | }; 16 | 17 | var i, j; 18 | var nbPlots = array.length; 19 | var nbSeries = findNbSeries(array); 20 | 21 | // Prepare unpacked array 22 | var unpackedArray = new Array(nbSeries); 23 | 24 | for (i = 0; i < nbSeries; i++) { 25 | unpackedArray[i] = new Array(nbPlots); 26 | } 27 | 28 | // Unpack the array 29 | for (i = 0; i < nbPlots; i++) { 30 | var timestamp = array[i][0]; 31 | var values = array[i][1]; 32 | for (j = 0; j < nbSeries; j++) { 33 | unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; 34 | } 35 | } 36 | 37 | return unpackedArray; 38 | }; 39 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_down_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/arrow_right_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 2 | .clearfix:after{clear:both;} 3 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 4 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 5 | .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} 6 | .tooltip.top{margin-top:-3px;} 7 | .tooltip.right{margin-left:3px;} 8 | .tooltip.bottom{margin-top:3px;} 9 | .tooltip.left{margin-left:-3px;} 10 | .tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 11 | .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} 12 | .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} 13 | .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} 14 | .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} 15 | .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} 16 | .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} 17 | .popover.right{margin-left:10px;} 18 | .popover.bottom{margin-top:10px;} 19 | .popover.left{margin-left:-10px;} 20 | .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 21 | .popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} 22 | .popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} 23 | .popover .arrow:after{content:"";z-index:-1;} 24 | .popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} 25 | .popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} 26 | .popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} 27 | .popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/cible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/cible.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/favicon.ico -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/fond-degrade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/fond-degrade.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/fond-lueur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/fond-lueur.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/little_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/little_arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/logo-gatling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/logo-gatling.jpg -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/logo.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/sortable.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/sorted-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/sorted-down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/sorted-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/sorted-up.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-fleche-bas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-fleche-bas.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-fond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-fond.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-l-roue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-l-roue.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-l-temps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240033559/style/stat-l-temps.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/all_sessions.js: -------------------------------------------------------------------------------- 1 | allUsersData = { 2 | 3 | color: '#FF9D00', 4 | name: 'All Users', 5 | data: [ 6 | [1520240494000,262],[1520240495000,426],[1520240496000,412],[1520240497000,329],[1520240498000,379],[1520240499000,445],[1520240500000,404],[1520240501000,399],[1520240502000,448],[1520240503000,444],[1520240504000,484],[1520240505000,551],[1520240506000,378],[1520240507000,37] 7 | ], 8 | tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } 9 | , zIndex: 20 10 | , yAxis: 1 11 | }; -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/assertions.json: -------------------------------------------------------------------------------- 1 | { 2 | "simulation": "BootLoadSimulation", 3 | "simulationId": "bootloadsimulation", 4 | "start": 1520240493472, 5 | "description": "", 6 | "scenarios": ["BootLoadSimulation"], 7 | "assertions": [ 8 | 9 | ] 10 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/assertions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/gatling.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | (function ($) { 17 | $.fn.expandable = function () { 18 | var scope = this; 19 | 20 | this.find('.expand-button:not([class*=hidden])').addClass('collapse').click(function () { 21 | var $this = $(this); 22 | 23 | if ($this.hasClass('expand')) 24 | $this.expand(scope); 25 | else 26 | $this.collapse(scope); 27 | }); 28 | 29 | this.find('.expand-all-button').click(function () { 30 | $(this).expandAll(scope); 31 | }); 32 | 33 | this.find('.collapse-all-button').click(function () { 34 | $(this).collapseAll(scope); 35 | }); 36 | 37 | this.collapseAll(this); 38 | 39 | return this; 40 | }; 41 | 42 | $.fn.expand = function (scope, recursive) { 43 | return this.each(function () { 44 | var $this = $(this); 45 | 46 | if (recursive) { 47 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.expand').expand(scope, true); 48 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.collapse').expand(scope, true); 49 | } 50 | 51 | if ($this.hasClass('expand')) { 52 | scope.find('.child-of-' + $this.attr('id')).toggle(true); 53 | $this.toggleClass('expand').toggleClass('collapse'); 54 | } 55 | }); 56 | }; 57 | 58 | $.fn.expandAll = function (scope) { 59 | $('.child-of-ROOT .expand-button.expand').expand(scope, true); 60 | $('.child-of-ROOT .expand-button.collapse').expand(scope, true); 61 | }; 62 | 63 | $.fn.collapse = function (scope) { 64 | return this.each(function () { 65 | var $this = $(this); 66 | 67 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.collapse').collapse(scope); 68 | scope.find('.child-of-' + $this.attr('id')).toggle(false); 69 | $this.toggleClass('expand').toggleClass('collapse'); 70 | }); 71 | }; 72 | 73 | $.fn.collapseAll = function (scope) { 74 | $('.child-of-ROOT .expand-button.collapse').collapse(scope); 75 | }; 76 | 77 | $.fn.sortable = function (target) { 78 | var table = this; 79 | 80 | this.find('thead .sortable').click( function () { 81 | var $this = $(this); 82 | 83 | if ($this.hasClass('sorted-down')) { 84 | var desc = false; 85 | var style = 'sorted-up'; 86 | } 87 | else { 88 | var desc = true; 89 | var style = 'sorted-down'; 90 | } 91 | 92 | $(target).sortTable($this.attr('id'), desc); 93 | 94 | table.find('thead .sortable').removeClass('sorted-up sorted-down'); 95 | $this.addClass(style); 96 | 97 | return false; 98 | }); 99 | 100 | return this; 101 | }; 102 | 103 | $.fn.sortTable = function (col, desc) { 104 | function getValue(line) { 105 | var cell = $(line).find('.' + col); 106 | 107 | if (cell.hasClass('value')) 108 | var value = cell.text(); 109 | else 110 | var value = cell.find('.value').text(); 111 | 112 | return parseInt(value); 113 | } 114 | 115 | function sortLines (lines, group) { 116 | var notErrorTable = col.search("error") == -1; 117 | var linesToSort = notErrorTable ? lines.filter('.child-of-' + group) : lines; 118 | 119 | var sortedLines = linesToSort.sort(function (a, b) { 120 | return desc ? getValue(b) - getValue(a): getValue(a) - getValue(b); 121 | }).toArray(); 122 | 123 | var result = []; 124 | $.each(sortedLines, function (i, line) { 125 | result.push(line); 126 | if (notErrorTable) 127 | result = result.concat(sortLines(lines, $(line).attr('id'))); 128 | }); 129 | 130 | return result; 131 | } 132 | 133 | this.find('tbody').append(sortLines(this.find('tbody tr').detach(), 'ROOT')); 134 | 135 | return this; 136 | }; 137 | })(jQuery); 138 | 139 | 140 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/global_stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Global Information", 3 | "numberOfRequests": { 4 | "total": 10000, 5 | "ok": 10000, 6 | "ko": 0 7 | }, 8 | "minResponseTime": { 9 | "total": 201, 10 | "ok": 201, 11 | "ko": 0 12 | }, 13 | "maxResponseTime": { 14 | "total": 859, 15 | "ok": 859, 16 | "ko": 0 17 | }, 18 | "meanResponseTime": { 19 | "total": 301, 20 | "ok": 301, 21 | "ko": 0 22 | }, 23 | "standardDeviation": { 24 | "total": 96, 25 | "ok": 96, 26 | "ko": 0 27 | }, 28 | "percentiles1": { 29 | "total": 273, 30 | "ok": 273, 31 | "ko": 0 32 | }, 33 | "percentiles2": { 34 | "total": 337, 35 | "ok": 337, 36 | "ko": 0 37 | }, 38 | "percentiles3": { 39 | "total": 495, 40 | "ok": 495, 41 | "ko": 0 42 | }, 43 | "percentiles4": { 44 | "total": 650, 45 | "ok": 650, 46 | "ko": 0 47 | }, 48 | "group1": { 49 | "name": "t < 800 ms", 50 | "count": 9992, 51 | "percentage": 100 52 | }, 53 | "group2": { 54 | "name": "800 ms < t < 1200 ms", 55 | "count": 8, 56 | "percentage": 0 57 | }, 58 | "group3": { 59 | "name": "t > 1200 ms", 60 | "count": 0, 61 | "percentage": 0 62 | }, 63 | "group4": { 64 | "name": "failed", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "meanNumberOfRequestsPerSecond": { 69 | "total": 714.2857142857143, 70 | "ok": 714.2857142857143, 71 | "ko": 0 72 | } 73 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/menu.js: -------------------------------------------------------------------------------- 1 | 2 | function getItemLink(item){ 3 | return item.pathFormatted + '.html'; 4 | } 5 | 6 | function setDetailsLinkUrl(){ 7 | $.each(stats.contents, function (name, data) { 8 | $('#details_link').attr('href', getItemLink(data)); 9 | return false; 10 | }); 11 | } 12 | 13 | var MENU_ITEM_MAX_LENGTH = 50; 14 | 15 | function menuItem(item, level, parent, group) { 16 | if (group) 17 | var style = 'group'; 18 | else 19 | var style = ''; 20 | 21 | if (item.name.length > MENU_ITEM_MAX_LENGTH) { 22 | var title = ' title="' + item.name + '"'; 23 | var displayName = item.name.substr(0, MENU_ITEM_MAX_LENGTH) + '...'; 24 | } 25 | else { 26 | var title = ''; 27 | var displayName = item.name; 28 | } 29 | 30 | if (parent) { 31 | if (level == 0) 32 | var childOfRoot = 'child-of-ROOT '; 33 | else 34 | var childOfRoot = ''; 35 | 36 | var style = ' class="' + childOfRoot + 'child-of-menu-' + parent + '"'; 37 | } else 38 | var style = ''; 39 | 40 | if (group) 41 | var expandButton = ' '; 42 | else 43 | var expandButton = ''; 44 | 45 | return '
    ' + expandButton + '' + displayName + '
    '; 46 | } 47 | 48 | function menuItemsForGroup(group, level, parent) { 49 | var items = ''; 50 | 51 | if (level > 0) 52 | items += menuItem(group, level - 1, parent, true); 53 | 54 | $.each(group.contents, function (contentName, content) { 55 | if (content.type == 'GROUP') 56 | items += menuItemsForGroup(content, level + 1, group.pathFormatted); 57 | else if (content.type == 'REQUEST') 58 | items += menuItem(content, level, group.pathFormatted); 59 | }); 60 | 61 | return items; 62 | } 63 | 64 | function setDetailsMenu(){ 65 | $('.nav ul').append(menuItemsForGroup(stats, 0)); 66 | 67 | $('.nav').expandable(); 68 | } 69 | 70 | function setGlobalMenu(){ 71 | $('.nav ul').append('
  • \ 72 |
  • \ 73 |
  • '); 74 | } 75 | 76 | function getLink(link){ 77 | var a = link.split('/'); 78 | return (a.length<=1)? link : a[a.length-1]; 79 | } 80 | 81 | function setActiveMenu(){ 82 | $('.nav a').each(function(){ 83 | if(!$(this).hasClass('expand-button') && $(this).attr('href') == getLink(window.location.pathname)){ 84 | $(this).parents('li').addClass('on'); 85 | return false; 86 | } 87 | }); 88 | } 89 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "GROUP", 3 | "name": "Global Information", 4 | "path": "", 5 | "pathFormatted": "group_missing-name-b06d1", 6 | "stats": { 7 | "name": "Global Information", 8 | "numberOfRequests": { 9 | "total": 10000, 10 | "ok": 10000, 11 | "ko": 0 12 | }, 13 | "minResponseTime": { 14 | "total": 201, 15 | "ok": 201, 16 | "ko": 0 17 | }, 18 | "maxResponseTime": { 19 | "total": 859, 20 | "ok": 859, 21 | "ko": 0 22 | }, 23 | "meanResponseTime": { 24 | "total": 301, 25 | "ok": 301, 26 | "ko": 0 27 | }, 28 | "standardDeviation": { 29 | "total": 96, 30 | "ok": 96, 31 | "ko": 0 32 | }, 33 | "percentiles1": { 34 | "total": 273, 35 | "ok": 273, 36 | "ko": 0 37 | }, 38 | "percentiles2": { 39 | "total": 337, 40 | "ok": 337, 41 | "ko": 0 42 | }, 43 | "percentiles3": { 44 | "total": 495, 45 | "ok": 495, 46 | "ko": 0 47 | }, 48 | "percentiles4": { 49 | "total": 650, 50 | "ok": 650, 51 | "ko": 0 52 | }, 53 | "group1": { 54 | "name": "t < 800 ms", 55 | "count": 9992, 56 | "percentage": 100 57 | }, 58 | "group2": { 59 | "name": "800 ms < t < 1200 ms", 60 | "count": 8, 61 | "percentage": 0 62 | }, 63 | "group3": { 64 | "name": "t > 1200 ms", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "group4": { 69 | "name": "failed", 70 | "count": 0, 71 | "percentage": 0 72 | }, 73 | "meanNumberOfRequestsPerSecond": { 74 | "total": 714.2857142857143, 75 | "ok": 714.2857142857143, 76 | "ko": 0 77 | } 78 | }, 79 | "contents": { 80 | "req_add-person-test-ac713": { 81 | "type": "REQUEST", 82 | "name": "add-person-test", 83 | "path": "add-person-test", 84 | "pathFormatted": "req_add-person-test-ac713", 85 | "stats": { 86 | "name": "add-person-test", 87 | "numberOfRequests": { 88 | "total": 10000, 89 | "ok": 10000, 90 | "ko": 0 91 | }, 92 | "minResponseTime": { 93 | "total": 201, 94 | "ok": 201, 95 | "ko": 0 96 | }, 97 | "maxResponseTime": { 98 | "total": 859, 99 | "ok": 859, 100 | "ko": 0 101 | }, 102 | "meanResponseTime": { 103 | "total": 301, 104 | "ok": 301, 105 | "ko": 0 106 | }, 107 | "standardDeviation": { 108 | "total": 96, 109 | "ok": 96, 110 | "ko": 0 111 | }, 112 | "percentiles1": { 113 | "total": 272, 114 | "ok": 273, 115 | "ko": 0 116 | }, 117 | "percentiles2": { 118 | "total": 337, 119 | "ok": 337, 120 | "ko": 0 121 | }, 122 | "percentiles3": { 123 | "total": 495, 124 | "ok": 495, 125 | "ko": 0 126 | }, 127 | "percentiles4": { 128 | "total": 650, 129 | "ok": 650, 130 | "ko": 0 131 | }, 132 | "group1": { 133 | "name": "t < 800 ms", 134 | "count": 9992, 135 | "percentage": 100 136 | }, 137 | "group2": { 138 | "name": "800 ms < t < 1200 ms", 139 | "count": 8, 140 | "percentage": 0 141 | }, 142 | "group3": { 143 | "name": "t > 1200 ms", 144 | "count": 0, 145 | "percentage": 0 146 | }, 147 | "group4": { 148 | "name": "failed", 149 | "count": 0, 150 | "percentage": 0 151 | }, 152 | "meanNumberOfRequestsPerSecond": { 153 | "total": 714.2857142857143, 154 | "ok": 714.2857142857143, 155 | "ko": 0 156 | } 157 | } 158 | } 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/theme.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Gatling Highcharts License 5 | */ 6 | Highcharts.theme = { 7 | chart: { 8 | backgroundColor: '#e6e5e0', 9 | borderWidth: 0, 10 | borderRadius: 8, 11 | plotBackgroundColor: null, 12 | plotShadow: false, 13 | plotBorderWidth: 0 14 | }, 15 | xAxis: { 16 | gridLineWidth: 0, 17 | lineColor: '#666', 18 | tickColor: '#666', 19 | labels: { 20 | style: { 21 | color: '#666' 22 | } 23 | }, 24 | title: { 25 | style: { 26 | color: '#666' 27 | } 28 | } 29 | }, 30 | yAxis: { 31 | alternateGridColor: null, 32 | minorTickInterval: null, 33 | gridLineColor: '#999', 34 | lineWidth: 0, 35 | tickWidth: 0, 36 | labels: { 37 | style: { 38 | color: '#666', 39 | fontWeight: 'bold' 40 | } 41 | }, 42 | title: { 43 | style: { 44 | color: '#666', 45 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 46 | } 47 | } 48 | }, 49 | labels: { 50 | style: { 51 | color: '#CCC' 52 | } 53 | }, 54 | 55 | 56 | rangeSelector: { 57 | buttonTheme: { 58 | fill: '#cfc9c6', 59 | stroke: '#000000', 60 | style: { 61 | color: '#34332e', 62 | fontWeight: 'bold', 63 | borderColor: '#b2b2a9' 64 | }, 65 | states: { 66 | hover: { 67 | fill: '#92918C', 68 | stroke: '#000000', 69 | style: { 70 | color: '#34332e', 71 | fontWeight: 'bold', 72 | borderColor: '#8b897d' 73 | } 74 | }, 75 | select: { 76 | fill: '#E37400', 77 | stroke: '#000000', 78 | style: { 79 | color: '#FFF' 80 | } 81 | } 82 | } 83 | }, 84 | inputStyle: { 85 | backgroundColor: '#333', 86 | color: 'silver' 87 | }, 88 | labelStyle: { 89 | color: '#8b897d' 90 | } 91 | }, 92 | 93 | navigator: { 94 | handles: { 95 | backgroundColor: '#e6e5e0', 96 | borderColor: '#92918C' 97 | }, 98 | outlineColor: '#92918C', 99 | outlineWidth: 1, 100 | maskFill: 'rgba(146, 145, 140, 0.5)', 101 | series: { 102 | color: '#4572A7', 103 | lineColor: '#4572A7' 104 | } 105 | }, 106 | 107 | scrollbar: { 108 | buttonBackgroundColor: '#e6e5e0', 109 | buttonBorderWidth: 1, 110 | buttonBorderColor: '#92918C', 111 | buttonArrowColor: '#92918C', 112 | buttonBorderRadius: 2, 113 | 114 | barBorderWidth: 1, 115 | barBorderRadius: 0, 116 | barBackgroundColor: '#92918C', 117 | barBorderColor: '#92918C', 118 | 119 | rifleColor: '#92918C', 120 | 121 | trackBackgroundColor: '#b0b0a8', 122 | trackBorderWidth: 1, 123 | trackBorderColor: '#b0b0a8' 124 | } 125 | }; 126 | 127 | Highcharts.setOptions(Highcharts.theme); -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/js/unpack.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var unpack = function (array) { 4 | var findNbSeries = function (array) { 5 | var currentPlotPack; 6 | var length = array.length; 7 | 8 | for (var i = 0; i < length; i++) { 9 | currentPlotPack = array[i][1]; 10 | if(currentPlotPack !== null) { 11 | return currentPlotPack.length; 12 | } 13 | } 14 | return 0; 15 | }; 16 | 17 | var i, j; 18 | var nbPlots = array.length; 19 | var nbSeries = findNbSeries(array); 20 | 21 | // Prepare unpacked array 22 | var unpackedArray = new Array(nbSeries); 23 | 24 | for (i = 0; i < nbSeries; i++) { 25 | unpackedArray[i] = new Array(nbPlots); 26 | } 27 | 28 | // Unpack the array 29 | for (i = 0; i < nbPlots; i++) { 30 | var timestamp = array[i][0]; 31 | var values = array[i][1]; 32 | for (j = 0; j < nbSeries; j++) { 33 | unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; 34 | } 35 | } 36 | 37 | return unpackedArray; 38 | }; 39 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_down_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/arrow_right_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 2 | .clearfix:after{clear:both;} 3 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 4 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 5 | .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} 6 | .tooltip.top{margin-top:-3px;} 7 | .tooltip.right{margin-left:3px;} 8 | .tooltip.bottom{margin-top:3px;} 9 | .tooltip.left{margin-left:-3px;} 10 | .tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 11 | .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} 12 | .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} 13 | .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} 14 | .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} 15 | .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} 16 | .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} 17 | .popover.right{margin-left:10px;} 18 | .popover.bottom{margin-top:10px;} 19 | .popover.left{margin-left:-10px;} 20 | .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 21 | .popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} 22 | .popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} 23 | .popover .arrow:after{content:"";z-index:-1;} 24 | .popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} 25 | .popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} 26 | .popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} 27 | .popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/cible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/cible.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/favicon.ico -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/fond-degrade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/fond-degrade.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/fond-lueur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/fond-lueur.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/little_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/little_arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/logo-gatling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/logo-gatling.jpg -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/logo.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/sortable.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/sorted-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/sorted-down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/sorted-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/sorted-up.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-fleche-bas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-fleche-bas.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-fond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-fond.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-l-roue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-l-roue.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-l-temps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520240493472/style/stat-l-temps.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/all_sessions.js: -------------------------------------------------------------------------------- 1 | allUsersData = { 2 | 3 | color: '#FF9D00', 4 | name: 'All Users', 5 | data: [ 6 | [1520241354000,314],[1520241355000,491],[1520241356000,435],[1520241357000,422],[1520241358000,372],[1520241359000,347],[1520241360000,416],[1520241361000,559],[1520241362000,507],[1520241363000,462],[1520241364000,458],[1520241365000,487],[1520241366000,509],[1520241367000,483],[1520241368000,502],[1520241369000,478],[1520241370000,430],[1520241371000,493],[1520241372000,576],[1520241373000,567],[1520241374000,608],[1520241375000,614],[1520241376000,339],[1520241377000,7] 7 | ], 8 | tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } 9 | , zIndex: 20 10 | , yAxis: 1 11 | }; -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/assertions.json: -------------------------------------------------------------------------------- 1 | { 2 | "simulation": "BootLoadSimulation", 3 | "simulationId": "bootloadsimulation", 4 | "start": 1520241352996, 5 | "description": "", 6 | "scenarios": ["BootLoadSimulation"], 7 | "assertions": [ 8 | 9 | ] 10 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/assertions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/gatling.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | (function ($) { 17 | $.fn.expandable = function () { 18 | var scope = this; 19 | 20 | this.find('.expand-button:not([class*=hidden])').addClass('collapse').click(function () { 21 | var $this = $(this); 22 | 23 | if ($this.hasClass('expand')) 24 | $this.expand(scope); 25 | else 26 | $this.collapse(scope); 27 | }); 28 | 29 | this.find('.expand-all-button').click(function () { 30 | $(this).expandAll(scope); 31 | }); 32 | 33 | this.find('.collapse-all-button').click(function () { 34 | $(this).collapseAll(scope); 35 | }); 36 | 37 | this.collapseAll(this); 38 | 39 | return this; 40 | }; 41 | 42 | $.fn.expand = function (scope, recursive) { 43 | return this.each(function () { 44 | var $this = $(this); 45 | 46 | if (recursive) { 47 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.expand').expand(scope, true); 48 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.collapse').expand(scope, true); 49 | } 50 | 51 | if ($this.hasClass('expand')) { 52 | scope.find('.child-of-' + $this.attr('id')).toggle(true); 53 | $this.toggleClass('expand').toggleClass('collapse'); 54 | } 55 | }); 56 | }; 57 | 58 | $.fn.expandAll = function (scope) { 59 | $('.child-of-ROOT .expand-button.expand').expand(scope, true); 60 | $('.child-of-ROOT .expand-button.collapse').expand(scope, true); 61 | }; 62 | 63 | $.fn.collapse = function (scope) { 64 | return this.each(function () { 65 | var $this = $(this); 66 | 67 | scope.find('.child-of-' + $this.attr('id') + ' .expand-button.collapse').collapse(scope); 68 | scope.find('.child-of-' + $this.attr('id')).toggle(false); 69 | $this.toggleClass('expand').toggleClass('collapse'); 70 | }); 71 | }; 72 | 73 | $.fn.collapseAll = function (scope) { 74 | $('.child-of-ROOT .expand-button.collapse').collapse(scope); 75 | }; 76 | 77 | $.fn.sortable = function (target) { 78 | var table = this; 79 | 80 | this.find('thead .sortable').click( function () { 81 | var $this = $(this); 82 | 83 | if ($this.hasClass('sorted-down')) { 84 | var desc = false; 85 | var style = 'sorted-up'; 86 | } 87 | else { 88 | var desc = true; 89 | var style = 'sorted-down'; 90 | } 91 | 92 | $(target).sortTable($this.attr('id'), desc); 93 | 94 | table.find('thead .sortable').removeClass('sorted-up sorted-down'); 95 | $this.addClass(style); 96 | 97 | return false; 98 | }); 99 | 100 | return this; 101 | }; 102 | 103 | $.fn.sortTable = function (col, desc) { 104 | function getValue(line) { 105 | var cell = $(line).find('.' + col); 106 | 107 | if (cell.hasClass('value')) 108 | var value = cell.text(); 109 | else 110 | var value = cell.find('.value').text(); 111 | 112 | return parseInt(value); 113 | } 114 | 115 | function sortLines (lines, group) { 116 | var notErrorTable = col.search("error") == -1; 117 | var linesToSort = notErrorTable ? lines.filter('.child-of-' + group) : lines; 118 | 119 | var sortedLines = linesToSort.sort(function (a, b) { 120 | return desc ? getValue(b) - getValue(a): getValue(a) - getValue(b); 121 | }).toArray(); 122 | 123 | var result = []; 124 | $.each(sortedLines, function (i, line) { 125 | result.push(line); 126 | if (notErrorTable) 127 | result = result.concat(sortLines(lines, $(line).attr('id'))); 128 | }); 129 | 130 | return result; 131 | } 132 | 133 | this.find('tbody').append(sortLines(this.find('tbody tr').detach(), 'ROOT')); 134 | 135 | return this; 136 | }; 137 | })(jQuery); 138 | 139 | 140 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/global_stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Global Information", 3 | "numberOfRequests": { 4 | "total": 20000, 5 | "ok": 20000, 6 | "ko": 0 7 | }, 8 | "minResponseTime": { 9 | "total": 201, 10 | "ok": 201, 11 | "ko": 0 12 | }, 13 | "maxResponseTime": { 14 | "total": 1111, 15 | "ok": 1111, 16 | "ko": 0 17 | }, 18 | "meanResponseTime": { 19 | "total": 291, 20 | "ok": 291, 21 | "ko": 0 22 | }, 23 | "standardDeviation": { 24 | "total": 100, 25 | "ok": 100, 26 | "ko": 0 27 | }, 28 | "percentiles1": { 29 | "total": 260, 30 | "ok": 260, 31 | "ko": 0 32 | }, 33 | "percentiles2": { 34 | "total": 317, 35 | "ok": 317, 36 | "ko": 0 37 | }, 38 | "percentiles3": { 39 | "total": 480, 40 | "ok": 480, 41 | "ko": 0 42 | }, 43 | "percentiles4": { 44 | "total": 716, 45 | "ok": 716, 46 | "ko": 0 47 | }, 48 | "group1": { 49 | "name": "t < 800 ms", 50 | "count": 19891, 51 | "percentage": 99 52 | }, 53 | "group2": { 54 | "name": "800 ms < t < 1200 ms", 55 | "count": 109, 56 | "percentage": 1 57 | }, 58 | "group3": { 59 | "name": "t > 1200 ms", 60 | "count": 0, 61 | "percentage": 0 62 | }, 63 | "group4": { 64 | "name": "failed", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "meanNumberOfRequestsPerSecond": { 69 | "total": 833.3333333333334, 70 | "ok": 833.3333333333334, 71 | "ko": 0 72 | } 73 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/menu.js: -------------------------------------------------------------------------------- 1 | 2 | function getItemLink(item){ 3 | return item.pathFormatted + '.html'; 4 | } 5 | 6 | function setDetailsLinkUrl(){ 7 | $.each(stats.contents, function (name, data) { 8 | $('#details_link').attr('href', getItemLink(data)); 9 | return false; 10 | }); 11 | } 12 | 13 | var MENU_ITEM_MAX_LENGTH = 50; 14 | 15 | function menuItem(item, level, parent, group) { 16 | if (group) 17 | var style = 'group'; 18 | else 19 | var style = ''; 20 | 21 | if (item.name.length > MENU_ITEM_MAX_LENGTH) { 22 | var title = ' title="' + item.name + '"'; 23 | var displayName = item.name.substr(0, MENU_ITEM_MAX_LENGTH) + '...'; 24 | } 25 | else { 26 | var title = ''; 27 | var displayName = item.name; 28 | } 29 | 30 | if (parent) { 31 | if (level == 0) 32 | var childOfRoot = 'child-of-ROOT '; 33 | else 34 | var childOfRoot = ''; 35 | 36 | var style = ' class="' + childOfRoot + 'child-of-menu-' + parent + '"'; 37 | } else 38 | var style = ''; 39 | 40 | if (group) 41 | var expandButton = ' '; 42 | else 43 | var expandButton = ''; 44 | 45 | return '
    ' + expandButton + '' + displayName + '
    '; 46 | } 47 | 48 | function menuItemsForGroup(group, level, parent) { 49 | var items = ''; 50 | 51 | if (level > 0) 52 | items += menuItem(group, level - 1, parent, true); 53 | 54 | $.each(group.contents, function (contentName, content) { 55 | if (content.type == 'GROUP') 56 | items += menuItemsForGroup(content, level + 1, group.pathFormatted); 57 | else if (content.type == 'REQUEST') 58 | items += menuItem(content, level, group.pathFormatted); 59 | }); 60 | 61 | return items; 62 | } 63 | 64 | function setDetailsMenu(){ 65 | $('.nav ul').append(menuItemsForGroup(stats, 0)); 66 | 67 | $('.nav').expandable(); 68 | } 69 | 70 | function setGlobalMenu(){ 71 | $('.nav ul').append('
  • \ 72 |
  • \ 73 |
  • '); 74 | } 75 | 76 | function getLink(link){ 77 | var a = link.split('/'); 78 | return (a.length<=1)? link : a[a.length-1]; 79 | } 80 | 81 | function setActiveMenu(){ 82 | $('.nav a').each(function(){ 83 | if(!$(this).hasClass('expand-button') && $(this).attr('href') == getLink(window.location.pathname)){ 84 | $(this).parents('li').addClass('on'); 85 | return false; 86 | } 87 | }); 88 | } 89 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "GROUP", 3 | "name": "Global Information", 4 | "path": "", 5 | "pathFormatted": "group_missing-name-b06d1", 6 | "stats": { 7 | "name": "Global Information", 8 | "numberOfRequests": { 9 | "total": 20000, 10 | "ok": 20000, 11 | "ko": 0 12 | }, 13 | "minResponseTime": { 14 | "total": 201, 15 | "ok": 201, 16 | "ko": 0 17 | }, 18 | "maxResponseTime": { 19 | "total": 1111, 20 | "ok": 1111, 21 | "ko": 0 22 | }, 23 | "meanResponseTime": { 24 | "total": 291, 25 | "ok": 291, 26 | "ko": 0 27 | }, 28 | "standardDeviation": { 29 | "total": 100, 30 | "ok": 100, 31 | "ko": 0 32 | }, 33 | "percentiles1": { 34 | "total": 260, 35 | "ok": 260, 36 | "ko": 0 37 | }, 38 | "percentiles2": { 39 | "total": 317, 40 | "ok": 317, 41 | "ko": 0 42 | }, 43 | "percentiles3": { 44 | "total": 480, 45 | "ok": 480, 46 | "ko": 0 47 | }, 48 | "percentiles4": { 49 | "total": 716, 50 | "ok": 716, 51 | "ko": 0 52 | }, 53 | "group1": { 54 | "name": "t < 800 ms", 55 | "count": 19891, 56 | "percentage": 99 57 | }, 58 | "group2": { 59 | "name": "800 ms < t < 1200 ms", 60 | "count": 109, 61 | "percentage": 1 62 | }, 63 | "group3": { 64 | "name": "t > 1200 ms", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "group4": { 69 | "name": "failed", 70 | "count": 0, 71 | "percentage": 0 72 | }, 73 | "meanNumberOfRequestsPerSecond": { 74 | "total": 833.3333333333334, 75 | "ok": 833.3333333333334, 76 | "ko": 0 77 | } 78 | }, 79 | "contents": { 80 | "req_add-person-test-ac713": { 81 | "type": "REQUEST", 82 | "name": "add-person-test", 83 | "path": "add-person-test", 84 | "pathFormatted": "req_add-person-test-ac713", 85 | "stats": { 86 | "name": "add-person-test", 87 | "numberOfRequests": { 88 | "total": 20000, 89 | "ok": 20000, 90 | "ko": 0 91 | }, 92 | "minResponseTime": { 93 | "total": 201, 94 | "ok": 201, 95 | "ko": 0 96 | }, 97 | "maxResponseTime": { 98 | "total": 1111, 99 | "ok": 1111, 100 | "ko": 0 101 | }, 102 | "meanResponseTime": { 103 | "total": 291, 104 | "ok": 291, 105 | "ko": 0 106 | }, 107 | "standardDeviation": { 108 | "total": 100, 109 | "ok": 100, 110 | "ko": 0 111 | }, 112 | "percentiles1": { 113 | "total": 260, 114 | "ok": 260, 115 | "ko": 0 116 | }, 117 | "percentiles2": { 118 | "total": 317, 119 | "ok": 317, 120 | "ko": 0 121 | }, 122 | "percentiles3": { 123 | "total": 480, 124 | "ok": 480, 125 | "ko": 0 126 | }, 127 | "percentiles4": { 128 | "total": 716, 129 | "ok": 716, 130 | "ko": 0 131 | }, 132 | "group1": { 133 | "name": "t < 800 ms", 134 | "count": 19891, 135 | "percentage": 99 136 | }, 137 | "group2": { 138 | "name": "800 ms < t < 1200 ms", 139 | "count": 109, 140 | "percentage": 1 141 | }, 142 | "group3": { 143 | "name": "t > 1200 ms", 144 | "count": 0, 145 | "percentage": 0 146 | }, 147 | "group4": { 148 | "name": "failed", 149 | "count": 0, 150 | "percentage": 0 151 | }, 152 | "meanNumberOfRequestsPerSecond": { 153 | "total": 833.3333333333334, 154 | "ok": 833.3333333333334, 155 | "ko": 0 156 | } 157 | } 158 | } 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/theme.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Gatling Highcharts License 5 | */ 6 | Highcharts.theme = { 7 | chart: { 8 | backgroundColor: '#e6e5e0', 9 | borderWidth: 0, 10 | borderRadius: 8, 11 | plotBackgroundColor: null, 12 | plotShadow: false, 13 | plotBorderWidth: 0 14 | }, 15 | xAxis: { 16 | gridLineWidth: 0, 17 | lineColor: '#666', 18 | tickColor: '#666', 19 | labels: { 20 | style: { 21 | color: '#666' 22 | } 23 | }, 24 | title: { 25 | style: { 26 | color: '#666' 27 | } 28 | } 29 | }, 30 | yAxis: { 31 | alternateGridColor: null, 32 | minorTickInterval: null, 33 | gridLineColor: '#999', 34 | lineWidth: 0, 35 | tickWidth: 0, 36 | labels: { 37 | style: { 38 | color: '#666', 39 | fontWeight: 'bold' 40 | } 41 | }, 42 | title: { 43 | style: { 44 | color: '#666', 45 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 46 | } 47 | } 48 | }, 49 | labels: { 50 | style: { 51 | color: '#CCC' 52 | } 53 | }, 54 | 55 | 56 | rangeSelector: { 57 | buttonTheme: { 58 | fill: '#cfc9c6', 59 | stroke: '#000000', 60 | style: { 61 | color: '#34332e', 62 | fontWeight: 'bold', 63 | borderColor: '#b2b2a9' 64 | }, 65 | states: { 66 | hover: { 67 | fill: '#92918C', 68 | stroke: '#000000', 69 | style: { 70 | color: '#34332e', 71 | fontWeight: 'bold', 72 | borderColor: '#8b897d' 73 | } 74 | }, 75 | select: { 76 | fill: '#E37400', 77 | stroke: '#000000', 78 | style: { 79 | color: '#FFF' 80 | } 81 | } 82 | } 83 | }, 84 | inputStyle: { 85 | backgroundColor: '#333', 86 | color: 'silver' 87 | }, 88 | labelStyle: { 89 | color: '#8b897d' 90 | } 91 | }, 92 | 93 | navigator: { 94 | handles: { 95 | backgroundColor: '#e6e5e0', 96 | borderColor: '#92918C' 97 | }, 98 | outlineColor: '#92918C', 99 | outlineWidth: 1, 100 | maskFill: 'rgba(146, 145, 140, 0.5)', 101 | series: { 102 | color: '#4572A7', 103 | lineColor: '#4572A7' 104 | } 105 | }, 106 | 107 | scrollbar: { 108 | buttonBackgroundColor: '#e6e5e0', 109 | buttonBorderWidth: 1, 110 | buttonBorderColor: '#92918C', 111 | buttonArrowColor: '#92918C', 112 | buttonBorderRadius: 2, 113 | 114 | barBorderWidth: 1, 115 | barBorderRadius: 0, 116 | barBackgroundColor: '#92918C', 117 | barBorderColor: '#92918C', 118 | 119 | rifleColor: '#92918C', 120 | 121 | trackBackgroundColor: '#b0b0a8', 122 | trackBorderWidth: 1, 123 | trackBorderColor: '#b0b0a8' 124 | } 125 | }; 126 | 127 | Highcharts.setOptions(Highcharts.theme); -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/js/unpack.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var unpack = function (array) { 4 | var findNbSeries = function (array) { 5 | var currentPlotPack; 6 | var length = array.length; 7 | 8 | for (var i = 0; i < length; i++) { 9 | currentPlotPack = array[i][1]; 10 | if(currentPlotPack !== null) { 11 | return currentPlotPack.length; 12 | } 13 | } 14 | return 0; 15 | }; 16 | 17 | var i, j; 18 | var nbPlots = array.length; 19 | var nbSeries = findNbSeries(array); 20 | 21 | // Prepare unpacked array 22 | var unpackedArray = new Array(nbSeries); 23 | 24 | for (i = 0; i < nbSeries; i++) { 25 | unpackedArray[i] = new Array(nbPlots); 26 | } 27 | 28 | // Unpack the array 29 | for (i = 0; i < nbPlots; i++) { 30 | var timestamp = array[i][0]; 31 | var values = array[i][1]; 32 | for (j = 0; j < nbSeries; j++) { 33 | unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; 34 | } 35 | } 36 | 37 | return unpackedArray; 38 | }; 39 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_down_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/arrow_right_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 2 | .clearfix:after{clear:both;} 3 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 4 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 5 | .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} 6 | .tooltip.top{margin-top:-3px;} 7 | .tooltip.right{margin-left:3px;} 8 | .tooltip.bottom{margin-top:3px;} 9 | .tooltip.left{margin-left:-3px;} 10 | .tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 11 | .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} 12 | .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} 13 | .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} 14 | .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} 15 | .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} 16 | .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} 17 | .popover.right{margin-left:10px;} 18 | .popover.bottom{margin-top:10px;} 19 | .popover.left{margin-left:-10px;} 20 | .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 21 | .popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} 22 | .popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} 23 | .popover .arrow:after{content:"";z-index:-1;} 24 | .popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} 25 | .popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} 26 | .popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} 27 | .popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/cible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/cible.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/favicon.ico -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/fond-degrade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/fond-degrade.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/fond-lueur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/fond-lueur.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/little_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/little_arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/logo-gatling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/logo-gatling.jpg -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/logo.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/sortable.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/sorted-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/sorted-down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/sorted-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/sorted-up.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-fleche-bas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-fleche-bas.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-fond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-fond.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-l-roue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-l-roue.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-l-temps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241352996/style/stat-l-temps.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/all_sessions.js: -------------------------------------------------------------------------------- 1 | allUsersData = { 2 | 3 | color: '#FF9D00', 4 | name: 'All Users', 5 | data: [ 6 | [1520241883000,254],[1520241884000,457],[1520241885000,385],[1520241886000,339],[1520241887000,404],[1520241888000,467],[1520241889000,447],[1520241890000,473],[1520241891000,537],[1520241892000,557],[1520241893000,448],[1520241894000,440],[1520241895000,450],[1520241896000,455],[1520241897000,499],[1520241898000,523],[1520241899000,605],[1520241900000,733],[1520241901000,869],[1520241902000,1024],[1520241903000,1056],[1520241904000,1020],[1520241905000,1068],[1520241906000,1007],[1520241907000,901],[1520241908000,872],[1520241909000,784],[1520241910000,659],[1520241911000,598],[1520241912000,512],[1520241913000,570],[1520241914000,615],[1520241915000,686],[1520241916000,684],[1520241917000,688],[1520241918000,760],[1520241919000,706],[1520241920000,668],[1520241921000,606],[1520241922000,518],[1520241923000,298] 7 | ], 8 | tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } 9 | , zIndex: 20 10 | , yAxis: 1 11 | }; -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/assertions.json: -------------------------------------------------------------------------------- 1 | { 2 | "simulation": "BootLoadSimulation", 3 | "simulationId": "bootloadsimulation", 4 | "start": 1520241881803, 5 | "description": "", 6 | "scenarios": ["BootLoadSimulation"], 7 | "assertions": [ 8 | 9 | ] 10 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/assertions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/global_stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Global Information", 3 | "numberOfRequests": { 4 | "total": 40000, 5 | "ok": 40000, 6 | "ko": 0 7 | }, 8 | "minResponseTime": { 9 | "total": 201, 10 | "ok": 201, 11 | "ko": 0 12 | }, 13 | "maxResponseTime": { 14 | "total": 1883, 15 | "ok": 1883, 16 | "ko": 0 17 | }, 18 | "meanResponseTime": { 19 | "total": 390, 20 | "ok": 390, 21 | "ko": 0 22 | }, 23 | "standardDeviation": { 24 | "total": 232, 25 | "ok": 232, 26 | "ko": 0 27 | }, 28 | "percentiles1": { 29 | "total": 315, 30 | "ok": 315, 31 | "ko": 0 32 | }, 33 | "percentiles2": { 34 | "total": 422, 35 | "ok": 422, 36 | "ko": 0 37 | }, 38 | "percentiles3": { 39 | "total": 865, 40 | "ok": 865, 41 | "ko": 0 42 | }, 43 | "percentiles4": { 44 | "total": 1392, 45 | "ok": 1392, 46 | "ko": 0 47 | }, 48 | "group1": { 49 | "name": "t < 800 ms", 50 | "count": 37659, 51 | "percentage": 94 52 | }, 53 | "group2": { 54 | "name": "800 ms < t < 1200 ms", 55 | "count": 1422, 56 | "percentage": 4 57 | }, 58 | "group3": { 59 | "name": "t > 1200 ms", 60 | "count": 919, 61 | "percentage": 2 62 | }, 63 | "group4": { 64 | "name": "failed", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "meanNumberOfRequestsPerSecond": { 69 | "total": 975.609756097561, 70 | "ok": 975.609756097561, 71 | "ko": 0 72 | } 73 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/menu.js: -------------------------------------------------------------------------------- 1 | 2 | function getItemLink(item){ 3 | return item.pathFormatted + '.html'; 4 | } 5 | 6 | function setDetailsLinkUrl(){ 7 | $.each(stats.contents, function (name, data) { 8 | $('#details_link').attr('href', getItemLink(data)); 9 | return false; 10 | }); 11 | } 12 | 13 | var MENU_ITEM_MAX_LENGTH = 50; 14 | 15 | function menuItem(item, level, parent, group) { 16 | if (group) 17 | var style = 'group'; 18 | else 19 | var style = ''; 20 | 21 | if (item.name.length > MENU_ITEM_MAX_LENGTH) { 22 | var title = ' title="' + item.name + '"'; 23 | var displayName = item.name.substr(0, MENU_ITEM_MAX_LENGTH) + '...'; 24 | } 25 | else { 26 | var title = ''; 27 | var displayName = item.name; 28 | } 29 | 30 | if (parent) { 31 | if (level == 0) 32 | var childOfRoot = 'child-of-ROOT '; 33 | else 34 | var childOfRoot = ''; 35 | 36 | var style = ' class="' + childOfRoot + 'child-of-menu-' + parent + '"'; 37 | } else 38 | var style = ''; 39 | 40 | if (group) 41 | var expandButton = ' '; 42 | else 43 | var expandButton = ''; 44 | 45 | return '
    ' + expandButton + '' + displayName + '
    '; 46 | } 47 | 48 | function menuItemsForGroup(group, level, parent) { 49 | var items = ''; 50 | 51 | if (level > 0) 52 | items += menuItem(group, level - 1, parent, true); 53 | 54 | $.each(group.contents, function (contentName, content) { 55 | if (content.type == 'GROUP') 56 | items += menuItemsForGroup(content, level + 1, group.pathFormatted); 57 | else if (content.type == 'REQUEST') 58 | items += menuItem(content, level, group.pathFormatted); 59 | }); 60 | 61 | return items; 62 | } 63 | 64 | function setDetailsMenu(){ 65 | $('.nav ul').append(menuItemsForGroup(stats, 0)); 66 | 67 | $('.nav').expandable(); 68 | } 69 | 70 | function setGlobalMenu(){ 71 | $('.nav ul').append('
  • \ 72 |
  • \ 73 |
  • '); 74 | } 75 | 76 | function getLink(link){ 77 | var a = link.split('/'); 78 | return (a.length<=1)? link : a[a.length-1]; 79 | } 80 | 81 | function setActiveMenu(){ 82 | $('.nav a').each(function(){ 83 | if(!$(this).hasClass('expand-button') && $(this).attr('href') == getLink(window.location.pathname)){ 84 | $(this).parents('li').addClass('on'); 85 | return false; 86 | } 87 | }); 88 | } 89 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "GROUP", 3 | "name": "Global Information", 4 | "path": "", 5 | "pathFormatted": "group_missing-name-b06d1", 6 | "stats": { 7 | "name": "Global Information", 8 | "numberOfRequests": { 9 | "total": 40000, 10 | "ok": 40000, 11 | "ko": 0 12 | }, 13 | "minResponseTime": { 14 | "total": 201, 15 | "ok": 201, 16 | "ko": 0 17 | }, 18 | "maxResponseTime": { 19 | "total": 1883, 20 | "ok": 1883, 21 | "ko": 0 22 | }, 23 | "meanResponseTime": { 24 | "total": 390, 25 | "ok": 390, 26 | "ko": 0 27 | }, 28 | "standardDeviation": { 29 | "total": 232, 30 | "ok": 232, 31 | "ko": 0 32 | }, 33 | "percentiles1": { 34 | "total": 315, 35 | "ok": 315, 36 | "ko": 0 37 | }, 38 | "percentiles2": { 39 | "total": 422, 40 | "ok": 422, 41 | "ko": 0 42 | }, 43 | "percentiles3": { 44 | "total": 865, 45 | "ok": 865, 46 | "ko": 0 47 | }, 48 | "percentiles4": { 49 | "total": 1392, 50 | "ok": 1392, 51 | "ko": 0 52 | }, 53 | "group1": { 54 | "name": "t < 800 ms", 55 | "count": 37659, 56 | "percentage": 94 57 | }, 58 | "group2": { 59 | "name": "800 ms < t < 1200 ms", 60 | "count": 1422, 61 | "percentage": 4 62 | }, 63 | "group3": { 64 | "name": "t > 1200 ms", 65 | "count": 919, 66 | "percentage": 2 67 | }, 68 | "group4": { 69 | "name": "failed", 70 | "count": 0, 71 | "percentage": 0 72 | }, 73 | "meanNumberOfRequestsPerSecond": { 74 | "total": 975.609756097561, 75 | "ok": 975.609756097561, 76 | "ko": 0 77 | } 78 | }, 79 | "contents": { 80 | "req_add-person-test-ac713": { 81 | "type": "REQUEST", 82 | "name": "add-person-test", 83 | "path": "add-person-test", 84 | "pathFormatted": "req_add-person-test-ac713", 85 | "stats": { 86 | "name": "add-person-test", 87 | "numberOfRequests": { 88 | "total": 40000, 89 | "ok": 40000, 90 | "ko": 0 91 | }, 92 | "minResponseTime": { 93 | "total": 201, 94 | "ok": 201, 95 | "ko": 0 96 | }, 97 | "maxResponseTime": { 98 | "total": 1883, 99 | "ok": 1883, 100 | "ko": 0 101 | }, 102 | "meanResponseTime": { 103 | "total": 390, 104 | "ok": 390, 105 | "ko": 0 106 | }, 107 | "standardDeviation": { 108 | "total": 232, 109 | "ok": 232, 110 | "ko": 0 111 | }, 112 | "percentiles1": { 113 | "total": 315, 114 | "ok": 315, 115 | "ko": 0 116 | }, 117 | "percentiles2": { 118 | "total": 422, 119 | "ok": 422, 120 | "ko": 0 121 | }, 122 | "percentiles3": { 123 | "total": 865, 124 | "ok": 865, 125 | "ko": 0 126 | }, 127 | "percentiles4": { 128 | "total": 1392, 129 | "ok": 1392, 130 | "ko": 0 131 | }, 132 | "group1": { 133 | "name": "t < 800 ms", 134 | "count": 37659, 135 | "percentage": 94 136 | }, 137 | "group2": { 138 | "name": "800 ms < t < 1200 ms", 139 | "count": 1422, 140 | "percentage": 4 141 | }, 142 | "group3": { 143 | "name": "t > 1200 ms", 144 | "count": 919, 145 | "percentage": 2 146 | }, 147 | "group4": { 148 | "name": "failed", 149 | "count": 0, 150 | "percentage": 0 151 | }, 152 | "meanNumberOfRequestsPerSecond": { 153 | "total": 975.609756097561, 154 | "ok": 975.609756097561, 155 | "ko": 0 156 | } 157 | } 158 | } 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/theme.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Gatling Highcharts License 5 | */ 6 | Highcharts.theme = { 7 | chart: { 8 | backgroundColor: '#e6e5e0', 9 | borderWidth: 0, 10 | borderRadius: 8, 11 | plotBackgroundColor: null, 12 | plotShadow: false, 13 | plotBorderWidth: 0 14 | }, 15 | xAxis: { 16 | gridLineWidth: 0, 17 | lineColor: '#666', 18 | tickColor: '#666', 19 | labels: { 20 | style: { 21 | color: '#666' 22 | } 23 | }, 24 | title: { 25 | style: { 26 | color: '#666' 27 | } 28 | } 29 | }, 30 | yAxis: { 31 | alternateGridColor: null, 32 | minorTickInterval: null, 33 | gridLineColor: '#999', 34 | lineWidth: 0, 35 | tickWidth: 0, 36 | labels: { 37 | style: { 38 | color: '#666', 39 | fontWeight: 'bold' 40 | } 41 | }, 42 | title: { 43 | style: { 44 | color: '#666', 45 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 46 | } 47 | } 48 | }, 49 | labels: { 50 | style: { 51 | color: '#CCC' 52 | } 53 | }, 54 | 55 | 56 | rangeSelector: { 57 | buttonTheme: { 58 | fill: '#cfc9c6', 59 | stroke: '#000000', 60 | style: { 61 | color: '#34332e', 62 | fontWeight: 'bold', 63 | borderColor: '#b2b2a9' 64 | }, 65 | states: { 66 | hover: { 67 | fill: '#92918C', 68 | stroke: '#000000', 69 | style: { 70 | color: '#34332e', 71 | fontWeight: 'bold', 72 | borderColor: '#8b897d' 73 | } 74 | }, 75 | select: { 76 | fill: '#E37400', 77 | stroke: '#000000', 78 | style: { 79 | color: '#FFF' 80 | } 81 | } 82 | } 83 | }, 84 | inputStyle: { 85 | backgroundColor: '#333', 86 | color: 'silver' 87 | }, 88 | labelStyle: { 89 | color: '#8b897d' 90 | } 91 | }, 92 | 93 | navigator: { 94 | handles: { 95 | backgroundColor: '#e6e5e0', 96 | borderColor: '#92918C' 97 | }, 98 | outlineColor: '#92918C', 99 | outlineWidth: 1, 100 | maskFill: 'rgba(146, 145, 140, 0.5)', 101 | series: { 102 | color: '#4572A7', 103 | lineColor: '#4572A7' 104 | } 105 | }, 106 | 107 | scrollbar: { 108 | buttonBackgroundColor: '#e6e5e0', 109 | buttonBorderWidth: 1, 110 | buttonBorderColor: '#92918C', 111 | buttonArrowColor: '#92918C', 112 | buttonBorderRadius: 2, 113 | 114 | barBorderWidth: 1, 115 | barBorderRadius: 0, 116 | barBackgroundColor: '#92918C', 117 | barBorderColor: '#92918C', 118 | 119 | rifleColor: '#92918C', 120 | 121 | trackBackgroundColor: '#b0b0a8', 122 | trackBorderWidth: 1, 123 | trackBorderColor: '#b0b0a8' 124 | } 125 | }; 126 | 127 | Highcharts.setOptions(Highcharts.theme); -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/js/unpack.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var unpack = function (array) { 4 | var findNbSeries = function (array) { 5 | var currentPlotPack; 6 | var length = array.length; 7 | 8 | for (var i = 0; i < length; i++) { 9 | currentPlotPack = array[i][1]; 10 | if(currentPlotPack !== null) { 11 | return currentPlotPack.length; 12 | } 13 | } 14 | return 0; 15 | }; 16 | 17 | var i, j; 18 | var nbPlots = array.length; 19 | var nbSeries = findNbSeries(array); 20 | 21 | // Prepare unpacked array 22 | var unpackedArray = new Array(nbSeries); 23 | 24 | for (i = 0; i < nbSeries; i++) { 25 | unpackedArray[i] = new Array(nbPlots); 26 | } 27 | 28 | // Unpack the array 29 | for (i = 0; i < nbPlots; i++) { 30 | var timestamp = array[i][0]; 31 | var values = array[i][1]; 32 | for (j = 0; j < nbSeries; j++) { 33 | unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; 34 | } 35 | } 36 | 37 | return unpackedArray; 38 | }; 39 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_down_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/arrow_right_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 2 | .clearfix:after{clear:both;} 3 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 4 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 5 | .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} 6 | .tooltip.top{margin-top:-3px;} 7 | .tooltip.right{margin-left:3px;} 8 | .tooltip.bottom{margin-top:3px;} 9 | .tooltip.left{margin-left:-3px;} 10 | .tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 11 | .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} 12 | .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} 13 | .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} 14 | .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} 15 | .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} 16 | .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} 17 | .popover.right{margin-left:10px;} 18 | .popover.bottom{margin-top:10px;} 19 | .popover.left{margin-left:-10px;} 20 | .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 21 | .popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} 22 | .popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} 23 | .popover .arrow:after{content:"";z-index:-1;} 24 | .popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} 25 | .popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} 26 | .popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} 27 | .popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/cible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/cible.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/favicon.ico -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/fond-degrade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/fond-degrade.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/fond-lueur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/fond-lueur.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/little_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/little_arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/logo-gatling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/logo-gatling.jpg -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/logo.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/sortable.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/sorted-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/sorted-down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/sorted-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/sorted-up.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-fleche-bas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-fleche-bas.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-fond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-fond.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-l-roue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-l-roue.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-l-temps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520241881803/style/stat-l-temps.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/all_sessions.js: -------------------------------------------------------------------------------- 1 | allUsersData = { 2 | 3 | color: '#FF9D00', 4 | name: 'All Users', 5 | data: [ 6 | [1520242083000,312],[1520242084000,456],[1520242085000,498],[1520242086000,392],[1520242087000,379],[1520242088000,345],[1520242089000,327],[1520242090000,386],[1520242091000,435],[1520242092000,421],[1520242093000,414],[1520242094000,410],[1520242095000,422],[1520242096000,640],[1520242097000,673],[1520242098000,743],[1520242099000,754],[1520242100000,631],[1520242101000,620],[1520242102000,569],[1520242103000,615],[1520242104000,670],[1520242105000,1073],[1520242106000,1248],[1520242107000,1143],[1520242108000,1015],[1520242109000,798],[1520242110000,398] 7 | ], 8 | tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } 9 | , zIndex: 20 10 | , yAxis: 1 11 | }; -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/assertions.json: -------------------------------------------------------------------------------- 1 | { 2 | "simulation": "BootLoadSimulation", 3 | "simulationId": "bootloadsimulation", 4 | "start": 1520242082281, 5 | "description": "", 6 | "scenarios": ["BootLoadSimulation"], 7 | "assertions": [ 8 | 9 | ] 10 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/assertions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/global_stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Global Information", 3 | "numberOfRequests": { 4 | "total": 20000, 5 | "ok": 20000, 6 | "ko": 0 7 | }, 8 | "minResponseTime": { 9 | "total": 202, 10 | "ok": 202, 11 | "ko": 0 12 | }, 13 | "maxResponseTime": { 14 | "total": 1703, 15 | "ok": 1703, 16 | "ko": 0 17 | }, 18 | "meanResponseTime": { 19 | "total": 578, 20 | "ok": 578, 21 | "ko": 0 22 | }, 23 | "standardDeviation": { 24 | "total": 285, 25 | "ok": 285, 26 | "ko": 0 27 | }, 28 | "percentiles1": { 29 | "total": 495, 30 | "ok": 495, 31 | "ko": 0 32 | }, 33 | "percentiles2": { 34 | "total": 778, 35 | "ok": 778, 36 | "ko": 0 37 | }, 38 | "percentiles3": { 39 | "total": 1129, 40 | "ok": 1129, 41 | "ko": 0 42 | }, 43 | "percentiles4": { 44 | "total": 1215, 45 | "ok": 1215, 46 | "ko": 0 47 | }, 48 | "group1": { 49 | "name": "t < 800 ms", 50 | "count": 15251, 51 | "percentage": 76 52 | }, 53 | "group2": { 54 | "name": "800 ms < t < 1200 ms", 55 | "count": 4502, 56 | "percentage": 23 57 | }, 58 | "group3": { 59 | "name": "t > 1200 ms", 60 | "count": 247, 61 | "percentage": 1 62 | }, 63 | "group4": { 64 | "name": "failed", 65 | "count": 0, 66 | "percentage": 0 67 | }, 68 | "meanNumberOfRequestsPerSecond": { 69 | "total": 714.2857142857143, 70 | "ok": 714.2857142857143, 71 | "ko": 0 72 | } 73 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/menu.js: -------------------------------------------------------------------------------- 1 | 2 | function getItemLink(item){ 3 | return item.pathFormatted + '.html'; 4 | } 5 | 6 | function setDetailsLinkUrl(){ 7 | $.each(stats.contents, function (name, data) { 8 | $('#details_link').attr('href', getItemLink(data)); 9 | return false; 10 | }); 11 | } 12 | 13 | var MENU_ITEM_MAX_LENGTH = 50; 14 | 15 | function menuItem(item, level, parent, group) { 16 | if (group) 17 | var style = 'group'; 18 | else 19 | var style = ''; 20 | 21 | if (item.name.length > MENU_ITEM_MAX_LENGTH) { 22 | var title = ' title="' + item.name + '"'; 23 | var displayName = item.name.substr(0, MENU_ITEM_MAX_LENGTH) + '...'; 24 | } 25 | else { 26 | var title = ''; 27 | var displayName = item.name; 28 | } 29 | 30 | if (parent) { 31 | if (level == 0) 32 | var childOfRoot = 'child-of-ROOT '; 33 | else 34 | var childOfRoot = ''; 35 | 36 | var style = ' class="' + childOfRoot + 'child-of-menu-' + parent + '"'; 37 | } else 38 | var style = ''; 39 | 40 | if (group) 41 | var expandButton = ' '; 42 | else 43 | var expandButton = ''; 44 | 45 | return '
    ' + expandButton + '' + displayName + '
    '; 46 | } 47 | 48 | function menuItemsForGroup(group, level, parent) { 49 | var items = ''; 50 | 51 | if (level > 0) 52 | items += menuItem(group, level - 1, parent, true); 53 | 54 | $.each(group.contents, function (contentName, content) { 55 | if (content.type == 'GROUP') 56 | items += menuItemsForGroup(content, level + 1, group.pathFormatted); 57 | else if (content.type == 'REQUEST') 58 | items += menuItem(content, level, group.pathFormatted); 59 | }); 60 | 61 | return items; 62 | } 63 | 64 | function setDetailsMenu(){ 65 | $('.nav ul').append(menuItemsForGroup(stats, 0)); 66 | 67 | $('.nav').expandable(); 68 | } 69 | 70 | function setGlobalMenu(){ 71 | $('.nav ul').append('
  • \ 72 |
  • \ 73 |
  • '); 74 | } 75 | 76 | function getLink(link){ 77 | var a = link.split('/'); 78 | return (a.length<=1)? link : a[a.length-1]; 79 | } 80 | 81 | function setActiveMenu(){ 82 | $('.nav a').each(function(){ 83 | if(!$(this).hasClass('expand-button') && $(this).attr('href') == getLink(window.location.pathname)){ 84 | $(this).parents('li').addClass('on'); 85 | return false; 86 | } 87 | }); 88 | } 89 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "GROUP", 3 | "name": "Global Information", 4 | "path": "", 5 | "pathFormatted": "group_missing-name-b06d1", 6 | "stats": { 7 | "name": "Global Information", 8 | "numberOfRequests": { 9 | "total": 20000, 10 | "ok": 20000, 11 | "ko": 0 12 | }, 13 | "minResponseTime": { 14 | "total": 202, 15 | "ok": 202, 16 | "ko": 0 17 | }, 18 | "maxResponseTime": { 19 | "total": 1703, 20 | "ok": 1703, 21 | "ko": 0 22 | }, 23 | "meanResponseTime": { 24 | "total": 578, 25 | "ok": 578, 26 | "ko": 0 27 | }, 28 | "standardDeviation": { 29 | "total": 285, 30 | "ok": 285, 31 | "ko": 0 32 | }, 33 | "percentiles1": { 34 | "total": 495, 35 | "ok": 495, 36 | "ko": 0 37 | }, 38 | "percentiles2": { 39 | "total": 778, 40 | "ok": 778, 41 | "ko": 0 42 | }, 43 | "percentiles3": { 44 | "total": 1129, 45 | "ok": 1129, 46 | "ko": 0 47 | }, 48 | "percentiles4": { 49 | "total": 1215, 50 | "ok": 1215, 51 | "ko": 0 52 | }, 53 | "group1": { 54 | "name": "t < 800 ms", 55 | "count": 15251, 56 | "percentage": 76 57 | }, 58 | "group2": { 59 | "name": "800 ms < t < 1200 ms", 60 | "count": 4502, 61 | "percentage": 23 62 | }, 63 | "group3": { 64 | "name": "t > 1200 ms", 65 | "count": 247, 66 | "percentage": 1 67 | }, 68 | "group4": { 69 | "name": "failed", 70 | "count": 0, 71 | "percentage": 0 72 | }, 73 | "meanNumberOfRequestsPerSecond": { 74 | "total": 714.2857142857143, 75 | "ok": 714.2857142857143, 76 | "ko": 0 77 | } 78 | }, 79 | "contents": { 80 | "req_add-person-test-ac713": { 81 | "type": "REQUEST", 82 | "name": "add-person-test", 83 | "path": "add-person-test", 84 | "pathFormatted": "req_add-person-test-ac713", 85 | "stats": { 86 | "name": "add-person-test", 87 | "numberOfRequests": { 88 | "total": 20000, 89 | "ok": 20000, 90 | "ko": 0 91 | }, 92 | "minResponseTime": { 93 | "total": 202, 94 | "ok": 202, 95 | "ko": 0 96 | }, 97 | "maxResponseTime": { 98 | "total": 1703, 99 | "ok": 1703, 100 | "ko": 0 101 | }, 102 | "meanResponseTime": { 103 | "total": 578, 104 | "ok": 578, 105 | "ko": 0 106 | }, 107 | "standardDeviation": { 108 | "total": 285, 109 | "ok": 285, 110 | "ko": 0 111 | }, 112 | "percentiles1": { 113 | "total": 495, 114 | "ok": 495, 115 | "ko": 0 116 | }, 117 | "percentiles2": { 118 | "total": 778, 119 | "ok": 778, 120 | "ko": 0 121 | }, 122 | "percentiles3": { 123 | "total": 1129, 124 | "ok": 1129, 125 | "ko": 0 126 | }, 127 | "percentiles4": { 128 | "total": 1215, 129 | "ok": 1215, 130 | "ko": 0 131 | }, 132 | "group1": { 133 | "name": "t < 800 ms", 134 | "count": 15251, 135 | "percentage": 76 136 | }, 137 | "group2": { 138 | "name": "800 ms < t < 1200 ms", 139 | "count": 4502, 140 | "percentage": 23 141 | }, 142 | "group3": { 143 | "name": "t > 1200 ms", 144 | "count": 247, 145 | "percentage": 1 146 | }, 147 | "group4": { 148 | "name": "failed", 149 | "count": 0, 150 | "percentage": 0 151 | }, 152 | "meanNumberOfRequestsPerSecond": { 153 | "total": 714.2857142857143, 154 | "ok": 714.2857142857143, 155 | "ko": 0 156 | } 157 | } 158 | } 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/theme.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Gatling Highcharts License 5 | */ 6 | Highcharts.theme = { 7 | chart: { 8 | backgroundColor: '#e6e5e0', 9 | borderWidth: 0, 10 | borderRadius: 8, 11 | plotBackgroundColor: null, 12 | plotShadow: false, 13 | plotBorderWidth: 0 14 | }, 15 | xAxis: { 16 | gridLineWidth: 0, 17 | lineColor: '#666', 18 | tickColor: '#666', 19 | labels: { 20 | style: { 21 | color: '#666' 22 | } 23 | }, 24 | title: { 25 | style: { 26 | color: '#666' 27 | } 28 | } 29 | }, 30 | yAxis: { 31 | alternateGridColor: null, 32 | minorTickInterval: null, 33 | gridLineColor: '#999', 34 | lineWidth: 0, 35 | tickWidth: 0, 36 | labels: { 37 | style: { 38 | color: '#666', 39 | fontWeight: 'bold' 40 | } 41 | }, 42 | title: { 43 | style: { 44 | color: '#666', 45 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 46 | } 47 | } 48 | }, 49 | labels: { 50 | style: { 51 | color: '#CCC' 52 | } 53 | }, 54 | 55 | 56 | rangeSelector: { 57 | buttonTheme: { 58 | fill: '#cfc9c6', 59 | stroke: '#000000', 60 | style: { 61 | color: '#34332e', 62 | fontWeight: 'bold', 63 | borderColor: '#b2b2a9' 64 | }, 65 | states: { 66 | hover: { 67 | fill: '#92918C', 68 | stroke: '#000000', 69 | style: { 70 | color: '#34332e', 71 | fontWeight: 'bold', 72 | borderColor: '#8b897d' 73 | } 74 | }, 75 | select: { 76 | fill: '#E37400', 77 | stroke: '#000000', 78 | style: { 79 | color: '#FFF' 80 | } 81 | } 82 | } 83 | }, 84 | inputStyle: { 85 | backgroundColor: '#333', 86 | color: 'silver' 87 | }, 88 | labelStyle: { 89 | color: '#8b897d' 90 | } 91 | }, 92 | 93 | navigator: { 94 | handles: { 95 | backgroundColor: '#e6e5e0', 96 | borderColor: '#92918C' 97 | }, 98 | outlineColor: '#92918C', 99 | outlineWidth: 1, 100 | maskFill: 'rgba(146, 145, 140, 0.5)', 101 | series: { 102 | color: '#4572A7', 103 | lineColor: '#4572A7' 104 | } 105 | }, 106 | 107 | scrollbar: { 108 | buttonBackgroundColor: '#e6e5e0', 109 | buttonBorderWidth: 1, 110 | buttonBorderColor: '#92918C', 111 | buttonArrowColor: '#92918C', 112 | buttonBorderRadius: 2, 113 | 114 | barBorderWidth: 1, 115 | barBorderRadius: 0, 116 | barBackgroundColor: '#92918C', 117 | barBorderColor: '#92918C', 118 | 119 | rifleColor: '#92918C', 120 | 121 | trackBackgroundColor: '#b0b0a8', 122 | trackBorderWidth: 1, 123 | trackBorderColor: '#b0b0a8' 124 | } 125 | }; 126 | 127 | Highcharts.setOptions(Highcharts.theme); -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/js/unpack.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var unpack = function (array) { 4 | var findNbSeries = function (array) { 5 | var currentPlotPack; 6 | var length = array.length; 7 | 8 | for (var i = 0; i < length; i++) { 9 | currentPlotPack = array[i][1]; 10 | if(currentPlotPack !== null) { 11 | return currentPlotPack.length; 12 | } 13 | } 14 | return 0; 15 | }; 16 | 17 | var i, j; 18 | var nbPlots = array.length; 19 | var nbSeries = findNbSeries(array); 20 | 21 | // Prepare unpacked array 22 | var unpackedArray = new Array(nbSeries); 23 | 24 | for (i = 0; i < nbSeries; i++) { 25 | unpackedArray[i] = new Array(nbPlots); 26 | } 27 | 28 | // Unpack the array 29 | for (i = 0; i < nbPlots; i++) { 30 | var timestamp = array[i][0]; 31 | var values = array[i][1]; 32 | for (j = 0; j < nbSeries; j++) { 33 | unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; 34 | } 35 | } 36 | 37 | return unpackedArray; 38 | }; 39 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_down_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/arrow_right_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 2 | .clearfix:after{clear:both;} 3 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 4 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 5 | .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} 6 | .tooltip.top{margin-top:-3px;} 7 | .tooltip.right{margin-left:3px;} 8 | .tooltip.bottom{margin-top:3px;} 9 | .tooltip.left{margin-left:-3px;} 10 | .tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 11 | .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} 12 | .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} 13 | .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} 14 | .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} 15 | .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} 16 | .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} 17 | .popover.right{margin-left:10px;} 18 | .popover.bottom{margin-top:10px;} 19 | .popover.left{margin-left:-10px;} 20 | .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 21 | .popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} 22 | .popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} 23 | .popover .arrow:after{content:"";z-index:-1;} 24 | .popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} 25 | .popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} 26 | .popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} 27 | .popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/cible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/cible.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/favicon.ico -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/fond-degrade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/fond-degrade.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/fond-lueur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/fond-lueur.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/little_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/little_arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/logo-gatling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/logo-gatling.jpg -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/logo.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/sortable.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/sorted-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/sorted-down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/sorted-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/sorted-up.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-fleche-bas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-fleche-bas.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-fond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-fond.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-l-roue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-l-roue.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-l-temps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242082281/style/stat-l-temps.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/all_sessions.js: -------------------------------------------------------------------------------- 1 | allUsersData = { 2 | 3 | color: '#FF9D00', 4 | name: 'All Users', 5 | data: [ 6 | [1520242454000,207],[1520242455000,400],[1520242456000,320],[1520242457000,270],[1520242458000,372],[1520242459000,549],[1520242460000,882],[1520242461000,1198],[1520242462000,1331],[1520242463000,1330],[1520242464000,1372],[1520242465000,1385],[1520242466000,1304],[1520242467000,1192],[1520242468000,1011],[1520242469000,890],[1520242470000,1055],[1520242471000,1073],[1520242472000,1073],[1520242473000,1076],[1520242474000,1228],[1520242475000,1424],[1520242476000,1483],[1520242477000,1559],[1520242478000,1649],[1520242479000,1691],[1520242480000,1899],[1520242481000,2256],[1520242482000,2285],[1520242483000,2416],[1520242484000,2609],[1520242485000,2519],[1520242486000,2738],[1520242487000,3148],[1520242488000,3673],[1520242489000,4237],[1520242490000,3952],[1520242491000,3700],[1520242492000,3501],[1520242493000,3303],[1520242494000,3243],[1520242495000,3164],[1520242496000,3061],[1520242497000,2790],[1520242498000,2702],[1520242499000,2515],[1520242500000,2345],[1520242501000,2188],[1520242502000,1555],[1520242504000,388] 7 | ], 8 | tooltip: { yDecimals: 0, ySuffix: '', valueDecimals: 0 } 9 | , zIndex: 20 10 | , yAxis: 1 11 | }; -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/assertions.json: -------------------------------------------------------------------------------- 1 | { 2 | "simulation": "BootLoadSimulation", 3 | "simulationId": "bootloadsimulation", 4 | "start": 1520242453415, 5 | "description": "", 6 | "scenarios": ["BootLoadSimulation"], 7 | "assertions": [ 8 | 9 | ] 10 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/assertions.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/global_stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Global Information", 3 | "numberOfRequests": { 4 | "total": 40000, 5 | "ok": 39994, 6 | "ko": 6 7 | }, 8 | "minResponseTime": { 9 | "total": 202, 10 | "ok": 202, 11 | "ko": 2443 12 | }, 13 | "maxResponseTime": { 14 | "total": 5356, 15 | "ok": 5356, 16 | "ko": 4166 17 | }, 18 | "meanResponseTime": { 19 | "total": 2102, 20 | "ok": 2101, 21 | "ko": 3216 22 | }, 23 | "standardDeviation": { 24 | "total": 1304, 25 | "ok": 1304, 26 | "ko": 660 27 | }, 28 | "percentiles1": { 29 | "total": 2093, 30 | "ok": 2093, 31 | "ko": 3151 32 | }, 33 | "percentiles2": { 34 | "total": 3016, 35 | "ok": 3016, 36 | "ko": 3763 37 | }, 38 | "percentiles3": { 39 | "total": 4547, 40 | "ok": 4547, 41 | "ko": 4104 42 | }, 43 | "percentiles4": { 44 | "total": 5061, 45 | "ok": 5061, 46 | "ko": 4154 47 | }, 48 | "group1": { 49 | "name": "t < 800 ms", 50 | "count": 7989, 51 | "percentage": 20 52 | }, 53 | "group2": { 54 | "name": "800 ms < t < 1200 ms", 55 | "count": 4914, 56 | "percentage": 12 57 | }, 58 | "group3": { 59 | "name": "t > 1200 ms", 60 | "count": 27091, 61 | "percentage": 68 62 | }, 63 | "group4": { 64 | "name": "failed", 65 | "count": 6, 66 | "percentage": 0 67 | }, 68 | "meanNumberOfRequestsPerSecond": { 69 | "total": 784.3137254901961, 70 | "ok": 784.1960784313726, 71 | "ko": 0.11764705882352941 72 | } 73 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/menu.js: -------------------------------------------------------------------------------- 1 | 2 | function getItemLink(item){ 3 | return item.pathFormatted + '.html'; 4 | } 5 | 6 | function setDetailsLinkUrl(){ 7 | $.each(stats.contents, function (name, data) { 8 | $('#details_link').attr('href', getItemLink(data)); 9 | return false; 10 | }); 11 | } 12 | 13 | var MENU_ITEM_MAX_LENGTH = 50; 14 | 15 | function menuItem(item, level, parent, group) { 16 | if (group) 17 | var style = 'group'; 18 | else 19 | var style = ''; 20 | 21 | if (item.name.length > MENU_ITEM_MAX_LENGTH) { 22 | var title = ' title="' + item.name + '"'; 23 | var displayName = item.name.substr(0, MENU_ITEM_MAX_LENGTH) + '...'; 24 | } 25 | else { 26 | var title = ''; 27 | var displayName = item.name; 28 | } 29 | 30 | if (parent) { 31 | if (level == 0) 32 | var childOfRoot = 'child-of-ROOT '; 33 | else 34 | var childOfRoot = ''; 35 | 36 | var style = ' class="' + childOfRoot + 'child-of-menu-' + parent + '"'; 37 | } else 38 | var style = ''; 39 | 40 | if (group) 41 | var expandButton = ' '; 42 | else 43 | var expandButton = ''; 44 | 45 | return '
    ' + expandButton + '' + displayName + '
    '; 46 | } 47 | 48 | function menuItemsForGroup(group, level, parent) { 49 | var items = ''; 50 | 51 | if (level > 0) 52 | items += menuItem(group, level - 1, parent, true); 53 | 54 | $.each(group.contents, function (contentName, content) { 55 | if (content.type == 'GROUP') 56 | items += menuItemsForGroup(content, level + 1, group.pathFormatted); 57 | else if (content.type == 'REQUEST') 58 | items += menuItem(content, level, group.pathFormatted); 59 | }); 60 | 61 | return items; 62 | } 63 | 64 | function setDetailsMenu(){ 65 | $('.nav ul').append(menuItemsForGroup(stats, 0)); 66 | 67 | $('.nav').expandable(); 68 | } 69 | 70 | function setGlobalMenu(){ 71 | $('.nav ul').append('
  • \ 72 |
  • \ 73 |
  • '); 74 | } 75 | 76 | function getLink(link){ 77 | var a = link.split('/'); 78 | return (a.length<=1)? link : a[a.length-1]; 79 | } 80 | 81 | function setActiveMenu(){ 82 | $('.nav a').each(function(){ 83 | if(!$(this).hasClass('expand-button') && $(this).attr('href') == getLink(window.location.pathname)){ 84 | $(this).parents('li').addClass('on'); 85 | return false; 86 | } 87 | }); 88 | } 89 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/stats.json: -------------------------------------------------------------------------------- 1 | { 2 | "type": "GROUP", 3 | "name": "Global Information", 4 | "path": "", 5 | "pathFormatted": "group_missing-name-b06d1", 6 | "stats": { 7 | "name": "Global Information", 8 | "numberOfRequests": { 9 | "total": 40000, 10 | "ok": 39994, 11 | "ko": 6 12 | }, 13 | "minResponseTime": { 14 | "total": 202, 15 | "ok": 202, 16 | "ko": 2443 17 | }, 18 | "maxResponseTime": { 19 | "total": 5356, 20 | "ok": 5356, 21 | "ko": 4166 22 | }, 23 | "meanResponseTime": { 24 | "total": 2102, 25 | "ok": 2101, 26 | "ko": 3216 27 | }, 28 | "standardDeviation": { 29 | "total": 1304, 30 | "ok": 1304, 31 | "ko": 660 32 | }, 33 | "percentiles1": { 34 | "total": 2093, 35 | "ok": 2093, 36 | "ko": 3151 37 | }, 38 | "percentiles2": { 39 | "total": 3016, 40 | "ok": 3016, 41 | "ko": 3763 42 | }, 43 | "percentiles3": { 44 | "total": 4547, 45 | "ok": 4547, 46 | "ko": 4104 47 | }, 48 | "percentiles4": { 49 | "total": 5061, 50 | "ok": 5061, 51 | "ko": 4154 52 | }, 53 | "group1": { 54 | "name": "t < 800 ms", 55 | "count": 7989, 56 | "percentage": 20 57 | }, 58 | "group2": { 59 | "name": "800 ms < t < 1200 ms", 60 | "count": 4914, 61 | "percentage": 12 62 | }, 63 | "group3": { 64 | "name": "t > 1200 ms", 65 | "count": 27091, 66 | "percentage": 68 67 | }, 68 | "group4": { 69 | "name": "failed", 70 | "count": 6, 71 | "percentage": 0 72 | }, 73 | "meanNumberOfRequestsPerSecond": { 74 | "total": 784.3137254901961, 75 | "ok": 784.1960784313726, 76 | "ko": 0.11764705882352941 77 | } 78 | }, 79 | "contents": { 80 | "req_add-person-test-ac713": { 81 | "type": "REQUEST", 82 | "name": "add-person-test", 83 | "path": "add-person-test", 84 | "pathFormatted": "req_add-person-test-ac713", 85 | "stats": { 86 | "name": "add-person-test", 87 | "numberOfRequests": { 88 | "total": 40000, 89 | "ok": 39994, 90 | "ko": 6 91 | }, 92 | "minResponseTime": { 93 | "total": 202, 94 | "ok": 202, 95 | "ko": 2443 96 | }, 97 | "maxResponseTime": { 98 | "total": 5356, 99 | "ok": 5356, 100 | "ko": 4166 101 | }, 102 | "meanResponseTime": { 103 | "total": 2102, 104 | "ok": 2101, 105 | "ko": 3216 106 | }, 107 | "standardDeviation": { 108 | "total": 1304, 109 | "ok": 1304, 110 | "ko": 660 111 | }, 112 | "percentiles1": { 113 | "total": 2093, 114 | "ok": 2093, 115 | "ko": 3151 116 | }, 117 | "percentiles2": { 118 | "total": 3017, 119 | "ok": 3017, 120 | "ko": 3763 121 | }, 122 | "percentiles3": { 123 | "total": 4547, 124 | "ok": 4547, 125 | "ko": 4104 126 | }, 127 | "percentiles4": { 128 | "total": 5061, 129 | "ok": 5061, 130 | "ko": 4154 131 | }, 132 | "group1": { 133 | "name": "t < 800 ms", 134 | "count": 7989, 135 | "percentage": 20 136 | }, 137 | "group2": { 138 | "name": "800 ms < t < 1200 ms", 139 | "count": 4914, 140 | "percentage": 12 141 | }, 142 | "group3": { 143 | "name": "t > 1200 ms", 144 | "count": 27091, 145 | "percentage": 68 146 | }, 147 | "group4": { 148 | "name": "failed", 149 | "count": 6, 150 | "percentage": 0 151 | }, 152 | "meanNumberOfRequestsPerSecond": { 153 | "total": 784.3137254901961, 154 | "ok": 784.1960784313726, 155 | "ko": 0.11764705882352941 156 | } 157 | } 158 | } 159 | } 160 | 161 | } -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/theme.js: -------------------------------------------------------------------------------- 1 | /* 2 | * Copyright 2011-2014 eBusiness Information, Groupe Excilys (www.ebusinessinformation.fr) 3 | * 4 | * Licensed under the Gatling Highcharts License 5 | */ 6 | Highcharts.theme = { 7 | chart: { 8 | backgroundColor: '#e6e5e0', 9 | borderWidth: 0, 10 | borderRadius: 8, 11 | plotBackgroundColor: null, 12 | plotShadow: false, 13 | plotBorderWidth: 0 14 | }, 15 | xAxis: { 16 | gridLineWidth: 0, 17 | lineColor: '#666', 18 | tickColor: '#666', 19 | labels: { 20 | style: { 21 | color: '#666' 22 | } 23 | }, 24 | title: { 25 | style: { 26 | color: '#666' 27 | } 28 | } 29 | }, 30 | yAxis: { 31 | alternateGridColor: null, 32 | minorTickInterval: null, 33 | gridLineColor: '#999', 34 | lineWidth: 0, 35 | tickWidth: 0, 36 | labels: { 37 | style: { 38 | color: '#666', 39 | fontWeight: 'bold' 40 | } 41 | }, 42 | title: { 43 | style: { 44 | color: '#666', 45 | font: 'bold 12px Lucida Grande, Lucida Sans Unicode, Verdana, Arial, Helvetica, sans-serif' 46 | } 47 | } 48 | }, 49 | labels: { 50 | style: { 51 | color: '#CCC' 52 | } 53 | }, 54 | 55 | 56 | rangeSelector: { 57 | buttonTheme: { 58 | fill: '#cfc9c6', 59 | stroke: '#000000', 60 | style: { 61 | color: '#34332e', 62 | fontWeight: 'bold', 63 | borderColor: '#b2b2a9' 64 | }, 65 | states: { 66 | hover: { 67 | fill: '#92918C', 68 | stroke: '#000000', 69 | style: { 70 | color: '#34332e', 71 | fontWeight: 'bold', 72 | borderColor: '#8b897d' 73 | } 74 | }, 75 | select: { 76 | fill: '#E37400', 77 | stroke: '#000000', 78 | style: { 79 | color: '#FFF' 80 | } 81 | } 82 | } 83 | }, 84 | inputStyle: { 85 | backgroundColor: '#333', 86 | color: 'silver' 87 | }, 88 | labelStyle: { 89 | color: '#8b897d' 90 | } 91 | }, 92 | 93 | navigator: { 94 | handles: { 95 | backgroundColor: '#e6e5e0', 96 | borderColor: '#92918C' 97 | }, 98 | outlineColor: '#92918C', 99 | outlineWidth: 1, 100 | maskFill: 'rgba(146, 145, 140, 0.5)', 101 | series: { 102 | color: '#4572A7', 103 | lineColor: '#4572A7' 104 | } 105 | }, 106 | 107 | scrollbar: { 108 | buttonBackgroundColor: '#e6e5e0', 109 | buttonBorderWidth: 1, 110 | buttonBorderColor: '#92918C', 111 | buttonArrowColor: '#92918C', 112 | buttonBorderRadius: 2, 113 | 114 | barBorderWidth: 1, 115 | barBorderRadius: 0, 116 | barBackgroundColor: '#92918C', 117 | barBorderColor: '#92918C', 118 | 119 | rifleColor: '#92918C', 120 | 121 | trackBackgroundColor: '#b0b0a8', 122 | trackBorderWidth: 1, 123 | trackBorderColor: '#b0b0a8' 124 | } 125 | }; 126 | 127 | Highcharts.setOptions(Highcharts.theme); -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/js/unpack.js: -------------------------------------------------------------------------------- 1 | 'use strict'; 2 | 3 | var unpack = function (array) { 4 | var findNbSeries = function (array) { 5 | var currentPlotPack; 6 | var length = array.length; 7 | 8 | for (var i = 0; i < length; i++) { 9 | currentPlotPack = array[i][1]; 10 | if(currentPlotPack !== null) { 11 | return currentPlotPack.length; 12 | } 13 | } 14 | return 0; 15 | }; 16 | 17 | var i, j; 18 | var nbPlots = array.length; 19 | var nbSeries = findNbSeries(array); 20 | 21 | // Prepare unpacked array 22 | var unpackedArray = new Array(nbSeries); 23 | 24 | for (i = 0; i < nbSeries; i++) { 25 | unpackedArray[i] = new Array(nbPlots); 26 | } 27 | 28 | // Unpack the array 29 | for (i = 0; i < nbPlots; i++) { 30 | var timestamp = array[i][0]; 31 | var values = array[i][1]; 32 | for (j = 0; j < nbSeries; j++) { 33 | unpackedArray[j][i] = [timestamp * 1000, values === null ? null : values[j]]; 34 | } 35 | } 36 | 37 | return unpackedArray; 38 | }; 39 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_down_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_down_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_right_black.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/arrow_right_black.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/bootstrap.min.css: -------------------------------------------------------------------------------- 1 | .clearfix{*zoom:1;}.clearfix:before,.clearfix:after{display:table;content:"";line-height:0;} 2 | .clearfix:after{clear:both;} 3 | .hide-text{font:0/0 a;color:transparent;text-shadow:none;background-color:transparent;border:0;} 4 | .input-block-level{display:block;width:100%;min-height:30px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;} 5 | .tooltip{position:absolute;z-index:1030;display:block;visibility:visible;padding:5px;font-size:11px;opacity:0;filter:alpha(opacity=0);}.tooltip.in{opacity:0.8;filter:alpha(opacity=80);} 6 | .tooltip.top{margin-top:-3px;} 7 | .tooltip.right{margin-left:3px;} 8 | .tooltip.bottom{margin-top:3px;} 9 | .tooltip.left{margin-left:-3px;} 10 | .tooltip-inner{max-width:200px;padding:3px 8px;color:#ffffff;text-align:center;text-decoration:none;background-color:#000000;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;} 11 | .tooltip-arrow{position:absolute;width:0;height:0;border-color:transparent;border-style:solid;} 12 | .tooltip.top .tooltip-arrow{bottom:0;left:50%;margin-left:-5px;border-width:5px 5px 0;border-top-color:#000000;} 13 | .tooltip.right .tooltip-arrow{top:50%;left:0;margin-top:-5px;border-width:5px 5px 5px 0;border-right-color:#000000;} 14 | .tooltip.left .tooltip-arrow{top:50%;right:0;margin-top:-5px;border-width:5px 0 5px 5px;border-left-color:#000000;} 15 | .tooltip.bottom .tooltip-arrow{top:0;left:50%;margin-left:-5px;border-width:0 5px 5px;border-bottom-color:#000000;} 16 | .popover{position:absolute;top:0;left:0;z-index:1010;display:none;max-width:750px;padding:1px;background-color:#ffffff;-webkit-background-clip:padding-box;-moz-background-clip:padding;background-clip:padding-box;border:1px solid #ccc;border:1px solid rgba(0, 0, 0, 0.2);-webkit-border-radius:6px;-moz-border-radius:6px;border-radius:6px;-webkit-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);-moz-box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);box-shadow:0 5px 10px rgba(0, 0, 0, 0.2);}.popover.top{margin-top:-10px;} 17 | .popover.right{margin-left:10px;} 18 | .popover.bottom{margin-top:10px;} 19 | .popover.left{margin-left:-10px;} 20 | .popover-title{margin:0;padding:8px 14px;font-size:14px;font-weight:normal;line-height:18px;background-color:#f7f7f7;border-bottom:1px solid #ebebeb;-webkit-border-radius:5px 5px 0 0;-moz-border-radius:5px 5px 0 0;border-radius:5px 5px 0 0;} 21 | .popover-content{padding:9px 14px;}.popover-content p,.popover-content ul,.popover-content ol{margin-bottom:0;} 22 | .popover .arrow,.popover .arrow:after{position:absolute;display:inline-block;width:0;height:0;border-color:transparent;border-style:solid;} 23 | .popover .arrow:after{content:"";z-index:-1;} 24 | .popover.top .arrow{bottom:-10px;left:50%;margin-left:-10px;border-width:10px 10px 0;border-top-color:#ffffff;}.popover.top .arrow:after{border-width:11px 11px 0;border-top-color:rgba(0, 0, 0, 0.25);bottom:-1px;left:-11px;} 25 | .popover.right .arrow{top:50%;left:-10px;margin-top:-10px;border-width:10px 10px 10px 0;border-right-color:#ffffff;}.popover.right .arrow:after{border-width:11px 11px 11px 0;border-right-color:rgba(0, 0, 0, 0.25);bottom:-11px;left:-1px;} 26 | .popover.bottom .arrow{top:-10px;left:50%;margin-left:-10px;border-width:0 10px 10px;border-bottom-color:#ffffff;}.popover.bottom .arrow:after{border-width:0 11px 11px;border-bottom-color:rgba(0, 0, 0, 0.25);top:-1px;left:-11px;} 27 | .popover.left .arrow{top:50%;right:-10px;margin-top:-10px;border-width:10px 0 10px 10px;border-left-color:#ffffff;}.popover.left .arrow:after{border-width:11px 0 11px 11px;border-left-color:rgba(0, 0, 0, 0.25);bottom:-11px;right:-1px;} 28 | -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/cible.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/cible.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/favicon.ico -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/fond-degrade.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/fond-degrade.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/fond-lueur.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/fond-lueur.gif -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/little_arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/little_arrow_right.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/logo-gatling.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/logo-gatling.jpg -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/logo.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/sortable.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/sortable.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/sorted-down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/sorted-down.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/sorted-up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/sorted-up.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-fleche-bas.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-fleche-bas.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-fond.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-fond.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-l-roue.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-l-roue.png -------------------------------------------------------------------------------- /perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-l-temps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/perf-test-with-gatling/reports/gatling/bootloadsimulation-1520242453415/style/stat-l-temps.png -------------------------------------------------------------------------------- /perf-test-with-gatling/settings.gradle: -------------------------------------------------------------------------------- 1 | rootProject.name = 'perf-test-with-gatling' 2 | 3 | -------------------------------------------------------------------------------- /perf-test-with-gatling/src/test/scala/BootLoadSimulation.scala: -------------------------------------------------------------------------------- 1 | import io.gatling.core.Predef._ 2 | import io.gatling.http.Predef._ 3 | 4 | class BootLoadSimulation extends Simulation { 5 | 6 | private val baseUrl = "http://localhost:8080" 7 | private val endpoint = "/persons" 8 | private val contentType = "application/json" 9 | private val requestCount = 4 10 | 11 | private val simUsers = System.getProperty("SIM_USERS", "1").toInt 12 | 13 | private val httpConf = http 14 | .baseURL(baseUrl) 15 | .acceptHeader("application/json;charset=UTF-8") 16 | 17 | private val addPersonTest = repeat(requestCount) { 18 | exec(http("add-person-test") 19 | .post(endpoint) 20 | .header("Content-Type", contentType) 21 | .body(StringBody( 22 | s""" 23 | | { 24 | | "firstName": "test-firstName", 25 | | "lastName": "test-lastName" 26 | | } 27 | """.stripMargin 28 | )).check(status.is(201))) 29 | } 30 | private val scn = scenario("BootLoadSimulation") 31 | .exec(addPersonTest) 32 | 33 | setUp(scn.inject(atOnceUsers(simUsers))).protocols(httpConf) 34 | } 35 | -------------------------------------------------------------------------------- /person-registration-slow-service/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | 12 | ### IntelliJ IDEA ### 13 | .idea 14 | *.iws 15 | *.iml 16 | *.ipr 17 | 18 | ### NetBeans ### 19 | nbproject/private/ 20 | build/ 21 | nbbuild/ 22 | dist/ 23 | nbdist/ 24 | .nb-gradle/ -------------------------------------------------------------------------------- /person-registration-slow-service/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/person-registration-slow-service/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /person-registration-slow-service/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip 2 | -------------------------------------------------------------------------------- /person-registration-slow-service/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.xyzz.gsdd 7 | person-registration-slow-service 8 | 0.0.1-SNAPSHOT 9 | jar 10 | 11 | person-registration-slow-service 12 | Demo project for Spring Boot 13 | 14 | 15 | org.springframework.boot 16 | spring-boot-starter-parent 17 | 2.0.0.RELEASE 18 | 19 | 20 | 21 | 22 | UTF-8 23 | UTF-8 24 | 1.8 25 | 1.2.20 26 | 27 | 28 | 29 | 30 | org.springframework.boot 31 | spring-boot-starter-webflux 32 | 33 | 34 | com.fasterxml.jackson.module 35 | jackson-module-kotlin 36 | 37 | 38 | org.jetbrains.kotlin 39 | kotlin-stdlib-jdk8 40 | 41 | 42 | org.jetbrains.kotlin 43 | kotlin-reflect 44 | 45 | 46 | 47 | org.springframework.boot 48 | spring-boot-starter-test 49 | test 50 | 51 | 52 | io.projectreactor 53 | reactor-test 54 | test 55 | 56 | 57 | 58 | 59 | ${project.basedir}/src/main/kotlin 60 | ${project.basedir}/src/test/kotlin 61 | 62 | 63 | org.springframework.boot 64 | spring-boot-maven-plugin 65 | 66 | 67 | kotlin-maven-plugin 68 | org.jetbrains.kotlin 69 | 70 | 71 | -Xjsr305=strict 72 | 73 | 74 | spring 75 | 76 | 77 | 78 | 79 | org.jetbrains.kotlin 80 | kotlin-maven-allopen 81 | ${kotlin.version} 82 | 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /person-registration-slow-service/src/main/kotlin/com/xyzz/gsdd/personregistrationslowservice/PersonRegistrationSlowServiceApplication.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.personregistrationslowservice 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication 4 | import org.springframework.boot.runApplication 5 | 6 | @SpringBootApplication 7 | class PersonRegistrationSlowServiceApplication 8 | 9 | fun main(args: Array) { 10 | runApplication(*args) 11 | } 12 | -------------------------------------------------------------------------------- /person-registration-slow-service/src/main/kotlin/com/xyzz/gsdd/personregistrationslowservice/controllers/RegistrationController.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.personregistrationslowservice.controllers 2 | 3 | import com.xyzz.gsdd.personregistrationslowservice.models.Person 4 | import org.springframework.http.HttpStatus.CREATED 5 | import org.springframework.web.bind.annotation.PostMapping 6 | import org.springframework.web.bind.annotation.RequestBody 7 | import org.springframework.web.bind.annotation.ResponseStatus 8 | import org.springframework.web.bind.annotation.RestController 9 | import reactor.core.publisher.Mono 10 | import java.time.Duration 11 | import java.util.UUID 12 | 13 | @RestController("/register") 14 | class RegistrationController { 15 | 16 | @PostMapping 17 | @ResponseStatus(CREATED) 18 | fun register(@RequestBody person: Mono): Mono { 19 | return person.delayElement(Duration.ofMillis(200)) // Mimic blocking nature 20 | .map { it.copy(id = UUID.randomUUID()) } 21 | } 22 | 23 | } 24 | -------------------------------------------------------------------------------- /person-registration-slow-service/src/main/kotlin/com/xyzz/gsdd/personregistrationslowservice/models/Person.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.personregistrationslowservice.models 2 | 3 | import java.util.UUID 4 | 5 | data class Person(val firstName: String, val lastName: String, val id: UUID? = null) 6 | -------------------------------------------------------------------------------- /person-registration-slow-service/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | server.port=8090 2 | -------------------------------------------------------------------------------- /person-registration-slow-service/src/test/kotlin/com/xyzz/gsdd/personregistrationslowservice/PersonRegistrationSlowServiceApplicationTests.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.personregistrationslowservice 2 | 3 | import org.junit.Test 4 | import org.junit.runner.RunWith 5 | import org.springframework.boot.test.context.SpringBootTest 6 | import org.springframework.test.context.junit4.SpringRunner 7 | 8 | @RunWith(SpringRunner::class) 9 | @SpringBootTest 10 | class PersonRegistrationSlowServiceApplicationTests { 11 | 12 | @Test 13 | fun contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /person-registration-slow-service/src/test/kotlin/com/xyzz/gsdd/personregistrationslowservice/controllers/RegistrationControllerTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.personregistrationslowservice.controllers 2 | 3 | import com.xyzz.gsdd.personregistrationslowservice.models.Person 4 | import org.junit.Test 5 | import org.junit.runner.RunWith 6 | import org.springframework.beans.factory.annotation.Autowired 7 | import org.springframework.boot.test.autoconfigure.web.reactive.WebFluxTest 8 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8 9 | import org.springframework.test.context.junit4.SpringRunner 10 | import org.springframework.test.web.reactive.server.WebTestClient 11 | import org.springframework.web.reactive.function.BodyInserters 12 | 13 | @RunWith(SpringRunner::class) 14 | @WebFluxTest(controllers = [RegistrationController::class]) 15 | class RegistrationControllerTest { 16 | @Autowired 17 | lateinit var webTestClient: WebTestClient 18 | 19 | @Test 20 | fun `should register a person`() { 21 | val person = Person("firstName", "secondName") 22 | 23 | webTestClient.post().uri("/register") 24 | .contentType(APPLICATION_JSON_UTF8) 25 | .accept(APPLICATION_JSON_UTF8) 26 | .body(BodyInserters.fromObject(person)) 27 | .exchange() 28 | .expectStatus().isCreated 29 | .expectBody() 30 | .jsonPath("firstName").isEqualTo(person.firstName) 31 | .jsonPath("lastName").isEqualTo(person.lastName) 32 | .jsonPath("id").isNotEmpty 33 | } 34 | } 35 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | 12 | ### IntelliJ IDEA ### 13 | .idea 14 | *.iws 15 | *.iml 16 | *.ipr 17 | 18 | ### NetBeans ### 19 | nbproject/private/ 20 | build/ 21 | nbbuild/ 22 | dist/ 23 | nbdist/ 24 | .nb-gradle/ -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/sample-reactive-spring-boot-2/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip 2 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.xyzz.gsdd 7 | sample-reactive-spring-boot-2 8 | 0.0.1-SNAPSHOT 9 | jar 10 | 11 | sample-reactive-spring-boot-2 12 | Demo project for Spring Boot 13 | 14 | 15 | org.springframework.boot 16 | spring-boot-starter-parent 17 | 2.0.0.RELEASE 18 | 19 | 20 | 21 | 22 | UTF-8 23 | UTF-8 24 | 1.8 25 | 1.2.20 26 | 27 | 28 | 29 | 30 | org.springframework.boot 31 | spring-boot-starter-webflux 32 | 33 | 34 | com.fasterxml.jackson.module 35 | jackson-module-kotlin 36 | 37 | 38 | org.jetbrains.kotlin 39 | kotlin-stdlib-jdk8 40 | 41 | 42 | org.jetbrains.kotlin 43 | kotlin-reflect 44 | 45 | 46 | 47 | org.springframework.boot 48 | spring-boot-starter-test 49 | test 50 | 51 | 52 | io.projectreactor 53 | reactor-test 54 | test 55 | 56 | 57 | com.github.tomakehurst 58 | wiremock-standalone 59 | 2.6.0 60 | test 61 | 62 | 63 | 64 | 65 | ${project.basedir}/src/main/kotlin 66 | ${project.basedir}/src/test/kotlin 67 | 68 | 69 | org.springframework.boot 70 | spring-boot-maven-plugin 71 | 72 | 73 | kotlin-maven-plugin 74 | org.jetbrains.kotlin 75 | 76 | 77 | -Xjsr305=strict 78 | 79 | 80 | spring 81 | 82 | 83 | 84 | 85 | org.jetbrains.kotlin 86 | kotlin-maven-allopen 87 | ${kotlin.version} 88 | 89 | 90 | 91 | 92 | 93 | 94 | 95 | 96 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplereactivespringboot2/SampleReactiveSpringBoot2Application.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication 4 | import org.springframework.boot.runApplication 5 | 6 | @SpringBootApplication 7 | class SampleReactiveSpringBoot2Application 8 | 9 | fun main(args: Array) { 10 | runApplication(*args) 11 | } 12 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplereactivespringboot2/controllers/PersonController.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2.controllers 2 | 3 | import com.xyzz.gsdd.samplereactivespringboot2.models.Person 4 | import com.xyzz.gsdd.samplereactivespringboot2.services.PersonRegistrationService 5 | import org.springframework.beans.factory.annotation.Autowired 6 | import org.springframework.http.HttpStatus.CREATED 7 | import org.springframework.web.bind.annotation.PostMapping 8 | import org.springframework.web.bind.annotation.RequestBody 9 | import org.springframework.web.bind.annotation.ResponseStatus 10 | import org.springframework.web.bind.annotation.RestController 11 | import reactor.core.publisher.Mono 12 | 13 | @RestController("/persons") 14 | class PersonController { 15 | @Autowired 16 | lateinit var personRegistrationService: PersonRegistrationService 17 | 18 | @PostMapping 19 | @ResponseStatus(CREATED) 20 | fun addPerson(@RequestBody person: Person): Mono { 21 | return personRegistrationService.addPerson(person) 22 | } 23 | } 24 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplereactivespringboot2/models/Person.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2.models 2 | 3 | import java.util.UUID 4 | 5 | data class Person(val firstName: String, val lastName: String, val id: UUID? = null) 6 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplereactivespringboot2/services/PersonRegistrationService.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2.services 2 | 3 | import com.xyzz.gsdd.samplereactivespringboot2.models.Person 4 | import org.springframework.beans.factory.annotation.Value 5 | import org.springframework.http.HttpHeaders.ACCEPT 6 | import org.springframework.http.HttpHeaders.CONTENT_TYPE 7 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE 8 | import org.springframework.stereotype.Service 9 | import org.springframework.web.reactive.function.BodyInserters.fromObject 10 | import org.springframework.web.reactive.function.client.WebClient 11 | import reactor.core.publisher.Mono 12 | 13 | @Service 14 | class PersonRegistrationService(@Value("\${registration.service}") private val registrationServiceBaseUrl: String) { 15 | 16 | private val webClient = WebClient.builder().baseUrl(registrationServiceBaseUrl).build() 17 | 18 | fun addPerson(person: Person): Mono { 19 | return webClient.post() 20 | .uri("/register") 21 | .header(CONTENT_TYPE, APPLICATION_JSON_UTF8_VALUE) 22 | .header(ACCEPT, APPLICATION_JSON_UTF8_VALUE) 23 | .body(fromObject(person)) 24 | .exchange() 25 | .flatMap { it.bodyToMono(Person::class.java) } 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | registration.service=http://localhost:8090 2 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/test/kotlin/com/xyzz/gsdd/samplereactivespringboot2/SampleReactiveSpringBoot2ApplicationTests.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2 2 | 3 | import org.junit.Test 4 | import org.junit.runner.RunWith 5 | import org.springframework.boot.test.context.SpringBootTest 6 | import org.springframework.test.context.junit4.SpringRunner 7 | 8 | @RunWith(SpringRunner::class) 9 | @SpringBootTest 10 | class SampleReactiveSpringBoot2ApplicationTests { 11 | 12 | @Test 13 | fun contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/test/kotlin/com/xyzz/gsdd/samplereactivespringboot2/controllers/PersonControllerTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2.controllers 2 | 3 | import com.xyzz.gsdd.samplereactivespringboot2.models.Person 4 | import org.junit.Before 5 | import org.junit.Test 6 | import org.junit.runner.RunWith 7 | import org.springframework.boot.test.context.SpringBootTest 8 | import org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT 9 | import org.springframework.boot.web.server.LocalServerPort 10 | import org.springframework.http.HttpStatus.CREATED 11 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8 12 | import org.springframework.test.context.junit4.SpringRunner 13 | import org.springframework.web.reactive.function.client.WebClient 14 | import reactor.core.publisher.Mono 15 | import reactor.test.test 16 | 17 | @RunWith(SpringRunner::class) 18 | @SpringBootTest(webEnvironment = RANDOM_PORT) 19 | class PersonControllerTest { 20 | @LocalServerPort 21 | var port: Int? = null 22 | 23 | lateinit var webClient: WebClient 24 | 25 | @Before 26 | fun setUp() { 27 | webClient = WebClient.create("http://localhost:$port") 28 | } 29 | 30 | @Test 31 | fun `should add a Person`() { 32 | val person = Person("firstName", "lastName") 33 | 34 | webClient.post().uri("/persons") 35 | .accept(APPLICATION_JSON_UTF8) 36 | .body(Mono.just(person), Person::class.java) 37 | .exchange() 38 | .map { it.statusCode() } 39 | .test() 40 | .expectNext(CREATED) 41 | .verifyComplete() 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /sample-reactive-spring-boot-2/src/test/kotlin/com/xyzz/gsdd/samplereactivespringboot2/services/PersonRegistrationServiceTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplereactivespringboot2.services 2 | 3 | import com.github.tomakehurst.wiremock.client.WireMock.aResponse 4 | import com.github.tomakehurst.wiremock.client.WireMock.matching 5 | import com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath 6 | import com.github.tomakehurst.wiremock.client.WireMock.post 7 | import com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor 8 | import com.github.tomakehurst.wiremock.client.WireMock.stubFor 9 | import com.github.tomakehurst.wiremock.client.WireMock.urlMatching 10 | import com.github.tomakehurst.wiremock.client.WireMock.verify 11 | import com.github.tomakehurst.wiremock.junit.WireMockRule 12 | import com.xyzz.gsdd.samplereactivespringboot2.models.Person 13 | import org.junit.Rule 14 | import org.junit.Test 15 | import org.junit.runner.RunWith 16 | import org.springframework.beans.factory.annotation.Autowired 17 | import org.springframework.boot.test.context.SpringBootTest 18 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE 19 | import org.springframework.test.context.junit4.SpringRunner 20 | import reactor.test.test 21 | import java.util.Objects.isNull 22 | 23 | @RunWith(SpringRunner::class) 24 | @SpringBootTest 25 | class PersonRegistrationServiceTest { 26 | 27 | @Autowired 28 | private lateinit var personRegistrationService: PersonRegistrationService 29 | 30 | @get:Rule 31 | val wireMockRule = WireMockRule(8090) 32 | 33 | @Test 34 | fun `should call registrationService`() { 35 | val person = Person("firstName", "lastName") 36 | stubFor(post("/register") 37 | .willReturn( 38 | aResponse() 39 | .withHeader("Content-Type", APPLICATION_JSON_UTF8_VALUE) 40 | .withBody("""{ 41 | | "firstName": "${person.firstName}", 42 | | "lastName": "${person.lastName}", 43 | | "id": "ee0495d7-348f-44fc-968c-1d03104c0456" 44 | |} 45 | """.trimMargin()) 46 | )) 47 | 48 | personRegistrationService.addPerson(person) 49 | .test() 50 | .assertNext { 51 | it.firstName.equals(person.firstName) && it.lastName.equals(person.lastName) && !isNull(it.id) 52 | } 53 | .verifyComplete() 54 | 55 | verify(postRequestedFor(urlMatching("/register")) 56 | .withRequestBody(matchingJsonPath("firstName")) 57 | .withRequestBody(matchingJsonPath("lastName")) 58 | .withHeader("Content-Type", matching(APPLICATION_JSON_UTF8_VALUE))) 59 | } 60 | } 61 | -------------------------------------------------------------------------------- /sample-spring-boot-1/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | 12 | ### IntelliJ IDEA ### 13 | .idea 14 | *.iws 15 | *.iml 16 | *.ipr 17 | 18 | ### NetBeans ### 19 | nbproject/private/ 20 | build/ 21 | nbbuild/ 22 | dist/ 23 | nbdist/ 24 | .nb-gradle/ -------------------------------------------------------------------------------- /sample-spring-boot-1/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/sample-spring-boot-1/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /sample-spring-boot-1/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip 2 | -------------------------------------------------------------------------------- /sample-spring-boot-1/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.xyzz.gsdd 7 | sample-spring-boot-1 8 | 0.0.1-SNAPSHOT 9 | jar 10 | 11 | sample-spring-boot-1 12 | Demo project for Spring Boot 13 | 14 | 15 | org.springframework.boot 16 | spring-boot-starter-parent 17 | 1.5.10.RELEASE 18 | 19 | 20 | 21 | 22 | UTF-8 23 | UTF-8 24 | 1.8 25 | 1.2.20 26 | 27 | 28 | 29 | 30 | org.springframework.boot 31 | spring-boot-starter-web 32 | 33 | 34 | com.fasterxml.jackson.module 35 | jackson-module-kotlin 36 | 2.9.2 37 | 38 | 39 | org.jetbrains.kotlin 40 | kotlin-stdlib-jdk8 41 | ${kotlin.version} 42 | 43 | 44 | org.jetbrains.kotlin 45 | kotlin-reflect 46 | ${kotlin.version} 47 | 48 | 49 | 50 | org.springframework.boot 51 | spring-boot-starter-test 52 | test 53 | 54 | 55 | com.github.tomakehurst 56 | wiremock-standalone 57 | 2.6.0 58 | test 59 | 60 | 61 | 62 | 63 | ${project.basedir}/src/main/kotlin 64 | ${project.basedir}/src/test/kotlin 65 | 66 | 67 | org.springframework.boot 68 | spring-boot-maven-plugin 69 | 70 | 71 | kotlin-maven-plugin 72 | org.jetbrains.kotlin 73 | ${kotlin.version} 74 | 75 | 76 | -Xjsr305=strict 77 | 78 | 79 | spring 80 | 81 | 1.8 82 | 83 | 84 | 85 | compile 86 | compile 87 | 88 | compile 89 | 90 | 91 | 92 | test-compile 93 | test-compile 94 | 95 | test-compile 96 | 97 | 98 | 99 | 100 | 101 | org.jetbrains.kotlin 102 | kotlin-maven-allopen 103 | ${kotlin.version} 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/main/kotlin/com/xyzz/gsdd/samplespringboot1/SampleSpringBoot1Application.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1 2 | 3 | import org.springframework.boot.SpringApplication 4 | import org.springframework.boot.autoconfigure.SpringBootApplication 5 | 6 | @SpringBootApplication 7 | class SampleSpringBoot1Application 8 | 9 | fun main(args: Array) { 10 | SpringApplication.run(SampleSpringBoot1Application::class.java, *args) 11 | } 12 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/main/kotlin/com/xyzz/gsdd/samplespringboot1/controllers/PersonController.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1.controllers 2 | 3 | import com.xyzz.gsdd.samplespringboot1.models.Person 4 | import com.xyzz.gsdd.samplespringboot1.services.PersonRegistrationService 5 | import org.springframework.beans.factory.annotation.Autowired 6 | import org.springframework.http.HttpStatus.CREATED 7 | import org.springframework.web.bind.annotation.PostMapping 8 | import org.springframework.web.bind.annotation.RequestBody 9 | import org.springframework.web.bind.annotation.ResponseStatus 10 | import org.springframework.web.bind.annotation.RestController 11 | 12 | @RestController("/persons") 13 | class PersonController { 14 | @Autowired 15 | lateinit var personRegistrationService: PersonRegistrationService 16 | 17 | @PostMapping 18 | @ResponseStatus(CREATED) 19 | fun addPerson(@RequestBody person: Person): Person { 20 | return personRegistrationService.addPerson(person) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/main/kotlin/com/xyzz/gsdd/samplespringboot1/models/Person.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1.models 2 | 3 | import java.util.UUID 4 | 5 | data class Person(val firstName: String, val lastName: String, val id:UUID? = null) 6 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/main/kotlin/com/xyzz/gsdd/samplespringboot1/services/PersonRegistrationService.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1.services 2 | 3 | import com.xyzz.gsdd.samplespringboot1.models.Person 4 | import org.springframework.beans.factory.annotation.Value 5 | import org.springframework.boot.web.client.RestTemplateBuilder 6 | import org.springframework.http.HttpEntity 7 | import org.springframework.stereotype.Service 8 | 9 | @Service 10 | class PersonRegistrationService(restTemplateBuilder: RestTemplateBuilder) { 11 | @Value("\${registration.service}") 12 | private lateinit var registrationServiceEndpoint: String 13 | 14 | private val restTemplate = restTemplateBuilder.build() 15 | 16 | fun addPerson(person: Person): Person { 17 | val nullablePerson = restTemplate.postForEntity("$registrationServiceEndpoint/register", HttpEntity(person), 18 | Person::class.java) 19 | return nullablePerson.body ?: person 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | registration.service=http://localhost:8090 2 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/test/kotlin/com/xyzz/gsdd/samplespringboot1/SampleSpringBoot1ApplicationTests.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1 2 | 3 | import org.junit.Test 4 | import org.junit.runner.RunWith 5 | import org.springframework.boot.test.context.SpringBootTest 6 | import org.springframework.test.context.junit4.SpringRunner 7 | 8 | @RunWith(SpringRunner::class) 9 | @SpringBootTest 10 | class SampleSpringBoot1ApplicationTests { 11 | 12 | @Test 13 | fun contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/test/kotlin/com/xyzz/gsdd/samplespringboot1/controllers/PersonControllerTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1.controllers 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper 4 | import com.fasterxml.jackson.module.kotlin.readValue 5 | import com.xyzz.gsdd.samplespringboot1.models.Person 6 | import org.assertj.core.api.Assertions.assertThat 7 | import org.junit.Test 8 | import org.junit.runner.RunWith 9 | import org.springframework.beans.factory.annotation.Autowired 10 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest 11 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8 12 | import org.springframework.test.context.junit4.SpringRunner 13 | import org.springframework.test.web.servlet.MockMvc 14 | import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post 15 | import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status 16 | 17 | @RunWith(SpringRunner::class) 18 | @WebMvcTest(controllers = [(PersonController::class)]) 19 | class PersonControllerTest { 20 | @Autowired 21 | lateinit var mockMvc: MockMvc 22 | @Autowired 23 | lateinit var mapper: ObjectMapper 24 | 25 | @Test 26 | fun `adds a Person`() { 27 | val person = Person("firstName", "lastName") 28 | 29 | val result = mockMvc.perform(post("/persons") 30 | .content(mapper.writeValueAsString(person)) 31 | .contentType(APPLICATION_JSON_UTF8) 32 | .accept(APPLICATION_JSON_UTF8)) 33 | .andExpect(status().isCreated) 34 | .andReturn() 35 | 36 | val addedPerson = mapper.readValue(result.response.contentAsString) 37 | assertThat(addedPerson.firstName).isEqualTo(person.firstName) 38 | assertThat(addedPerson.lastName).isEqualTo(person.lastName) 39 | assertThat(addedPerson.id).isNotNull() 40 | } 41 | } 42 | -------------------------------------------------------------------------------- /sample-spring-boot-1/src/test/kotlin/com/xyzz/gsdd/samplespringboot1/services/PersonRegistrationServiceTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot1.services 2 | 3 | import com.github.tomakehurst.wiremock.client.WireMock.aResponse 4 | import com.github.tomakehurst.wiremock.client.WireMock.post 5 | import com.github.tomakehurst.wiremock.client.WireMock.stubFor 6 | import com.github.tomakehurst.wiremock.junit.WireMockRule 7 | import com.xyzz.gsdd.samplespringboot1.models.Person 8 | import org.assertj.core.api.Assertions.assertThat 9 | import org.junit.Before 10 | import org.junit.Rule 11 | import org.junit.Test 12 | import org.junit.runner.RunWith 13 | import org.springframework.beans.factory.annotation.Autowired 14 | import org.springframework.boot.test.context.SpringBootTest 15 | import org.springframework.boot.web.client.RestTemplateBuilder 16 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE 17 | import org.springframework.test.context.junit4.SpringRunner 18 | import org.springframework.web.client.RestTemplate 19 | 20 | 21 | @RunWith(SpringRunner::class) 22 | @SpringBootTest 23 | class PersonRegistrationServiceTest { 24 | @Autowired 25 | private lateinit var personRegistrationService: PersonRegistrationService 26 | 27 | private lateinit var restTemplate: RestTemplate 28 | 29 | @get:Rule 30 | val wireMockRule = WireMockRule(8090) 31 | 32 | @Before 33 | fun setUp() { 34 | restTemplate = RestTemplateBuilder().build() 35 | } 36 | 37 | @Test 38 | fun `should call registrationService`() { 39 | val person = Person("firstName", "lastName") 40 | stubFor(post("/register") 41 | .willReturn( 42 | aResponse() 43 | .withHeader("Content-Type", APPLICATION_JSON_UTF8_VALUE) 44 | .withBody("""{ 45 | | "firstName": "${person.firstName}", 46 | | "lastName": "${person.lastName}", 47 | | "id": "ee0495d7-348f-44fc-968c-1d03104c0456" 48 | |} 49 | """.trimMargin()) 50 | )) 51 | 52 | val result = personRegistrationService.addPerson(person) 53 | 54 | assertThat(result.firstName).isEqualTo(person.firstName) 55 | assertThat(result.lastName).isEqualTo(person.lastName) 56 | assertThat(result.id).isNotNull() 57 | } 58 | } 59 | -------------------------------------------------------------------------------- /sample-spring-boot-2/.gitignore: -------------------------------------------------------------------------------- 1 | target/ 2 | !.mvn/wrapper/maven-wrapper.jar 3 | 4 | ### STS ### 5 | .apt_generated 6 | .classpath 7 | .factorypath 8 | .project 9 | .settings 10 | .springBeans 11 | 12 | ### IntelliJ IDEA ### 13 | .idea 14 | *.iws 15 | *.iml 16 | *.ipr 17 | 18 | ### NetBeans ### 19 | nbproject/private/ 20 | build/ 21 | nbbuild/ 22 | dist/ 23 | nbdist/ 24 | .nb-gradle/ -------------------------------------------------------------------------------- /sample-spring-boot-2/.mvn/wrapper/maven-wrapper.jar: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/raj-saxena/spring-boot-1-vs-2-performance/4a1867e145c8e5abb77b350fa400330380e619ee/sample-spring-boot-2/.mvn/wrapper/maven-wrapper.jar -------------------------------------------------------------------------------- /sample-spring-boot-2/.mvn/wrapper/maven-wrapper.properties: -------------------------------------------------------------------------------- 1 | distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.2/apache-maven-3.5.2-bin.zip 2 | -------------------------------------------------------------------------------- /sample-spring-boot-2/pom.xml: -------------------------------------------------------------------------------- 1 | 2 | 4 | 4.0.0 5 | 6 | com.xyzz.gsdd 7 | sample-spring-boot-2 8 | 0.0.1-SNAPSHOT 9 | jar 10 | 11 | sample-spring-boot-2 12 | Demo project for Spring Boot 13 | 14 | 15 | org.springframework.boot 16 | spring-boot-starter-parent 17 | 2.0.0.RELEASE 18 | 19 | 20 | 21 | 22 | UTF-8 23 | UTF-8 24 | 1.8 25 | 1.2.20 26 | 27 | 28 | 29 | 30 | org.springframework.boot 31 | spring-boot-starter-web 32 | 33 | 34 | com.fasterxml.jackson.module 35 | jackson-module-kotlin 36 | 37 | 38 | org.jetbrains.kotlin 39 | kotlin-stdlib-jdk8 40 | 41 | 42 | org.jetbrains.kotlin 43 | kotlin-reflect 44 | 45 | 46 | 47 | org.springframework.boot 48 | spring-boot-starter-test 49 | test 50 | 51 | 52 | com.github.tomakehurst 53 | wiremock-standalone 54 | 2.6.0 55 | test 56 | 57 | 58 | 59 | 60 | ${project.basedir}/src/main/kotlin 61 | ${project.basedir}/src/test/kotlin 62 | 63 | 64 | org.springframework.boot 65 | spring-boot-maven-plugin 66 | 67 | 68 | kotlin-maven-plugin 69 | org.jetbrains.kotlin 70 | 71 | 72 | -Xjsr305=strict 73 | 74 | 75 | spring 76 | 77 | 78 | 79 | 80 | org.jetbrains.kotlin 81 | kotlin-maven-allopen 82 | ${kotlin.version} 83 | 84 | 85 | 86 | 87 | 88 | 89 | 90 | 91 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplespringboot2/SampleSpringBoot2Application.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2 2 | 3 | import org.springframework.boot.autoconfigure.SpringBootApplication 4 | import org.springframework.boot.runApplication 5 | 6 | @SpringBootApplication 7 | class SampleSpringBoot2Application 8 | 9 | fun main(args: Array) { 10 | runApplication(*args) 11 | } 12 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplespringboot2/controllers/PersonController.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2.controllers 2 | 3 | import com.xyzz.gsdd.samplespringboot2.models.Person 4 | import com.xyzz.gsdd.samplespringboot2.services.PersonRegistrationService 5 | import org.springframework.beans.factory.annotation.Autowired 6 | import org.springframework.http.HttpStatus.CREATED 7 | import org.springframework.web.bind.annotation.PostMapping 8 | import org.springframework.web.bind.annotation.RequestBody 9 | import org.springframework.web.bind.annotation.ResponseStatus 10 | import org.springframework.web.bind.annotation.RestController 11 | 12 | @RestController("/persons") 13 | class PersonController { 14 | @Autowired 15 | lateinit var personRegistrationService: PersonRegistrationService 16 | 17 | @PostMapping 18 | @ResponseStatus(CREATED) 19 | fun addPerson(@RequestBody person: Person): Person { 20 | return personRegistrationService.addPerson(person) 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplespringboot2/models/Person.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2.models 2 | 3 | import java.util.UUID 4 | 5 | data class Person(val firstName: String, val lastName: String, val id:UUID? = null) 6 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/main/kotlin/com/xyzz/gsdd/samplespringboot2/services/PersonRegistrationService.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2.services 2 | 3 | import com.xyzz.gsdd.samplespringboot2.models.Person 4 | import org.springframework.beans.factory.annotation.Value 5 | import org.springframework.boot.web.client.RestTemplateBuilder 6 | import org.springframework.http.HttpEntity 7 | import org.springframework.stereotype.Service 8 | 9 | @Service 10 | class PersonRegistrationService(restTemplateBuilder: RestTemplateBuilder) { 11 | @Value("\${registration.service}") 12 | private lateinit var registrationServiceEndpoint: String 13 | 14 | private val restTemplate = restTemplateBuilder.build() 15 | 16 | fun addPerson(person: Person): Person { 17 | val nullablePerson = restTemplate.postForEntity("$registrationServiceEndpoint/register", HttpEntity(person), 18 | Person::class.java) 19 | return nullablePerson.body ?: person 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/main/resources/application.properties: -------------------------------------------------------------------------------- 1 | registration.service=http://localhost:8090 2 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/test/kotlin/com/xyzz/gsdd/samplespringboot2/SampleSpringBoot2ApplicationTests.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2 2 | 3 | import org.junit.Test 4 | import org.junit.runner.RunWith 5 | import org.springframework.boot.test.context.SpringBootTest 6 | import org.springframework.test.context.junit4.SpringRunner 7 | 8 | @RunWith(SpringRunner::class) 9 | @SpringBootTest 10 | class SampleSpringBoot2ApplicationTests { 11 | 12 | @Test 13 | fun contextLoads() { 14 | } 15 | 16 | } 17 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/test/kotlin/com/xyzz/gsdd/samplespringboot2/controllers/PersonControllerTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2.controllers 2 | 3 | import com.fasterxml.jackson.databind.ObjectMapper 4 | import com.fasterxml.jackson.module.kotlin.readValue 5 | import com.xyzz.gsdd.samplespringboot2.models.Person 6 | import com.xyzz.gsdd.samplespringboot2.services.PersonRegistrationService 7 | import org.assertj.core.api.Assertions.assertThat 8 | import org.junit.Test 9 | import org.junit.runner.RunWith 10 | import org.mockito.BDDMockito.given 11 | import org.springframework.beans.factory.annotation.Autowired 12 | import org.springframework.boot.test.autoconfigure.web.servlet.WebMvcTest 13 | import org.springframework.boot.test.mock.mockito.MockBean 14 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8 15 | import org.springframework.test.context.junit4.SpringRunner 16 | import org.springframework.test.web.servlet.MockMvc 17 | import org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post 18 | import org.springframework.test.web.servlet.result.MockMvcResultMatchers.status 19 | import java.util.UUID 20 | 21 | @RunWith(SpringRunner::class) 22 | @WebMvcTest(controllers = [(PersonController::class)]) 23 | class PersonControllerTest { 24 | @MockBean 25 | lateinit var personRegistrationService: PersonRegistrationService 26 | 27 | @Autowired 28 | lateinit var mockMvc: MockMvc 29 | @Autowired 30 | lateinit var mapper: ObjectMapper 31 | 32 | @Test 33 | fun `adds a Person`() { 34 | val person = Person("firstName", "lastName") 35 | given(personRegistrationService.addPerson(person)).willReturn(person.copy(id = UUID.randomUUID())) 36 | 37 | val result = mockMvc.perform(post("/persons") 38 | .content(mapper.writeValueAsString(person)) 39 | .contentType(APPLICATION_JSON_UTF8) 40 | .accept(APPLICATION_JSON_UTF8)) 41 | .andExpect(status().isCreated) 42 | .andReturn() 43 | 44 | val addedPerson = mapper.readValue(result.response.contentAsString) 45 | assertThat(addedPerson.firstName).isEqualTo(person.firstName) 46 | assertThat(addedPerson.lastName).isEqualTo(person.lastName) 47 | assertThat(addedPerson.id).isNotNull() 48 | } 49 | } 50 | -------------------------------------------------------------------------------- /sample-spring-boot-2/src/test/kotlin/com/xyzz/gsdd/samplespringboot2/services/PersonRegistrationServiceTest.kt: -------------------------------------------------------------------------------- 1 | package com.xyzz.gsdd.samplespringboot2.services 2 | 3 | import com.github.tomakehurst.wiremock.client.WireMock.aResponse 4 | import com.github.tomakehurst.wiremock.client.WireMock.matching 5 | import com.github.tomakehurst.wiremock.client.WireMock.matchingJsonPath 6 | import com.github.tomakehurst.wiremock.client.WireMock.post 7 | import com.github.tomakehurst.wiremock.client.WireMock.postRequestedFor 8 | import com.github.tomakehurst.wiremock.client.WireMock.stubFor 9 | import com.github.tomakehurst.wiremock.client.WireMock.urlMatching 10 | import com.github.tomakehurst.wiremock.client.WireMock.verify 11 | import com.github.tomakehurst.wiremock.junit.WireMockRule 12 | import com.xyzz.gsdd.samplespringboot2.models.Person 13 | import org.assertj.core.api.Assertions.assertThat 14 | import org.junit.Rule 15 | import org.junit.Test 16 | import org.junit.runner.RunWith 17 | import org.springframework.beans.factory.annotation.Autowired 18 | import org.springframework.boot.test.context.SpringBootTest 19 | import org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE 20 | import org.springframework.test.context.junit4.SpringRunner 21 | 22 | 23 | @RunWith(SpringRunner::class) 24 | @SpringBootTest 25 | class PersonRegistrationServiceTest { 26 | @Autowired 27 | private lateinit var personRegistrationService: PersonRegistrationService 28 | 29 | @get:Rule 30 | val wireMockRule = WireMockRule(8090) 31 | 32 | @Test 33 | fun `should call registrationService`() { 34 | val person = Person("firstName", "lastName") 35 | stubFor(post("/register") 36 | .willReturn( 37 | aResponse() 38 | .withHeader("Content-Type", APPLICATION_JSON_UTF8_VALUE) 39 | .withBody("""{ 40 | | "firstName": "${person.firstName}", 41 | | "lastName": "${person.lastName}", 42 | | "id": "ee0495d7-348f-44fc-968c-1d03104c0456" 43 | |} 44 | """.trimMargin()) 45 | )) 46 | 47 | val result = personRegistrationService.addPerson(person) 48 | 49 | assertThat(result.firstName).isEqualTo(person.firstName) 50 | assertThat(result.lastName).isEqualTo(person.lastName) 51 | assertThat(result.id).isNotNull() 52 | 53 | verify(postRequestedFor(urlMatching("/register")) 54 | .withRequestBody(matchingJsonPath("firstName")) 55 | .withRequestBody(matchingJsonPath("lastName")) 56 | .withHeader("Content-Type", matching(APPLICATION_JSON_UTF8_VALUE))) 57 | } 58 | } 59 | --------------------------------------------------------------------------------