Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit 379f829

Browse files
committed
Add new Integration test program that simulates crashing server
1 parent 0ac9ae9 commit 379f829

File tree

3 files changed

+82
-1
lines changed

3 files changed

+82
-1
lines changed

src/TestMqHost/Program.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ public class Incr
1717

1818
class Program
1919
{
20-
static void Main(string[] args)
20+
static void Main2(string[] args)
2121
{
2222
var sbLogFactory = new StringBuilderLogFactory();
2323
LogManager.LogFactory = sbLogFactory;

src/TestMqHost/Program2.cs

Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
using System;
2+
using System.Diagnostics;
3+
using System.Threading;
4+
using ServiceStack.Common;
5+
using ServiceStack.Common.Support;
6+
using ServiceStack.Logging;
7+
using ServiceStack.Logging.Support.Logging;
8+
using ServiceStack.Redis;
9+
using ServiceStack.Redis.Messaging;
10+
using ServiceStack.Text;
11+
12+
namespace TestMqHost
13+
{
14+
class Program2
15+
{
16+
static void Main(string[] args)
17+
{
18+
var clientManager = new PooledRedisClientManager(new[] { "localhost" })
19+
{
20+
PoolTimeout = 1000,
21+
};
22+
clientManager.GetClient().FlushAll();
23+
24+
var mqHost = new RedisMqServer(clientManager);
25+
26+
var msgsProcessed = 0;
27+
var msgsQueued = 0;
28+
var sum = 0;
29+
mqHost.RegisterHandler<Incr>(c =>
30+
{
31+
var dto = c.GetBody();
32+
sum += dto.Value;
33+
Console.WriteLine("Received {0}, sum: {1}", dto.Value, sum);
34+
msgsProcessed++;
35+
return null;
36+
});
37+
38+
mqHost.Start();
39+
var processes = Process.GetProcessesByName("redis-server");
40+
var timer = new Timer(s =>
41+
{
42+
using (var client = mqHost.MessageFactory.CreateMessageProducer())
43+
{
44+
try
45+
{
46+
client.Publish(new Incr { Value = 1 });
47+
msgsQueued++;
48+
Console.WriteLine("Message #{0} published.", msgsQueued);
49+
}
50+
catch { }
51+
}
52+
}, null, TimeSpan.Zero, TimeSpan.FromSeconds(1));
53+
54+
Thread.Sleep(5000);
55+
timer.Change(Timeout.Infinite, Timeout.Infinite);
56+
Thread.Sleep(1000);
57+
58+
int msgsQueuedBeforeKill = msgsQueued;
59+
int msgsProcessedBeforeKill = msgsProcessed;
60+
processes[0].Kill();
61+
62+
timer.Change(TimeSpan.Zero, TimeSpan.FromSeconds(1));
63+
Thread.Sleep(15000);
64+
timer.Dispose();
65+
66+
Thread.Sleep(1000);
67+
68+
mqHost.GetStats().PrintDump();
69+
mqHost.GetStatus().Print();
70+
71+
"Messages queued before kill: {0}".Print(msgsQueuedBeforeKill);
72+
"Messages processed before kill: {0}".Print(msgsProcessedBeforeKill);
73+
74+
"Messages queued: {0}".Print(msgsQueued);
75+
"Messages processed: {0}".Print(msgsProcessed);
76+
77+
Console.ReadKey();
78+
}
79+
}
80+
}

src/TestMqHost/TestMqHost.csproj

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
</ItemGroup>
5555
<ItemGroup>
5656
<Compile Include="Program.cs" />
57+
<Compile Include="Program2.cs" />
5758
<Compile Include="Properties\AssemblyInfo.cs" />
5859
</ItemGroup>
5960
<ItemGroup>

0 commit comments

Comments
 (0)