Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
dotNET Platform
MQTTnet
提交
be0c7543
MQTTnet
项目概览
dotNET Platform
/
MQTTnet
10 个月 前同步成功
通知
0
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
MQTTnet
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
be0c7543
编写于
7月 29, 2023
作者:
C
Christian
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add Unit Tests
上级
92956265
变更
9
隐藏空白更改
内联
并排
Showing
9 changed file
with
146 addition
and
34 deletion
+146
-34
Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs
Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs
+5
-0
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Connection_Tests.cs
...t.Tests/Clients/MqttClient/MqttClient_Connection_Tests.cs
+45
-0
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Publish_Tests.cs
...Tnet.Tests/Clients/MqttClient/MqttClient_Publish_Tests.cs
+59
-0
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Tests.cs
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Tests.cs
+1
-31
Source/MQTTnet.Tests/Clients/MqttClientOptionsBuilder_Tests.cs
...e/MQTTnet.Tests/Clients/MqttClientOptionsBuilder_Tests.cs
+1
-1
Source/MQTTnet/Client/MqttClient.cs
Source/MQTTnet/Client/MqttClient.cs
+1
-0
Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedEventArgs.cs
...ient/Receiving/MqttApplicationMessageReceivedEventArgs.cs
+1
-1
Source/MQTTnet/Server/MqttServer.cs
Source/MQTTnet/Server/MqttServer.cs
+6
-0
Source/MQTTnet/Server/MqttServerExtensions.cs
Source/MQTTnet/Server/MqttServerExtensions.cs
+27
-1
未找到文件。
Source/MQTTnet.Extensions.Rpc/MqttRpcClient.cs
浏览文件 @
be0c7543
...
...
@@ -69,6 +69,11 @@ namespace MQTTnet.Extensions.Rpc
throw
new
ArgumentNullException
(
nameof
(
methodName
));
}
if
(!
_mqttClient
.
IsConnected
)
{
throw
new
MqttClientDisconnectedException
(
null
);
}
var
context
=
new
TopicGenerationContext
(
_mqttClient
,
_options
,
methodName
,
qualityOfServiceLevel
);
var
topicNames
=
_options
.
TopicGenerationStrategy
.
CreateRpcTopics
(
context
);
...
...
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Connection_Tests.cs
浏览文件 @
be0c7543
...
...
@@ -9,6 +9,7 @@ using System.Threading.Tasks;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
MQTTnet.Client
;
using
MQTTnet.Exceptions
;
using
MQTTnet.Extensions.Rpc
;
using
MQTTnet.Formatter
;
using
MQTTnet.Internal
;
using
MQTTnet.Packets
;
...
...
@@ -20,6 +21,38 @@ namespace MQTTnet.Tests.Clients.MqttClient
[
TestClass
]
public
sealed
class
MqttClient_Connection_Tests
:
BaseTestClass
{
[
TestMethod
]
public
async
Task
Connect_Disconnect_Connect
()
{
using
(
var
testEnvironment
=
CreateTestEnvironment
())
{
await
testEnvironment
.
StartServer
();
var
clientOptions
=
testEnvironment
.
CreateDefaultClientOptions
();
var
client
=
testEnvironment
.
CreateClient
();
await
client
.
ConnectAsync
(
clientOptions
);
await
client
.
DisconnectAsync
();
await
client
.
ConnectAsync
(
clientOptions
);
}
}
[
TestMethod
]
[
ExpectedException
(
typeof
(
InvalidOperationException
))]
public
async
Task
Connect_Multiple_Times_Should_Fail
()
{
using
(
var
testEnvironment
=
CreateTestEnvironment
())
{
await
testEnvironment
.
StartServer
();
var
clientOptions
=
testEnvironment
.
CreateDefaultClientOptions
();
var
client
=
testEnvironment
.
CreateClient
();
await
client
.
ConnectAsync
(
clientOptions
);
await
client
.
ConnectAsync
(
clientOptions
);
}
}
[
TestMethod
]
[
ExpectedException
(
typeof
(
MqttCommunicationException
))]
public
async
Task
Connect_To_Invalid_Server_Port_Not_Opened
()
...
...
@@ -196,5 +229,17 @@ namespace MQTTnet.Tests.Clients.MqttClient
Assert
.
AreEqual
(
response
.
UserProperties
[
0
].
Value
,
"Value"
);
}
}
[
TestMethod
]
[
ExpectedException
(
typeof
(
MqttClientDisconnectedException
))]
public
async
Task
Rpc_Client_Not_Connected
()
{
var
factory
=
new
MqttFactory
();
using
(
var
client
=
factory
.
CreateMqttClient
())
{
var
rpcClient
=
factory
.
CreateMqttRpcClient
(
client
);
await
rpcClient
.
ExecuteAsync
(
"aaa"
,
new
byte
[]
{
1
,
2
,
3
},
MqttQualityOfServiceLevel
.
AtLeastOnce
);
}
}
}
}
\ No newline at end of file
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Publish_Tests.cs
0 → 100644
浏览文件 @
be0c7543
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
// See the LICENSE file in the project root for more information.
using
System
;
using
System.Threading
;
using
System.Threading.Tasks
;
using
Microsoft.VisualStudio.TestTools.UnitTesting
;
using
MQTTnet.Client
;
using
MQTTnet.Protocol
;
using
MQTTnet.Server
;
namespace
MQTTnet.Tests.Clients.MqttClient
{
[
TestClass
]
public
sealed
class
MqttClient_Publish_Tests
:
BaseTestClass
{
[
TestMethod
]
public
async
Task
Acknowledge_After_Disconnect_Should_Fail
()
{
using
(
var
testEnvironment
=
CreateTestEnvironment
())
{
var
server
=
await
testEnvironment
.
StartServer
();
var
client
=
await
testEnvironment
.
ConnectClient
();
await
client
.
SubscribeAsync
(
"TEST"
,
MqttQualityOfServiceLevel
.
AtLeastOnce
);
var
flag
=
false
;
client
.
ApplicationMessageReceivedAsync
+=
async
args
=>
{
try
{
args
.
AutoAcknowledge
=
false
;
await
client
.
DisconnectAsync
();
await
args
.
AcknowledgeAsync
();
flag
=
true
;
}
catch
(
Exception
exception
)
{
}
};
await
server
.
InjectApplicationMessageAsync
(
new
MqttApplicationMessage
{
Topic
=
"TEST"
});
SpinWait
.
SpinUntil
(()
=>
flag
,
TimeSpan
.
FromSeconds
(
10
));
Assert
.
IsTrue
(
flag
);
}
}
}
}
\ No newline at end of file
Source/MQTTnet.Tests/Clients/MqttClient/MqttClient_Tests.cs
浏览文件 @
be0c7543
...
...
@@ -69,38 +69,8 @@ namespace MQTTnet.Tests.Clients.MqttClient
Assert
.
IsTrue
(
success
);
}
}
[
TestMethod
]
public
async
Task
Connect_Disconnect_Connect
()
{
using
(
var
testEnvironment
=
CreateTestEnvironment
())
{
await
testEnvironment
.
StartServer
();
var
clientOptions
=
testEnvironment
.
CreateDefaultClientOptions
();
var
client
=
testEnvironment
.
CreateClient
();
await
client
.
ConnectAsync
(
clientOptions
);
await
client
.
DisconnectAsync
();
await
client
.
ConnectAsync
(
clientOptions
);
}
}
[
TestMethod
]
[
ExpectedException
(
typeof
(
InvalidOperationException
))]
public
async
Task
Connect_Multiple_Times_Should_Fail
()
{
using
(
var
testEnvironment
=
CreateTestEnvironment
())
{
await
testEnvironment
.
StartServer
();
var
clientOptions
=
testEnvironment
.
CreateDefaultClientOptions
();
var
client
=
testEnvironment
.
CreateClient
();
await
client
.
ConnectAsync
(
clientOptions
);
await
client
.
ConnectAsync
(
clientOptions
);
}
}
[
TestMethod
]
public
async
Task
Disconnect_Event_Contains_Exception
()
...
...
Source/MQTTnet.Tests/Clients/MqttClientOptionsBuilder_Tests.cs
浏览文件 @
be0c7543
...
...
@@ -10,7 +10,7 @@ using MQTTnet.Client;
namespace
MQTTnet.Tests.Clients
{
[
TestClass
]
public
class
MqttClientOptionsBuilder_Tests
public
sealed
class
MqttClientOptionsBuilder_Tests
{
[
TestMethod
]
public
void
WithConnectionUri_Credential_Test
()
...
...
Source/MQTTnet/Client/MqttClient.cs
浏览文件 @
be0c7543
...
...
@@ -881,6 +881,7 @@ namespace MQTTnet.Client
_lastPacketSentTimestamp
=
DateTime
.
UtcNow
;
//ThrowIfNotConnected();
return
_adapter
.
SendPacketAsync
(
packet
,
cancellationToken
);
}
...
...
Source/MQTTnet/Client/Receiving/MqttApplicationMessageReceivedEventArgs.cs
浏览文件 @
be0c7543
...
...
@@ -77,7 +77,7 @@ namespace MQTTnet.Client
internal
MqttPublishPacket
PublishPacket
{
get
;
set
;
}
public
Task
AcknowledgeAsync
(
CancellationToken
cancellationToken
)
public
Task
AcknowledgeAsync
(
CancellationToken
cancellationToken
=
default
)
{
if
(
_acknowledgeHandler
==
null
)
{
...
...
Source/MQTTnet/Server/MqttServer.cs
浏览文件 @
be0c7543
...
...
@@ -229,7 +229,13 @@ namespace MQTTnet.Server
return
_clientSessionsManager
.
GetSessionsStatus
();
}
[
Obsolete
(
"Use InjectApplicationMessageAsync instead."
)]
public
Task
InjectApplicationMessage
(
InjectedMqttApplicationMessage
injectedApplicationMessage
,
CancellationToken
cancellationToken
=
default
)
{
return
InjectApplicationMessageAsync
(
injectedApplicationMessage
,
cancellationToken
);
}
public
Task
InjectApplicationMessageAsync
(
InjectedMqttApplicationMessage
injectedApplicationMessage
,
CancellationToken
cancellationToken
=
default
)
{
if
(
injectedApplicationMessage
==
null
)
{
...
...
Source/MQTTnet/Server/MqttServerExtensions.cs
浏览文件 @
be0c7543
...
...
@@ -13,12 +13,38 @@ namespace MQTTnet.Server
{
public
static
class
MqttServerExtensions
{
[
Obsolete
(
"Use InjectApplicationMessageAsync instead."
)]
public
static
Task
InjectApplicationMessage
(
this
MqttServer
server
,
string
topic
,
string
payload
=
null
,
MqttQualityOfServiceLevel
qualityOfServiceLevel
=
MqttQualityOfServiceLevel
.
AtMostOnce
,
bool
retain
=
false
)
{
return
InjectApplicationMessageAsync
(
server
,
topic
,
payload
,
qualityOfServiceLevel
,
retain
);
}
public
static
Task
InjectApplicationMessageAsync
(
this
MqttServer
server
,
MqttApplicationMessage
applicationMessage
)
{
if
(
server
==
null
)
{
throw
new
ArgumentNullException
(
nameof
(
server
));
}
if
(
applicationMessage
==
null
)
{
throw
new
ArgumentNullException
(
nameof
(
applicationMessage
));
}
return
server
.
InjectApplicationMessageAsync
(
new
InjectedMqttApplicationMessage
(
applicationMessage
));
}
public
static
Task
InjectApplicationMessageAsync
(
this
MqttServer
server
,
string
topic
,
string
payload
=
null
,
MqttQualityOfServiceLevel
qualityOfServiceLevel
=
MqttQualityOfServiceLevel
.
AtMostOnce
,
bool
retain
=
false
)
{
if
(
server
==
null
)
{
...
...
@@ -36,7 +62,7 @@ namespace MQTTnet.Server
payloadBuffer
=
Encoding
.
UTF8
.
GetBytes
(
stringPayload
);
}
return
server
.
InjectApplicationMessage
(
return
server
.
InjectApplicationMessage
Async
(
new
InjectedMqttApplicationMessage
(
new
MqttApplicationMessage
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录