Files
compute-runtime/unit_tests/fixtures/memory_management_fixture.h
Filip Hazubski 8b57d28116 clang-format: enable sorting includes
Include files are now grouped and sorted in following order:
1. Header file of the class the current file implements
2. Project files
3. Third party files
4. Standard library

Change-Id: If31af05652184169f7fee1d7ad08f1b2ed602cf0
Signed-off-by: Filip Hazubski <filip.hazubski@intel.com>
2019-02-27 11:50:07 +01:00

50 lines
1.5 KiB
C++

/*
* Copyright (C) 2017-2019 Intel Corporation
*
* SPDX-License-Identifier: MIT
*
*/
#pragma once
#include "unit_tests/helpers/memory_management.h"
#include "gtest/gtest.h"
#include <functional>
struct MemoryManagementFixture {
MemoryManagementFixture() {
MemoryManagement::detailedAllocationLoggingActive = true;
};
static const auto nonfailingAllocation = static_cast<size_t>(-1);
static const auto invalidLeakIndex = static_cast<size_t>(-1);
virtual ~MemoryManagementFixture() { MemoryManagement::detailedAllocationLoggingActive = false; };
// Typical Fixture methods
virtual void SetUp(void);
virtual void TearDown(void);
// Helper methods
void setFailingAllocation(size_t allocation);
void clearFailingAllocation(void);
static size_t enumerateLeak(size_t indexAllocationTop, size_t indexDeallocationTop, bool lookFromEnd = false, bool requireCallStack = false, bool fastLookup = false);
::testing::AssertionResult assertLeak(
const char *leak_expr,
size_t leakIndex);
void checkForLeaks(void);
typedef std::function<void(size_t)> InjectedFunction;
void injectFailures(InjectedFunction &method, uint32_t maxIndex = 0);
void injectFailureOnIndex(InjectedFunction &method, uint32_t Index);
// Used to keep track of # of allocations prior at SetUp time
// Gets compared to # at TearDown time
size_t previousAllocations;
};
std::string printCallStack(const MemoryManagement::AllocationEvent &event);