LCOV - code coverage report
Current view: top level - root/contrail/src/contrail-common/base - task_annotations.cc (source / functions) Hit Total Coverage
Test: OpenSDN C/C++ coverage (all TARGET_SET jobs) Lines: 27 39 69.2 %
Date: 2026-08-03 02:19:58 Functions: 8 13 61.5 %
Legend: Lines: hit not hit

          Line data    Source code
       1             : /*
       2             :  * Copyright (c) 2013 Juniper Networks, Inc. All rights reserved.
       3             :  */
       4             : 
       5             : #include "base/task_annotations.h"
       6             : 
       7             : #include <strings.h>
       8             : #include "base/task.h"
       9             : 
      10             : bool ConcurrencyChecker::enable_ = getenv("CONCURRENCY_CHECK_ENABLE") != NULL &&
      11             :     !strcasecmp(getenv("CONCURRENCY_CHECK_ENABLE"), "true");
      12             : 
      13    49775183 : ConcurrencyChecker::ConcurrencyChecker(const char *task_ids[], size_t count) {
      14    49746424 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      15   119878012 :     for (size_t i = 0; i < count; i++) {
      16    70090366 :         id_set_.insert(scheduler->GetTaskId(task_ids[i]));
      17             :     }
      18    49787646 : }
      19             : 
      20           0 : ConcurrencyChecker::ConcurrencyChecker() {
      21           0 : }
      22             : 
      23    49774472 : void ConcurrencyChecker::Check() {
      24    49774472 :     Task *current = Task::Running();
      25    49646003 :     assert(current != NULL);
      26    49646003 :     assert(id_set_.count(current->task_code_id()) > 0);
      27    49618937 : }
      28             : 
      29           0 : void ConcurrencyChecker::CheckIfMainThr() {
      30           0 :     Task *current = Task::Running();
      31           0 :     assert(current == NULL);
      32           0 : }
      33             : 
      34             : class ConcurrencyScope::ScopeTask : public Task {
      35             : public:
      36       57157 :     ScopeTask(int task_id) : Task(task_id) {
      37       57157 :     };
      38           0 :     bool Run() {
      39           0 :         return false;
      40             :     }
      41           0 :     std::string Description() const { return "ConcurrencyScope::ScopeTask"; }
      42      114314 :     ~ScopeTask() {
      43      114314 :     }
      44             : };
      45             : 
      46           0 : ConcurrencyScope::ConcurrencyScope(int task_id) {
      47           0 :     SetRunningTask(task_id);
      48           0 : }
      49             : 
      50       57157 : ConcurrencyScope::ConcurrencyScope(const std::string &name) {
      51       57157 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      52       57157 :     SetRunningTask(scheduler->GetTaskId(name));
      53       57157 : }
      54             : 
      55       57157 : void ConcurrencyScope::SetRunningTask(int task_id) {
      56       57157 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      57       57157 :     unit_test_task_.reset(new ScopeTask(task_id));
      58       57157 :     scheduler->SetRunningTask(unit_test_task_.get());
      59       57157 : }
      60             : 
      61       57157 : ConcurrencyScope::~ConcurrencyScope() {
      62       57157 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      63       57157 :     scheduler->ClearRunningTask();
      64       57157 : }

Generated by: LCOV version 1.14