asterixdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From ima...@apache.org
Subject [15/15] incubator-asterixdb git commit: Merge asterix-experiments to master
Date Wed, 16 Mar 2016 00:35:20 GMT
Merge asterix-experiments to master

Change-Id: I79b91e045bd056e62adb6e48795a6625baee0062
Reviewed-on: https://asterix-gerrit.ics.uci.edu/642
Reviewed-by: Ian Maxon <imaxon@apache.org>
Tested-by: Jenkins <jenkins@fulliautomatix.ics.uci.edu>


Project: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/commit/a70fba5c
Tree: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/tree/a70fba5c
Diff: http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/diff/a70fba5c

Branch: refs/heads/master
Commit: a70fba5c587be7ca11b4956d6e4334c88f822769
Parents: bd233b9
Author: Ian Maxon <imaxon@apache.org>
Authored: Thu Feb 18 13:52:36 2016 -0800
Committer: Ian Maxon <imaxon@apache.org>
Committed: Tue Mar 15 17:29:19 2016 -0700

----------------------------------------------------------------------
 asterix-app/data/csv/sample_01.csv              |   14 +-
 asterix-experiments/pom.xml                     |  165 +++
 .../src/main/assembly/binary-assembly.xml       |   37 +
 .../experiment/action/base/AbstractAction.java  |   45 +
 .../action/base/DefaultExceptionListener.java   |   38 +
 .../asterix/experiment/action/base/IAction.java |   24 +
 .../action/base/IExceptionListener.java         |   24 +
 .../action/base/ParallelActionSet.java          |   75 +
 .../action/base/SequentialActionList.java       |   42 +
 .../derived/AbstractExecutableAction.java       |   65 +
 .../derived/AbstractLocalExecutableAction.java  |   54 +
 .../derived/AbstractRemoteExecutableAction.java |   89 ++
 .../action/derived/CloseOutputStreamAction.java |   40 +
 .../action/derived/ManagixActions.java          |  143 ++
 .../action/derived/RemoteAsterixDriverKill.java |   33 +
 .../action/derived/RemoteCopyFileAction.java    |   70 +
 .../action/derived/RunAQLFileAction.java        |   98 ++
 .../action/derived/RunAQLStringAction.java      |   86 ++
 .../action/derived/RunRESTIOWaitAction.java     |   54 +
 .../experiment/action/derived/SleepAction.java  |   37 +
 .../derived/StartDataGeneratorAction.java       |   53 +
 .../experiment/action/derived/TimedAction.java  |   61 +
 .../builder/AbstractExperiment1Builder.java     |   40 +
 .../builder/AbstractExperiment2ABuilder.java    |   39 +
 .../builder/AbstractExperiment2BBuilder.java    |   39 +
 .../builder/AbstractExperiment2CBuilder.java    |   45 +
 .../builder/AbstractExperiment2DBuilder.java    |   45 +
 .../builder/AbstractExperiment3Builder.java     |   39 +
 .../builder/AbstractExperiment4Builder.java     |   29 +
 .../builder/AbstractExperiment6Builder.java     |   29 +
 .../builder/AbstractExperiment7Builder.java     |  189 +++
 .../builder/AbstractExperiment8Builder.java     |  189 +++
 .../builder/AbstractExperiment9Builder.java     |  196 +++
 .../builder/AbstractExperimentBuilder.java      |   40 +
 .../AbstractLSMBaseExperimentBuilder.java       |  357 +++++
 .../builder/AbstractLocalExperimentBuilder.java |  119 ++
 .../AbstractSpatialIndexExperiment2Builder.java |  173 +++
 ...tSpatialIndexExperiment3PIdxLoadBuilder.java |  293 ++++
 ...dexExperiment3SIdxCreateAndQueryBuilder.java |  532 +++++++
 .../asterix/experiment/builder/Experiment.java  |   58 +
 .../experiment/builder/Experiment1ABuilder.java |   30 +
 .../experiment/builder/Experiment1BBuilder.java |   30 +
 .../experiment/builder/Experiment1CBuilder.java |   30 +
 .../experiment/builder/Experiment1DBuilder.java |   29 +
 .../builder/Experiment2A1Builder.java           |   30 +
 .../builder/Experiment2A2Builder.java           |   30 +
 .../builder/Experiment2A4Builder.java           |   30 +
 .../builder/Experiment2A8Builder.java           |   30 +
 .../builder/Experiment2B1Builder.java           |   29 +
 .../builder/Experiment2B2Builder.java           |   30 +
 .../builder/Experiment2B4Builder.java           |   30 +
 .../builder/Experiment2B8Builder.java           |   30 +
 .../builder/Experiment2C1Builder.java           |   30 +
 .../builder/Experiment2C2Builder.java           |   30 +
 .../builder/Experiment2C4Builder.java           |   30 +
 .../builder/Experiment2C8Builder.java           |   30 +
 .../builder/Experiment2D1Builder.java           |   30 +
 .../builder/Experiment2D2Builder.java           |   30 +
 .../builder/Experiment2D4Builder.java           |   30 +
 .../builder/Experiment2D8Builder.java           |   30 +
 .../experiment/builder/Experiment3ABuilder.java |   30 +
 .../experiment/builder/Experiment3BBuilder.java |   30 +
 .../experiment/builder/Experiment3CBuilder.java |   30 +
 .../experiment/builder/Experiment3DBuilder.java |   30 +
 .../experiment/builder/Experiment4ABuilder.java |   39 +
 .../experiment/builder/Experiment4BBuilder.java |   39 +
 .../experiment/builder/Experiment4CBuilder.java |   39 +
 .../experiment/builder/Experiment4DBuilder.java |   39 +
 .../experiment/builder/Experiment5ABuilder.java |   39 +
 .../experiment/builder/Experiment5BBuilder.java |   39 +
 .../experiment/builder/Experiment5CBuilder.java |   39 +
 .../experiment/builder/Experiment5DBuilder.java |   39 +
 .../experiment/builder/Experiment6ABuilder.java |   39 +
 .../experiment/builder/Experiment6BBuilder.java |   39 +
 .../experiment/builder/Experiment6CBuilder.java |   39 +
 .../experiment/builder/Experiment7ABuilder.java |   38 +
 .../experiment/builder/Experiment7BBuilder.java |   38 +
 .../experiment/builder/Experiment7DBuilder.java |   38 +
 .../experiment/builder/Experiment8ABuilder.java |   38 +
 .../experiment/builder/Experiment8BBuilder.java |   38 +
 .../experiment/builder/Experiment8CBuilder.java |   38 +
 .../experiment/builder/Experiment8DBuilder.java |   38 +
 .../experiment/builder/Experiment9ABuilder.java |   38 +
 .../experiment/builder/Experiment9BBuilder.java |   38 +
 .../experiment/builder/Experiment9DBuilder.java |   38 +
 .../SingleNodeIngestionExperimentBuilder.java   |   71 +
 .../SpatialIndexExperiment1ADhbtreeBuilder.java |   39 +
 ...SpatialIndexExperiment1ADhvbtreeBuilder.java |   39 +
 .../SpatialIndexExperiment1ARtreeBuilder.java   |   39 +
 .../SpatialIndexExperiment1AShbtreeBuilder.java |   39 +
 .../SpatialIndexExperiment1ASifBuilder.java     |   39 +
 .../SpatialIndexExperiment1BDhbtreeBuilder.java |   38 +
 ...SpatialIndexExperiment1BDhvbtreeBuilder.java |   38 +
 .../SpatialIndexExperiment1BRtreeBuilder.java   |   38 +
 .../SpatialIndexExperiment1BShbtreeBuilder.java |   38 +
 .../SpatialIndexExperiment1BSifBuilder.java     |   38 +
 .../SpatialIndexExperiment1CDhbtreeBuilder.java |   39 +
 ...SpatialIndexExperiment1CDhvbtreeBuilder.java |   39 +
 .../SpatialIndexExperiment1CRtreeBuilder.java   |   39 +
 .../SpatialIndexExperiment1CShbtreeBuilder.java |   39 +
 .../SpatialIndexExperiment1CSifBuilder.java     |   39 +
 .../SpatialIndexExperiment1DDhbtreeBuilder.java |   38 +
 ...SpatialIndexExperiment1DDhvbtreeBuilder.java |   38 +
 .../SpatialIndexExperiment1DRtreeBuilder.java   |   38 +
 .../SpatialIndexExperiment1DShbtreeBuilder.java |   38 +
 .../SpatialIndexExperiment1DSifBuilder.java     |   38 +
 .../SpatialIndexExperiment2DhbtreeBuilder.java  |   38 +
 .../SpatialIndexExperiment2DhvbtreeBuilder.java |   38 +
 .../SpatialIndexExperiment2RtreeBuilder.java    |   38 +
 .../SpatialIndexExperiment2ShbtreeBuilder.java  |   38 +
 .../SpatialIndexExperiment2SifBuilder.java      |   38 +
 .../SpatialIndexExperiment3DhbtreeBuilder.java  |   30 +
 .../SpatialIndexExperiment3DhvbtreeBuilder.java |   30 +
 .../SpatialIndexExperiment3PIdxLoadBuilder.java |   39 +
 .../SpatialIndexExperiment3RtreeBuilder.java    |   30 +
 .../SpatialIndexExperiment3ShbtreeBuilder.java  |   30 +
 .../SpatialIndexExperiment3SifBuilder.java      |   30 +
 .../SpatialIndexExperiment4DhbtreeBuilder.java  |   31 +
 .../SpatialIndexExperiment4DhvbtreeBuilder.java |   31 +
 .../SpatialIndexExperiment4RtreeBuilder.java    |   31 +
 .../SpatialIndexExperiment4ShbtreeBuilder.java  |   31 +
 .../SpatialIndexExperiment4SifBuilder.java      |   31 +
 .../SpatialIndexExperiment5DhbtreeBuilder.java  |   39 +
 .../SpatialIndexExperiment5DhvbtreeBuilder.java |   39 +
 .../SpatialIndexExperiment5RtreeBuilder.java    |   39 +
 .../SpatialIndexExperiment5ShbtreeBuilder.java  |   39 +
 .../SpatialIndexExperiment5SifBuilder.java      |   39 +
 .../client/LSMExperimentConstants.java          |   37 +
 .../client/LSMExperimentSetRunner.java          |  381 +++++
 .../client/OrchestratorDGProtocol.java          |   26 +
 .../experiment/client/OrchestratorServer.java   |  158 +++
 .../experiment/client/OrchestratorServer7.java  |  238 ++++
 .../experiment/client/OrchestratorServer9.java  |  164 +++
 .../experiment/client/RecordCountingServer.java |  166 +++
 .../client/SocketDataGeneratorExecutable.java   |   57 +
 .../experiment/client/SocketTweetGenerator.java |  389 +++++
 .../client/SocketTweetGeneratorConfig.java      |  173 +++
 .../client/SocketTweetGeneratorDriver.java      |   47 +
 ...atialIndexExperiment2OrchestratorServer.java |  179 +++
 .../client/SpatialQueryGenerator.java           |  315 ++++
 .../client/SpatialQueryGeneratorConfig.java     |  135 ++
 .../client/SpatialQueryGeneratorDriver.java     |   40 +
 .../client/SyntheticDataGeneratorConfig.java    |   60 +
 ...cDataGeneratorForSpatialIndexEvaluation.java |  106 ++
 .../logging/ExperimentLogFormatter.java         |  128 ++
 .../AbstractDynamicDataEvalReportBuilder.java   |  286 ++++
 .../AbstractStaticDataEvalReportBuilder.java    |   31 +
 .../report/IDynamicDataEvalReportBuilder.java   |   34 +
 .../report/IStaticDataEvalReportBuilder.java    |   25 +
 .../experiment/report/NCLogReportBuilder.java   |  212 +++
 .../report/OperatorProfilerReportBuilder.java   |  322 +++++
 .../report/ProfilerReportBuilder.java           |  192 +++
 .../experiment/report/ReportBuilderHelper.java  |  104 ++
 .../experiment/report/ReportBuilderRunner.java  |  126 ++
 .../experiment/report/SIE1ReportBuilder.java    |   69 +
 .../report/SIE1ReportBuilderRunner.java         |  329 +++++
 .../experiment/report/SIE2ReportBuilder.java    |  264 ++++
 .../report/SIE2ReportBuilderRunner.java         |  459 ++++++
 .../report/SIE3ProfileReportBuilder.java        |   69 +
 .../experiment/report/SIE3ReportBuilder.java    |  294 ++++
 .../report/SIE3ReportBuilderRunner.java         |  716 ++++++++++
 .../report/SIE4ReportBuilderRunner.java         |  715 ++++++++++
 .../report/SIE5ReportBuilderRunner.java         |  459 ++++++
 .../src/main/resources/gantt/foo.eps            |  928 ++++++++++++
 .../src/main/resources/gantt/foo.gpl            |   35 +
 .../src/main/resources/gantt/gantt.py           |  387 +++++
 .../src/main/resources/gantt/vargantt1.gpl      |   35 +
 .../src/main/resources/gantt/vargantt1.plt      |    4 +
 .../src/main/resources/gantt/vargantt1.txt      |   18 +
 .../aql/1.aql                                   |    3 +
 .../aql/2_a.aql                                 |    4 +
 .../aql/2_b.aql                                 |    4 +
 .../aql/2_c.aql                                 |    4 +
 .../aql/2_d.aql                                 |    4 +
 .../aql/3.aql                                   |    7 +
 .../aql/4_1.aql                                 |    4 +
 .../aql/4_2.aql                                 |    5 +
 .../aql/4_4.aql                                 |    7 +
 .../aql/4_8.aql                                 |   11 +
 .../aql/5_1.aql                                 |    3 +
 .../aql/5_1_count.aql                           |    4 +
 .../aql/5_2.aql                                 |    4 +
 .../aql/5_2_count.aql                           |    7 +
 .../aql/5_3.aql                                 |    5 +
 .../aql/5_3_count.aql                           |   10 +
 .../aql/5_4.aql                                 |    6 +
 .../aql/5_4_count.aql                           |   13 +
 .../aql/6_a.aql                                 |    3 +
 .../aql/6_b.aql                                 |    4 +
 .../aql/6_c.aql                                 |    3 +
 .../aql/7_a.aql                                 |    3 +
 .../aql/7_b.aql                                 |    4 +
 .../aql/7_c.aql                                 |    3 +
 .../aql/7_compact.aql                           |    3 +
 .../aql/7_d.aql                                 |    3 +
 .../aql/7_q1.aql                                |    8 +
 .../aql/7_q2.aql                                |    8 +
 .../aql/8_a.aql                                 |    4 +
 .../aql/8_b.aql                                 |    5 +
 .../aql/8_c.aql                                 |    4 +
 .../aql/8_compact.aql                           |    3 +
 .../aql/8_d.aql                                 |    4 +
 .../aql/8_q1.aql                                |    8 +
 .../aql/8_q2.aql                                |    8 +
 .../aql/avg_gram_tokens.aql                     |    6 +
 .../aql/avg_keyword_tokens.aql                  |    6 +
 .../aql/base/5_1_ingest.aql                     |   15 +
 .../aql/base/5_2_ingest.aql                     |   26 +
 .../aql/base/5_3_ingest.aql                     |   37 +
 .../aql/base/5_4_ingest.aql                     |   48 +
 .../aql/base/base_1_ingest.aql                  |   24 +
 .../aql/base/base_1_ingest_query.aql            |   24 +
 .../aql/base/base_2_ingest.aql                  |   24 +
 .../aql/base/base_4_ingest.aql                  |   24 +
 .../aql/base/base_8_ingest.aql                  |   24 +
 .../aql/base/base_8_ingest_query.aql            |   14 +
 .../aql/base/base_types.aql                     |   31 +
 .../aql/count.aql                               |    4 +
 .../aql/spatial_1_dhbtree.aql                   |    3 +
 .../aql/spatial_1_dhvbtree.aql                  |    3 +
 .../aql/spatial_1_rtree.aql                     |    3 +
 .../aql/spatial_1_shbtree.aql                   |    3 +
 .../aql/spatial_1_sif.aql                       |    3 +
 .../aql/spatial_3.aql                           |    3 +
 .../aql/spatial_3_create_dhbtree.aql            |    2 +
 .../aql/spatial_3_create_dhvbtree.aql           |    2 +
 .../aql/spatial_3_create_rtree.aql              |    2 +
 .../aql/spatial_3_create_shbtree.aql            |    2 +
 .../aql/spatial_3_create_sif.aql                |    2 +
 .../aql/spatial_3_pidx_load.aql                 |   26 +
 .../balloon.c                                   |   22 +
 .../configs/1node.xml                           |   39 +
 .../configs/2node.xml                           |   44 +
 .../configs/4node.xml                           |   52 +
 .../configs/8node.xml                           |   68 +
 .../configs/asterix-configuration.xml           |  259 ++++
 .../configs/managix-conf.xml                    |   18 +
 .../dgen/1.dgen                                 |    1 +
 .../dgen/2.dgen                                 |    2 +
 .../dgen/4.dgen                                 |    4 +
 .../dgen/5_1.dgen                               |    8 +
 .../dgen/5_2.dgen                               |   16 +
 .../dgen/5_3.dgen                               |   24 +
 .../dgen/5_4.dgen                               |   32 +
 .../dgen/8.dgen                                 |    8 +
 .../dgen/8.dqgen                                |    8 +
 .../killdrivers.sh                              |    3 +
 .../killscreens.sh                              |    4 +
 .../logging.properties                          |   84 ++
 .../updateMain.sh                               |    6 +
 .../asterix/external/util/DataGenerator.java    |  717 +++++-----
 .../DataGeneratorForSpatialIndexEvaluation.java | 1341 ++++++++++++++++++
 .../tools/external/data/GULongIDGenerator.java  |   50 +
 ...TweetGeneratorForSpatialIndexEvaluation.java |  139 ++
 pom.xml                                         |    1 +
 255 files changed, 18937 insertions(+), 364 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-app/data/csv/sample_01.csv
----------------------------------------------------------------------
diff --git a/asterix-app/data/csv/sample_01.csv b/asterix-app/data/csv/sample_01.csv
index 4dd437a..fbba382 100644
--- a/asterix-app/data/csv/sample_01.csv
+++ b/asterix-app/data/csv/sample_01.csv
@@ -1,8 +1,8 @@
-1,0.899682764,5.6256,2013-08-07,07:22:35,1979-02-25T23:48:27.034
-2,0.669052398,,-1923-03-29,19:33:34,-1979-02-25T23:48:27.002
-3,0.572733058,192674,-1923-03-28,19:33:34,-1979-02-25T23:48:27.001
-4,,192674,-1923-03-27,19:33:34,-1979-02-25T23:48:27.001
-5,0.572733058,192674,,19:33:34,-1979-02-25T23:48:27.001
-6,0.572733058,192674,-1923-03-25,,-1979-02-25T23:48:27.001
-7,0.572733058,192674,-1923-03-24,19:33:34,
+1,0.899682764,5.6256,2013-08-07,07:22:35,1979-02-25T23:48:27.034
+2,0.669052398,,-1923-03-29,19:33:34,-1979-02-25T23:48:27.002
+3,0.572733058,192674,-1923-03-28,19:33:34,-1979-02-25T23:48:27.001
+4,,192674,-1923-03-27,19:33:34,-1979-02-25T23:48:27.001
+5,0.572733058,192674,,19:33:34,-1979-02-25T23:48:27.001
+6,0.572733058,192674,-1923-03-25,,-1979-02-25T23:48:27.001
+7,0.572733058,192674,-1923-03-24,19:33:34,
 8,,,,,
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/pom.xml
----------------------------------------------------------------------
diff --git a/asterix-experiments/pom.xml b/asterix-experiments/pom.xml
new file mode 100644
index 0000000..9ed9324
--- /dev/null
+++ b/asterix-experiments/pom.xml
@@ -0,0 +1,165 @@
+<!--
+ ! Copyright 2009-2013 by The Regents of the University of California
+ ! Licensed 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 from
+ ! 
+ !     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>
+	<parent>
+		<artifactId>asterix</artifactId>
+		<groupId>org.apache.asterix</groupId>
+		<version>0.8.8-SNAPSHOT</version>
+	</parent>
+	<artifactId>asterix-experiments</artifactId>
+
+	<build>
+		<plugins>
+			<plugin>
+				<groupId>org.apache.maven.plugins</groupId>
+				<artifactId>maven-compiler-plugin</artifactId>
+				<version>2.0.2</version>
+				<configuration>
+					<source>1.7</source>
+					<target>1.7</target>
+					<fork>true</fork>
+				</configuration>
+			</plugin>
+			<plugin>
+				<groupId>org.codehaus.mojo</groupId>
+				<artifactId>appassembler-maven-plugin</artifactId>
+				<version>1.0</version>
+				<executions>
+					<execution>
+						<configuration>
+							<programs>
+								<program>
+									<mainClass>org.apache.asterix.experiment.client.LSMExperimentSetRunner</mainClass>
+									<name>lsmexprunner</name>
+								</program>
+								<program>
+									<mainClass>org.apache.asterix.experiment.client.SocketTweetGeneratorDriver</mainClass>
+									<name>datagenrunner</name>
+								</program>
+								<program>
+									<mainClass>org.apache.asterix.experiment.client.SpatialQueryGeneratorDriver</mainClass>
+									<name>querygenrunner</name>
+								</program>
+								<program>
+									<mainClass>org.apache.asterix.experiment.client.RecordCountingServer</mainClass>
+									<name>rcserver</name>
+								</program>
+							</programs>
+							<repositoryLayout>flat</repositoryLayout>
+							<repositoryName>lib</repositoryName>
+						</configuration>
+						<phase>package</phase>
+						<goals>
+							<goal>assemble</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+			<plugin>
+				<artifactId>maven-assembly-plugin</artifactId>
+				<version>2.2-beta-5</version>
+				<executions>
+					<execution>
+						<configuration>
+							<descriptors>
+								<descriptor>src/main/assembly/binary-assembly.xml</descriptor>
+							</descriptors>
+						</configuration>
+						<phase>package</phase>
+						<goals>
+							<goal>attached</goal>
+						</goals>
+					</execution>
+				</executions>
+			</plugin>
+		</plugins>
+	</build>
+
+	<dependencies>
+		<dependency>
+			<groupId>org.apache.asterix</groupId>
+			<artifactId>asterix-lang-common</artifactId>
+			<version>0.8.8-SNAPSHOT</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.asterix</groupId>
+			<artifactId>asterix-lang-aql</artifactId>
+			<version>0.8.8-SNAPSHOT</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.asterix</groupId>
+			<artifactId>asterix-algebra</artifactId>
+			<version>0.8.8-SNAPSHOT</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.asterix</groupId>
+			<artifactId>asterix-external-data</artifactId>
+			<version>0.8.8-SNAPSHOT</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.asterix</groupId>
+			<artifactId>asterix-metadata</artifactId>
+			<version>0.8.8-SNAPSHOT</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpclient</artifactId>
+			<version>4.2.2</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.httpcomponents</groupId>
+			<artifactId>httpcore</artifactId>
+			<version>4.2.2</version>
+			<scope>compile</scope>
+		</dependency>
+		<dependency>
+			<groupId>junit</groupId>
+			<artifactId>junit</artifactId>
+			<version>4.8.1</version>
+			<scope>test</scope>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hyracks</groupId>
+			<artifactId>hyracks-control-cc</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.hyracks</groupId>
+			<artifactId>hyracks-control-nc</artifactId>
+		</dependency>
+		<dependency>
+			<groupId>org.apache.asterix</groupId>
+			<artifactId>asterix-app</artifactId>
+			<version>0.8.8-SNAPSHOT</version>
+		</dependency>
+<!-- 		<dependency>
+			<groupId>net.schmizz</groupId>
+			<artifactId>sshj</artifactId>
+			<version>0.9.0</version>
+		</dependency> -->
+		<dependency>
+		  <groupId>com.hierynomus</groupId>
+		  <artifactId>sshj</artifactId>
+		  <version>0.13.0</version>
+		</dependency>
+	</dependencies>
+
+</project>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/assembly/binary-assembly.xml
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/assembly/binary-assembly.xml b/asterix-experiments/src/main/assembly/binary-assembly.xml
new file mode 100644
index 0000000..ef74b9e
--- /dev/null
+++ b/asterix-experiments/src/main/assembly/binary-assembly.xml
@@ -0,0 +1,37 @@
+<!--
+ ! Copyright 2009-2013 by The Regents of the University of California
+ ! Licensed 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 from
+ ! 
+ !     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.
+ !-->
+<assembly>
+	<id>binary-assembly</id>
+	<formats>
+		<format>zip</format>
+		<format>dir</format>
+	</formats>
+	<includeBaseDirectory>false</includeBaseDirectory>
+	<fileSets>
+		<fileSet>
+			<directory>target/appassembler/bin</directory>
+			<outputDirectory>bin</outputDirectory>
+			<fileMode>0755</fileMode>
+		</fileSet>
+		<fileSet>
+			<directory>target/appassembler/lib</directory>
+			<outputDirectory>lib</outputDirectory>
+		</fileSet>
+		<fileSet>
+			<directory>src/main/resources/ingestion-experiment-binary-and-configs</directory>
+			<outputDirectory>.</outputDirectory>
+		</fileSet>
+	</fileSets>
+</assembly>

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/AbstractAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/AbstractAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/AbstractAction.java
new file mode 100644
index 0000000..0e58dd4
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/AbstractAction.java
@@ -0,0 +1,45 @@
+/*
+ * 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.asterix.experiment.action.base;
+
+public abstract class AbstractAction implements IAction {
+
+    private final IExceptionListener el;
+
+    protected AbstractAction() {
+        el = new DefaultExceptionListener();
+    }
+
+    protected AbstractAction(IExceptionListener el) {
+        this.el = el;
+    }
+
+    @Override
+    public void perform() {
+        try {
+            doPerform();
+        } catch (Throwable t) {
+            el.caughtException(t);
+        }
+    }
+
+    protected abstract void doPerform() throws Exception;
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/DefaultExceptionListener.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/DefaultExceptionListener.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/DefaultExceptionListener.java
new file mode 100644
index 0000000..5f89871
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/DefaultExceptionListener.java
@@ -0,0 +1,38 @@
+/*
+ * 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.asterix.experiment.action.base;
+
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+public class DefaultExceptionListener implements IExceptionListener {
+
+    private static final Logger LOGGER = Logger.getLogger(DefaultExceptionListener.class.getName());
+
+    @Override
+    public void caughtException(Throwable t) {
+        if (LOGGER.isLoggable(Level.SEVERE)) {
+            LOGGER.severe("Caught exception: " + t);
+            LOGGER.severe("Stopping...");
+            t.printStackTrace();
+        }
+        System.exit(1);
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IAction.java
new file mode 100644
index 0000000..c174a6f
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IAction.java
@@ -0,0 +1,24 @@
+/*
+ * 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.asterix.experiment.action.base;
+
+public interface IAction {
+    public void perform();
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IExceptionListener.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IExceptionListener.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IExceptionListener.java
new file mode 100644
index 0000000..e6a6cf1
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/IExceptionListener.java
@@ -0,0 +1,24 @@
+/*
+ * 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.asterix.experiment.action.base;
+
+public interface IExceptionListener {
+    public void caughtException(Throwable t);
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/ParallelActionSet.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/ParallelActionSet.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/ParallelActionSet.java
new file mode 100644
index 0000000..9593307
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/ParallelActionSet.java
@@ -0,0 +1,75 @@
+/*
+ * 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.asterix.experiment.action.base;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
+import java.util.concurrent.Semaphore;
+import java.util.concurrent.ThreadFactory;
+import java.util.concurrent.atomic.AtomicInteger;
+
+public class ParallelActionSet extends AbstractAction {
+
+    private final ExecutorService executor;
+
+    private final List<IAction> actions;
+
+    public ParallelActionSet() {
+        executor = Executors.newCachedThreadPool(new ThreadFactory() {
+
+            private final AtomicInteger tid = new AtomicInteger(0);
+
+            @Override
+            public Thread newThread(Runnable r) {
+                Thread t = new Thread(r);
+                t.setDaemon(true);
+                t.setName("ParallelActionThread " + tid.getAndIncrement());
+                return t;
+            }
+        });
+        actions = new ArrayList<>();
+    }
+
+    public void add(IAction action) {
+        actions.add(action);
+    }
+
+    @Override
+    protected void doPerform() throws Exception {
+        final Semaphore sem = new Semaphore(-(actions.size() - 1));
+        for (final IAction a : actions) {
+            executor.execute(new Runnable() {
+
+                @Override
+                public void run() {
+                    try {
+                        a.perform();
+                    } finally {
+                        sem.release();
+                    }
+                }
+            });
+        }
+        sem.acquire();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/SequentialActionList.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/SequentialActionList.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/SequentialActionList.java
new file mode 100644
index 0000000..4f4e442
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/base/SequentialActionList.java
@@ -0,0 +1,42 @@
+/*
+ * 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.asterix.experiment.action.base;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class SequentialActionList extends AbstractAction {
+    private final List<IAction> actions;
+
+    public SequentialActionList() {
+        actions = new ArrayList<>();
+    }
+
+    public void add(IAction exec) {
+        actions.add(exec);
+    }
+
+    @Override
+    protected void doPerform() throws Exception {
+        for (IAction e : actions) {
+            e.perform();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractExecutableAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractExecutableAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractExecutableAction.java
new file mode 100644
index 0000000..3f8a016
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractExecutableAction.java
@@ -0,0 +1,65 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.InputStream;
+import java.io.StringWriter;
+import java.util.Collections;
+import java.util.Map;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.commons.io.IOUtils;
+
+import org.apache.asterix.common.exceptions.AsterixException;
+import org.apache.asterix.experiment.action.base.AbstractAction;
+
+public abstract class AbstractExecutableAction extends AbstractAction {
+
+    private static final Logger LOGGER = Logger.getLogger(AbstractExecutableAction.class.getName());
+
+    protected Map<String, String> getEnvironment() {
+        return Collections.<String, String> emptyMap();
+    }
+
+    protected abstract String getCommand();
+
+    protected abstract boolean doExecute(String command, Map<String, String> env) throws Exception;
+
+    protected abstract InputStream getErrorStream();
+
+    protected abstract InputStream getInputStream();
+
+    @Override
+    protected void doPerform() throws Exception {
+        StringWriter sw = new StringWriter();
+        String cmd = getCommand();
+        if (!doExecute(cmd, getEnvironment())) {
+            IOUtils.copy(getErrorStream(), sw);
+            throw new AsterixException("Error executing command: " + cmd + ".\n Error = " + sw.toString());
+        } else {
+            IOUtils.copy(getInputStream(), sw);
+            IOUtils.copy(getErrorStream(), sw);
+        }
+        if (LOGGER.isLoggable(Level.INFO)) {
+            LOGGER.info(sw.toString());
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractLocalExecutableAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractLocalExecutableAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractLocalExecutableAction.java
new file mode 100644
index 0000000..1bba94f
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractLocalExecutableAction.java
@@ -0,0 +1,54 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.InputStream;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Map;
+
+public abstract class AbstractLocalExecutableAction extends AbstractExecutableAction {
+
+    private final ProcessBuilder pb;
+
+    private Process p;
+
+    protected AbstractLocalExecutableAction() {
+        pb = new ProcessBuilder();
+    }
+
+    protected InputStream getErrorStream() {
+        return p == null ? null : p.getErrorStream();
+    }
+
+    protected InputStream getInputStream() {
+        return p == null ? null : p.getInputStream();
+    }
+
+    @Override
+    protected boolean doExecute(String command, Map<String, String> env) throws Exception {
+        List<String> cmd = Arrays.asList(command.split(" "));
+        pb.command(cmd);
+        pb.environment().putAll(env);
+        p = pb.start();
+        int exitVal = p.waitFor();
+        return exitVal == 0;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractRemoteExecutableAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractRemoteExecutableAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractRemoteExecutableAction.java
new file mode 100644
index 0000000..8976e7c
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/AbstractRemoteExecutableAction.java
@@ -0,0 +1,89 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.InputStream;
+import java.util.Map;
+import java.util.Map.Entry;
+
+import net.schmizz.sshj.SSHClient;
+import net.schmizz.sshj.connection.channel.direct.Session;
+import net.schmizz.sshj.connection.channel.direct.Session.Command;
+
+public abstract class AbstractRemoteExecutableAction extends AbstractExecutableAction {
+
+    private final SSHClient client;
+
+    private final String hostname;
+
+    private final int port;
+
+    private final String username;
+
+    private final String keyLocation;
+
+    private Command cmd;
+
+    protected AbstractRemoteExecutableAction(String hostname, String username, String keyLocation) {
+        this(hostname, SSHClient.DEFAULT_PORT, username, keyLocation);
+    }
+
+    protected AbstractRemoteExecutableAction(String hostname, int port, String username, String keyLocation) {
+        this.hostname = hostname;
+        this.port = port;
+        this.username = username;
+        this.keyLocation = keyLocation;
+        client = new SSHClient();
+    }
+
+    protected InputStream getErrorStream() {
+        return cmd == null ? null : cmd.getErrorStream();
+    }
+
+    protected InputStream getInputStream() {
+        return cmd == null ? null : cmd.getInputStream();
+    }
+
+    @Override
+    protected boolean doExecute(String command, Map<String, String> env) throws Exception {
+        int exitVal = 0;
+        client.loadKnownHosts();
+        try {
+            client.connect(hostname, port);
+            client.authPublickey(username, keyLocation);
+            Session s = client.startSession();
+            try {
+                for (Entry<String, String> e : env.entrySet()) {
+                    s.setEnvVar(e.getKey(), e.getValue());
+                }
+                cmd = s.exec(command);
+                cmd.join();
+                Integer ev = cmd.getExitStatus();
+                exitVal = ev == null ? -1 : ev;
+                cmd.close();
+            } finally {
+                s.close();
+            }
+        } finally {
+            client.close();
+        }
+        return exitVal == 0;
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/CloseOutputStreamAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/CloseOutputStreamAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/CloseOutputStreamAction.java
new file mode 100644
index 0000000..66956f4
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/CloseOutputStreamAction.java
@@ -0,0 +1,40 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.OutputStream;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+import org.apache.hyracks.api.util.ExperimentProfilerUtils;
+
+public class CloseOutputStreamAction extends AbstractAction {
+
+    private final OutputStream os;
+
+    public CloseOutputStreamAction(OutputStream os) {
+        this.os = os;
+    }
+
+    @Override
+    protected void doPerform() throws Exception {
+        ExperimentProfilerUtils.closeOutputFile(os);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/ManagixActions.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/ManagixActions.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/ManagixActions.java
new file mode 100644
index 0000000..182cdbb
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/ManagixActions.java
@@ -0,0 +1,143 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.text.MessageFormat;
+import java.util.HashMap;
+import java.util.Map;
+
+public class ManagixActions {
+
+    private enum ManagixCommand {
+        CONFIGURE("configure"),
+        CREATE("create", "-n", "-c", "-a"),
+        START("start", "-n"),
+        STOP("stop", "-n"),
+        DELETE("delete", "-n"),
+        LOG("log", "-n", "-d"),
+        SHUTDOWN("shutdown");
+
+        private final String cmdFormat;
+
+        private ManagixCommand(String name, String... options) {
+            StringBuilder sb = new StringBuilder();
+            sb.append(name).append(" ");
+            if (options != null) {
+                for (int i = 0; i < options.length; ++i) {
+                    sb.append(options[i]).append(" ").append("{").append(i).append("}");
+                    if (i != options.length - 1) {
+                        sb.append(" ");
+                    }
+                }
+            }
+            cmdFormat = sb.toString();
+        }
+
+        public String getCommandFormat() {
+            return cmdFormat;
+        }
+    }
+
+    private static abstract class AbstractManagixCommandAction extends AbstractLocalExecutableAction {
+
+        private static final String cmdFormat = "{0}/bin/managix {1}";
+
+        private final String managixHomePath;
+
+        private final String command;
+
+        protected AbstractManagixCommandAction(String managixHomePath, String command) {
+            this.managixHomePath = managixHomePath;
+            this.command = command;
+        }
+
+        @Override
+        protected String getCommand() {
+            return MessageFormat.format(cmdFormat, managixHomePath, command);
+        }
+
+        @Override
+        protected Map<String, String> getEnvironment() {
+            Map<String, String> env = new HashMap<>();
+            env.put("MANAGIX_HOME", managixHomePath);
+            return env;
+        }
+
+    }
+
+    public static class ConfigureAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public ConfigureAsterixManagixAction(String managixHomePath) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.CONFIGURE.getCommandFormat(), ""));
+        }
+
+    }
+
+    public static class CreateAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public CreateAsterixManagixAction(String managixHomePath, String asterixInstanceName,
+                String clusterConfigFilePath, String asterixConfigFilePath) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.CREATE.getCommandFormat(), asterixInstanceName,
+                    clusterConfigFilePath, asterixConfigFilePath));
+        }
+
+    }
+
+    public static class StartAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public StartAsterixManagixAction(String managixHomePath, String asterixInstanceName) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.START.getCommandFormat(), asterixInstanceName));
+        }
+
+    }
+
+    public static class StopAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public StopAsterixManagixAction(String managixHomePath, String asterixInstanceName) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.STOP.getCommandFormat(), asterixInstanceName));
+        }
+
+    }
+
+    public static class DeleteAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public DeleteAsterixManagixAction(String managixHomePath, String asterixInstanceName) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.DELETE.getCommandFormat(), asterixInstanceName));
+        }
+
+    }
+
+    public static class LogAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public LogAsterixManagixAction(String managixHomePath, String asterixInstanceName, String destinationDir) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.LOG.getCommandFormat(), asterixInstanceName,
+                    destinationDir));
+        }
+
+    }
+
+    public static class ShutdownAsterixManagixAction extends AbstractManagixCommandAction {
+
+        public ShutdownAsterixManagixAction(String managixHomePath) {
+            super(managixHomePath, MessageFormat.format(ManagixCommand.SHUTDOWN.getCommandFormat(), ""));
+        }
+
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteAsterixDriverKill.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteAsterixDriverKill.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteAsterixDriverKill.java
new file mode 100644
index 0000000..44408e7
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteAsterixDriverKill.java
@@ -0,0 +1,33 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+public class RemoteAsterixDriverKill extends AbstractRemoteExecutableAction {
+
+    public RemoteAsterixDriverKill(String hostname, String username, String keyLocation) {
+        super(hostname, username, keyLocation);
+    }
+
+    @Override
+    protected String getCommand() {
+        return "jps | awk '{if ($2 == \"NCDriver\" || $2 == \"CCDriver\") print $1;}' | xargs -n 1 kill -9";
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteCopyFileAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteCopyFileAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteCopyFileAction.java
new file mode 100644
index 0000000..6768e94
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RemoteCopyFileAction.java
@@ -0,0 +1,70 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import net.schmizz.sshj.SSHClient;
+import net.schmizz.sshj.xfer.scp.SCPFileTransfer;
+import org.apache.asterix.experiment.action.base.AbstractAction;
+
+public class RemoteCopyFileAction extends AbstractAction {
+
+    private final String srcFilePath;
+
+    private final String destFilePath;
+
+    private final SSHClient client;
+
+    private final String hostname;
+
+    private final int port;
+
+    private final String username;
+
+    private final String keyLocation;
+
+    public RemoteCopyFileAction(String srcFilePath, String destFilePath, String hostname, String username,
+            String keyLocation) {
+        this(srcFilePath, destFilePath, hostname, SSHClient.DEFAULT_PORT, username, keyLocation);
+    }
+
+    public RemoteCopyFileAction(String srcFilePath, String destFilePath, String hostname, int port, String username,
+            String keyLocation) {
+        this.srcFilePath = srcFilePath;
+        this.destFilePath = destFilePath;
+        this.hostname = hostname;
+        this.port = port;
+        this.username = username;
+        this.keyLocation = keyLocation;
+        client = new SSHClient();
+    }
+
+    @Override
+    protected void doPerform() throws Exception {
+        client.loadKnownHosts();
+        try {
+            client.connect(hostname, port);
+            client.authPublickey(username, keyLocation);
+            SCPFileTransfer scpft = client.newSCPFileTransfer();
+            scpft.upload(srcFilePath, destFilePath);
+        } finally {
+            client.close();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLFileAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLFileAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLFileAction.java
new file mode 100644
index 0000000..2e6772a
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLFileAction.java
@@ -0,0 +1,98 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.ByteBuffer;
+import java.nio.charset.StandardCharsets;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.text.MessageFormat;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpHeaders;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+
+public class RunAQLFileAction extends AbstractAction {
+    private final Logger LOGGER = Logger.getLogger(RunAQLFileAction.class.getName());
+    private static final String REST_URI_TEMPLATE = "http://{0}:{1}/aql";
+
+    private final HttpClient httpClient;
+
+    private final Path aqlFilePath;
+
+    private final String restHost;
+
+    private final int restPort;
+
+    private final OutputStream os;
+
+    public RunAQLFileAction(HttpClient httpClient, String restHost, int restPort, Path aqlFilePath) {
+        this.httpClient = httpClient;
+        this.aqlFilePath = aqlFilePath;
+        this.restHost = restHost;
+        this.restPort = restPort;
+        os = null;
+    }
+
+    public RunAQLFileAction(HttpClient httpClient, String restHost, int restPort, Path aqlFilePath, OutputStream os) {
+        this.httpClient = httpClient;
+        this.aqlFilePath = aqlFilePath;
+        this.restHost = restHost;
+        this.restPort = restPort;
+        this.os = os;
+    }
+
+    @Override
+    public void doPerform() throws Exception {
+        String aql = StandardCharsets.UTF_8.decode(ByteBuffer.wrap(Files.readAllBytes(aqlFilePath))).toString();
+        String uri = MessageFormat.format(REST_URI_TEMPLATE, restHost, String.valueOf(restPort));
+        HttpPost post = new HttpPost(uri);
+        post.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
+        post.setEntity(new StringEntity(aql, StandardCharsets.UTF_8));
+        HttpEntity entity = httpClient.execute(post).getEntity();
+        if (entity != null && entity.isStreaming()) {
+            printStream(entity.getContent());
+        }
+        if (aql.contains("compact")) {
+            if (LOGGER.isLoggable(Level.INFO)) {
+                LOGGER.info("Compaction has been completed");
+            }
+        }
+    }
+
+    private void printStream(InputStream content) throws IOException {
+        if (os == null) {
+            IOUtils.copy(content, System.out);
+            System.out.flush();
+        } else {
+            IOUtils.copy(content, os);
+            os.flush();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLStringAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLStringAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLStringAction.java
new file mode 100644
index 0000000..1785e75
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunAQLStringAction.java
@@ -0,0 +1,86 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.text.MessageFormat;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+import org.apache.commons.io.IOUtils;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpHeaders;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpPost;
+import org.apache.http.entity.StringEntity;
+
+public class RunAQLStringAction extends AbstractAction {
+    private static final String REST_URI_TEMPLATE = "http://{0}:{1}/aql";
+
+    private final HttpClient httpClient;
+
+    private final String aql;
+
+    private final String restHost;
+
+    private final int restPort;
+
+    private final OutputStream os;
+
+    public RunAQLStringAction(HttpClient httpClient, String restHost, int restPort, String aql) {
+        this.httpClient = httpClient;
+        this.aql = aql;
+        this.restHost = restHost;
+        this.restPort = restPort;
+        os = null;
+    }
+
+    public RunAQLStringAction(HttpClient httpClient, String restHost, int restPort, String aql, OutputStream os) {
+        this.httpClient = httpClient;
+        this.aql = aql;
+        this.restHost = restHost;
+        this.restPort = restPort;
+        this.os = os;
+    }
+
+    @Override
+    public void doPerform() throws Exception {
+        String uri = MessageFormat.format(REST_URI_TEMPLATE, restHost, String.valueOf(restPort));
+        HttpPost post = new HttpPost(uri);
+        post.setHeader(HttpHeaders.CONTENT_TYPE, "application/json");
+        post.setEntity(new StringEntity(aql, StandardCharsets.UTF_8));
+        HttpEntity entity = httpClient.execute(post).getEntity();
+        if (entity != null && entity.isStreaming()) {
+            printStream(entity.getContent());
+        }
+    }
+
+    private void printStream(InputStream content) throws IOException {
+        if (os == null) {
+            IOUtils.copy(content, System.out);
+            System.out.flush();
+        } else {
+            IOUtils.copy(content, os);
+            os.flush();
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunRESTIOWaitAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunRESTIOWaitAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunRESTIOWaitAction.java
new file mode 100644
index 0000000..9646d32
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/RunRESTIOWaitAction.java
@@ -0,0 +1,54 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.text.MessageFormat;
+
+import org.apache.http.HttpEntity;
+import org.apache.http.client.HttpClient;
+import org.apache.http.client.methods.HttpGet;
+import org.apache.http.util.EntityUtils;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+
+public class RunRESTIOWaitAction extends AbstractAction {
+    private static final String REST_URI_TEMPLATE = "http://{0}:{1}/iowait";
+
+    private final HttpClient httpClient;
+
+    private final String restHost;
+
+    private final int restPort;
+
+    public RunRESTIOWaitAction(HttpClient httpClient, String restHost, int restPort) {
+        this.httpClient = httpClient;
+        this.restHost = restHost;
+        this.restPort = restPort;
+    }
+
+    @Override
+    public void doPerform() throws Exception {
+        String uri = MessageFormat.format(REST_URI_TEMPLATE, restHost, String.valueOf(restPort));
+        HttpGet get = new HttpGet(uri);
+        HttpEntity entity = httpClient.execute(get).getEntity();
+        EntityUtils.consume(entity);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/SleepAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/SleepAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/SleepAction.java
new file mode 100644
index 0000000..5200c8b
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/SleepAction.java
@@ -0,0 +1,37 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+
+public class SleepAction extends AbstractAction {
+
+    private final long ms;
+
+    public SleepAction(long ms) {
+        this.ms = ms;
+    }
+
+    @Override
+    protected void doPerform() throws Exception {
+        Thread.sleep(ms);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/StartDataGeneratorAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/StartDataGeneratorAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/StartDataGeneratorAction.java
new file mode 100644
index 0000000..f0d51ac
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/StartDataGeneratorAction.java
@@ -0,0 +1,53 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.StringWriter;
+
+import net.schmizz.sshj.SSHClient;
+import net.schmizz.sshj.connection.channel.direct.Session;
+import net.schmizz.sshj.connection.channel.direct.Session.Command;
+
+import org.apache.commons.io.IOUtils;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+
+public class StartDataGeneratorAction extends AbstractAction {
+
+    @Override
+    protected void doPerform() throws Exception {
+    }
+
+    public static void main(String[] args) throws Exception {
+        SSHClient sshClient = new SSHClient();
+        sshClient.loadKnownHosts();
+        sshClient.connect("asterix-1.ics.uci.edu");
+        sshClient.authPublickey("zheilbro", "/Users/zheilbron/.ssh/id_rsa");
+        Session session = sshClient.startSession();
+        Command lsCmd = session.exec("ls");
+        StringWriter sw = new StringWriter();
+        IOUtils.copy(lsCmd.getInputStream(), sw);
+        IOUtils.copy(lsCmd.getErrorStream(), sw);
+        System.out.println(sw.toString());
+        session.close();
+        sw.close();
+        sshClient.close();
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/TimedAction.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/TimedAction.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/TimedAction.java
new file mode 100644
index 0000000..f0e7ad7
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/action/derived/TimedAction.java
@@ -0,0 +1,61 @@
+/*
+ * 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.asterix.experiment.action.derived;
+
+import java.io.OutputStream;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import org.apache.asterix.experiment.action.base.AbstractAction;
+import org.apache.asterix.experiment.action.base.IAction;
+
+public class TimedAction extends AbstractAction {
+
+    private final Logger LOGGER = Logger.getLogger(TimedAction.class.getName());
+
+    private final IAction action;
+    private final OutputStream os;
+
+    public TimedAction(IAction action) {
+        this.action = action;
+        os = null;
+    }
+
+    public TimedAction(IAction action, OutputStream os) {
+        this.action = action;
+        this.os = os;
+    }
+
+    @Override
+    protected void doPerform() throws Exception {
+        long start = System.currentTimeMillis();
+        action.perform();
+        long end = System.currentTimeMillis();
+        if (LOGGER.isLoggable(Level.SEVERE)) {
+            if (os == null) {
+                System.out.println("Elapsed time = " + (end - start) + " for action " + action);
+                System.out.flush();
+            } else {
+                os.write(("Elapsed time = " + (end - start) + " for action " + action).getBytes());
+                os.flush();
+            }
+        }
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment1Builder.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment1Builder.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment1Builder.java
new file mode 100644
index 0000000..4461fd7
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment1Builder.java
@@ -0,0 +1,40 @@
+/*
+ * 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.asterix.experiment.builder;
+
+import org.apache.asterix.experiment.action.base.SequentialActionList;
+import org.apache.asterix.experiment.action.derived.RunAQLFileAction;
+import org.apache.asterix.experiment.client.LSMExperimentConstants;
+import org.apache.asterix.experiment.client.LSMExperimentSetRunner.LSMExperimentSetRunnerConfig;
+
+public abstract class AbstractExperiment1Builder extends AbstractLSMBaseExperimentBuilder {
+
+    public AbstractExperiment1Builder(String name, LSMExperimentSetRunnerConfig config, String clusterConfigFileName,
+            String ingestFileName, String dgenFileName) {
+        super(name, config, clusterConfigFileName, ingestFileName, dgenFileName, "count.aql");
+    }
+
+    @Override
+    protected void doBuildDDL(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("1.aql")));
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2ABuilder.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2ABuilder.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2ABuilder.java
new file mode 100644
index 0000000..4dce1af
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2ABuilder.java
@@ -0,0 +1,39 @@
+/*
+ * 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.asterix.experiment.builder;
+
+import org.apache.asterix.experiment.action.base.SequentialActionList;
+import org.apache.asterix.experiment.action.derived.RunAQLFileAction;
+import org.apache.asterix.experiment.client.LSMExperimentConstants;
+import org.apache.asterix.experiment.client.LSMExperimentSetRunner.LSMExperimentSetRunnerConfig;
+
+public abstract class AbstractExperiment2ABuilder extends AbstractLSMBaseExperimentBuilder {
+
+    public AbstractExperiment2ABuilder(String name, LSMExperimentSetRunnerConfig config, String clusterConfigFileName,
+            String ingestFileName, String dgenFileName) {
+        super(name, config, clusterConfigFileName, ingestFileName, dgenFileName, "count.aql");
+    }
+
+    @Override
+    protected void doBuildDDL(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("2_a.aql")));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2BBuilder.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2BBuilder.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2BBuilder.java
new file mode 100644
index 0000000..2aeb6f8
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2BBuilder.java
@@ -0,0 +1,39 @@
+/*
+ * 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.asterix.experiment.builder;
+
+import org.apache.asterix.experiment.action.base.SequentialActionList;
+import org.apache.asterix.experiment.action.derived.RunAQLFileAction;
+import org.apache.asterix.experiment.client.LSMExperimentConstants;
+import org.apache.asterix.experiment.client.LSMExperimentSetRunner.LSMExperimentSetRunnerConfig;
+
+public abstract class AbstractExperiment2BBuilder extends AbstractLSMBaseExperimentBuilder {
+
+    public AbstractExperiment2BBuilder(String name, LSMExperimentSetRunnerConfig config, String clusterConfigFileName,
+            String ingestFileName, String dgenFileName) {
+        super(name, config, clusterConfigFileName, ingestFileName, dgenFileName, "count.aql");
+    }
+
+    @Override
+    protected void doBuildDDL(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("2_b.aql")));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2CBuilder.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2CBuilder.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2CBuilder.java
new file mode 100644
index 0000000..f54c78a
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2CBuilder.java
@@ -0,0 +1,45 @@
+/*
+ * 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.asterix.experiment.builder;
+
+import org.apache.asterix.experiment.action.base.SequentialActionList;
+import org.apache.asterix.experiment.action.derived.RunAQLFileAction;
+import org.apache.asterix.experiment.client.LSMExperimentConstants;
+import org.apache.asterix.experiment.client.LSMExperimentSetRunner.LSMExperimentSetRunnerConfig;
+
+public abstract class AbstractExperiment2CBuilder extends AbstractLSMBaseExperimentBuilder {
+
+    public AbstractExperiment2CBuilder(String name, LSMExperimentSetRunnerConfig config, String clusterConfigFileName,
+            String ingestFileName, String dgenFileName) {
+        super(name, config, clusterConfigFileName, ingestFileName, dgenFileName, "count.aql");
+    }
+
+    @Override
+    protected void doBuildDDL(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("2_c.aql")));
+    }
+
+    @Override
+    protected void doPost(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("avg_gram_tokens.aql")));
+    }
+}

http://git-wip-us.apache.org/repos/asf/incubator-asterixdb/blob/a70fba5c/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2DBuilder.java
----------------------------------------------------------------------
diff --git a/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2DBuilder.java b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2DBuilder.java
new file mode 100644
index 0000000..f54b523
--- /dev/null
+++ b/asterix-experiments/src/main/java/org/apache/asterix/experiment/builder/AbstractExperiment2DBuilder.java
@@ -0,0 +1,45 @@
+/*
+ * 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.asterix.experiment.builder;
+
+import org.apache.asterix.experiment.action.base.SequentialActionList;
+import org.apache.asterix.experiment.action.derived.RunAQLFileAction;
+import org.apache.asterix.experiment.client.LSMExperimentConstants;
+import org.apache.asterix.experiment.client.LSMExperimentSetRunner.LSMExperimentSetRunnerConfig;
+
+public abstract class AbstractExperiment2DBuilder extends AbstractLSMBaseExperimentBuilder {
+
+    public AbstractExperiment2DBuilder(String name, LSMExperimentSetRunnerConfig config, String clusterConfigFileName,
+            String ingestFileName, String dgenFileName) {
+        super(name, config, clusterConfigFileName, ingestFileName, dgenFileName, "count.aql");
+    }
+
+    @Override
+    protected void doBuildDDL(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("2_d.aql")));
+    }
+
+    @Override
+    protected void doPost(SequentialActionList seq) {
+        seq.add(new RunAQLFileAction(httpClient, restHost, restPort, localExperimentRoot.resolve(
+                LSMExperimentConstants.AQL_DIR).resolve("avg_keyword_tokens.aql")));
+    }
+}



Mime
View raw message