blob: 2536627ea6289784c3c5c75b7c62c0e7b2a4c06b [file] [log] [blame]
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#include <armnn/test/RuntimeTests.hpp>
7
8#include <armnnUtils/LeakChecking.hpp>
9
10#include <backends/test/RuntimeTestImpl.hpp>
11
12#include <boost/test/unit_test.hpp>
13
14BOOST_AUTO_TEST_SUITE(RefRuntime)
15
16#ifdef ARMNN_LEAK_CHECKING_ENABLED
17BOOST_AUTO_TEST_CASE(RuntimeMemoryLeaksCpuRef)
18{
19 BOOST_TEST(ARMNN_LEAK_CHECKER_IS_ACTIVE());
20
21 armnn::IRuntime::CreationOptions options;
22 armnn::Runtime runtime(options);
23 armnn::RuntimeLoadedNetworksReserve(&runtime);
24
25 std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
26 {
27 // Do a warmup of this so we make sure that all one-time
28 // initialization happens before we do the leak checking.
29 CreateAndDropDummyNetwork(backends, runtime);
30 }
31
32 {
33 ARMNN_SCOPED_LEAK_CHECKER("LoadAndUnloadNetworkCpuRef");
34 BOOST_TEST(ARMNN_NO_LEAKS_IN_SCOPE());
35 // In the second run we check for all remaining memory
36 // in use after the network was unloaded. If there is any
37 // then it will be treated as a memory leak.
38 CreateAndDropDummyNetwork(backends, runtime);
39 BOOST_TEST(ARMNN_NO_LEAKS_IN_SCOPE());
40 BOOST_TEST(ARMNN_BYTES_LEAKED_IN_SCOPE() == 0);
41 BOOST_TEST(ARMNN_OBJECTS_LEAKED_IN_SCOPE() == 0);
42 }
43}
44#endif
45
46BOOST_AUTO_TEST_SUITE_END()