Skip to content

Commit

Permalink
add unit test
Browse files Browse the repository at this point in the history
  • Loading branch information
gjc13 committed Sep 2, 2021
1 parent 04f2f46 commit 3a68687
Show file tree
Hide file tree
Showing 2 changed files with 114 additions and 1 deletion.
6 changes: 5 additions & 1 deletion src/controller/tests/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -21,12 +21,16 @@ import("${chip_root}/build/chip/chip_test_suite.gni")
chip_test_suite("tests") {
output_name = "libControllerTests"

test_sources = [ "TestCommissionableNodeController.cpp" ]
test_sources = [
"TestCommissionableNodeController.cpp",
"TestDevice.cpp",
]

cflags = [ "-Wconversion" ]

public_deps = [
"${chip_root}/src/controller",
"${chip_root}/src/controller/data_model",
"${nlunit_test_root}:nlunit-test",
]
}
109 changes: 109 additions & 0 deletions src/controller/tests/TestDevice.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
/*
*
* Copyright (c) 2021 Project CHIP Authors
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/

#include "ble/BleLayer.h"
#include "support/CHIPMem.h"
#include <controller/CHIPDevice.h>
#include <inet/IPAddress.h>
#include <inet/InetLayer.h>
#include <lib/support/UnitTestRegistration.h>
#include <nlunit-test.h>
#include <protocols/secure_channel/MessageCounterManager.h>
#include <protocols/secure_channel/SessionIDAllocator.h>
#include <transport/SecureSessionMgr.h>
#include <transport/TransportMgr.h>
#include <transport/raw/PeerAddress.h>
#include <transport/raw/UDP.h>

using namespace chip;
using namespace chip::Transport;
using namespace chip::Controller;
using namespace chip::Messaging;

namespace {

using TestTransportMgr = TransportMgr<Transport::UDP>;

void TestDevice_EstablishSessionDirectly(nlTestSuite * inSuite, void * inContext)
{
Platform::MemoryInit();
DeviceTransportMgr transportMgr;
SecureSessionMgr sessionMgr;
ExchangeManager exchangeMgr;
Inet::InetLayer inetLayer;
System::Layer systemLayer;
Ble::BleLayer blelayer;
FabricTable fabrics;
secure_channel::MessageCounterManager messageCounterManager;
SessionIDAllocator idAllocator;

systemLayer.Init();
inetLayer.Init(systemLayer, nullptr);
transportMgr.Init(
UdpListenParameters(&inetLayer).SetAddressType(Inet::IPAddressType::kIPAddressType_IPv4).SetListenPort(CHIP_PORT)
#if INET_CONFIG_ENABLE_IPV4
,
UdpListenParameters(&inetLayer).SetAddressType(Inet::kIPAddressType_IPv4).SetListenPort(CHIP_PORT)
#endif
#if CONFIG_NETWORK_LAYER_BLE
,
BleListenParameters(&blelayer)
#endif
);
sessionMgr.Init(&systemLayer, &transportMgr, &fabrics, &messageCounterManager);
exchangeMgr.Init(&sessionMgr);
messageCounterManager.Init(&exchangeMgr);

ControllerDeviceInitParams params = {
.transportMgr = &transportMgr,
.sessionMgr = &sessionMgr,
.exchangeMgr = &exchangeMgr,
.inetLayer = &inetLayer,
.storageDelegate = nullptr,
.idAllocator = &idAllocator,
.fabricsTable = &fabrics,
};
Device device;
NodeId mockNodeId = 1;
FabricIndex mockFabricIndex = 1;
Inet::IPAddress mockAddr;
Inet::IPAddress::FromString("127.0.0.1", mockAddr);
PeerAddress addr = PeerAddress::UDP(mockAddr, CHIP_PORT);
device.Init(params, CHIP_PORT, mockNodeId, addr, mockFabricIndex);

device.OperationalCertProvisioned();
NL_TEST_ASSERT(inSuite, device.EstablishConnectivity(nullptr, nullptr) == CHIP_NO_ERROR);
}

// clang-format off
const nlTest sTests[] =
{
NL_TEST_DEF("TestDevice_EstablishSessionDirectly", TestDevice_EstablishSessionDirectly),
NL_TEST_SENTINEL()
};
// clang-format on

} // namespace

int TestDevice()
{
nlTestSuite theSuite = { "Device", &sTests[0], NULL, NULL };
nlTestRunner(&theSuite, nullptr);
return nlTestRunnerStats(&theSuite);
}

CHIP_REGISTER_TEST_SUITE(TestDevice)

0 comments on commit 3a68687

Please sign in to comment.