@@ -41,17 +41,6 @@ using chip::Dnssd::TextEntry;
41
41
42
42
namespace {
43
43
44
- struct DnssdContext
45
- {
46
- std::atomic<bool > mTimeoutExpired { false };
47
-
48
- intptr_t mBrowseIdentifier = 0 ;
49
-
50
- unsigned int mBrowsedServicesCount = 0 ;
51
- unsigned int mResolvedServicesCount = 0 ;
52
- bool mEndOfInput = false ;
53
- };
54
-
55
44
class TestDnssdResolveServerDelegate : public mdns ::Minimal::ServerDelegate, public mdns::Minimal::ParserDelegate
56
45
{
57
46
public:
@@ -96,11 +85,19 @@ class TestDnssd : public ::testing::Test
96
85
chip::DeviceLayer::PlatformMgr ().Shutdown ();
97
86
chip::Platform::MemoryShutdown ();
98
87
}
88
+
89
+ std::atomic<bool > mTimeoutExpired { false };
90
+
91
+ intptr_t mBrowseIdentifier = 0 ;
92
+
93
+ unsigned int mBrowsedServicesCount = 0 ;
94
+ unsigned int mResolvedServicesCount = 0 ;
95
+ bool mEndOfInput = false ;
99
96
};
100
97
101
98
static void Timeout (chip::System::Layer * systemLayer, void * context)
102
99
{
103
- auto * ctx = static_cast <DnssdContext *>(context);
100
+ auto * ctx = static_cast <TestDnssd *>(context);
104
101
ChipLogError (DeviceLayer, " mDNS test timeout, is avahi daemon running?" );
105
102
ctx->mTimeoutExpired = true ;
106
103
chip::DeviceLayer::PlatformMgr ().StopEventLoopTask ();
@@ -109,16 +106,12 @@ static void Timeout(chip::System::Layer * systemLayer, void * context)
109
106
static void HandleResolve (void * context, DnssdService * result, const chip::Span<chip::Inet::IPAddress> & addresses,
110
107
CHIP_ERROR error)
111
108
{
112
- auto * ctx = static_cast <DnssdContext *>(context);
109
+ auto * ctx = static_cast <TestDnssd *>(context);
113
110
char addrBuf[100 ];
114
111
115
- ASSERT_NE (result, nullptr );
112
+ EXPECT_NE (result, nullptr );
116
113
EXPECT_EQ (error, CHIP_NO_ERROR);
117
114
118
- // The NL_TEST_ASSERT above will not abort the test, so we need to
119
- // explicitly abort it here to avoid dereferencing a null pointer.
120
- VerifyOrReturn (result != nullptr , );
121
-
122
115
if (!addresses.empty ())
123
116
{
124
117
addresses.data ()[0 ].ToString (addrBuf, sizeof (addrBuf));
@@ -147,7 +140,7 @@ static void HandleResolve(void * context, DnssdService * result, const chip::Spa
147
140
148
141
static void HandleBrowse (void * context, DnssdService * services, size_t servicesSize, bool finalBrowse, CHIP_ERROR error)
149
142
{
150
- auto * ctx = static_cast <DnssdContext *>(context);
143
+ auto * ctx = static_cast <TestDnssd *>(context);
151
144
152
145
// Make sure that we will not be called again after end-of-input is set
153
146
EXPECT_EQ (ctx->mEndOfInput , false );
@@ -177,7 +170,7 @@ static void DnssdErrorCallback(void * context, CHIP_ERROR error)
177
170
178
171
void TestDnssdBrowse_DnssdInitCallback (void * context, CHIP_ERROR error)
179
172
{
180
- auto * ctx = static_cast <DnssdContext *>(context);
173
+ auto * ctx = static_cast <TestDnssd *>(context);
181
174
EXPECT_EQ (error, CHIP_NO_ERROR);
182
175
183
176
EXPECT_EQ (ChipDnssdBrowse (" _mock" , DnssdServiceProtocol::kDnssdProtocolUdp , chip::Inet::IPAddressType::kAny ,
@@ -194,8 +187,6 @@ void TestDnssdBrowse_DnssdInitCallback(void * context, CHIP_ERROR error)
194
187
// services by querying for all of these records separately.
195
188
TEST_F (TestDnssd, TestDnssdBrowse)
196
189
{
197
- DnssdContext context;
198
-
199
190
mdns::Minimal::SetDefaultAddressPolicy ();
200
191
201
192
mdns::Minimal::Server<10 > server;
@@ -236,18 +227,18 @@ TEST_F(TestDnssd, TestDnssdBrowse)
236
227
auto endpoints = mdns::Minimal::GetAddressPolicy ()->GetListenEndpoints ();
237
228
EXPECT_EQ (server.Listen (chip::DeviceLayer::UDPEndPointManager (), endpoints.get (), 5353 ), CHIP_NO_ERROR);
238
229
239
- EXPECT_EQ (chip::Dnssd::ChipDnssdInit (TestDnssdBrowse_DnssdInitCallback, DnssdErrorCallback, &context ), CHIP_NO_ERROR);
240
- EXPECT_EQ (chip::DeviceLayer::SystemLayer ().StartTimer (chip::System::Clock::Seconds32 (5 ), Timeout, &context ), CHIP_NO_ERROR);
230
+ EXPECT_EQ (chip::Dnssd::ChipDnssdInit (TestDnssdBrowse_DnssdInitCallback, DnssdErrorCallback, this ), CHIP_NO_ERROR);
231
+ EXPECT_EQ (chip::DeviceLayer::SystemLayer ().StartTimer (chip::System::Clock::Seconds32 (5 ), Timeout, this ), CHIP_NO_ERROR);
241
232
242
233
ChipLogProgress (DeviceLayer, " Start EventLoop" );
243
234
chip::DeviceLayer::PlatformMgr ().RunEventLoop ();
244
235
ChipLogProgress (DeviceLayer, " End EventLoop" );
245
236
246
- EXPECT_TRUE (context. mResolvedServicesCount > 0 );
247
- EXPECT_TRUE (!context. mTimeoutExpired );
237
+ EXPECT_GT ( mResolvedServicesCount , 0 );
238
+ EXPECT_FALSE ( mTimeoutExpired );
248
239
249
240
// Stop browsing so we can safely shutdown DNS-SD
250
- chip::Dnssd::ChipDnssdStopBrowse (context. mBrowseIdentifier );
241
+ chip::Dnssd::ChipDnssdStopBrowse (mBrowseIdentifier );
251
242
252
243
chip::Dnssd::ChipDnssdShutdown ();
253
244
}
@@ -259,7 +250,7 @@ static void HandlePublish(void * context, const char * type, const char * instan
259
250
260
251
static void TestDnssdPublishService_DnssdInitCallback (void * context, CHIP_ERROR error)
261
252
{
262
- auto * ctx = static_cast <DnssdContext *>(context);
253
+ auto * ctx = static_cast <TestDnssd *>(context);
263
254
EXPECT_EQ (error, CHIP_NO_ERROR);
264
255
265
256
DnssdService service{};
@@ -277,7 +268,7 @@ static void TestDnssdPublishService_DnssdInitCallback(void * context, CHIP_ERROR
277
268
service.mSubTypes = nullptr ;
278
269
service.mSubTypeSize = 0 ;
279
270
280
- EXPECT_EQ (ChipDnssdPublishService (&service, HandlePublish, context ), CHIP_NO_ERROR);
271
+ EXPECT_EQ (ChipDnssdPublishService (&service, HandlePublish, nullptr ), CHIP_NO_ERROR);
281
272
282
273
EXPECT_EQ (ChipDnssdBrowse (" _mock" , DnssdServiceProtocol::kDnssdProtocolTcp , chip::Inet::IPAddressType::kAny ,
283
274
chip::Inet::InterfaceId::Null (), HandleBrowse, context, &ctx->mBrowseIdentifier ),
@@ -291,20 +282,18 @@ static void TestDnssdPublishService_DnssdInitCallback(void * context, CHIP_ERROR
291
282
// here we only verify that the server implementation can publish services.
292
283
TEST_F (TestDnssd, TestDnssdPublishService)
293
284
{
294
- DnssdContext context;
295
-
296
- EXPECT_EQ (chip::Dnssd::ChipDnssdInit (TestDnssdPublishService_DnssdInitCallback, DnssdErrorCallback, &context), CHIP_NO_ERROR);
297
- EXPECT_EQ (chip::DeviceLayer::SystemLayer ().StartTimer (chip::System::Clock::Seconds32 (5 ), Timeout, &context), CHIP_NO_ERROR);
285
+ EXPECT_EQ (chip::Dnssd::ChipDnssdInit (TestDnssdPublishService_DnssdInitCallback, DnssdErrorCallback, this ), CHIP_NO_ERROR);
286
+ EXPECT_EQ (chip::DeviceLayer::SystemLayer ().StartTimer (chip::System::Clock::Seconds32 (5 ), Timeout, this ), CHIP_NO_ERROR);
298
287
299
288
ChipLogProgress (DeviceLayer, " Start EventLoop" );
300
289
chip::DeviceLayer::PlatformMgr ().RunEventLoop ();
301
290
ChipLogProgress (DeviceLayer, " End EventLoop" );
302
291
303
- EXPECT_TRUE (context. mResolvedServicesCount > 0 );
304
- EXPECT_TRUE (!context. mTimeoutExpired );
292
+ EXPECT_GT ( mResolvedServicesCount , 0 );
293
+ EXPECT_FALSE ( mTimeoutExpired );
305
294
306
295
// Stop browsing so we can safely shutdown DNS-SD
307
- chip::Dnssd::ChipDnssdStopBrowse (context. mBrowseIdentifier );
296
+ chip::Dnssd::ChipDnssdStopBrowse (mBrowseIdentifier );
308
297
309
298
chip::Dnssd::ChipDnssdShutdown ();
310
299
}
0 commit comments