http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/sampler/UnbiasedSampler.java
----------------------------------------------------------------------
diff --git 
a/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/sampler/UnbiasedSampler.java
 
b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/sampler/UnbiasedSampler.java
new file mode 100644
index 0000000..5d5c240
--- /dev/null
+++ 
b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/sampler/UnbiasedSampler.java
@@ -0,0 +1,28 @@
+/**
+ * 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.
+ */
+package org.apache.metron.performance.sampler;
+
+import java.util.Random;
+
+public class UnbiasedSampler implements Sampler {
+
+  @Override
+  public int sample(Random rng, int limit) {
+    return rng.nextInt(limit);
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/util/KafkaUtil.java
----------------------------------------------------------------------
diff --git 
a/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/util/KafkaUtil.java
 
b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/util/KafkaUtil.java
new file mode 100644
index 0000000..c13f236
--- /dev/null
+++ 
b/metron-contrib/metron-performance/src/main/java/org/apache/metron/performance/util/KafkaUtil.java
@@ -0,0 +1,56 @@
+/**
+ * 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.
+ */
+package org.apache.metron.performance.util;
+
+import org.apache.kafka.clients.consumer.KafkaConsumer;
+import org.apache.kafka.common.PartitionInfo;
+import org.apache.kafka.common.TopicPartition;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public enum KafkaUtil {
+  INSTANCE;
+
+  public List<TopicPartition> getTopicPartition(KafkaConsumer<String, String> 
consumer, String topic) {
+
+    List<PartitionInfo> partitions = consumer.partitionsFor(topic);
+    List<TopicPartition> ret = new ArrayList<>(partitions.size());
+    for(PartitionInfo par : partitions) {
+      ret.add(new TopicPartition(topic, par.partition()));
+    }
+    return ret;
+  }
+
+  public Map<Integer, Long> getKafkaOffsetMap(KafkaConsumer<String, String> 
consumer, String topic ) {
+    Map<Integer, Long> ret = new HashMap<>();
+    if(!consumer.subscription().contains(topic)) {
+      consumer.subscribe(Collections.singletonList(topic));
+    }
+    consumer.poll(0);
+    List<TopicPartition> partitions = getTopicPartition(consumer, topic);
+    consumer.seekToEnd(partitions);
+    for(TopicPartition par : partitions) {
+      ret.put(par.partition(), consumer.position(par)-1);
+    }
+    return ret;
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/metron-performance/src/main/scripts/load_tool.sh
----------------------------------------------------------------------
diff --git a/metron-contrib/metron-performance/src/main/scripts/load_tool.sh 
b/metron-contrib/metron-performance/src/main/scripts/load_tool.sh
new file mode 100755
index 0000000..1b56a6e
--- /dev/null
+++ b/metron-contrib/metron-performance/src/main/scripts/load_tool.sh
@@ -0,0 +1,36 @@
+#!/bin/bash
+#
+# 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.
+#
+
+BIGTOP_DEFAULTS_DIR=${BIGTOP_DEFAULTS_DIR-/etc/default}
+[ -n "${BIGTOP_DEFAULTS_DIR}" -a -r ${BIGTOP_DEFAULTS_DIR}/hbase ] && . 
${BIGTOP_DEFAULTS_DIR}/hbase
+
+# Autodetect JAVA_HOME if not defined
+if [ -e /usr/libexec/bigtop-detect-javahome ]; then
+  . /usr/libexec/bigtop-detect-javahome
+elif [ -e /usr/lib/bigtop-utils/bigtop-detect-javahome ]; then
+  . /usr/lib/bigtop-utils/bigtop-detect-javahome
+fi
+
+export METRON_VERSION=${project.version}
+export METRON_HOME=/usr/metron/$METRON_VERSION
+export CLASSNAME="org.apache.metron.performance.load.LoadGenerator"
+export GEN_JAR=${project.artifactId}-$METRON_VERSION.jar
+export PARSERS_JAR=metron-parsers-$METRON_VERSION-uber.jar
+
+java -cp $METRON_HOME/lib/$GEN_JAR:$METRON_HOME/lib/$PARSERS_JAR $CLASSNAME 
"$@"

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
----------------------------------------------------------------------
diff --git 
a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
 
b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
new file mode 100644
index 0000000..0d9b34a
--- /dev/null
+++ 
b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/LoadOptionsTest.java
@@ -0,0 +1,93 @@
+/**
+ * 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.
+ */
+package org.apache.metron.performance.load;
+
+import org.apache.commons.cli.CommandLine;
+import org.apache.commons.cli.PosixParser;
+import org.apache.commons.io.IOUtils;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileWriter;
+import java.util.EnumMap;
+import java.util.List;
+import java.util.Optional;
+
+public class LoadOptionsTest {
+  @Test
+  public void testHappyPath() throws Exception {
+    CommandLine cli = LoadOptions.parse(new PosixParser(), new String[] { 
"-eps", "1000", "-ot","foo"});
+    EnumMap<LoadOptions, Optional<Object>> results = 
LoadOptions.createConfig(cli);
+    Assert.assertEquals(1000L, results.get(LoadOptions.EPS).get());
+    Assert.assertEquals("foo", results.get(LoadOptions.OUTPUT_TOPIC).get());
+    Assert.assertEquals(LoadGenerator.CONSUMER_GROUP, 
results.get(LoadOptions.CONSUMER_GROUP).get());
+    Assert.assertEquals(Runtime.getRuntime().availableProcessors(), 
results.get(LoadOptions.NUM_THREADS).get());
+    Assert.assertFalse(results.get(LoadOptions.BIASED_SAMPLE).isPresent());
+    Assert.assertFalse(results.get(LoadOptions.CSV).isPresent());
+  }
+
+  @Test
+  public void testCsvPresent() throws Exception {
+      CommandLine cli = LoadOptions.parse(new PosixParser(), new 
String[]{"-c", "/tmp/blah"});
+      EnumMap<LoadOptions, Optional<Object>> results = 
LoadOptions.createConfig(cli);
+      Assert.assertEquals(new File("/tmp/blah"), 
results.get(LoadOptions.CSV).get());
+  }
+
+  @Test
+  public void testCsvMissing() throws Exception {
+      CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{});
+      EnumMap<LoadOptions, Optional<Object>> results = 
LoadOptions.createConfig(cli);
+      Assert.assertFalse(results.get(LoadOptions.CSV).isPresent());
+  }
+
+  @Test
+  public void testThreadsByCores() throws Exception {
+      CommandLine cli = LoadOptions.parse(new PosixParser(), new 
String[]{"-p", "2C"});
+      EnumMap<LoadOptions, Optional<Object>> results = 
LoadOptions.createConfig(cli);
+      Assert.assertEquals(2 * Runtime.getRuntime().availableProcessors(), 
results.get(LoadOptions.NUM_THREADS).get());
+  }
+
+  @Test
+  public void testThreadsByNum() throws Exception {
+      CommandLine cli = LoadOptions.parse(new PosixParser(), new 
String[]{"-p", "5"});
+      EnumMap<LoadOptions, Optional<Object>> results = 
LoadOptions.createConfig(cli);
+      Assert.assertEquals(5, results.get(LoadOptions.NUM_THREADS).get());
+  }
+
+  @Test
+  public void testTemplatePresent() throws Exception {
+    File templateFile= new File("target/template");
+    String template = "test template1";
+    try(BufferedWriter w = new BufferedWriter(new FileWriter(templateFile))) {
+      IOUtils.write(template, w );
+    }
+    templateFile.deleteOnExit();
+    CommandLine cli = LoadOptions.parse(new PosixParser(), new String[]{"-t", 
templateFile.getPath()});
+    EnumMap<LoadOptions, Optional<Object>> results = 
LoadOptions.createConfig(cli);
+    List<String> templates = (List<String>) 
results.get(LoadOptions.TEMPLATE).get();
+    Assert.assertEquals(1, templates.size());
+    Assert.assertEquals(template, templates.get(0));
+  }
+
+  @Test(expected=IllegalStateException.class)
+  public void testTemplateMissing() throws Exception {
+    LoadOptions.createConfig(LoadOptions.parse(new PosixParser(), new 
String[]{"-t", "target/template2"}));
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
----------------------------------------------------------------------
diff --git 
a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
 
b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
new file mode 100644
index 0000000..c652291
--- /dev/null
+++ 
b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/load/SendToKafkaTest.java
@@ -0,0 +1,49 @@
+/**
+ * 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.
+ */
+package org.apache.metron.performance.load;
+
+import org.apache.kafka.clients.producer.KafkaProducer;
+import org.junit.Assert;
+import org.junit.Test;
+
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.ForkJoinPool;
+import java.util.concurrent.Future;
+import java.util.concurrent.atomic.AtomicLong;
+
+public class SendToKafkaTest {
+
+  @Test
+  public void testWritesCorrectNumber() {
+    ExecutorService executor = ForkJoinPool.commonPool();
+    AtomicLong numSent = new AtomicLong(0);
+    long expectedSent = 100;
+    SendToKafka sender = new SendToKafka(null, expectedSent, 10, () -> "msg", 
executor, numSent, ThreadLocal.withInitial(() -> null) ) {
+      @Override
+      protected Future<?> sendToKafka(KafkaProducer producer, String 
kafkaTopic, String message) {
+        Assert.assertEquals(message, "msg");
+        return ForkJoinPool.commonPool().submit(() -> {
+          numSent.incrementAndGet();
+        });
+      }
+    };
+    sender.run();
+    Assert.assertEquals(numSent.get(), expectedSent);
+  }
+
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
----------------------------------------------------------------------
diff --git 
a/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
 
b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
new file mode 100644
index 0000000..d386e00
--- /dev/null
+++ 
b/metron-contrib/metron-performance/src/test/java/org/apache/metron/performance/sampler/SamplerTest.java
@@ -0,0 +1,145 @@
+/**
+ * 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.
+ */
+package org.apache.metron.performance.sampler;
+
+import com.google.common.collect.ImmutableList;
+import org.adrianwalker.multilinestring.Multiline;
+import org.junit.Assert;
+import org.junit.Test;
+import sun.java2d.pipe.SpanShapeRenderer;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.AbstractMap;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Random;
+
+public class SamplerTest {
+  private static final int SIMULATION_SIZE = 10000;
+  private void testSampler(Sampler sampler, Map<Integer, Double> 
expectedProbs) {
+    Random rng = new Random(0);
+    Map<Integer, Double> empiricalProbs = new HashMap<>();
+    for(int i = 0;i < SIMULATION_SIZE;++i) {
+      int sample = sampler.sample(rng, 10);
+      Double cnt = empiricalProbs.get(sample);
+      empiricalProbs.put(sample, ((cnt == null)?0:cnt) + 1);
+    }
+    for(Map.Entry<Integer, Double> kv : empiricalProbs.entrySet()) {
+      double empiricalProb = kv.getValue()/SIMULATION_SIZE;
+      String msg = expectedProbs.get(kv.getKey()) + " != " + empiricalProb;
+      Assert.assertEquals(msg, expectedProbs.get(kv.getKey()), empiricalProb, 
1e-2);
+    }
+  }
+
+  @Test
+  public void testUnbiasedSampler() {
+    Sampler sampler = new UnbiasedSampler();
+    testSampler(sampler, new HashMap<Integer, Double>() {{
+      for(int i = 0;i < 10;++i) {
+        put(i, 0.1);
+      }
+    }});
+  }
+
+  @Test
+  public void testBiasedSampler() {
+    Sampler sampler = new BiasedSampler(
+            new ArrayList<Map.Entry<Integer, Integer>>() {{
+              add(new AbstractMap.SimpleEntry<>(30, 80));
+              add(new AbstractMap.SimpleEntry<>(70, 20));
+            }}
+            , 10
+            );
+    testSampler(sampler, new HashMap<Integer, Double>() {{
+      for(int i = 0;i < 3;++i) {
+        put(i, 0.8/3);
+      }
+      for(int i = 3;i < 10;++i) {
+        put(i, 0.2/7);
+      }
+    }});
+
+  }
+
+  /**
+   80,20
+   */
+  @Multiline
+  static String paretoConfigImplicit;
+
+  /**
+   80,20
+   20,80
+   */
+  @Multiline
+  static String paretoConfig;
+
+  @Test
+  public void testDistributionRead() throws IOException {
+    for(String config : ImmutableList.of(paretoConfig, paretoConfigImplicit)) {
+      List<Map.Entry<Integer, Integer>> endpoints = 
BiasedSampler.readDistribution(new BufferedReader(new StringReader(config)), 
true);
+      Assert.assertEquals(2, endpoints.size());
+      Assert.assertEquals(new AbstractMap.SimpleEntry<>(80,20), 
endpoints.get(0));
+      Assert.assertEquals(new AbstractMap.SimpleEntry<>(20,80), 
endpoints.get(1));
+    }
+  }
+
+  /**
+   80,20
+   10,70
+   10,10
+   */
+  @Multiline
+  static String longerConfig;
+  /**
+   80,20
+   10,70
+   */
+  @Multiline
+  static String longerConfigImplicit;
+
+  @Test
+  public void testDistributionReadLonger() throws IOException {
+    for(String config : ImmutableList.of(longerConfig, longerConfigImplicit)) {
+      List<Map.Entry<Integer, Integer>> endpoints = 
BiasedSampler.readDistribution(new BufferedReader(new StringReader(config)), 
true);
+      Assert.assertEquals(3, endpoints.size());
+      Assert.assertEquals(new AbstractMap.SimpleEntry<>(80,20), 
endpoints.get(0));
+      Assert.assertEquals(new AbstractMap.SimpleEntry<>(10,70), 
endpoints.get(1));
+      Assert.assertEquals(new AbstractMap.SimpleEntry<>(10,10), 
endpoints.get(2));
+    }
+  }
+
+  @Test(expected=IllegalArgumentException.class)
+  public void testDistributionRead_garbage() throws IOException {
+    BiasedSampler.readDistribution(new BufferedReader(new StringReader("blah 
foo")), true);
+  }
+
+  @Test(expected=IllegalArgumentException.class)
+  public void testDistributionRead_negative() throws IOException {
+    BiasedSampler.readDistribution(new BufferedReader(new 
StringReader("80,-20")), true);
+  }
+
+  @Test(expected=IllegalArgumentException.class)
+  public void testDistributionRead_over100() throws IOException {
+    BiasedSampler.readDistribution(new BufferedReader(new 
StringReader("200,20")), true);
+  }
+}

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-contrib/pom.xml
----------------------------------------------------------------------
diff --git a/metron-contrib/pom.xml b/metron-contrib/pom.xml
index cf28fac..bab7507 100644
--- a/metron-contrib/pom.xml
+++ b/metron-contrib/pom.xml
@@ -40,5 +40,20 @@
     </licenses>
     <modules>
         <module>metron-docker</module>
+        <module>metron-performance</module>
     </modules>
+    <dependencies>
+        <dependency>
+                       <groupId>junit</groupId>
+                       <artifactId>junit</artifactId>
+                       <version>${global_junit_version}</version>
+                       <scope>test</scope>
+               </dependency>
+        <dependency>
+                       <groupId>org.adrianwalker</groupId>
+                       <artifactId>multiline-string</artifactId>
+                       <version>0.1.2</version>
+                       <scope>test</scope>
+               </dependency>
+    </dependencies>
 </project>

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
----------------------------------------------------------------------
diff --git 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
index 7a680a4..6a20af8 100644
--- 
a/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
+++ 
b/metron-deployment/packaging/ambari/metron-mpack/src/main/resources/common-services/METRON/CURRENT/metainfo.xml
@@ -420,6 +420,10 @@
             <package>
               <name>metron-maas-service</name>
             </package>
+            <package>
+              <name>metron-performance</name>
+            </package>
+
           </packages>
         </osSpecific>
         <osSpecific>

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-deployment/packaging/docker/deb-docker/pom.xml
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/deb-docker/pom.xml 
b/metron-deployment/packaging/docker/deb-docker/pom.xml
index 7fbe47b..cba2f98 100644
--- a/metron-deployment/packaging/docker/deb-docker/pom.xml
+++ b/metron-deployment/packaging/docker/deb-docker/pom.xml
@@ -155,6 +155,12 @@
                                         <include>*.tar.gz</include>
                                     </includes>
                                 </resource>
+                                <resource>
+                                    
<directory>${metron_dir}/metron-contrib/metron-performance/target/</directory>
+                                    <includes>
+                                        <include>*.tar.gz</include>
+                                    </includes>
+                                </resource>
                             </resources>
                         </configuration>
                     </execution>

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec 
b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
index cc01d7c..6b35dae 100644
--- a/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
+++ b/metron-deployment/packaging/docker/rpm-docker/SPECS/metron.spec
@@ -57,6 +57,7 @@ Source10:       metron-config-%{full_version}-archive.tar.gz
 Source11:       metron-management-%{full_version}-archive.tar.gz
 Source12:       metron-maas-service-%{full_version}-archive.tar.gz
 Source13:       metron-alerts-%{full_version}-archive.tar.gz
+Source14:       metron-performance-%{full_version}-archive.tar.gz
 
 %description
 Apache Metron provides a scalable advanced security analytics framework
@@ -93,6 +94,7 @@ tar -xzf %{SOURCE10} -C %{buildroot}%{metron_home}
 tar -xzf %{SOURCE11} -C %{buildroot}%{metron_home}
 tar -xzf %{SOURCE12} -C %{buildroot}%{metron_home}
 tar -xzf %{SOURCE13} -C %{buildroot}%{metron_home}
+tar -xzf %{SOURCE14} -C %{buildroot}%{metron_home}
 
 install %{buildroot}%{metron_home}/bin/metron-management-ui 
%{buildroot}/etc/init.d/
 install %{buildroot}%{metron_home}/bin/metron-alerts-ui 
%{buildroot}/etc/init.d/
@@ -185,6 +187,25 @@ This package installs the Metron Elasticsearch files
 
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
+%package        performance
+Summary:        Metron Performance Tools
+Group:          Applications/Internet
+Provides:       performance = %{version}
+
+%description    performance
+This package installs performance tools useful for Metron
+
+%files          performance
+%defattr(-,root,root,755)
+%dir %{metron_root}
+%dir %{metron_home}
+%dir %{metron_home}/bin
+%dir %{metron_home}/lib
+%{metron_home}/bin/load_tool.sh
+%attr(0644,root,root) %{metron_home}/lib/metron-performance-%{full_version}.jar
+
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
 %package        data-management
 Summary:        Metron Data Management Files
 Group:          Applications/Internet

http://git-wip-us.apache.org/repos/asf/metron/blob/46ad9d93/metron-deployment/packaging/docker/rpm-docker/pom.xml
----------------------------------------------------------------------
diff --git a/metron-deployment/packaging/docker/rpm-docker/pom.xml 
b/metron-deployment/packaging/docker/rpm-docker/pom.xml
index 4ed2edd..ef1716c 100644
--- a/metron-deployment/packaging/docker/rpm-docker/pom.xml
+++ b/metron-deployment/packaging/docker/rpm-docker/pom.xml
@@ -191,6 +191,12 @@
                                         <include>*.tar.gz</include>
                                     </includes>
                                 </resource>
+                                <resource>
+                                    
<directory>${metron_dir}/metron-contrib/metron-performance/target/</directory>
+                                    <includes>
+                                        <include>*.tar.gz</include>
+                                    </includes>
+                                </resource>
                             </resources>
                         </configuration>
                     </execution>

Reply via email to