public void ThriftRunWritePerformanceSingleThread()
{
Console.WriteLine("============================================================");
Console.WriteLine(" Thrift Driver write performance test single thread ");
Console.WriteLine("============================================================");
TTransport transport = new TFramedTransport(new TSocket("localhost", 9160));
TProtocol protocol = new TBinaryProtocol(transport);
Cassandra.Client client = new Cassandra.Client(protocol);
transport.Open();
const string createFoo = "CREATE KEYSPACE Tests WITH replication = {'class': 'SimpleStrategy', 'replication_factor' : 1}";
Console.WriteLine("============================================================");
Console.WriteLine(createFoo);
Console.WriteLine("============================================================");
client.execute_cql3_query(Encoding.UTF8.GetBytes(createFoo),
Compression.NONE, Apache.Cassandra.ConsistencyLevel.QUORUM);
Console.WriteLine();
Console.WriteLine();
const string createBar = "CREATE TABLE Tests.stresstest (strid varchar,intid int,PRIMARY KEY (strid))";
Console.WriteLine("============================================================");
Console.WriteLine(createBar);
Console.WriteLine("============================================================");
client.execute_cql3_query(Encoding.UTF8.GetBytes(createBar), Compression.NONE,
Apache.Cassandra.ConsistencyLevel.QUORUM);
Console.WriteLine();
Console.WriteLine();
CqlPreparedResult query = client.prepare_cql3_query(Encoding.UTF8.GetBytes("UPDATE tests.stresstest SET intid = ? WHERE strid = ?"),
Compression.NONE);
int n = 0;
while (n < NUM_ROUND)
{
var timer = new Stopwatch();
timer.Start();
for (int i = 0; i < NUM_WRITES_PER_ROUND; i++)
{
client.trace_next_query();
client.execute_prepared_cql3_query(query.ItemId,
new List<byte[]> {BitConverter.GetBytes(i).Reverse().ToArray(), Encoding.ASCII.GetBytes(i.ToString("X"))},
Apache.Cassandra.ConsistencyLevel.QUORUM);
}
timer.Stop();
double rate = NUM_WRITES_PER_ROUND/(timer.ElapsedMilliseconds/1000d);
Console.WriteLine("[Cassandra-Thrift] Time : " + timer.ElapsedMilliseconds + " (rate: " + rate + " qps)");
n++;
}
const string dropFoo = "drop keyspace Tests";
Console.WriteLine("============================================================");
Console.WriteLine(dropFoo);
Console.WriteLine("============================================================");
client.execute_cql3_query(Encoding.UTF8.GetBytes("drop keyspace Tests"), Compression.NONE, Apache.Cassandra.ConsistencyLevel.QUORUM);
}