<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements.  See the NOTICE file
distributed with this work for additional information
regarding copyright ownership.  The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License.  You may obtain a copy of the License at

  http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied.  See the License for the
specific language governing permissions and limitations
under the License.
-->
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>

	<groupId>org.apache.flink</groupId>
	<artifactId>benchmark</artifactId>
	<version>0.1</version>
	<packaging>jar</packaging>

	<name>Flink : Benchmark Job</name>
	<url>http://flink.apache.org</url>
	<inceptionYear>2014</inceptionYear>

	<licenses>
		<license>
			<name>The Apache Software License, Version 2.0</name>
			<url>https://www.apache.org/licenses/LICENSE-2.0.txt</url>
			<distribution>repo</distribution>
		</license>
	</licenses>

	<scm>
		<url>https://github.com/apache/flink-statefun</url>
		<connection>git@github.com:apache/flink-benchmarks.git</connection>
		<developerConnection>scm:git:https://gitbox.apache.org/repos/asf/flink-benchmarks.git</developerConnection>
	</scm>

	<properties>
		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
		<flink.version>1.14-SNAPSHOT</flink.version>
		<flink.shaded.version>10.0</flink.shaded.version>
		<netty.tcnative.version>2.0.25.Final</netty.tcnative.version>
		<java.version>1.8</java.version>
		<scala.binary.version>2.11</scala.binary.version>
		<maven.compiler.source>${java.version}</maven.compiler.source>
		<maven.compiler.target>${java.version}</maven.compiler.target>
		<slf4j.version>1.7.7</slf4j.version>
		<log4j.version>1.2.17</log4j.version>
		<jmh.version>1.19</jmh.version>
		<junit.version>4.12</junit.version>
		<avro.version>1.8.2</avro.version>
		<mockito.version>2.21.0</mockito.version>
		<maven.exec.version>1.6.0</maven.exec.version>
		<maven.compiler.version>3.1</maven.compiler.version>
		<chill.version>0.7.6</chill.version>
		<thrift.version>0.13.0</thrift.version>
		<protobuf.version>3.11.4</protobuf.version>
		<netty-tcnative.flavor>dynamic</netty-tcnative.flavor>
		<benchmarkExcludes>org.apache.flink.benchmark.full.*,org.apache.flink.state.benchmark.*,org.apache.flink.scheduler.benchmark.*</benchmarkExcludes>
		<benchmarks>.*</benchmarks>
	</properties>

	<repositories>
		<repository>
			<id>apache.snapshots</id>
			<name>Apache Development Snapshot Repository</name>
			<url>https://repository.apache.org/content/repositories/snapshots/</url>
			<releases>
				<enabled>false</enabled>
			</releases>
			<snapshots>
				<enabled>true</enabled>
			</snapshots>
		</repository>
	</repositories>

	<dependencies>
		<!-- Apache Flink dependencies -->
		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-java</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-clients_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-runtime_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-streaming-java_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
			<scope>test</scope>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-test-utils-junit</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<!-- explicitly add a standard logging framework, as Flink does not have
			a hard dependency on one specific framework by default -->
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>${slf4j.version}</version>
		</dependency>

		<dependency>
			<groupId>junit</groupId>
			<artifactId>junit</artifactId>
			<version>${junit.version}</version>
			<type>jar</type>
		</dependency>

		<dependency>
			<groupId>log4j</groupId>
			<artifactId>log4j</artifactId>
			<version>${log4j.version}</version>
		</dependency>

		<dependency>
			<groupId>org.openjdk.jmh</groupId>
			<artifactId>jmh-core</artifactId>
			<version>${jmh.version}</version>
		</dependency>

		<dependency>
			<groupId>org.openjdk.jmh</groupId>
			<artifactId>jmh-generator-annprocess</artifactId>
			<version>${jmh.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-statebackend-rocksdb_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-statebackend-rocksdb_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-avro</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-table-planner_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-tests</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-examples-batch_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
			<type>test-jar</type>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-cep_${scala.binary.version}</artifactId>
			<version>${flink.version}</version>
		</dependency>

		<dependency>
			<groupId>org.apache.flink</groupId>
			<artifactId>flink-shaded-netty-tcnative-${netty-tcnative.flavor}</artifactId>
			<version>${netty.tcnative.version}-${flink.shaded.version}</version>
		</dependency>

		<dependency>
			<groupId>org.mockito</groupId>
			<artifactId>mockito-core</artifactId>
			<version>${mockito.version}</version>
			<type>jar</type>
			<scope>test</scope>
		</dependency>

		<!-- serialization benchmark requirements -->

		<!-- Thrift -->
		<dependency>
			<groupId>com.twitter</groupId>
			<artifactId>chill-thrift</artifactId>
			<version>${chill.version}</version>
			<!-- exclusions for dependency conversion -->
			<exclusions>
				<exclusion>
					<groupId>com.esotericsoftware.kryo</groupId>
					<artifactId>kryo</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.thrift</groupId>
			<artifactId>libthrift</artifactId>
			<version>${thrift.version}</version>
			<exclusions>
				<exclusion>
					<groupId>javax.servlet</groupId>
					<artifactId>servlet-api</artifactId>
				</exclusion>
				<exclusion>
					<groupId>org.apache.httpcomponents</groupId>
					<artifactId>httpclient</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<!-- Protobuf -->
		<dependency>
			<groupId>com.twitter</groupId>
			<artifactId>chill-protobuf</artifactId>
			<version>${chill.version}</version>
			<!-- exclusions for dependency conversion -->
			<exclusions>
				<exclusion>
					<groupId>com.esotericsoftware.kryo</groupId>
					<artifactId>kryo</artifactId>
				</exclusion>
			</exclusions>
		</dependency>
		<dependency>
			<groupId>com.google.protobuf</groupId>
			<artifactId>protobuf-java</artifactId>
			<version>${protobuf.version}</version>
		</dependency>
	</dependencies>

	<profiles>
		<profile>
			<id>test</id>
			<activation>
				<activeByDefault>false</activeByDefault>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>exec-maven-plugin</artifactId>
						<version>${maven.exec.version}</version>
						<executions>
							<execution>
								<id>test-benchmarks</id>
								<phase>test</phase>
								<goals>
									<goal>exec</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<skip>${skipTests}</skip>
							<classpathScope>test</classpathScope>
							<executable>java</executable>
							<arguments>
								<argument>-Xmx6g</argument>
								<argument>-classpath</argument>
								<classpath/>
								<argument>org.openjdk.jmh.Main</argument>
								<!--shouldFailOnError-->
								<argument>-foe</argument>
								<argument>true</argument>
								<!--speed up tests-->
								<argument>-f</argument>
								<argument>1</argument>
								<argument>-i</argument>
								<argument>1</argument>
								<argument>-wi</argument>
								<argument>0</argument>
								<argument>-rf</argument>
								<argument>csv</argument>
								<argument>.*</argument>
							</arguments>
						</configuration>
					</plugin>
				</plugins>
			</build>
		</profile>

		<profile>
			<id>benchmark</id>
			<activation>
				<activeByDefault>true</activeByDefault>
				<property>
					<name>benchmarks</name>
				</property>
			</activation>
			<build>
				<plugins>
					<plugin>
						<groupId>org.codehaus.mojo</groupId>
						<artifactId>exec-maven-plugin</artifactId>
						<version>${maven.exec.version}</version>
						<executions>
							<execution>
								<id>run-benchmarks</id>
								<goals>
									<goal>exec</goal>
								</goals>
							</execution>
						</executions>
						<configuration>
							<classpathScope>test</classpathScope>
							<executable>java</executable>
							<arguments>
								<argument>-classpath</argument>
								<classpath/>
								<argument>org.openjdk.jmh.Main</argument>
								<argument>-e</argument>
								<argument>${benchmarkExcludes}</argument>
								<argument>-rf</argument>
								<argument>csv</argument>
								<argument>${benchmarks}</argument>
							</arguments>
						</configuration>
					</plugin>

					<plugin>
						<groupId>org.apache.maven.plugins</groupId>
						<artifactId>maven-shade-plugin</artifactId>
						<version>3.2.0</version>
						<executions>
							<execution>
								<phase>package</phase>
								<goals>
									<goal>shade</goal>
								</goals>
								<configuration>
									<finalName>benchmarks</finalName>
									<transformers>
										<transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
											<mainClass>org.openjdk.jmh.Main</mainClass>
										</transformer>
		                                                                <transformer implementation="org.apache.maven.plugins.shade.resource.AppendingTransformer">
		                                                                        <resource>reference.conf</resource>
		                                                                </transformer>
		                                                                <!-- The service transformer is needed to merge META-INF/services files -->
		                                                                <transformer implementation="org.apache.maven.plugins.shade.resource.ServicesResourceTransformer"/>
		                                                                <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer">
		                                                                        <projectName>Apache Flink</projectName>
		                                                                </transformer>
									</transformers>
								</configuration>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
		<profile>
			<id>custom-benchmark</id>
			<activation>
				<property>
					<name>benchmarks</name>
				</property>
			</activation>
			<properties>
				<benchmarkExcludes>""</benchmarkExcludes>
			</properties>
		</profile>

		<profile>
			<id>generate-thrift</id>
			<activation>
				<property>
					<name>generate-thrift</name>
				</property>
			</activation>
			<build>
				<plugins>
					<!-- Generate MyPojo class from thrift schema -->
					<plugin>
						<groupId>org.apache.thrift</groupId>
						<artifactId>thrift-maven-plugin</artifactId>
						<version>0.10.0</version>
						<configuration>
							<thriftSourceRoot>${project.basedir}/src/main/resources/thrift</thriftSourceRoot>
							<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>
						</configuration>
						<executions>
							<execution>
								<id>thrift-sources</id>
								<phase>generate-sources</phase>
								<goals>
									<goal>compile</goal>
								</goals>
							</execution>
							<execution>
								<id>thrift-test-sources</id>
								<phase>generate-test-sources</phase>
								<goals>
									<goal>testCompile</goal>
								</goals>
							</execution>
						</executions>
					</plugin>
				</plugins>
			</build>
		</profile>
	</profiles>

	<build>
		<extensions>
			<!-- required for getting the correct protoc binary for protobuf -->
			<extension>
				<groupId>kr.motd.maven</groupId>
				<artifactId>os-maven-plugin</artifactId>
				<version>1.6.2</version>
			</extension>
		</extensions>
		<plugins>
			<plugin>
				<groupId>net.alchim31.maven</groupId>
				<artifactId>scala-maven-plugin</artifactId>
				<version>4.4.0</version>
				<executions>
					<execution>
						<id>scala-compile-first</id>
						<phase>process-resources</phase>
						<goals>
							<goal>add-source</goal>
							<goal>compile</goal>
						</goals>
					</execution>
					<execution>
						<id>scala-test-compile</id>
						<phase>process-test-resources</phase>
						<goals>
							<goal>testCompile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
			<plugin>
				<groupId>org.apache.maven.plugins</groupId>
				<artifactId>maven-compiler-plugin</artifactId>
				<version>${maven.compiler.version}</version>
				<configuration>
					<source>${java.version}</source>
					<target>${java.version}</target>
				</configuration>
			</plugin>
			<plugin>
				<groupId>org.apache.rat</groupId>
				<artifactId>apache-rat-plugin</artifactId>
				<version>0.13</version>
				<inherited>false</inherited>
				<executions>
					<execution>
						<phase>verify</phase>
						<goals>
							<goal>check</goal>
						</goals>
					</execution>
				</executions>
				<configuration>
					<excludeSubProjects>false</excludeSubProjects>
					<numUnapprovedLicenses>0</numUnapprovedLicenses>
					<licenses>
						<!-- Enforce this license:
							Licensed to the Apache Software Foundation (ASF) under one
							or more contributor license agreements.  See the NOTICE file
							distributed with this work for additional information
							regarding copyright ownership.  The ASF licenses this file
							to you under the Apache License, Version 2.0 (the
							"License"); you may not use this file except in compliance
							with the License.  You may obtain a copy of the License at
							  http://www.apache.org/licenses/LICENSE-2.0
							Unless required by applicable law or agreed to in writing,
							software distributed under the License is distributed on an
							"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
							KIND, either express or implied.  See the License for the
							specific language governing permissions and limitations
							under the License.
						-->
						<license implementation="org.apache.rat.analysis.license.SimplePatternBasedLicense">
							<licenseFamilyCategory>AL2 </licenseFamilyCategory>
							<licenseFamilyName>Apache License 2.0</licenseFamilyName>
							<notes />
							<patterns>
								<pattern>Licensed to the Apache Software Foundation (ASF) under one</pattern>
							</patterns>
						</license>
					</licenses>
					<licenseFamilies>
						<licenseFamily implementation="org.apache.rat.license.SimpleLicenseFamily">
							<familyName>Apache License 2.0</familyName>
						</licenseFamily>
					</licenseFamilies>
					<excludes>
						<!-- Additional files like .gitignore etc.-->
						<exclude>**/.*/**</exclude>
						<exclude>**/*.prefs</exclude>
						<exclude>**/*.log</exclude>

						<!-- Administrative files in the main trunk. -->
						<exclude>**/README.md</exclude>
						<exclude>.github/**</exclude>
						<!-- Build files -->
						<exclude>**/*.iml</exclude>
						<!-- Generated content -->
						<exclude>out/**</exclude>
						<exclude>**/target/**</exclude>
						<!-- manually installed version on travis -->
						<exclude>apache-maven-3.2.5/**</exclude>
						<!-- PyCharm -->
						<exclude>**/.idea/**</exclude>
					</excludes>
				</configuration>
			</plugin>

			<!-- Generate MyPojo class from avro schema -->
			<plugin>
				<groupId>org.apache.avro</groupId>
				<artifactId>avro-maven-plugin</artifactId>
				<version>${avro.version}</version>
				<executions>
					<execution>
						<phase>generate-sources</phase>
						<goals>
							<goal>schema</goal>
						</goals>
						<configuration>
							<sourceDirectory>${project.basedir}/src/main/resources/avro</sourceDirectory>
							<!--<outputDirectory>${project.basedir}/src/main/java/</outputDirectory>-->
						</configuration>
					</execution>
				</executions>
			</plugin>

			<!-- Generate MyPojo class from protobuf schema -->
			<plugin>
				<groupId>org.xolstice.maven.plugins</groupId>
				<artifactId>protobuf-maven-plugin</artifactId>
				<version>0.6.1</version>
				<configuration>
					<protoSourceRoot>${project.basedir}/src/main/resources/protobuf</protoSourceRoot>
					<protocArtifact>com.google.protobuf:protoc:${protobuf.version}:exe:${os.detected.classifier}</protocArtifact>
				</configuration>
				<executions>
					<execution>
						<goals>
							<goal>compile</goal>
							<goal>test-compile</goal>
						</goals>
					</execution>
				</executions>
			</plugin>
		</plugins>
	</build>
</project>
