You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@accumulo.apache.org by ec...@apache.org on 2013/02/04 20:40:10 UTC
svn commit: r1442310 [1/3] - in /accumulo/trunk: proxy/
proxy/examples/python/ proxy/examples/ruby/
proxy/src/main/java/org/apache/accumulo/proxy/
proxy/src/main/java/org/apache/accumulo/proxy/thrift/
proxy/src/main/thrift/ proxy/src/test/java/org/apac...
Author: ecn
Date: Mon Feb 4 19:40:09 2013
New Revision: 1442310
URL: http://svn.apache.org/viewvc?rev=1442310&view=rev
Log:
ACCUMULO-1037 allow the proxy to run a copy of miniaccumulo
Modified:
accumulo/trunk/proxy/examples/python/TestClient.py
accumulo/trunk/proxy/examples/ruby/test_client.rb
accumulo/trunk/proxy/proxy.properties
accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java
accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/thrift/AccumuloProxy.java
accumulo/trunk/proxy/src/main/thrift/proxy.thrift
accumulo/trunk/proxy/src/test/java/org/apache/accumulo/proxy/TestProxyInstanceOperations.java
accumulo/trunk/test/src/main/java/org/apache/accumulo/test/MiniAccumuloCluster.java
Modified: accumulo/trunk/proxy/examples/python/TestClient.py
URL: http://svn.apache.org/viewvc/accumulo/trunk/proxy/examples/python/TestClient.py?rev=1442310&r1=1442309&r2=1442310&view=diff
==============================================================================
--- accumulo/trunk/proxy/examples/python/TestClient.py (original)
+++ accumulo/trunk/proxy/examples/python/TestClient.py Mon Feb 4 19:40:09 2013
@@ -30,7 +30,7 @@ protocol = TCompactProtocol.TCompactProt
client = AccumuloProxy.Client(protocol)
transport.open()
-login = client.login(UserPass("root","secret"))
+login = PrincipalToken("root","secret")
print client.listTables(login)
Modified: accumulo/trunk/proxy/examples/ruby/test_client.rb
URL: http://svn.apache.org/viewvc/accumulo/trunk/proxy/examples/ruby/test_client.rb?rev=1442310&r1=1442309&r2=1442310&view=diff
==============================================================================
--- accumulo/trunk/proxy/examples/ruby/test_client.rb (original)
+++ accumulo/trunk/proxy/examples/ruby/test_client.rb Mon Feb 4 19:40:09 2013
@@ -24,13 +24,13 @@ socket = Thrift::Socket.new(server, 4242
transport = Thrift::FramedTransport.new(socket)
proto = Thrift::CompactProtocol.new(transport)
proxy = AccumuloProxy::Client.new(proto)
-us = UserPass.new({'username'=> 'root', 'password' => 'secret'})
+login = PrincipalToken.new({'principal' => 'root', 'token' => 'secret'})
# open up the connect
transport.open()
# Test if the server is up
-login = proxy.login(us)
+proxy.ping(login)
# print out a table list
puts "List of tables: #{proxy.listTables(login).inspect}"
Modified: accumulo/trunk/proxy/proxy.properties
URL: http://svn.apache.org/viewvc/accumulo/trunk/proxy/proxy.properties?rev=1442310&r1=1442309&r2=1442310&view=diff
==============================================================================
--- accumulo/trunk/proxy/proxy.properties (original)
+++ accumulo/trunk/proxy/proxy.properties Mon Feb 4 19:40:09 2013
@@ -1,9 +1,7 @@
-accumulo.proxy.apis=org.apache.accumulo.proxy.thrift.AccumuloProxy
-
org.apache.accumulo.proxy.ProxyServer.useMockInstance=false
-org.apache.accumulo.proxy.thrift.AccumuloProxy.implementor=org.apache.accumulo.proxy.ProxyServer
-org.apache.accumulo.proxy.thrift.AccumuloProxy.protocolFactory=org.apache.thrift.protocol.TCompactProtocol$Factory
-org.apache.accumulo.proxy.thrift.AccumuloProxy.port=42424
+org.apache.accumulo.proxy.ProxyServer.useMiniAccumulo=false
+org.apache.accumulo.proxy.ProxyServer.protocolFactory=org.apache.thrift.protocol.TCompactProtocol$Factory
+org.apache.accumulo.proxy.ProxyServer.port=42424
org.apache.accumulo.proxy.ProxyServer.instancename=test
org.apache.accumulo.proxy.ProxyServer.zookeepers=localhost:2181
Modified: accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java
URL: http://svn.apache.org/viewvc/accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java?rev=1442310&r1=1442309&r2=1442310&view=diff
==============================================================================
--- accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java (original)
+++ accumulo/trunk/proxy/src/main/java/org/apache/accumulo/proxy/Proxy.java Mon Feb 4 19:40:09 2013
@@ -16,6 +16,7 @@
*/
package org.apache.accumulo.proxy;
+import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
@@ -23,6 +24,9 @@ import java.lang.reflect.Constructor;
import java.util.Properties;
import org.apache.accumulo.core.cli.Help;
+import org.apache.accumulo.proxy.thrift.AccumuloProxy;
+import org.apache.accumulo.test.MiniAccumuloCluster;
+import org.apache.log4j.Logger;
import org.apache.thrift.TProcessor;
import org.apache.thrift.protocol.TProtocolFactory;
import org.apache.thrift.server.THsHaServer;
@@ -32,9 +36,12 @@ import org.apache.thrift.transport.TNonb
import com.beust.jcommander.IStringConverter;
import com.beust.jcommander.Parameter;
+import com.google.common.io.Files;
public class Proxy {
+ private static final Logger log = Logger.getLogger(Proxy.class);
+
public static class PropertiesConverter implements IStringConverter<Properties> {
@Override
public Properties convert(String fileName) {
@@ -63,38 +70,44 @@ public class Proxy {
Opts opts = new Opts();
opts.parseArgs(Proxy.class.getName(), args);
- String[] apis = opts.prop.getProperty("accumulo.proxy.apis").split(",");
- if (apis.length == 0) {
- System.err.println("No apis listed in the accumulo.proxy.apis property");
+ String api = ProxyServer.class.getName();
+
+ if (!opts.prop.containsKey(api + ".port")) {
+ System.err.println("No port in the " + api + ".port property");
System.exit(1);
}
- for (String api : apis) {
- // check existence of properties
- if (!opts.prop.containsKey(api + ".implementor")) {
- System.err.println("No implementor listed in the " + api + ".implementor property");
- System.exit(1);
- }
- if (!opts.prop.containsKey(api + ".port")) {
- System.err.println("No port in the " + api + ".port property");
- System.exit(1);
- }
-
- Class<?> apiclass = Class.forName(api);
-
- Class<?> implementor = Class.forName(opts.prop.getProperty(api + ".implementor"));
-
- Class<? extends TProtocolFactory> protoFactoryClass = Class.forName(opts.prop.getProperty(api + ".protocolFactory")).asSubclass(TProtocolFactory.class);
-
- int port = Integer.parseInt(opts.prop.getProperty(api + ".port"));
- TServer server = createProxyServer(apiclass, implementor, port, protoFactoryClass, opts.prop);
- server.serve();
+
+ String useMini = opts.prop.getProperty(api + ".useMiniAccumulo");
+ if (useMini != null && Boolean.parseBoolean(useMini)) {
+ log.info("Creating mini cluster");
+ final File folder = Files.createTempDir();
+ final MiniAccumuloCluster accumulo = new MiniAccumuloCluster(folder, "secret");
+ accumulo.start();
+ opts.prop.setProperty(api+".instancename", accumulo.getInstanceName());
+ opts.prop.setProperty(api+".zookeepers", accumulo.getZookeepers());
+ Runtime.getRuntime().addShutdownHook(new Thread() {
+ public void start() {
+ try {
+ accumulo.stop();
+ } catch (Exception e) {
+ throw new RuntimeException();
+ } finally {
+ folder.delete();
+ }
+ }
+ });
}
+
+ Class<? extends TProtocolFactory> protoFactoryClass = Class.forName(opts.prop.getProperty(api + ".protocolFactory")).asSubclass(TProtocolFactory.class);
+ int port = Integer.parseInt(opts.prop.getProperty(api + ".port"));
+ TServer server = createProxyServer(AccumuloProxy.class, ProxyServer.class, port, protoFactoryClass, opts.prop);
+ server.serve();
}
public static TServer createProxyServer(Class<?> api, Class<?> implementor, final int port, Class<? extends TProtocolFactory> protoClass,
Properties properties) throws Exception {
final TNonblockingServerSocket socket = new TNonblockingServerSocket(port);
-
+
// create the implementor
Object impl = implementor.getConstructor(Properties.class).newInstance(properties);