Add Assert for TlsHandler.MediationStream#51
Conversation
| if (sslBuffer.IsEmpty) | ||
| { | ||
| // there is no pending read operation - keep for future | ||
| Debug.Assert(_readCompletionSource == null); |
There was a problem hiding this comment.
ReadAsync can also be called with zero length array, and it should be finished if any data is available.
|
MqttServerAndClient not failed this time, but see on some other test(TlsHandlerTest.TlsRead) in net5.0_windows |
|
能否把证书一块更新下? |
…and seems obsoleted and no longer work on net5.0+ubuntu20.04 Generated with ``` openssl genrsa -out ssl.key 2048 openssl req -new -x509 -key ssl.key -out dotnetty.com.cer -days 3650 -subj /CN=dotnetty.com openssl req -new -x509 -key ssl.key -out contoso.com.cer -days 3650 -subj /CN=contoso.com openssl pkcs12 -export -out dotnetty.com.pfx -inkey ssl.key -in dotnetty.com.cer openssl pkcs12 -export -out contoso.com.pfx -inkey ssl.key -in contoso.com.cer ``` password="password"
… many tests for it
|
奇怪了, 怎么我改了测试之后mac下都跑不过了, |
cuteant
left a comment
There was a problem hiding this comment.
非windows平台的测试还是要把 SslProtocols.Tls 去掉
Message:
System.Security.Authentication.AuthenticationException : Authentication failed, see inner exception.
---- System.ComponentModel.Win32Exception : 因为算法不同,客户端和服务器无法通信。(The client and server cannot communicate, because they do not possess a common algorithm.)
Stack Trace:
SslStream.ForceAuthenticationAsync[TIOAdapter](TIOAdapter adapter, Boolean receiveFirst, Byte[] reAuthenticationData, Boolean isApm)
TaskUtil.WithTimeout(Task taskToComplete, TimeSpan timeout) line 428
TlsHandlerTest.SetupStreamAndChannelAsync(Boolean isClient, IEventExecutor executor, IWriteStrategy writeStrategy, SslProtocols serverProtocol, SslProtocols clientProtocol, List`1 writeTasks) line 344
TlsHandlerTest.TlsWrite(Int32[] frameLengths, Boolean isClient, SslProtocols serverProtocol, SslProtocols clientProtocol) line 233
TlsHandlerTest.TlsWrite(Int32[] frameLengths, Boolean isClient, SslProtocols serverProtocol, SslProtocols clientProtocol) line 271
--- End of stack trace from previous location ---
----- Inner Stack Trace -----
Standard Output:
frameLengths: 1
isClient: True
serverProtocol: Tls13
clientProtocol: Tls, Tls11, Tls12, Tls13
writeStrategy: as-is
具体包含以下测试, 我看把TlsRead的writeStrategy改成个枚举传入 |
|
TlsRead最开始VS是可以分组的,后来随着VS的升级...... |
cuteant
left a comment
There was a problem hiding this comment.
要不 MqttServerAndClient 先这样忽略掉?
#if LOCALTEST
[Fact]
#else
[Fact(Skip = "Azure DevOps")]
#endif
|
设了DisableDiscoveryEnumeration好像没用, 而且不知道从哪缓存了一个旧版测试的名字, 先不管这个了 测试的名字全显示成一样的是pipeline本身和xunit+vstest的兼容性问题, 可惜连接过期了看不到当初给的规避方案了, 而且估计短时间内也不会修, 虽然不知道为啥dotnet/runtime本身用到的测试好像都是对的... MqttServerAndClient 那个我会修的, 因为现在还剩下的基本上都是Azure/DotNetty#374那个问题, 就是我最初加的那个Assert, 但可能要周末才有空改, 而且这块本身的代码也是一团乱麻, 搞得我都想去抄system.io.pipelines的实现或者引用了... |
|
😃 👍 |
|
不知道是不是最近win10预览版的问题, 现在我一跑dotnet sdk就蓝屏重启, 但跑别的又没问题. 现在完全没法调, 先延下期... |
|
好的,预览版的东东少用,之前用过vs的预览版,做单元测试的时候差点把我搞崩溃 |
|
Updated:
|
|
😁 👍 等你的推送,我也测试下 |
|
@yyjdelete 我在 #65 中借用了 090b92d ,并做了些修改,重构了TlsHandler,做了些异常捕捉,确保 tlshandler 可以关闭,#46 可以杜绝了 |
|
@cuteant 好的, 有时间的时候我看下然后rebase之后重新push下 |


Check whether MqttServerAndClient will hit the assert in pipeline.=>It hit the assert
Actual fix is not included.
(I do this later when I'm free, and the fix should like Azure/DotNetty#374)