1
- using System . Linq ;
1
+ using System ;
2
+ using System . Linq ;
2
3
using System . Net . Sockets ;
3
4
using System . Threading ;
4
5
using System . Timers ;
@@ -16,6 +17,8 @@ public void Does_retry_failed_commands()
16
17
{
17
18
//LogManager.LogFactory = new ConsoleLogFactory(debugEnabled: true);
18
19
20
+ RedisStats . Reset ( ) ;
21
+
19
22
var redisCtrl = new RedisClient ( RedisConfig . DefaultHost ) ;
20
23
redisCtrl . FlushAll ( ) ;
21
24
redisCtrl . SetClient ( "redisCtrl" ) ;
@@ -36,6 +39,106 @@ public void Does_retry_failed_commands()
36
39
37
40
Assert . That ( redis . IncrementValue ( "retryCounter" ) , Is . EqualTo ( 2 ) ) ;
38
41
Assert . That ( redis . Get < int > ( "retryCounter" ) , Is . EqualTo ( 2 ) ) ;
42
+
43
+ Assert . That ( RedisStats . TotalRetryCount , Is . EqualTo ( 1 ) ) ;
44
+ Assert . That ( RedisStats . TotalRetrySuccess , Is . EqualTo ( 1 ) ) ;
45
+ Assert . That ( RedisStats . TotalRetryTimedout , Is . EqualTo ( 0 ) ) ;
46
+ }
47
+
48
+ [ Test ]
49
+ public void Does_retry_failed_commands_with_SocketException ( )
50
+ {
51
+ RedisStats . Reset ( ) ;
52
+
53
+ var redis = new RedisClient ( RedisConfig . DefaultHost ) ;
54
+ redis . FlushAll ( ) ;
55
+
56
+ Assert . That ( redis . IncrementValue ( "retryCounter" ) , Is . EqualTo ( 1 ) ) ;
57
+
58
+ redis . OnBeforeFlush = ( ) =>
59
+ {
60
+ redis . OnBeforeFlush = null ;
61
+ throw new SocketException ( ) ;
62
+ } ;
63
+
64
+ Assert . That ( redis . IncrementValue ( "retryCounter" ) , Is . EqualTo ( 2 ) ) ;
65
+ Assert . That ( redis . Get < int > ( "retryCounter" ) , Is . EqualTo ( 2 ) ) ;
66
+
67
+ Assert . That ( RedisStats . TotalRetryCount , Is . EqualTo ( 1 ) ) ;
68
+ Assert . That ( RedisStats . TotalRetrySuccess , Is . EqualTo ( 1 ) ) ;
69
+ Assert . That ( RedisStats . TotalRetryTimedout , Is . EqualTo ( 0 ) ) ;
70
+ }
71
+
72
+ [ Test ]
73
+ public void Does_Timeout_with_repeated_SocketException ( )
74
+ {
75
+ RedisConfig . Reset ( ) ;
76
+ RedisConfig . DefaultRetryTimeout = 100 ;
77
+
78
+ var redis = new RedisClient ( RedisConfig . DefaultHost ) ;
79
+ redis . FlushAll ( ) ;
80
+
81
+ Assert . That ( redis . IncrementValue ( "retryCounter" ) , Is . EqualTo ( 1 ) ) ;
82
+
83
+ redis . OnBeforeFlush = ( ) =>
84
+ {
85
+ throw new SocketException ( ) ;
86
+ } ;
87
+
88
+ try
89
+ {
90
+ redis . IncrementValue ( "retryCounter" ) ;
91
+ Assert . Fail ( "Should throw" ) ;
92
+ }
93
+ catch ( RedisException ex )
94
+ {
95
+ Assert . That ( ex . Message , Is . StringStarting ( "Exceeded timeout" ) ) ;
96
+
97
+ redis . OnBeforeFlush = null ;
98
+ Assert . That ( redis . Get < int > ( "retryCounter" ) , Is . EqualTo ( 1 ) ) ;
99
+
100
+ Assert . That ( RedisStats . TotalRetryCount , Is . GreaterThan ( 1 ) ) ;
101
+ Assert . That ( RedisStats . TotalRetrySuccess , Is . EqualTo ( 0 ) ) ;
102
+ Assert . That ( RedisStats . TotalRetryTimedout , Is . EqualTo ( 1 ) ) ;
103
+ }
104
+
105
+ RedisConfig . Reset ( ) ;
106
+ }
107
+
108
+ [ Test ]
109
+ public void Does_not_retry_when_RetryTimeout_is_Zero ( )
110
+ {
111
+ RedisConfig . Reset ( ) ;
112
+ RedisConfig . DefaultRetryTimeout = 0 ;
113
+
114
+ var redis = new RedisClient ( RedisConfig . DefaultHost ) ;
115
+ redis . FlushAll ( ) ;
116
+
117
+ Assert . That ( redis . IncrementValue ( "retryCounter" ) , Is . EqualTo ( 1 ) ) ;
118
+
119
+ redis . OnBeforeFlush = ( ) =>
120
+ {
121
+ throw new SocketException ( ) ;
122
+ } ;
123
+
124
+ try
125
+ {
126
+ redis . IncrementValue ( "retryCounter" ) ;
127
+ Assert . Fail ( "Should throw" ) ;
128
+ }
129
+ catch ( Exception ex )
130
+ {
131
+ Assert . That ( ex . Message , Is . StringStarting ( "Exceeded timeout" ) ) ;
132
+
133
+ redis . OnBeforeFlush = null ;
134
+ Assert . That ( redis . Get < int > ( "retryCounter" ) , Is . EqualTo ( 1 ) ) ;
135
+
136
+ Assert . That ( RedisStats . TotalRetryCount , Is . EqualTo ( 0 ) ) ;
137
+ Assert . That ( RedisStats . TotalRetrySuccess , Is . EqualTo ( 0 ) ) ;
138
+ Assert . That ( RedisStats . TotalRetryTimedout , Is . EqualTo ( 1 ) ) ;
139
+ }
140
+
141
+ RedisConfig . Reset ( ) ;
39
142
}
40
143
}
41
144
}
0 commit comments