Procházet zdrojové kódy

refactor: 细节优化

RyanCW před 3 měsíci
rodič
revize
d72738fcf5

+ 1 - 0
.github/copilot-instructions.md

@@ -39,6 +39,7 @@ RyanMqtt是一个严格遵循 [MQTT 3.1.1](https://docs.oasis-open.org/mqtt/mqtt
 - RyanMqtt心跳使用1.5倍时间,当心跳周期到达设置的0.9倍后会发送心跳包,如果超过1.5倍就通知用户断开连接
 
 ## 代码格式
+- 可以使用中文进行注释
 - 所有代码须符合项目 `.clang-format` 配置
 
 ## 最佳实践

+ 1 - 1
mqttclient/RyanMqttClient.c

@@ -411,7 +411,7 @@ RyanMqttError_e RyanMqttUnSubscribeMany(RyanMqttClient_t *client, int32_t count,
 	RyanMqttCheck(NULL != unSubscriptionList, RyanMqttNotEnoughMemError, RyanMqttLog_d);
 	for (int32_t i = 0; i < count; i++)
 	{
-		unSubscriptionList[i].qos = (MQTTQoS_t)RyanMqttSubFail; // 无效数据,仅占位符
+		unSubscriptionList[i].qos = (MQTTQoS_t)RyanMqttSubFail; // 无效数据,仅用作占位符
 		unSubscriptionList[i].pTopicFilter = unSubscribeManyData[i].topic;
 		unSubscriptionList[i].topicFilterLength = unSubscribeManyData[i].topicLen;
 	}

+ 1 - 0
mqttclient/RyanMqttThread.c

@@ -541,6 +541,7 @@ void RyanMqttThread(void *argument)
 
 		case RyanMqttConnectState: // 连接状态
 			RyanMqttLog_d("连接状态");
+            // 不对返回值进行处理
 			RyanMqttProcessPacketHandler(client);
 			RyanMqttAckListScan(client, RyanMqttTrue);
 			RyanMqttKeepalive(client);

+ 2 - 1
platform/linux/platformNetwork.c

@@ -1,4 +1,5 @@
-#define RyanMqttLogLevel (RyanMqttLogLevelDebug) // 日志打印等级
+#define RyanMqttLogLevel (RyanMqttLogLevelAssert) // 日志打印等级
+// #define RyanMqttLogLevel (RyanMqttLogLevelDebug) // 日志打印等级
 
 #include "RyanMqttPlatform.h"
 #include "RyanMqttLog.h"

+ 4 - 3
test/RyanMqttNetworkFaultQosResilienceTest.c

@@ -212,6 +212,7 @@ static RyanMqttError_e RyanMqttNetworkFaultQosResiliencePublishTest(int32_t coun
 			goto __exit;
 		}
 
+		// 测试代码可以临时访问ack链表
 		platformMutexLock(client->config.userData, &client->ackHandleLock);
 		if (RyanMqttListIsEmpty(&client->ackHandlerList))
 		{
@@ -250,15 +251,15 @@ RyanMqttError_e RyanMqttNetworkFaultQosResilienceTest(void)
 	RyanMqttError_e result = RyanMqttSuccessError;
 
 	result = RyanMqttNetworkFaultQosResiliencePublishTest(500, 1, RyanMqttQos0);
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, RyanMqttFailedError, RyanMqttLog_e, { goto __exit; });
+	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
 	checkMemory;
 
 	result = RyanMqttNetworkFaultQosResiliencePublishTest(500, 2, RyanMqttQos1);
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, RyanMqttFailedError, RyanMqttLog_e, { goto __exit; });
+	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
 	checkMemory;
 
 	result = RyanMqttNetworkFaultQosResiliencePublishTest(500, 4, RyanMqttQos2);
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, RyanMqttFailedError, RyanMqttLog_e, { goto __exit; });
+	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
 	checkMemory;
 
 	return RyanMqttSuccessError;

+ 38 - 39
test/RyanMqttTest.c

@@ -1,7 +1,7 @@
 #include "RyanMqttTest.h"
 
 static pthread_spinlock_t spin;
-uint32_t destoryCount = 0;
+uint32_t destroyCount = 0;
 
 uint32_t randomCount = 0;
 uint32_t sendRandomCount = 0;
@@ -64,7 +64,7 @@ void mqttEventBaseHandle(void *pclient, RyanMqttEventId_e event, const void *eve
 		RyanMqttLog_i("mqtt连接成功回调 %d", *(int32_t *)eventData);
 		break;
 
-	case RyanMqttEventDisconnected: RyanMqttLog_e("mqtt断开连接回调 %d", *(int32_t *)eventData); break;
+	case RyanMqttEventDisconnected: RyanMqttLog_w("mqtt断开连接回调 %d", *(int32_t *)eventData); break;
 
 	case RyanMqttEventSubscribed: {
 		RyanMqttMsgHandler_t *msgHandler = (RyanMqttMsgHandler_t *)eventData;
@@ -150,7 +150,7 @@ void mqttEventBaseHandle(void *pclient, RyanMqttEventId_e event, const void *eve
 	}
 
 	case RyanMqttEventDestroyBefore:
-		RyanMqttLog_e("销毁mqtt客户端前回调");
+		RyanMqttLog_w("销毁mqtt客户端前回调");
 
 		RyanMqttClient_t *client = (RyanMqttClient_t *)pclient;
 		struct RyanMqttTestEventUserData *eventUserData =
@@ -291,14 +291,14 @@ static void RyanMqttTestFreeTimerCallback(union sigval arg)
 	platformMemoryFree(ptr);
 
 	RyanMqttTestEnableCritical();
-	destoryCount--;
+	destroyCount--;
 	RyanMqttTestExitCritical();
 }
 
 static void RyanMqttTestScheduleFreeAfterMs(void *ptr, uint32_t delayMs)
 {
 	RyanMqttTestEnableCritical();
-	destoryCount++;
+	destroyCount++;
 	RyanMqttTestExitCritical();
 
 	timer_t timerid;
@@ -335,6 +335,8 @@ RyanMqttError_e RyanMqttTestDestroyClient(RyanMqttClient_t *client)
 		RyanMqttLog_e("eventUserData野指针");
 	}
 
+	RyanMqttDisconnect(client, RyanMqttTrue);
+
 	// 启动mqtt客户端线程
 	RyanMqttDestroy(client);
 
@@ -433,49 +435,46 @@ int main(void)
 
 	pthread_spin_init(&spin, PTHREAD_PROCESS_PRIVATE);
 
-	result = RyanMqttPublicApiParamCheckTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttSubTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttPubTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttDestroyTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttNetworkFaultToleranceMemoryTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttNetworkFaultQosResilienceTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttMultiThreadMultiClientTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttMultiThreadSafetyTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttReconnectTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	result = RyanMqttKeepAliveTest();
-	RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
-
-	// result = RyanMqttWildcardTest();
-	// RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });
+	uint32_t testRunCount = 0;
+	uint32_t funcStartMs;
+#define runTestWithLogAndTimer(fun)                                                                                    \
+	do                                                                                                             \
+	{                                                                                                              \
+		testRunCount++;                                                                                        \
+		RyanMqttLog_raw("┌── [TEST %d] 开始执行: " #fun "()\r\n", testRunCount);                               \
+		funcStartMs = platformUptimeMs();                                                                      \
+		result = fun();                                                                                        \
+		RyanMqttLog_raw("└── [TEST %d] 结束执行: 返回值 = %d %s | 耗时: %d ms\x1b[0m\r\n\r\n\r\n",             \
+				testRunCount, result, (result == RyanMqttSuccessError) ? "✅" : "❌",                  \
+				platformUptimeMs() - funcStartMs);                                                     \
+		RyanMqttCheckCodeNoReturn(RyanMqttSuccessError == result, result, RyanMqttLog_e, { goto __exit; });    \
+	} while (0)
+
+	uint32_t totalElapsedStartMs = platformUptimeMs();
+	runTestWithLogAndTimer(RyanMqttPublicApiParamCheckTest);
+	runTestWithLogAndTimer(RyanMqttSubTest);
+	runTestWithLogAndTimer(RyanMqttPubTest);
+	runTestWithLogAndTimer(RyanMqttDestroyTest);
+	runTestWithLogAndTimer(RyanMqttNetworkFaultToleranceMemoryTest);
+	runTestWithLogAndTimer(RyanMqttNetworkFaultQosResilienceTest);
+	runTestWithLogAndTimer(RyanMqttMultiThreadMultiClientTest);
+	runTestWithLogAndTimer(RyanMqttMultiThreadSafetyTest);
+	runTestWithLogAndTimer(RyanMqttReconnectTest);
+	runTestWithLogAndTimer(RyanMqttKeepAliveTest);
+	// runTestWithLogAndTimer(RyanMqttWildcardTest);
 
 __exit:
 	pthread_spin_destroy(&spin);
 
+	RyanMqttLog_raw("测试总耗时: %.3f S\r\n", (platformUptimeMs() - totalElapsedStartMs) / 1000.0);
+
 	if (RyanMqttSuccessError == result)
 	{
-		RyanMqttLog_i("测试成功---------------------------");
+		RyanMqttLog_raw("测试成功---------------------------\r\n");
 	}
 	else
 	{
-		RyanMqttLog_e("测试失败---------------------------");
+		RyanMqttLog_raw("测试失败---------------------------\r\n");
 	}
 
 	for (uint32_t i = 0; i < 3; i++)

+ 2 - 2
test/RyanMqttTest.h

@@ -48,7 +48,7 @@ extern "C" {
 #define delay(ms)         usleep((ms) * 1000)
 #define delay_us(us)      usleep((us))
 #define getArraySize(arr) ((int32_t)(sizeof(arr) / sizeof((arr)[0])))
-extern uint32_t destoryCount;
+extern uint32_t destroyCount;
 
 #define checkMemory                                                                                                    \
 	do                                                                                                             \
@@ -56,7 +56,7 @@ extern uint32_t destoryCount;
 		for (uint32_t aaa = 0;; aaa++)                                                                         \
 		{                                                                                                      \
 			RyanMqttTestEnableCritical();                                                                  \
-			uint32_t destoryCount2 = destoryCount;                                                         \
+			uint32_t destoryCount2 = destroyCount;                                                         \
 			RyanMqttTestExitCritical();                                                                    \
 			if (0 == destoryCount2) break;                                                                 \
 			if (aaa > 10 * 1000)                                                                           \