Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit ded3d038 authored by William Escande's avatar William Escande
Browse files

Mock static initialization order 01

cpp static order initialization is not guarantee.
In order to avoid the mess, we need to have a lazy init schema.

Bug: 265217208
Test: atest --host
Change-Id: Ia650949b54359b4e610d8dee760a3decf16ded75
parent aea515f1
Loading
Loading
Loading
Loading
+15 −3
Original line number Diff line number Diff line
@@ -21,12 +21,24 @@

std::map<std::string, int> mock_function_count_map;

void reset_mock_function_count_map() { mock_function_count_map.clear(); }
static std::map<std::string, int>& _get_func_call_count_map() {
  // TODO(265217208) return singleton map instead
  // static std::map<std::string, int> mock_function_count_map;
  return mock_function_count_map;
}

int get_func_call_count(const char* fn) {
  return _get_func_call_count_map()[fn];
}
void inc_func_call_count(const char* fn) { _get_func_call_count_map()[fn]++; }

void reset_mock_function_count_map() { _get_func_call_count_map().clear(); }

void dump_mock_function_count_map() {
  LOG_INFO("Mock function count map size:%zu", mock_function_count_map.size());
  LOG_INFO("Mock function count map size:%zu",
           _get_func_call_count_map().size());

  for (auto it : mock_function_count_map) {
  for (const auto& it : _get_func_call_count_map()) {
    LOG_INFO("function:%s: call_count:%d", it.first.c_str(), it.second);
  }
}
+7 −0
Original line number Diff line number Diff line
@@ -17,7 +17,14 @@
#pragma once

#include <map>
#include <string>

// TODO(265217208) Remove
// Usage is deprecated, use get_func_call_count / inc_func_call_count instead
extern std::map<std::string, int> mock_function_count_map;

int get_func_call_count(const char* fn);
void inc_func_call_count(const char* fn);

void dump_mock_function_count_map();
void reset_mock_function_count_map();