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-11-09 02:10:49 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             :  * Copyright Contributors to the OpenSDN project
       4             :  */
       5             : 
       6             : #include "base/task_annotations.h"
       7             : 
       8             : #include <strings.h>
       9             : #include "base/task.h"
      10             : 
      11             : bool ConcurrencyChecker::enable_ = getenv("CONCURRENCY_CHECK_ENABLE") != NULL &&
      12             :     !strcasecmp(getenv("CONCURRENCY_CHECK_ENABLE"), "true");
      13             : 
      14    49809199 : ConcurrencyChecker::ConcurrencyChecker(const char *task_ids[], size_t count) {
      15    49794530 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      16   120679718 :     for (size_t i = 0; i < count; i++) {
      17    70836038 :         id_set_.insert(scheduler->GetTaskId(task_ids[i]));
      18             :     }
      19    49843680 : }
      20             : 
      21           0 : ConcurrencyChecker::ConcurrencyChecker() {
      22           0 : }
      23             : 
      24    49833234 : void ConcurrencyChecker::Check() {
      25    49833234 :     Task *current = Task::Running();
      26    49704400 :     assert(current != NULL);
      27    49704400 :     assert(id_set_.count(current->task_code_id()) > 0);
      28    49664685 : }
      29             : 
      30           0 : void ConcurrencyChecker::CheckIfMainThr() {
      31           0 :     Task *current = Task::Running();
      32           0 :     assert(current == NULL);
      33           0 : }
      34             : 
      35             : class ConcurrencyScope::ScopeTask : public Task {
      36             : public:
      37       57159 :     ScopeTask(int task_id) : Task(task_id) {
      38       57159 :     };
      39           0 :     bool Run() {
      40           0 :         return false;
      41             :     }
      42           0 :     std::string Description() const { return "ConcurrencyScope::ScopeTask"; }
      43      114318 :     ~ScopeTask() {
      44      114318 :     }
      45             : };
      46             : 
      47           0 : ConcurrencyScope::ConcurrencyScope(int task_id) {
      48           0 :     SetRunningTask(task_id);
      49           0 : }
      50             : 
      51       57159 : ConcurrencyScope::ConcurrencyScope(const std::string &name) {
      52       57159 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      53       57159 :     SetRunningTask(scheduler->GetTaskId(name));
      54       57159 : }
      55             : 
      56       57159 : void ConcurrencyScope::SetRunningTask(int task_id) {
      57       57159 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      58       57159 :     unit_test_task_.reset(new ScopeTask(task_id));
      59       57159 :     scheduler->SetRunningTask(unit_test_task_.get());
      60       57159 : }
      61             : 
      62       57159 : ConcurrencyScope::~ConcurrencyScope() {
      63       57159 :     TaskScheduler *scheduler = TaskScheduler::GetInstance();
      64       57159 :     scheduler->ClearRunningTask();
      65       57159 : }

Generated by: LCOV version 1.14