Skip to content

Commit bf4bd7f

Browse files
authored
Merge pull request #31 from Shikyoh/test/shikyoh
近期发现的异常问题,补充测试
2 parents c1d61c9 + 2a57747 commit bf4bd7f

File tree

3 files changed

+104
-7
lines changed

3 files changed

+104
-7
lines changed

BeetleX.Redis.XUnitTest/DBTester.cs

Lines changed: 79 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,9 @@
11
using System;
2+
using System.Collections.Concurrent;
3+
using System.Collections.Generic;
4+
using System.Linq;
25
using System.Text;
6+
using System.Threading.Tasks;
37
using Xunit;
48
using Xunit.Abstractions;
59

@@ -14,7 +18,7 @@ public DBTester(ITestOutputHelper output)
1418
this.Console = output;
1519
//DB.Host.AddWriteHost("192.168.2.19", 6378, true);
1620
DB.Host.AddWriteHost("192.168.2.19", 6379);
17-
21+
1822
}
1923

2024
private RedisDB DB = new RedisDB(0);
@@ -37,9 +41,9 @@ private void Write(object result)
3741
[Fact]
3842
public async void DBDisposed()
3943
{
40-
using(RedisDB db = new RedisDB())
44+
using (RedisDB db = new RedisDB())
4145
{
42-
db.Host.AddWriteHost("127.0.0.1");
46+
db.Host.AddWriteHost("192.168.2.19");
4347
await db.Ping();
4448
}
4549
}
@@ -73,7 +77,7 @@ public async void GetSetBytes()
7377
var data = Encoding.UTF8.GetBytes("henryfan@msn.com");
7478
await DB.Set("bytes", new ArraySegment<byte>(data));
7579
var result = await DB.Get<ArraySegment<byte>>("bytes");
76-
Assert.Equal<string>(Encoding.UTF8.GetString(result.Array,0,result.Count), "henryfan@msn.com");
80+
Assert.Equal<string>(Encoding.UTF8.GetString(result.Array, 0, result.Count), "henryfan@msn.com");
7781
}
7882

7983
[Fact]
@@ -85,6 +89,22 @@ public async void Set()
8589
var value = await DB.Get<string>("test");
8690
Write(value);
8791
Assert.Equal<string>(value, "henryfan1");
92+
93+
var emptyResult = await DB.Set("test", "");
94+
Write(emptyResult);
95+
96+
var emptyValue = await DB.Get<string>("test");
97+
Write(emptyValue);
98+
Assert.Equal<string>(emptyValue, "");
99+
100+
101+
var nullResult = await DB.Set("test", null);
102+
Write(nullResult);
103+
104+
var nullValue = await DB.Get<string>("test");
105+
Write(nullValue);
106+
Assert.Equal<string>(nullValue, "");
107+
88108
}
89109

90110
[Fact]
@@ -161,7 +181,7 @@ public async void MSet()
161181
public async void Keys()
162182
{
163183
await DB.Flushall();
164-
var mset = await DB.MSet(("one", 1),("tow", 2),("three", 2),("four", 4));
184+
var mset = await DB.MSet(("one", 1), ("tow", 2), ("three", 2), ("four", 4));
165185
Write(mset);
166186
var keys = await DB.Keys("*o*");
167187
Write(keys);
@@ -482,9 +502,9 @@ public async void MGet5()
482502
public async void MSetNX()
483503
{
484504
await DB.Flushall();
485-
var msetnx = await DB.MSetNX(("key1", "hello"),("key2", "there"));
505+
var msetnx = await DB.MSetNX(("key1", "hello"), ("key2", "there"));
486506
Write(msetnx);
487-
msetnx = await DB.MSetNX(("key3", "world"),("key2", "there"));
507+
msetnx = await DB.MSetNX(("key3", "world"), ("key2", "there"));
488508
Write(msetnx);
489509
var mget = await DB.MGet<string, string, string>("key1", "key2", "key3");
490510
Write(mget.Item1);
@@ -569,5 +589,57 @@ public async void Publish()
569589
{
570590
Write(await DB.Publish("channel", DateTime.Now));
571591
}
592+
593+
private RedisDB CreateDB(int db, string host, int port)
594+
{
595+
var redisDb = new RedisDB(db);
596+
redisDb.Host.AddWriteHost(host, port);
597+
return redisDb;
598+
}
599+
600+
private IEnumerable<RedisDB> CreateMultiDB(string host, int port)
601+
{
602+
for (int db = 0; db < 12; db++)
603+
{
604+
yield return CreateDB(db, host, port);
605+
}
606+
}
607+
608+
609+
[Fact]
610+
public async void MultiDBInit()
611+
{
612+
var redisDbs = CreateMultiDB("192.168.2.19", 6379).ToList();
613+
614+
var db = redisDbs[0]; //any one
615+
616+
ConcurrentBag<long?> results = new ConcurrentBag<long?>();
617+
ConcurrentBag<Exception> exs = new ConcurrentBag<Exception>();
618+
var parallelResult = Parallel.For(1, 100, async i =>
619+
{
620+
long? result = null;
621+
try
622+
{
623+
result = await db.Exists("anykey");
624+
}
625+
//throw
626+
//connect xxxxxx@6379 timeout! task status:WaitingToRun
627+
catch (Exception ex)
628+
{
629+
exs.Add(ex);
630+
}
631+
finally
632+
{
633+
results.Add(result);
634+
}
635+
});
636+
637+
while (results.Count != 99)
638+
{
639+
await Task.Delay(1000);
640+
}
641+
Assert.True(exs.Count == 0, exs.ToArray()[0].Message);
642+
643+
}
572644
}
573645
}

BeetleX.Redis.XUnitTest/HashTableTester.cs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,23 @@ public async void HGet()
6666
Write(get);
6767
get = await table.Get<string>("field2");
6868
Write(get);
69+
70+
var emptyResult = await table.Set("fieldEmpty", "");
71+
Write(emptyResult);
72+
73+
var emptyValue = await table.Get<string>("fieldEmpty");
74+
Write(emptyValue);
75+
Assert.Equal<string>(emptyValue, "");
76+
77+
78+
var nullResult = await table.Set("fieldNull", null);
79+
Write(nullResult);
80+
81+
var nullValue = await table.Get<string>("fieldNull");
82+
Write(nullValue);
83+
Assert.Equal<string>(nullValue, "");
84+
85+
6986
}
7087
[Fact]
7188
public async void HIncrby()

BeetleX.Redis.XUnitTest/SequenceTest.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@ public async void ZSCORE()
5050
var count = await sequeue.ZAdd((4.14, "bca"));
5151
var value = await sequeue.ZScore("bca");
5252
Assert.Equal<double>(value, 4.14);
53+
54+
var unknownMemberValue = await sequeue.ZScore("unknownseq");
55+
Assert.Equal<double?>(unknownMemberValue, null);
56+
5357
}
5458
[Fact]
5559
public async void ZINCRBY()
@@ -157,6 +161,10 @@ public async void ZRANK()
157161
await sequeue.ZAdd((100, "A1"), (200, "A2"), (300, "A3"), (400, "A4"));
158162
var value = await sequeue.ZRank("A4");
159163
Assert.Equal<long>(value, 3);
164+
165+
166+
var unknownMemberValue = await sequeue.ZRank("unknownseq");
167+
Assert.Equal<long?>(unknownMemberValue, null);
160168
}
161169
[Fact]
162170
public async void ZREVRANK()

0 commit comments

Comments
 (0)