Skip to content

Commit cbb528e

Browse files
committed
Merge branch 'feature/unittest--transport-tests' of https://github.com/feasel0/connectedhomeip into feature/unittest--transport-tests
2 parents 570ed23 + 4a153e9 commit cbb528e

File tree

9 files changed

+404
-323
lines changed

9 files changed

+404
-323
lines changed

src/inet/TCPEndPoint.h

-5
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,6 @@
3838

3939
namespace chip {
4040

41-
namespace Transport {
42-
class TCPTest;
43-
};
44-
4541
namespace Inet {
4642

4743
class TCPTest;
@@ -529,7 +525,6 @@ class DLL_EXPORT TCPEndPoint : public EndPointBasis<TCPEndPoint>
529525
constexpr static size_t kMaxReceiveMessageSize = System::PacketBuffer::kMaxSizeWithoutReserve;
530526

531527
protected:
532-
friend class ::chip::Transport::TCPTest;
533528
friend class TCPTest;
534529

535530
TCPEndPoint(EndPointManager<TCPEndPoint> & endPointManager) :

src/lib/dnssd/minimal_mdns/tests/TestResponseSender.cpp

+18-18
Original file line numberDiff line numberDiff line change
@@ -286,34 +286,34 @@ TEST_F(TestResponseSender, AddManyQueryResponders)
286286

287287
TEST_F(TestResponseSender, PtrSrvTxtMultipleRespondersToInstance)
288288
{
289-
CommonTestElements common1("test1");
290-
CommonTestElements common2("test2");
289+
auto common1 = std::make_unique<CommonTestElements>("test1");
290+
auto common2 = std::make_unique<CommonTestElements>("test2");
291291

292292
// Just use the server from common1.
293-
ResponseSender responseSender(&common1.server);
293+
ResponseSender responseSender(&common1->server);
294294

295-
EXPECT_EQ(responseSender.AddQueryResponder(&common1.queryResponder), CHIP_NO_ERROR);
296-
common1.queryResponder.AddResponder(&common1.ptrResponder).SetReportInServiceListing(true);
297-
common1.queryResponder.AddResponder(&common1.srvResponder);
298-
common1.queryResponder.AddResponder(&common1.txtResponder);
295+
EXPECT_EQ(responseSender.AddQueryResponder(&common1->queryResponder), CHIP_NO_ERROR);
296+
common1->queryResponder.AddResponder(&common1->ptrResponder).SetReportInServiceListing(true);
297+
common1->queryResponder.AddResponder(&common1->srvResponder);
298+
common1->queryResponder.AddResponder(&common1->txtResponder);
299299

300-
EXPECT_EQ(responseSender.AddQueryResponder(&common2.queryResponder), CHIP_NO_ERROR);
301-
common2.queryResponder.AddResponder(&common2.ptrResponder).SetReportInServiceListing(true);
302-
common2.queryResponder.AddResponder(&common2.srvResponder);
303-
common2.queryResponder.AddResponder(&common2.txtResponder);
300+
EXPECT_EQ(responseSender.AddQueryResponder(&common2->queryResponder), CHIP_NO_ERROR);
301+
common2->queryResponder.AddResponder(&common2->ptrResponder).SetReportInServiceListing(true);
302+
common2->queryResponder.AddResponder(&common2->srvResponder);
303+
common2->queryResponder.AddResponder(&common2->txtResponder);
304304

305305
// Build a query for the second instance.
306-
common2.recordWriter.WriteQName(common2.instance);
307-
QueryData queryData = QueryData(QType::ANY, QClass::IN, false, common2.requestNameStart, common2.requestBytesRange);
306+
common2->recordWriter.WriteQName(common2->instance);
307+
QueryData queryData = QueryData(QType::ANY, QClass::IN, false, common2->requestNameStart, common2->requestBytesRange);
308308

309309
// Should get back answers from second instance only.
310-
common1.server.AddExpectedRecord(&common2.srvRecord);
311-
common1.server.AddExpectedRecord(&common2.txtRecord);
310+
common1->server.AddExpectedRecord(&common2->srvRecord);
311+
common1->server.AddExpectedRecord(&common2->txtRecord);
312312

313-
responseSender.Respond(1, queryData, &common1.packetInfo, ResponseConfiguration());
313+
responseSender.Respond(1, queryData, &common1->packetInfo, ResponseConfiguration());
314314

315-
EXPECT_TRUE(common1.server.GetSendCalled());
316-
EXPECT_TRUE(common1.server.GetHeaderFound());
315+
EXPECT_TRUE(common1->server.GetSendCalled());
316+
EXPECT_TRUE(common1->server.GetHeaderFound());
317317
}
318318

319319
TEST_F(TestResponseSender, PtrSrvTxtMultipleRespondersToServiceListing)

src/transport/raw/TCP.h

+7-2
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,10 @@
4141
namespace chip {
4242
namespace Transport {
4343

44+
// Forward declaration of friend class for test access.
45+
template <size_t kActiveConnectionsSize, size_t kPendingPacketSize>
46+
class TCPBaseTestAccess;
47+
4448
/** Defines listening parameters for setting up a TCP transport */
4549
class TcpListenParameters
4650
{
@@ -200,7 +204,9 @@ class DLL_EXPORT TCPBase : public Base
200204
void CloseActiveConnections();
201205

202206
private:
203-
friend class TCPTest;
207+
// Allow tests to access private members.
208+
template <size_t kActiveConnectionsSize, size_t kPendingPacketSize>
209+
friend class TCPBaseTestAccess;
204210

205211
/**
206212
* Allocate an unused connection from the pool
@@ -330,7 +336,6 @@ class TCP : public TCPBase
330336
~TCP() override { mPendingPackets.ReleaseAll(); }
331337

332338
private:
333-
friend class TCPTest;
334339
ActiveTCPConnectionState mConnectionsBuffer[kActiveConnectionsSize];
335340
PoolImpl<PendingPacket, kPendingPacketSize, ObjectPoolMem::kInline, PendingPacketPoolType::Interface> mPendingPackets;
336341
};

src/transport/raw/tests/BUILD.gn

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ chip_test_suite("tests") {
4949
test_sources += [ "TestTCP.cpp" ]
5050
}
5151

52+
sources = [ "TCPBaseTestAccess.h" ]
53+
5254
public_deps = [
5355
":helpers",
5456
"${chip_root}/src/inet/tests:helpers",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
/*
2+
*
3+
* Copyright (c) 2024 Project CHIP Authors
4+
*
5+
* Licensed under the Apache License, Version 2.0 (the "License");
6+
* you may not use this file except in compliance with the License.
7+
* You may obtain a copy of the License at
8+
*
9+
* http://www.apache.org/licenses/LICENSE-2.0
10+
*
11+
* Unless required by applicable law or agreed to in writing, software
12+
* distributed under the License is distributed on an "AS IS" BASIS,
13+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
* See the License for the specific language governing permissions and
15+
* limitations under the License.
16+
*/
17+
18+
#pragma once
19+
20+
#if INET_CONFIG_ENABLE_TCP_ENDPOINT
21+
#include <transport/raw/TCP.h>
22+
#endif // INET_CONFIG_ENABLE_TCP_ENDPOINT
23+
24+
namespace chip {
25+
namespace Transport {
26+
/**
27+
* @brief Class acts as an accessor to private members of the TCPBase class without needing to give
28+
* friend access to each individual test.
29+
*/
30+
template <size_t kActiveConnectionsSize, size_t kPendingPacketSize>
31+
class TCPBaseTestAccess
32+
{
33+
public:
34+
using TCPImpl = Transport::TCP<kActiveConnectionsSize, kPendingPacketSize>;
35+
36+
static void * FindActiveConnection(TCPImpl & tcp, Transport::PeerAddress & peerAddress)
37+
{
38+
return tcp.FindActiveConnection(peerAddress);
39+
}
40+
static Inet::TCPEndPoint * GetEndpoint(void * state) { return static_cast<ActiveTCPConnectionState *>(state)->mEndPoint; }
41+
42+
static CHIP_ERROR ProcessReceivedBuffer(TCPImpl & tcp, Inet::TCPEndPoint * endPoint, const PeerAddress & peerAddress,
43+
System::PacketBufferHandle && buffer)
44+
{
45+
return tcp.ProcessReceivedBuffer(endPoint, peerAddress, std::move(buffer));
46+
}
47+
};
48+
} // namespace Transport
49+
} // namespace chip

src/transport/raw/tests/TestMessageHeader.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -23,14 +23,14 @@
2323
*
2424
*/
2525

26+
#include <gtest/gtest.h>
27+
2628
#include <lib/core/ErrorStr.h>
2729
#include <lib/support/CHIPMem.h>
2830
#include <lib/support/CodeUtils.h>
2931
#include <protocols/Protocols.h>
3032
#include <transport/raw/MessageHeader.h>
3133

32-
#include <gtest/gtest.h>
33-
3434
namespace {
3535

3636
using namespace chip;

src/transport/raw/tests/TestPeerAddress.cpp

+2-2
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,13 @@
2121
#include <stdint.h>
2222
#include <string.h>
2323

24+
#include <gtest/gtest.h>
25+
2426
#include <inet/IPAddress.h>
2527
#include <lib/core/DataModelTypes.h>
2628
#include <lib/core/PeerId.h>
2729
#include <transport/raw/PeerAddress.h>
2830

29-
#include <gtest/gtest.h>
30-
3131
namespace {
3232

3333
using namespace chip;

0 commit comments

Comments
 (0)