Skip to content

Commit 66ac200

Browse files
committed
Moved message generation and index logic to shared Tester class
1 parent c27c6b1 commit 66ac200

File tree

4 files changed

+40
-53
lines changed

4 files changed

+40
-53
lines changed

src/ProtocolLoadTest/HttpTester.cs

Lines changed: 2 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,9 @@ namespace ProtocolLoadTest
77
{
88
internal class HttpTester : Tester, ITester
99
{
10-
// Number of messages sent by all HttpTester instances
11-
private static int NumSent;
12-
1310
public void Run(string indexName, int port, int numMessages, int bufferSize)
1411
{
12+
// refresh = false is default on elasticsearch's side.
1513
var bulkParms = new SimpleBulkParameters() { Refresh = false };
1614

1715
var settings = new ConnectionSettings("localhost", port)
@@ -21,29 +19,7 @@ public void Run(string indexName, int port, int numMessages, int bufferSize)
2119

2220
Connect(client, settings);
2321

24-
IList<Message> msgBuffer = new List<Message>(bufferSize);
25-
26-
var msgGenerator = new MessageGenerator();
27-
28-
foreach (var msg in msgGenerator.Generate(numMessages))
29-
{
30-
msgBuffer.Add(msg);
31-
32-
// Flush buffer once max size reached
33-
if (msgBuffer.Count >= bufferSize)
34-
{
35-
client.IndexMany(msgBuffer, indexName, bulkParms);
36-
msgBuffer.Clear();
37-
38-
Interlocked.Add(ref NumSent, bufferSize);
39-
40-
// Output how many messages sent so far
41-
if (NumSent % 10000 == 0)
42-
{
43-
Console.WriteLine("Sent {0:0,0} messages over HTTP", NumSent);
44-
}
45-
}
46-
}
22+
GenerateAndIndex(indexName, numMessages, bufferSize, bulkParms, client);
4723
}
4824
}
4925
}

src/ProtocolLoadTest/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -23,11 +23,11 @@ class Program
2323

2424
static void Main(string[] args)
2525
{
26-
double httpRate = RunTest<HttpTester>(HTTP_PORT);
26+
//double httpRate = RunTest<HttpTester>(HTTP_PORT);
2727
double thriftRate = RunTest<ThriftTester>(THRIFT_PORT);
2828

2929
Console.WriteLine();
30-
Console.WriteLine("HTTP: {0:0,0}/s", httpRate);
30+
//Console.WriteLine("HTTP: {0:0,0}/s", httpRate);
3131
Console.WriteLine("Thrift: {0:0,0}/s", thriftRate);
3232

3333
Console.ReadLine();

src/ProtocolLoadTest/Tester.cs

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,15 @@
11
using System;
22
using Nest;
3+
using System.Collections.Generic;
4+
using System.Threading;
35

46
namespace ProtocolLoadTest
57
{
68
internal abstract class Tester
79
{
10+
// Number of messages sent by all ThriftTester instances
11+
private static int NumSent;
12+
813
protected void Connect(ElasticClient client, ConnectionSettings settings)
914
{
1015
ConnectionStatus indexConnectionStatus;
@@ -17,5 +22,31 @@ protected void Connect(ElasticClient client, ConnectionSettings settings)
1722
return;
1823
}
1924
}
25+
protected static void GenerateAndIndex(string indexName, int numMessages, int bufferSize, SimpleBulkParameters bulkParms, ElasticClient client)
26+
{
27+
IList<Message> msgBuffer = new List<Message>(bufferSize);
28+
29+
var msgGenerator = new MessageGenerator();
30+
31+
foreach (var msg in msgGenerator.Generate(numMessages))
32+
{
33+
msgBuffer.Add(msg);
34+
35+
// Flush buffer once max size reached
36+
if (msgBuffer.Count >= bufferSize)
37+
{
38+
client.IndexMany(msgBuffer, indexName, bulkParms);
39+
msgBuffer.Clear();
40+
41+
Interlocked.Add(ref NumSent, bufferSize);
42+
43+
// Output how many messages sent so far
44+
if (NumSent % 10000 == 0)
45+
{
46+
Console.WriteLine("Sent {0:0,0} messages over Thrift", NumSent);
47+
}
48+
}
49+
}
50+
}
2051
}
2152
}

src/ProtocolLoadTest/ThriftTester.cs

Lines changed: 5 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ namespace ProtocolLoadTest
88
{
99
internal class ThriftTester : Tester, ITester
1010
{
11-
// Number of messages sent by all ThriftTester instances
12-
private static int NumSent;
11+
1312

1413
public void Run(string indexName, int port, int numMessages, int bufferSize)
1514
{
15+
// refresh == false is default on elasticsearch's side.
1616
var bulkParms = new SimpleBulkParameters() { Refresh = false };
1717

1818
var settings = new ConnectionSettings("localhost", port)
@@ -22,29 +22,9 @@ public void Run(string indexName, int port, int numMessages, int bufferSize)
2222

2323
Connect(client, settings);
2424

25-
IList<Message> msgBuffer = new List<Message>(bufferSize);
26-
27-
var msgGenerator = new MessageGenerator();
28-
29-
foreach (var msg in msgGenerator.Generate(numMessages))
30-
{
31-
msgBuffer.Add(msg);
32-
33-
// Flush buffer once max size reached
34-
if (msgBuffer.Count >= bufferSize)
35-
{
36-
client.IndexMany(msgBuffer, indexName, bulkParms);
37-
msgBuffer.Clear();
38-
39-
Interlocked.Add(ref NumSent, bufferSize);
40-
41-
// Output how many messages sent so far
42-
if (NumSent % 10000 == 0)
43-
{
44-
Console.WriteLine("Sent {0:0,0} messages over Thrift", NumSent);
45-
}
46-
}
47-
}
25+
GenerateAndIndex(indexName, numMessages, bufferSize, bulkParms, client);
4826
}
27+
28+
4929
}
5030
}

0 commit comments

Comments
 (0)