Added asterix project
git-svn-id: https://asterixdb.googlecode.com/svn/trunk/asterix@12 eaa15691-b419-025a-1212-ee371bd00084
diff --git a/asterix-dist/pom.xml b/asterix-dist/pom.xml
new file mode 100644
index 0000000..2ac2ed9
--- /dev/null
+++ b/asterix-dist/pom.xml
@@ -0,0 +1,54 @@
+<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/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <artifactId>asterix-dist</artifactId>
+ <parent>
+ <groupId>edu.uci.ics.asterix</groupId>
+ <artifactId>asterix</artifactId>
+ <version>0.0.4-SNAPSHOT</version>
+ </parent>
+
+ <build>
+ <plugins>
+ <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>edu.uci.ics.hyracks</groupId>
+ <artifactId>hyracks-server</artifactId>
+ <version>0.2.0-SNAPSHOT</version>
+ <type>zip</type>
+ <classifier>binary-assembly</classifier>
+ </dependency>
+ <dependency>
+ <groupId>edu.uci.ics.hyracks</groupId>
+ <artifactId>hyracks-cli</artifactId>
+ <version>0.2.0-SNAPSHOT</version>
+ <type>zip</type>
+ <classifier>binary-assembly</classifier>
+ </dependency>
+ <dependency>
+ <groupId>edu.uci.ics.asterix</groupId>
+ <artifactId>asterix-app</artifactId>
+ <version>0.0.4-SNAPSHOT</version>
+ <type>zip</type>
+ <classifier>binary-assembly</classifier>
+ </dependency>
+ </dependencies>
+</project>
diff --git a/asterix-dist/src/main/assembly/binary-assembly.xml b/asterix-dist/src/main/assembly/binary-assembly.xml
new file mode 100644
index 0000000..ecf6d32
--- /dev/null
+++ b/asterix-dist/src/main/assembly/binary-assembly.xml
@@ -0,0 +1,48 @@
+<assembly>
+ <id>binary-assembly</id>
+ <formats>
+ <format>zip</format>
+ <format>dir</format>
+ </formats>
+ <includeBaseDirectory>false</includeBaseDirectory>
+ <fileSets>
+ <fileSet>
+ <directory>src/main/scripts</directory>
+ <outputDirectory>.</outputDirectory>
+ </fileSet>
+ </fileSets>
+ <dependencySets>
+ <dependencySet>
+ <outputDirectory>hyracks-server</outputDirectory>
+ <includes>
+ <include>hyracks-server*</include>
+ </includes>
+ <unpack>true</unpack>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ </dependencySet>
+ <dependencySet>
+ <outputDirectory>hyracks-cli</outputDirectory>
+ <includes>
+ <include>hyracks-cli*</include>
+ </includes>
+ <unpack>true</unpack>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ </dependencySet>
+ <dependencySet>
+ <outputDirectory>asterix</outputDirectory>
+ <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
+ <includes>
+ <include>asterix-app*</include>
+ </includes>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ </dependencySet>
+ <!--dependencySet>
+ <outputDirectory>archives</outputDirectory>
+ <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
+ <excludes>
+ <exclude>asterix-dist*</exclude>
+ </excludes>
+ <useTransitiveDependencies>false</useTransitiveDependencies>
+ </dependencySet-->
+ </dependencySets>
+</assembly>
diff --git a/asterix-dist/src/main/scripts/startasterix.sh b/asterix-dist/src/main/scripts/startasterix.sh
new file mode 100644
index 0000000..b84834f
--- /dev/null
+++ b/asterix-dist/src/main/scripts/startasterix.sh
@@ -0,0 +1,79 @@
+#!/bin/bash
+
+# Logging output for the CC and NCs is directed to their appropriately named
+# files in LOG_HOME
+#
+# Example usage: ./runasterix.sh 4
+# Loads 1 CC, 4 NCs (nc0, nc1, nc2, and nc3)
+#
+
+BASEDIR=`pwd`/$(dirname $0)
+echo "Base dir: " ${BASEDIR}
+
+ASTERIX_BIN=${BASEDIR}/asterix/asterix-app.zip
+HYRACKS_SERVER_BIN=${BASEDIR}/hyracks-server/bin
+HYRACKS_CLI_BIN=${BASEDIR}/hyracks-cli/bin
+
+CONFIG_DIR=${BASEDIR}/config
+LOG_DIR=${BASEDIR}/log
+
+mkdir ${LOG_DIR} ${CONFIG_DIR}
+
+CONFIG_NAME=local-autogen.properties # name of config file to generate
+
+# check existence of directories
+dirs=($HYRACKS_SERVER_BIN $HYRACKS_CLI_BIN $LOG_DIR $CONFIG_DIR)
+for i in "${dirs[@]}"
+do
+ if [ ! -d "$i" ]
+ then
+ printf "Error: invalid directory layout -- can't access $i\n" >&2
+ exit 2
+ fi
+done
+
+# set number of node controllers to load
+if [ "$1" == "" ]
+then
+ numnc=1
+else
+ if echo $1 | egrep -q '^[0-9]+$'; then
+ numnc=$1
+ else
+ printf "Error: $1 is not a number.\n" >&2
+ printf "usage: %s [number_of_ncs]\n" $(basename $0) >&2
+ exit 2
+ fi
+fi
+
+# generate a suitable config file
+echo "generating config file..."
+printf "MetadataNode=nc1\nNewUniverse=true\n" > $CONFIG_DIR/$CONFIG_NAME
+for ((i=1;i<=$numnc;i++)); do
+ echo "nc$i.stores=/tmp/nc$i/" >> $CONFIG_DIR/$CONFIG_NAME
+done
+echo "OutputDir=/tmp/asterix_output/" >> $CONFIG_DIR/$CONFIG_NAME
+
+# point to the config file and give java some extra memory
+export CLASSPATH_PREFIX=$CONFIG_DIR
+export JAVA_OPTS="-DAsterixConfigFileName=$CONFIG_NAME -Xms256m -Xmx512m"
+
+echo "cluster controller starting..."
+sh $HYRACKS_SERVER_BIN/hyrackscc -cc-root localhost -client-net-ip-address 127.0.0.1 -cluster-net-ip-address 127.0.0.1 &> $LOG_DIR/cc.log &
+
+# for some reason this helps against getting a socket error
+sleep 3
+
+# start the node controllers
+for ((i=1;i<=$numnc;i++)); do
+ echo "node controller (nc$i) starting..."
+ sh $HYRACKS_SERVER_BIN/hyracksnc -cc-host localhost -cluster-net-ip-address 127.0.0.1 -data-ip-address 127.0.0.1 -node-id "nc$i" \
+ &> $LOG_DIR/nc$i.log &
+
+ # avoid socket error
+ sleep .5
+done
+
+# deploy the asterix application to hyracks
+echo "connect to \"localhost\";create application asterix \"$ASTERIX_BIN\";" > $CONFIG_DIR/deploy.hcli
+cat $CONFIG_DIR/deploy.hcli | sh $HYRACKS_CLI_BIN/hyrackscli
diff --git a/asterix-dist/src/main/scripts/stopasterix.sh b/asterix-dist/src/main/scripts/stopasterix.sh
new file mode 100644
index 0000000..7b32b85
--- /dev/null
+++ b/asterix-dist/src/main/scripts/stopasterix.sh
@@ -0,0 +1,21 @@
+#!/bin/bash
+
+# get the PIDs of java processes we started
+if [ "$JAVA_HOME" != "" ]
+then
+ PIDS=`$JAVA_HOME/bin/jps`
+else
+ PIDS=`jps`
+fi
+
+while IFS='\n' read -ra MYPIDS; do
+ for i in "${MYPIDS[@]}"; do
+ pid=`echo $i | grep 'CCDriver\|NCDriver\|VirtualClusterDriver' | awk '{print $1}'`
+ name=`echo $i | grep 'CCDriver\|NCDriver\|VirtualClusterDriver' | awk '{print $2}'`
+ if [ "$pid" != "" ]
+ then
+ echo "Stopping $name: $pid"
+ kill -9 $pid
+ fi
+ done
+done <<< "$PIDS"