blob: 6fd4910d24d5f726006c68f121cd3ef8e2e89667 [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
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00006#include <test/RuntimeTests.hpp>
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +01007
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +00008#include <LeakChecking.hpp>
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +01009
Aron Virginas-Tarc9cc8042018-11-01 16:15:57 +000010#include <backendsCommon/test/RuntimeTestImpl.hpp>
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010011
Sadik Armagan1625efc2021-06-10 18:24:34 +010012#include <doctest/doctest.h>
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010013
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010014
15#ifdef ARMNN_LEAK_CHECKING_ENABLED
Sadik Armagan1625efc2021-06-10 18:24:34 +010016TEST_SUITE("RefRuntime")
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010017{
Sadik Armagan1625efc2021-06-10 18:24:34 +010018TEST_CASE("RuntimeMemoryLeaksCpuRef")
19{
20 CHECK(ARMNN_LEAK_CHECKER_IS_ACTIVE());
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010021
22 armnn::IRuntime::CreationOptions options;
Kevin Mayd92a6e42021-02-04 10:27:41 +000023 armnn::RuntimeImpl runtime(options);
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010024 armnn::RuntimeLoadedNetworksReserve(&runtime);
25
26 std::vector<armnn::BackendId> backends = {armnn::Compute::CpuRef};
27 {
28 // Do a warmup of this so we make sure that all one-time
29 // initialization happens before we do the leak checking.
30 CreateAndDropDummyNetwork(backends, runtime);
31 }
32
33 {
34 ARMNN_SCOPED_LEAK_CHECKER("LoadAndUnloadNetworkCpuRef");
Sadik Armagan1625efc2021-06-10 18:24:34 +010035 CHECK(ARMNN_NO_LEAKS_IN_SCOPE());
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010036 // In the second run we check for all remaining memory
37 // in use after the network was unloaded. If there is any
38 // then it will be treated as a memory leak.
39 CreateAndDropDummyNetwork(backends, runtime);
Sadik Armagan1625efc2021-06-10 18:24:34 +010040 CHECK(ARMNN_NO_LEAKS_IN_SCOPE());
41 CHECK(ARMNN_BYTES_LEAKED_IN_SCOPE() == 0);
42 CHECK(ARMNN_OBJECTS_LEAKED_IN_SCOPE() == 0);
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010043 }
44}
Sadik Armagan1625efc2021-06-10 18:24:34 +010045}
Aron Virginas-Tarc26ba752018-10-22 13:32:01 +010046#endif
47