summaryrefslogtreecommitdiffstats
path: root/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf
diff options
context:
space:
mode:
Diffstat (limited to 'testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf')
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Config.java34
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Makefile80
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.properties8
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.xml114
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/config.mk32
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/cpu_mem.sh100
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/mysql.properties_template83
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsBO.sh77
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsRW.sh83
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos.properties_template79
-rw-r--r--testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/web.xml203
11 files changed, 893 insertions, 0 deletions
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Config.java b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Config.java
new file mode 100644
index 00000000..f84ded04
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Config.java
@@ -0,0 +1,34 @@
+package edu.rice.rubbos.servlets;
+
+public class Config
+{
+
+ /**
+ * Creates a new <code>Config</code> instance.
+ */
+ Config()
+ {
+ }
+
+
+ public static final String HTMLFilesPath = "/bottlenecks/rubbos/app/RUBBoS/Servlet_HTML";
+ public static final String[] DatabaseProperties = {"/bottlenecks/rubbos/app/RUBBoS/Servlets/mysql.properties"};
+ public static final int DatabasePropertiesSize = 1;
+
+ public static final int AboutMePoolSize = 10;
+ public static final int BrowseCategoriesPoolSize = 6;
+ public static final int BrowseRegionsPoolSize = 6;
+ public static final int BuyNowPoolSize = 4;
+ public static final int PutBidPoolSize = 8;
+ public static final int PutCommentPoolSize = 2;
+ public static final int RegisterItemPoolSize = 2;
+ public static final int RegisterUserPoolSize = 2;
+ public static final int SearchItemsByCategoryPoolSize = 15;
+ public static final int SearchItemsByRegionPoolSize = 20;
+ public static final int StoreBidPoolSize = 8;
+ public static final int StoreBuyNowPoolSize = 4;
+ public static final int StoreCommentPoolSize = 2;
+ public static final int ViewBidHistoryPoolSize = 4;
+ public static final int ViewItemPoolSize = 20;
+ public static final int ViewUserInfoPoolSize = 4;
+}
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Makefile b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Makefile
new file mode 100644
index 00000000..565b22be
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/Makefile
@@ -0,0 +1,80 @@
+
+
+###########################
+# RUBBoS Makefile #
+###########################
+
+include config.mk
+
+##############################
+# Environment variables #
+##############################
+
+JAVA = $(JAVA_HOME)/bin/java
+JAVAC = $(JAVA_HOME)/bin/javac
+JAVACOPTS = -deprecation
+JAVACC = $(JAVAC) $(JAVACOPTS)
+RMIC = $(JAVA_HOME)/bin/rmic
+RMIREGISTRY= $(JAVA_HOME)/bin/rmiregistry
+#CLASSPATH = .:$(J2EE_HOME)/lib/j2ee.jar:$(JAVA_HOME)/jre/lib/rt.jar:$TOMCATservlet.jar
+CLASSPATH = .:$(J2EE_HOME)/lib/j2ee.jar:$(JAVA_HOME)/jre/lib/rt.jar
+JAVADOC = $(JAVA_HOME)/javadoc
+
+
+#########################
+# Servlets version #
+#########################
+#ServletPrinter
+Servlets = Config TimeManagement BrowseCategories Auth RegisterUser RubbosHttpServlet BrowseRegions SearchItemsByCategory SearchItemsByRegion ViewItem ViewBidHistory ViewUserInfo SellItemForm RegisterItem PutCommentAuth PutComment StoreComment BuyNowAuth BuyNow StoreBuyNow PutBidAuth PutBid StoreBid AboutMe
+
+all_servlets_sources = $(addprefix edu/rice/rubbos/servlets/, $(addsuffix .java, $(Servlets)))
+all_servlets_obj = $(addprefix edu/rice/rubbos/servlets/, $(addsuffix .class, $(Servlets)))
+
+servlets: $(all_servlets_obj)
+
+clean_servlets:
+ rm -f edu/rice/rubbos/servlets/*.class
+
+####################
+# Client #
+####################
+
+ClientFiles = URLGenerator URLGeneratorPHP RUBBoSProperties Stats \
+ TransitionTable ClientEmulator UserSession
+
+all_client_sources = $(addprefix edu/rice/rubbos/client/, $(addsuffix .java, $(ClientFiles)))
+all_client_obj = $(addprefix edu/rice/rubbos/client/, $(addsuffix .class, $(ClientFiles))) edu/rice/rubbos/beans/TimeManagement.class
+
+client: $(all_client_obj)
+
+initDB:
+ ${JAVA} -classpath .:./database edu.rice.rubbos.client.InitDB ${PARAM}
+
+emulator:
+ ${JAVA} -classpath Client:Client/rubbos_client.jar:. -Xmx1300m -Dhttp.keepAlive=true -Dhttp.maxConnections=1000000 edu.rice.rubbos.client.ClientEmulator
+
+emulatorDebug:
+ ${JAVA} -classpath Client:Client/rubbos_client.jar:. -Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n -Xmx1300m -Dhttp.keepAlive=true -Dhttp.maxConnections=1000000 edu.rice.rubbos.client.ClientEmulator
+
+
+############################
+# Global rules #
+############################
+
+
+all: beans ejb_servlets client javadoc flush_cache
+
+world: all servlets
+
+javadoc :
+ ${JAVADOC} -d ./doc/api -bootclasspath ${CLASSPATH} -version -author -windowtitle "RUBBoS API" -header "<b>RUBBoS (C)2001 Rice University/INRIA</b><br>" edu.rice.rubbos.beans edu.rice.rubbos.beans.servlets edu.rice.rubbos.client
+
+clean:
+ rm -f core edu/rice/rubbos/beans/*.class edu/rice/rubbos/beans/JOnAS* edu/rice/rubbos/beans/servlets/*.class edu/rice/rubbos/client/*.class edu/rice/rubbos/servlets/*.class
+
+%.class: %.java
+ ${JAVACC} -classpath ${CLASSPATH} $<
+
+flush_cache: bench/flush_cache.c
+ gcc bench/flush_cache.c -o bench/flush_cache
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.properties b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.properties
new file mode 100644
index 00000000..dc3fbaaa
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.properties
@@ -0,0 +1,8 @@
+
+src = .
+dist =.
+classes.dir = ./build
+web.dir = ../Servlet_HTML
+
+j2ee = /bottlenecks/rubbos/app/j2sdkee1.3.1
+mysql_connector = ./mysql-connector-java-5.1.7-bin.jar
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.xml b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.xml
new file mode 100644
index 00000000..37472041
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/build.xml
@@ -0,0 +1,114 @@
+
+
+<project name="RUBBoS Servlets" default="dist" basedir=".">
+ <!-- RUBBoS Servlets Ant build file -->
+
+ <!-- set global properties for this build -->
+ <property file="../build.properties" />
+ <property name="servlets.html" value="../Servlet_HTML" />
+
+<!-- ====================================================================== -->
+<!-- Init -->
+<!-- ====================================================================== -->
+
+ <!-- init rule creates build directory -->
+ <target name="init">
+ <!-- Create the time stamp -->
+ <tstamp/>
+ <!-- Create the build directory structure used by compile -->
+ <mkdir dir="${classes.dir}"/>
+ </target>
+
+<!-- ====================================================================== -->
+<!-- Servlets -->
+<!-- ====================================================================== -->
+
+ <!-- The classpath to be used to compile -->
+ <path id="base.classpath">
+ <pathelement location="${classes.dir}" />
+ <fileset dir="${j2ee}/lib">
+ <include name="j2ee.jar"/>
+ </fileset>
+ </path>
+
+ <!-- Creates a jar file containing the servlets -->
+ <target name="jar" depends="init, compile">
+ <jar destfile="${dist}/rubbos_servlets.jar">
+ <fileset dir="${classes.dir}"
+ includes="edu/rice/rubbos/servlets/*.class"/>
+ </jar>
+ </target>
+
+ <!-- Create a war file-->
+ <target name="war" depends="init, compile, jar">
+ <copy file="${dist}/rubbos_servlets.jar" todir="${servlets.html}/WEB-INF/lib"/>
+ <copy file="${j2ee}/lib/j2ee.jar" todir="${servlets.html}/WEB-INF/lib"/>
+
+ <copy file="${mysql_connector}" todir="${servlets.html}/WEB-INF/lib"/>
+
+ <war destfile="${dist}/rubbos.war" webxml="${servlets.html}/WEB-INF/web.xml" basedir="${web.dir}">
+ <fileset dir="${classes.dir}"
+ includes="*" excludes="**/web.xml" />
+ </war>
+ </target>
+
+ <!-- Dist rule -->
+ <target name="dist" depends="init, compile, jar, war">
+ </target>
+
+ <!-- compile rule: Compile the beans and the servlets -->
+ <target name="compile" depends="init">
+ <javac srcdir="${src}"
+ includes="edu/rice/rubbos/servlets/*"
+ destdir="${classes.dir}"
+ classpath="${build.classpath}"
+ depend="yes"
+ deprecation="yes">
+ <classpath refid="base.classpath" />
+ </javac>
+ </target>
+
+<!-- ====================================================================== -->
+<!-- Javadoc -->
+<!-- ====================================================================== -->
+
+ <!-- Generate Javadoc documentation -->
+ <target name="doc">
+ <mkdir dir="docs/api"/>
+ <javadoc classpathref="base.classpath"
+ packagenames="edu.rice.rubbos.*.*"
+ sourcepath="."
+ defaultexcludes="yes"
+ destdir="docs/api"
+ author="true"
+ version="true"
+ use="true"
+ windowtitle="RUBBoS API">
+ <doctitle><![CDATA[<h1>RUBBoS API</h1>]]></doctitle>
+ <bottom><![CDATA[<i>Copyright &#169; 2004 - ObjectWeb Consortium - All Rights Reserved.</i>]]></bottom>
+ </javadoc>
+ </target>
+
+<!-- ====================================================================== -->
+<!-- Clean -->
+<!-- ====================================================================== -->
+
+ <target name="clean">
+ <!-- Delete the ${classes.dir} and ${dist} directory trees -->
+ <delete dir="${classes.dir}"/>
+ <delete>
+ <fileset dir="${dist}" includes="rubbos_servlets.jar"/>
+ </delete>
+ <delete>
+ <fileset dir="${dist}" includes="rubbos.war"/>
+ </delete>
+ <delete>
+ <fileset dir="edu" includes="**/*.class"/>
+ </delete>
+ </target>
+
+ <target name="clean-doc">
+ <delete dir="docs/api"/>
+ </target>
+</project>
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/config.mk b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/config.mk
new file mode 100644
index 00000000..9182da4d
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/config.mk
@@ -0,0 +1,32 @@
+
+##############################
+# Environment variables #
+##############################
+
+JAVA = $(JAVA_HOME)/bin/java
+JAVAC = $(JAVA_HOME)/bin/javac
+JAVACOPTS = -deprecation
+JAVACC = $(JAVAC) $(JAVACOPTS)
+RMIC = $(JAVA_HOME)/bin/rmic
+RMIREGISTRY= $(JAVA_HOME)/bin/rmiregistry
+CLASSPATH = .:$(J2EE_HOME)/lib/j2ee.jar:$(JAVA_HOME)/jre/lib/rt.jar:$(SERVLET_API_PATH)
+JAVADOC = $(JAVA_HOME)/bin/javadoc
+JAR = $(JAVA_HOME)/bin/jar
+
+GENIC = ${JONAS_ROOT}/bin/unix/GenIC
+
+MAKE = gmake
+CP = /bin/cp
+RM = /bin/rm
+MKDIR = /bin/mkdir
+
+
+# EJB server: supported values are jonas or jboss
+EJB_SERVER = jonas
+
+# DB server: supported values are MySQL or PostgreSQL
+DB_SERVER = MySQL
+
+%.class: %.java
+ ${JAVACC} -classpath ${CLASSPATH} $<
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/cpu_mem.sh b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/cpu_mem.sh
new file mode 100644
index 00000000..069cf079
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/cpu_mem.sh
@@ -0,0 +1,100 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+cd /bottlenecks/rubbos/rubbos_scripts/1-1-1
+source set_bottlenecks_rubbos_env.sh
+cd -
+
+# delay inbetween snapshots
+
+delay=1
+
+# central host to send results to
+analysis_host=$BENCHMARK_HOST
+
+# monitoring start/end time in format YYYYmmddHHMMSS (20050920152059)
+start_time=$1
+end_time=$2
+
+# data filename suffix
+data_filename_suffix="`hostname`-${start_time}.data"
+
+# sar filename
+sar_filename=$RUBBOS_APP/sar-${data_filename_suffix}
+
+# iostat filename
+iostat_filename=$RUBBOS_APP/iostat-${data_filename_suffix}
+
+# ps filename
+ps_filename=$RUBBOS_APP/ps-${data_filename_suffix}
+
+# date command in predefined format
+date_cmd="date +%Y%m%d%H%M%S"
+date=`$date_cmd`
+
+# TEST MODE: start_time will be 2 seconds from launch, end time 5 seconds
+#start_time=`expr $date \+ 2`
+#end_time=`expr $date \+ 5`
+
+#echo
+#echo Current timestamp: $date
+#echo Start timestamp: $start_time
+#echo End timestamp: $end_time
+#echo
+
+# make sure they have all arguments
+if [ "$end_time" = "" ]; then
+ echo usage: $0 \<delay\> \<analysis host\> \<start time\> \<end time\>
+ echo start_time and end_time are in YYYYmmddHHMMSS format
+ echo ie: 9/30/2005, 2:31:54pm = 20050930143154
+ echo
+ exit
+fi
+
+# wait until start time
+#echo -n Waiting until start time \(${start_time}\)..
+date=`$date_cmd`
+while [ $date -lt $start_time ]; do
+ sleep 1
+ date=`$date_cmd`
+done
+#echo
+
+
+# launch iostat
+sudo nice -n -1 $SYSSTAT_HOME/bin/iostat -dxtk $delay > ${iostat_filename} &
+iostat_pid=$!
+
+
+# run test until end time
+#echo -n Running test until end time \(${end_time}\)..
+while [ $date -lt $end_time ]; do
+
+ sleep $delay
+ date=`$date_cmd`
+done
+#echo
+
+
+# kill iostat
+sudo kill -9 $iostat_pid
+
+
+# chmod
+
+sudo chmod g+w ${iostat_filename}
+sudo chmod o+r ${iostat_filename}
+
+
+# send data to analysis host
+#echo Sending data to analysis host..
+#scp -o StrictHostKeyChecking=no -o BatchMode=yes ${sar_filename} ${analysis_host}:/tmp/elba/rubbos
+#scp -o StrictHostKeyChecking=no -o BatchMode=yes ${ps_filename} ${analysis_host}:/tmp/elba/rubbos
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/mysql.properties_template b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/mysql.properties_template
new file mode 100644
index 00000000..87a5fd8b
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/mysql.properties_template
@@ -0,0 +1,83 @@
+
+###################### PostgreSQL DataSource configuration example
+#
+
+
+#####
+# DataSource configuration
+#
+datasource.name mysql
+
+datasource.url jdbc:mysql://REPLACE_MYSQL1_HOST:3306/rubbos
+datasource.classname com.mysql.jdbc.Driver
+
+datasource.username rubbos
+datasource.password rubbos
+
+
+#####
+# ConnectionManager configuration
+#
+
+# JDBC connection checking level.
+# 0 = no special checking
+# 1 = check physical connection is still open before reusing it
+# 2 = try every connection before reusing it
+jdbc.connchecklevel 1
+
+# Max age for jdbc connections
+# nb of minutes a connection can be kept in the pool
+jdbc.connmaxage 30
+
+# Max concurrent threads on same tx/connection
+# (not used with a customized jdbc datasource)
+jdbc.connmaxthreads 4
+
+# Max wait time if more than connmaxthreads threads request conn
+# value is in seconds
+# (not used with a customized jdbc datasource)
+jdbc.connexcltimeout 30
+
+# Test statement
+jdbc.connteststmt select 1
+
+
+######
+# Customizing JDBC DataSource configuration
+#
+
+# Name of the class implementing the XADataSource
+#datasource.factory org.objectweb.jonas.dbm.JonasStandardXADataSource
+
+# JNDI name use to bind the XADataSource
+#datasource.xadataname postgre1_xa
+
+# Minimum number of physical connection used by the XADataSource
+#datasource.mincon 5
+
+# Maximum number of physical connection used by the XADataSource
+#datasource.maxcon 10
+
+# Minimum number of XAConnection used by the pool
+#jdbc.minconpool 10
+
+# Maximum number of XAConnection used by the pool
+#jdbc.maxconpool 20
+
+# Time between two clean-up of old unused connection
+# (value is in millisecond)
+#jdbc.sleeptimepool 300000
+
+# Force the gc to be launched when cleaning up
+#jdbc.gcpool false
+
+# In case of no connection in the pool,
+# deadlockpool is the global time to re-try before throwing an exception
+# (value is in millisecond)
+#jdbc.deadlockpool 300000
+
+# In case of no connection in the pool,
+# loopwaitpool is the unit time to re-try
+# (value is in millisecond)
+#jdbc.loopwaitpool 10000
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsBO.sh b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsBO.sh
new file mode 100644
index 00000000..4e9258bc
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsBO.sh
@@ -0,0 +1,77 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+###############################################################################
+#
+# This script runs first the RUBBoS browsing mix, then the read/write mix
+# for each rubbos.properties_XX specified where XX is the number of emulated
+# clients. Note that the rubbos.properties_XX files must be configured
+# with the corresponding number of clients.
+# In particular set the following variables in rubis.properties_XX:
+# httpd_use_version = Servlets
+# workload_number_of_clients_per_node = XX/number of client machines
+# workload_transition_table = yourPath/RUBBoS/workload/transitions.txt
+#
+# This script should be run from the RUBBoS/bench directory on the local
+# client machine.
+# Results will be generated in the RUBBoS/bench directory.
+#
+################################################################################
+
+#setenv SERVLETDIR $RUBBOS_HOME/Servlets
+
+set -x
+
+# Go back to RUBBoS root directory
+cd ..
+
+export scp_options='-o StrictHostKeyChecking=no -o BatchMode=yes'
+
+# Browse only
+
+cp -fin ./workload/browse_only_transitions.txt ./workload/user_transitions.txt
+cp -fin ./workload/browse_only_transitions.txt ./workload/author_transitions.txt
+
+for host in ${CLIENT1_HOST} ${CLIENT2_HOST} ${CLIENT3_HOST} ${CLIENT4_HOST}
+do
+ scp ${scp_options} ./workload/browse_only_transitions.txt ${host}:${RUBBOS_HOME}/workload/user_transitions.txt
+ scp ${scp_options} ./workload/browse_only_transitions.txt ${host}:${RUBBOS_HOME}/workload/author_transitions.txt
+ scp ${scp_options} Client/rubbos.properties ${host}:${RUBBOS_HOME}/Client/rubbos.properties
+done
+
+#bench/flush_cache 490000
+#ssh $HTTPD_HOST "$RUBBOS_HOME/bench/flush_cache 880000" # web server
+#ssh $MYSQL1_HOST "$RUBBOS_HOME/bench/flush_cache 880000" # database server
+#ssh $TOMCAT1_HOST "$RUBBOS_HOME/bench/flush_cache 780000" # servlet server
+#ssh $CLIENT1_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+#ssh $CLIENT2_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+#ssh $CLIENT3_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+#ssh $CLIENT4_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+
+RAMPUP=48000
+MI=72000
+current_seconds=`date +%s`
+start_seconds=`echo \( $RAMPUP / 1000 \) + $current_seconds - 60 | bc`
+SMI=`date -d "1970-01-01 $start_seconds secs UTC" +%Y%m%d%H%M%S`
+end_seconds=`echo \( $RAMPUP / 1000 + $MI / 1000 + 30 \) + $current_seconds | bc`
+EMI=`date -d "1970-01-01 $end_seconds secs UTC" +%Y%m%d%H%M%S`
+
+for host in $BENCHMARK_HOST $CLIENT1_HOST $CLIENT2_HOST $CLIENT3_HOST \
+ $CLIENT4_HOST $HTTPD_HOST $TOMCAT1_HOST $MYSQL1_HOST
+do
+ ssh $scp_options $host "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+done
+
+echo "Rubbos emulator start $(date)"
+make emulator
+echo "Rubbos emulator end $(date)"
+
+set -x
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsRW.sh b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsRW.sh
new file mode 100644
index 00000000..2dbd9788
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos-servletsRW.sh
@@ -0,0 +1,83 @@
+#!/bin/bash
+##############################################################################
+# Copyright (c) 2015 Huawei Technologies Co.,Ltd and others.
+#
+# All rights reserved. This program and the accompanying materials
+# are made available under the terms of the Apache License, Version 2.0
+# which accompanies this distribution, and is available at
+# http://www.apache.org/licenses/LICENSE-2.0
+##############################################################################
+
+###############################################################################
+#
+# This script runs first the RUBBoS browsing mix, then the read/write mix
+# for each rubbos.properties_XX specified where XX is the number of emulated
+# clients. Note that the rubbos.properties_XX files must be configured
+# with the corresponding number of clients.
+# In particular set the following variables in rubis.properties_XX:
+# httpd_use_version = Servlets
+# workload_number_of_clients_per_node = XX/number of client machines
+# workload_transition_table = yourPath/RUBBoS/workload/transitions.txt
+#
+# This script should be run from the RUBBoS/bench directory on the local
+# client machine.
+# Results will be generated in the RUBBoS/bench directory.
+#
+################################################################################
+
+#setenv SERVLETDIR $RUBBOS_HOME/Servlets
+
+# Go back to RUBBoS root directory
+cd ..
+
+# Read/write mix
+
+cp --fi ./workload/user_default_transitions.txt ./workload/user_transitions.txt
+cp --fi ./workload/author_default_transitions.txt ./workload/author_transitions.txt
+
+scp ./workload/user_default_transitions.txt ${CLIENT1_HOST}:${RUBBOS_HOME}/workload/user_transitions.txt
+scp ./workload/author_default_transitions.txt ${CLIENT1_HOST}:${RUBBOS_HOME}/workload/author_transitions.txt
+
+scp ./workload/user_default_transitions.txt ${CLIENT2_HOST}:${RUBBOS_HOME}/workload/user_transitions.txt
+scp ./workload/author_default_transitions.txt ${CLIENT2_HOST}:${RUBBOS_HOME}/workload/author_transitions.txt
+
+scp ./workload/user_default_transitions.txt ${CLIENT3_HOST}:${RUBBOS_HOME}/workload/user_transitions.txt
+scp ./workload/author_default_transitions.txt ${CLIENT3_HOST}:${RUBBOS_HOME}/workload/author_transitions.txt
+
+scp ./workload/user_default_transitions.txt ${CLIENT4_HOST}:${RUBBOS_HOME}/workload/user_transitions.txt
+scp ./workload/author_default_transitions.txt ${CLIENT4_HOST}:${RUBBOS_HOME}/workload/author_transitions.txt
+
+scp Client/rubbos.properties ${CLIENT1_HOST}:${RUBBOS_HOME}/Client/rubbos.properties
+scp Client/rubbos.properties ${CLIENT2_HOST}:${RUBBOS_HOME}/Client/rubbos.properties
+scp Client/rubbos.properties ${CLIENT3_HOST}:${RUBBOS_HOME}/Client/rubbos.properties
+scp Client/rubbos.properties ${CLIENT4_HOST}:${RUBBOS_HOME}/Client/rubbos.properties
+
+
+bench/flush_cache 490000
+ssh $HTTPD_HOST "$RUBBOS_HOME/bench/flush_cache 880000" # web server
+ssh $MYSQL1_HOST "$RUBBOS_HOME/bench/flush_cache 880000" # database server
+ssh $TOMCAT1_HOST "$RUBBOS_HOME/bench/flush_cache 780000" # servlet server
+ssh $CLIENT1_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+ssh $CLIENT2_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+ssh $CLIENT3_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+ssh $CLIENT4_HOST "$RUBBOS_HOME/bench/flush_cache 490000" # remote client
+
+RAMPUP=480000
+MI=720000
+current_seconds=`date +%s`
+start_seconds=`echo \( $RAMPUP / 1000 \) + $current_seconds - 60 | bc`
+SMI=`date -d "1970-01-01 $start_seconds secs UTC" +%Y%m%d%H%M%S`
+end_seconds=`echo \( $RAMPUP / 1000 + $MI / 1000 + 30 \) + $current_seconds | bc`
+EMI=`date -d "1970-01-01 $end_seconds secs UTC" +%Y%m%d%H%M%S`
+ssh $BENCHMARK_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $CLIENT1_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $CLIENT2_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $CLIENT3_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $CLIENT4_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $HTTPD_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $TOMCAT1_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+ssh $MYSQL1_HOST "sudo nice -n -1 $RUBBOS_APP/cpu_mem.sh $SMI $EMI" &
+
+
+make emulator
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos.properties_template b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos.properties_template
new file mode 100644
index 00000000..0e8a4b43
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/rubbos.properties_template
@@ -0,0 +1,79 @@
+
+#n HTTP server information
+httpd_hostname = REPLACE_HTTPD_HOST
+httpd_port = 8000
+
+# C/JDBC server to monitor (if any)
+cjdbc_hostname =
+
+# Precise which version to use. Valid options are : PHP, Servlets, EJB
+httpd_use_version = Servlets
+
+# EJB server information
+ejb_server =
+ejb_html_path =
+ejb_script_path =
+
+# Servlets server information
+servlets_server = REPLACE_TOMCAT1_HOST
+servlets_html_path = /rubbos
+servlets_script_path = /rubbos/servlet
+
+# PHP information
+php_html_path = /PHP
+php_script_path = /PHP
+
+#Database information
+database_master_server = REPLACE_MYSQL1_HOST
+
+database_slave_servers =
+workload_remote_client_nodes = REPLACE_CLIENT1_HOST,REPLACE_CLIENT2_HOST,REPLACE_CLIENT3_HOST,REPLACE_CLIENT4_HOST
+workload_remote_client_command = /bottlenecks/rubbos/app/jdk1.6.0_27/bin/java -classpath .:/bottlenecks/rubbos/app/RUBBoS/Client/:/bottlenecks/rubbos/app/RUBBoS/Client/rubbos_client.jar -Xmx1300m -Dhttp.keepAlive=true -Dhttp.maxConnections=1000000 edu.rice.rubbos.client.ClientEmulator
+
+
+workload_number_of_clients_per_node = REPLACE_NUMBER_OF_CLIENTS_PER_NODE
+
+
+# Workload: precise which transition table to use
+workload_user_transition_table = /bottlenecks/rubbos/app/RUBBoS/workload/user_transitions.txt
+workload_author_transition_table = /bottlenecks/rubbos/app/RUBBoS/workload/author_transitions.txt
+workload_number_of_columns = 24
+workload_number_of_rows = 26
+workload_maximum_number_of_transitions = 1000
+workload_use_tpcw_think_time = yes
+workload_number_of_stories_per_page = 20
+
+workload_up_ramp_time_in_ms = 48000
+workload_up_ramp_slowdown_factor = 2
+
+workload_session_run_time_in_ms = 72000
+workload_down_ramp_time_in_ms = 3000
+workload_down_ramp_slowdown_factor = 3
+workload_percentage_of_author = 10
+
+# Users policy
+database_number_of_authors = 50
+database_number_of_users = 500000
+
+# Stories policy
+database_story_dictionnary = /bottlenecks/rubbos/app/RUBBoS/database/dictionary
+database_story_maximum_length = 1024
+database_oldest_story_year = 1998
+database_oldest_story_month = 1
+
+# Comments policy
+database_comment_max_length = 1024
+
+# Connection timedout settings
+connection_time_out_interval = 300
+
+
+# Monitoring Information
+monitoring_debug_level = 1
+monitoring_program = /bottlenecks/rubbos/app/sysstat-9.0.6/bin/sar
+monitoring_options = -u ALL -I SUM
+monitoring_sampling_in_seconds = 1
+monitoring_rsh = /usr/bin/ssh
+monitoring_scp = /usr/bin/scp
+monitoring_gnuplot_terminal = png
+
diff --git a/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/web.xml b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/web.xml
new file mode 100644
index 00000000..e0a32b6b
--- /dev/null
+++ b/testsuites/rubbos/rubbos_scripts/1-1-1/rubbos_conf/web.xml
@@ -0,0 +1,203 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!--
+<!DOCTYPE web-app PUBLIC '-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN' 'http://java.sun.com/dtd/web-app_2_3.dtd'>
+-->
+<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.2//EN" "http://java.sun.com/j2ee/dtds/web-app_2_2.dtd">
+
+<web-app>
+
+ <display-name>RUBBos</display-name>
+ <description>
+ Rice University Bulletin Board System
+ </description>
+
+
+ <servlet>
+ <servlet-name>BrowseCategories</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.BrowseCategories</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>BrowseStoriesByCategory</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.BrowseStoriesByCategory</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>ViewComment</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.ViewComment</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>ModerateComment</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.ModerateComment</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>PostComment</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.PostComment</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>StoreComment</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.StoreComment</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>SubmitStory</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.SubmitStory</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>AcceptStory</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.AcceptStory</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>RejectStory</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.RejectStory</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>ReviewStories</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.ReviewStories</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>StoreStory</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.StoreStory</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>ViewStory</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.ViewStory</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>StoriesOfTheDay</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.StoriesOfTheDay</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Search</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.Search</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>StoreModeratorLog</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.StoreModeratorLog</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>RegisterUser</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.RegisterUser</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>Author</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.Author</servlet-class>
+ </servlet>
+
+ <servlet>
+ <servlet-name>OlderStories</servlet-name>
+ <servlet-class>edu.rice.rubbos.servlets.OlderStories</servlet-class>
+ </servlet>
+
+
+ <servlet-mapping>
+ <servlet-name>BrowseCategories</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.BrowseCategories</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>BrowseStoriesByCategory</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.BrowseStoriesByCategory</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ViewComment</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.ViewComment</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ModerateComment</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.ModerateComment</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>PostComment</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.PostComment</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>StoreComment</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.StoreComment</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>SubmitStory</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.SubmitStory</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>AcceptStory</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.AcceptStory</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>RejectStory</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.RejectStory</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ReviewStories</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.ReviewStories</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>StoreStory</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.StoreStory</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>ViewStory</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.ViewStory</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>StoriesOfTheDay</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.StoriesOfTheDay</url-pattern>
+ </servlet-mapping>
+
+
+ <servlet-mapping>
+ <servlet-name>Search</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.Search</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>StoreModeratorLog</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.StoreModeratorLog</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>RegisterUser</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.RegisterUser</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>Author</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.Author</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>OlderStories</servlet-name>
+ <url-pattern>/servlet/edu.rice.rubbos.servlets.OlderStories</url-pattern>
+ </servlet-mapping>
+
+
+ <session-config>
+ <session-timeout>30</session-timeout> <!-- 30 minutes -->
+ </session-config>
+
+</web-app>