cassandra-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From alek...@apache.org
Subject git commit: stress: add username/password authentication support
Date Sat, 12 Oct 2013 16:51:01 GMT
Updated Branches:
  refs/heads/cassandra-1.2 639c01a35 -> 5fab1276c


stress: add username/password authentication support

patch by Mikhail Stepura; reviewed by Aleksey Yeschenko for
CASSANDRA-6068


Project: http://git-wip-us.apache.org/repos/asf/cassandra/repo
Commit: http://git-wip-us.apache.org/repos/asf/cassandra/commit/5fab1276
Tree: http://git-wip-us.apache.org/repos/asf/cassandra/tree/5fab1276
Diff: http://git-wip-us.apache.org/repos/asf/cassandra/diff/5fab1276

Branch: refs/heads/cassandra-1.2
Commit: 5fab1276cae60d59dfbeafab98b9c6d1bce2e7f0
Parents: 639c01a
Author: Aleksey Yeschenko <aleksey@apache.org>
Authored: Sat Oct 12 23:49:47 2013 +0700
Committer: Aleksey Yeschenko <aleksey@apache.org>
Committed: Sat Oct 12 23:49:47 2013 +0700

----------------------------------------------------------------------
 CHANGES.txt                                     |  1 +
 .../org/apache/cassandra/stress/Session.java    | 32 ++++++++++++++++++--
 2 files changed, 30 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cassandra/blob/5fab1276/CHANGES.txt
----------------------------------------------------------------------
diff --git a/CHANGES.txt b/CHANGES.txt
index 7d63a4b..afb1464 100644
--- a/CHANGES.txt
+++ b/CHANGES.txt
@@ -21,6 +21,7 @@
  * Properly error out on CREATE INDEX for counters table (CASSANDRA-6160)
  * Handle JMX notification failure for repair (CASSANDRA-6097)
  * (Hadoop) Fetch no more than 128 splits in parallel (CASSANDRA-6169)
+ * stress: add username/password authentication support (CASSANDRA-6068)
 
 
 1.2.10

http://git-wip-us.apache.org/repos/asf/cassandra/blob/5fab1276/tools/stress/src/org/apache/cassandra/stress/Session.java
----------------------------------------------------------------------
diff --git a/tools/stress/src/org/apache/cassandra/stress/Session.java b/tools/stress/src/org/apache/cassandra/stress/Session.java
index d527278..9c5d5a9 100644
--- a/tools/stress/src/org/apache/cassandra/stress/Session.java
+++ b/tools/stress/src/org/apache/cassandra/stress/Session.java
@@ -25,6 +25,8 @@ import java.util.*;
 import java.util.concurrent.atomic.AtomicInteger;
 
 import com.yammer.metrics.Metrics;
+
+import org.apache.cassandra.auth.IAuthenticator;
 import org.apache.cassandra.cli.transport.FramedTransportFactory;
 import org.apache.cassandra.config.CFMetaData;
 import org.apache.cassandra.config.EncryptionOptions;
@@ -114,7 +116,9 @@ public class Session implements Serializable
         availableOptions.addOption("alg", SSL_ALGORITHM,         true, "SSL: algorithm (default:
SunX509)");
         availableOptions.addOption("st", SSL_STORE_TYPE,         true, "SSL: type of store");
         availableOptions.addOption("ciphers", SSL_CIPHER_SUITES, true, "SSL: comma-separated
list of encryption suites to use");
-        availableOptions.addOption("th",  "throttle",            true,   "Throttle the total
number of operations per second to a maximum amount.");
+        availableOptions.addOption("th", "throttle",             true, "Throttle the total
number of operations per second to a maximum amount.");
+        availableOptions.addOption("un", "username",             true, "Username for authentication.");
+        availableOptions.addOption("pw", "password",             true, "Password for authentication.");
     }
 
     private int numKeys          = 1000 * 1000;
@@ -131,6 +135,8 @@ public class Session implements Serializable
     private int superColumns     = 1;
     private String compression   = null;
     private String compactionStrategy = null;
+    private String username      = null;
+    private String password      = null;
 
     private int progressInterval  = 10;
     private int keysPerCall       = 1000;
@@ -438,6 +444,11 @@ public class Session implements Serializable
             if (cmd.hasOption("tf"))
                 transportFactory = validateAndSetTransportFactory(cmd.getOptionValue("tf"));
 
+            if (cmd.hasOption("un"))
+                username = cmd.getOptionValue("un");
+
+            if (cmd.hasOption("pw"))
+                password = cmd.getOptionValue("pw");
         }
         catch (ParseException e)
         {
@@ -725,17 +736,32 @@ public class Session implements Serializable
 
         try
         {
-            if(!transport.isOpen())
+            if (!transport.isOpen())
                 transport.open();
 
             if (enable_cql)
                 client.set_cql_version(cqlVersion);
 
             if (setKeyspace)
-            {
                 client.set_keyspace("Keyspace1");
+
+            if (username != null && password != null)
+            {
+                Map<String, String> credentials = new HashMap<String, String>();
+                credentials.put(IAuthenticator.USERNAME_KEY, username);
+                credentials.put(IAuthenticator.PASSWORD_KEY, password);
+                AuthenticationRequest authenticationRequest = new AuthenticationRequest(credentials);
+                client.login(authenticationRequest);
             }
         }
+        catch (AuthenticationException e)
+        {
+            throw new RuntimeException(e.getWhy());
+        }
+        catch (AuthorizationException e)
+        {
+            throw new RuntimeException(e.getWhy());
+        }
         catch (InvalidRequestException e)
         {
             throw new RuntimeException(e.getWhy());


Mime
View raw message