HONEYCOMB-287 Infra micro-benchmarks
[honeycomb.git] / infra / it / benchmark / pom.xml
1 <?xml version="1.0" encoding="UTF-8"?>
2
3 <!--
4   ~ Copyright (c) 2016 Cisco and/or its affiliates.
5   ~
6   ~ Licensed under the Apache License, Version 2.0 (the "License");
7   ~ you may not use this file except in compliance with the License.
8   ~ You may obtain a copy of the License at:
9   ~
10   ~     http://www.apache.org/licenses/LICENSE-2.0
11   ~
12   ~ Unless required by applicable law or agreed to in writing, software
13   ~ distributed under the License is distributed on an "AS IS" BASIS,
14   ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15   ~ See the License for the specific language governing permissions and
16   ~ limitations under the License.
17   -->
18
19 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
20          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
21
22     <parent>
23         <groupId>io.fd.honeycomb.common</groupId>
24         <artifactId>honeycomb-parent</artifactId>
25         <version>1.16.12-SNAPSHOT</version>
26         <relativePath>../../../common/honeycomb-parent</relativePath>
27     </parent>
28
29     <modelVersion>4.0.0</modelVersion>
30     <groupId>io.fd.honeycomb</groupId>
31     <artifactId>benchmark</artifactId>
32     <version>1.16.12-SNAPSHOT</version>
33     <packaging>jar</packaging>
34
35     <properties>
36         <jmh.version>1.15</jmh.version>
37         <uberjar.name>benchmarks</uberjar.name>
38     </properties>
39
40     <dependencies>
41         <dependency>
42             <groupId>org.openjdk.jmh</groupId>
43             <artifactId>jmh-core</artifactId>
44             <version>${jmh.version}</version>
45         </dependency>
46         <dependency>
47             <groupId>org.openjdk.jmh</groupId>
48             <artifactId>jmh-generator-annprocess</artifactId>
49             <version>${jmh.version}</version>
50             <scope>provided</scope>
51         </dependency>
52         <dependency>
53             <groupId>io.fd.honeycomb</groupId>
54             <artifactId>minimal-distribution</artifactId>
55             <version>${project.version}</version>
56         </dependency>
57         <dependency>
58             <groupId>io.fd.honeycomb.it</groupId>
59             <artifactId>honeycomb-test-model</artifactId>
60             <version>${project.version}</version>
61         </dependency>
62     </dependencies>
63
64     <build>
65         <resources>
66             <resource>
67                 <directory>${basedir}/src/main/resources</directory>
68                 <!-- Enable maven to replace properties in resource files -->
69                 <filtering>true</filtering>
70             </resource>
71         </resources>
72         <plugins>
73             <plugin>
74                 <artifactId>maven-dependency-plugin</artifactId>
75                 <executions>
76                     <execution>
77                         <id>build-classpath</id>
78                         <phase>compile</phase>
79                         <goals>
80                             <goal>build-classpath</goal>
81                         </goals>
82                         <configuration>
83                             <outputProperty>depClasspath</outputProperty>
84                         </configuration>
85                     </execution>
86                 </executions>
87             </plugin>
88             <plugin>
89                 <groupId>org.codehaus.mojo</groupId>
90                 <artifactId>exec-maven-plugin</artifactId>
91                 <executions>
92                     <execution>
93                         <id>benchmark</id>
94                         <phase>test</phase>
95                         <goals>
96                             <goal>java</goal>
97                         </goals>
98                         <configuration>
99                             <mainClass>org.openjdk.jmh.Main</mainClass>
100                             <systemProperties>
101                                 <systemProperty>
102                                     <key>java.class.path</key>
103                                     <value>${project.build.outputDirectory}${path.separator}${depClasspath}</value>
104                                 </systemProperty>
105                             </systemProperties>
106                             <arguments>
107                                 <!-- Reference org.openjdk.jmh.runner.options.CommandLineOptions -->
108
109                                 <!-- Fail on error -->
110                                 <argument>-foe=true</argument>
111
112                                 <!-- PROFILING -->
113                                 <!--        cl: Classloader profiling via standard MBeans
114                                           comp: JIT compiler profiling via standard MBeans
115                                             gc: GC profiling via standard MBeans
116                                          hs_cl: HotSpot (tm) classloader profiling via implementation-specific MBeans
117                                        hs_comp: HotSpot (tm) JIT compiler profiling via implementation-specific MBeans
118                                          hs_gc: HotSpot (tm) memory manager (GC) profiling via implementation-specific MBeans
119                                          hs_rt: HotSpot (tm) runtime profiling via implementation-specific MBeans
120                                         hs_thr: HotSpot (tm) threading subsystem via implementation-specific MBeans
121                                         pauses: Pauses profiler
122                                          stack: Simple and naive Java stack profiler -->
123                                 <!--<argument>-prof=gc</argument>-->
124
125                                 <!-- REPORT -->
126                                 <!-- formats = Available formats: text, csv, scsv, json, latex-->
127                                 <argument>-rf=csv</argument>
128                                 <argument>-rff=${project.build.directory}/benchmark.csv</argument>
129                             </arguments>
130                         </configuration>
131                     </execution>
132                 </executions>
133             </plugin>
134         </plugins>
135     </build>
136
137 </project>