From 69043d37d990df0da597928d51609b517965c423 Mon Sep 17 00:00:00 2001
From: m1ch1 <michi@cs.stanford.edu>
Date: Sun, 19 Feb 2012 01:05:07 -0800
Subject: [PATCH] gh-66 added gemfire.

---
 distribution/src/main/bin/ycsb                | 70 +++++++------------
 gemfire/pom.xml                               |  5 --
 .../com/yahoo/ycsb/db/MapKeeperClient.java    |  8 ++-
 pom.xml                                       |  3 +-
 4 files changed, 35 insertions(+), 51 deletions(-)

diff --git a/distribution/src/main/bin/ycsb b/distribution/src/main/bin/ycsb
index 8ca3b098..50b52fe8 100755
--- a/distribution/src/main/bin/ycsb
+++ b/distribution/src/main/bin/ycsb
@@ -20,6 +20,7 @@ DATABASES = {
     "cassandra-7"  : "com.yahoo.ycsb.db.CassandraClient7",
     "cassandra-8"  : "com.yahoo.ycsb.db.CassandraClient8",
     "cassandra-10" : "com.yahoo.ycsb.db.CassandraClient10",
+    "gemfire"      : "com.yahoo.ycsb.db.GemFireClient",
     "hbase"        : "com.yahoo.ycsb.db.HBaseClient",
     "infinispan"   : "com.yahoo.ycsb.db.InfinispanClient",
     "jdbc"         : "com.yahoo.ycsb.db.JdbcDBClient",
@@ -35,40 +36,37 @@ OPTIONS = {
     "-target n"    : "Target ops/sec (default: unthrottled)",
     "-threads n"   : "Number of client threads (default: 1)",
 }
+
 def usage():
-    usage = "Usage: %s command database workload-file [options]" % sys.argv[0]
-    print usage
+    print "Usage: %s command database workload-file [options]" % sys.argv[0]
 
-    print "Commands:"
+    print "\nCommands:"
     for command in sorted(COMMANDS.keys()):
         print "    {0:13} {1}".format(command, COMMANDS[command]["description"])
-    print
 
-    print "Databases:"
+    print "\nDatabases:"
     for db in sorted(DATABASES.keys()):
         print "    %s" % db
-    print
 
-    print """Workload Files:
+    print """\nWorkload Files:
     There are various predefined workloads under workloads/ directory.
     See https://github.com/brianfrankcooper/YCSB/wiki/Core-Properties
-    for the list of workload properties.
-    """
+    for the list of workload properties."""
 
-    print "Options:"
+    print "\nOptions:"
     for option in sorted(OPTIONS.keys()):
         print "    {0:13} {1}".format(option, OPTIONS[option])
     sys.exit(1)
 
 def find_jars(dir, database):
     jars = []
-    print database
     for (dirpath, dirnames, filenames) in os.walk(dir):
+        if dirpath.endswith("conf"):
+            jars.append(dirpath)
         for filename in filenames:
-            print filename
             if filename.endswith(".jar") and \
-               filename.startswith("core") or filename.startswith(database.split("-")[0]):
-                print filename
+               filename.startswith("core") or \
+               filename.startswith(database.split("-")[0]):
                 jars.append(os.path.join(dirpath, filename))
     return jars
 
@@ -76,39 +74,25 @@ def get_ycsb_home():
     dir = os.path.abspath(os.path.dirname(sys.argv[0]))
     while "CHANGELOG" not in os.listdir(dir):
         dir = os.path.join(dir, os.path.pardir)
-    return os.path.abspath(dir )
-
-def get_command():
-    if len(sys.argv) < 2:
-        usage()
-    if sys.argv[1] not in COMMANDS:
-        print "ERROR: Command '%s' not found" % sys.argv[1]
-        usage()
-    return COMMANDS[sys.argv[1]]["command"]
-
-def get_database():
-    if len(sys.argv) < 3:
-        usage()
-    if sys.argv[2] not in DATABASES:
-        print "ERROR: Database '%s' not found" % sys.argv[2]
-        usage()
-    return sys.argv[2], DATABASES[sys.argv[2]]
+    return os.path.abspath(dir)
 
-def get_workload():
-    if len(sys.argv) < 4:
-        usage()
-    return sys.argv[3]
-
-def get_options():
-    return sys.argv[4:]
+if len(sys.argv) < 4:
+    usage()
+if sys.argv[1] not in COMMANDS:
+    print "ERROR: Command '%s' not found" % sys.argv[1]
+    usage()
+if sys.argv[2] not in DATABASES:
+    print "ERROR: Database '%s' not found" % sys.argv[2]
+    usage()
 
 ycsb_home = get_ycsb_home()
-command = get_command()
-database, db_classname = get_database()
-workload = get_workload()
-options = get_options()
+command = COMMANDS[sys.argv[1]]["command"]
+database = sys.argv[2]
+db_classname = DATABASES[database]
+workload = sys.argv[3]
+options = sys.argv[4:]
+
 ycsb_command = ["java", "-cp", ":".join(find_jars(ycsb_home, database)), \
                 "com.yahoo.ycsb.Client", command, "-db", db_classname, \
                 "-P", workload] + options
-print " ".join(ycsb_command)
 subprocess.call(ycsb_command)
diff --git a/gemfire/pom.xml b/gemfire/pom.xml
index ba979440..63acb5d2 100644
--- a/gemfire/pom.xml
+++ b/gemfire/pom.xml
@@ -17,11 +17,6 @@
       <artifactId>gemfire</artifactId>
       <version>6.6</version>
     </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-core</artifactId>
-      <version>${gemfire.version}</version>
-    </dependency>
     <dependency>
       <groupId>org.apache.ycsb</groupId>
       <artifactId>core</artifactId>
diff --git a/mapkeeper/src/main/java/com/yahoo/ycsb/db/MapKeeperClient.java b/mapkeeper/src/main/java/com/yahoo/ycsb/db/MapKeeperClient.java
index 594c9308..5af5ed9e 100644
--- a/mapkeeper/src/main/java/com/yahoo/ycsb/db/MapKeeperClient.java
+++ b/mapkeeper/src/main/java/com/yahoo/ycsb/db/MapKeeperClient.java
@@ -25,6 +25,10 @@ import com.yahoo.ycsb.StringByteIterator;
 import com.yahoo.ycsb.workloads.CoreWorkload;
 
 public class MapKeeperClient extends DB {
+    private static final String HOST = "mapkeeper.host";
+    private static final String HOST_DEFAULT = "localhost";
+    private static final String PORT = "mapkeeper.port";
+    private static final String PORT_DEFAULT = "9090";
     MapKeeper.Client c; 
     boolean writeallfields;
     static boolean initteddb = false;
@@ -36,7 +40,9 @@ public class MapKeeperClient extends DB {
     }
 
     public void init() {
-        TTransport tr = new TFramedTransport(new TSocket("localhost", 9090));
+        String host = getProperties().getProperty(HOST, HOST_DEFAULT);
+        int port = Integer.parseInt(getProperties().getProperty(PORT, PORT_DEFAULT));
+        TTransport tr = new TFramedTransport(new TSocket(host, port));
         TProtocol proto = new TBinaryProtocol(tr);
         c = new MapKeeper.Client(proto);
         try {
diff --git a/pom.xml b/pom.xml
index 286d23c5..f0d88561 100644
--- a/pom.xml
+++ b/pom.xml
@@ -36,7 +36,6 @@
     <maven.assembly.version>2.2.1</maven.assembly.version>
     <hbase.version>0.90.5</hbase.version>
     <cassandra.version>0.7.0</cassandra.version>
-    <gemfire.version>1.0.0.M3</gemfire.version>
     <infinispan.version>7.1.0.CR1</infinispan.version>
     <openjpa.jdbc.version>2.1.1</openjpa.jdbc.version>
     <mapkeeper.version>1.0</mapkeeper.version>
@@ -50,7 +49,7 @@
     <module>core</module>
     <module>hbase</module>
     <module>cassandra</module>
-    <!--module>gemfire</module-->
+    <module>gemfire</module>
     <module>infinispan</module>
     <module>jdbc</module>
     <module>mapkeeper</module>
-- 
GitLab