LCOV - code coverage report
Current view: top level - source/extensions/http/cache/file_system_http_cache - stats.h (source / functions) Hit Total Coverage
Test: coverage.dat Lines: 0 1 0.0 %
Date: 2024-01-05 06:35:25 Functions: 0 1 0.0 %

          Line data    Source code
       1             : #pragma once
       2             : 
       3             : #include "envoy/stats/stats_macros.h"
       4             : 
       5             : namespace Envoy {
       6             : namespace Extensions {
       7             : namespace HttpFilters {
       8             : namespace Cache {
       9             : namespace FileSystemHttpCache {
      10             : 
      11             : /**
      12             :  * All cache stats. @see stats_macros.h
      13             :  *
      14             :  * Note that size_bytes and size_count may drift away from true values, due to:
      15             :  * - Changes to the filesystem may be made outside of the process, which will not be
      16             :  *   accounted for. (Including, during hot restart, overlapping envoy processes.)
      17             :  * - Files completed while pre-cache-purge measurement is in progress may not be counted.
      18             :  * - Changes in file size due to header updates are assumed to be negligible, and are ignored.
      19             :  *
      20             :  * Drift will eventually be reconciled at the next pre-cache-purge measurement.
      21             :  *
      22             :  * There are also cache_hit_ and cache_miss_, defined separately to accommodate extra tags;
      23             :  * these two both go into the stat with key `event`, and with tag `event_type=(hit|miss)`
      24             :  **/
      25             : 
      26             : #define ALL_CACHE_STATS(COUNTER, GAUGE, HISTOGRAM, TEXT_READOUT, STATNAME)                         \
      27             :   COUNTER(eviction_runs)                                                                           \
      28             :   GAUGE(size_bytes, NeverImport)                                                                   \
      29             :   GAUGE(size_count, NeverImport)                                                                   \
      30             :   GAUGE(size_limit_bytes, NeverImport)                                                             \
      31             :   GAUGE(size_limit_count, NeverImport)                                                             \
      32             :   STATNAME(cache)                                                                                  \
      33             :   STATNAME(cache_path)                                                                             \
      34             :   STATNAME(event)                                                                                  \
      35             :   STATNAME(event_type)                                                                             \
      36             :   STATNAME(hit)                                                                                    \
      37             :   STATNAME(miss)
      38             : // TODO(ravenblack): Add other stats from DESIGN.md
      39             : 
      40             : #define COUNTER_HELPER_(NAME)                                                                      \
      41             :   , NAME##_(                                                                                       \
      42             :         Envoy::Stats::Utility::counterFromStatNames(scope, {prefix_, stat_names.NAME##_}, tags_))
      43             : #define GAUGE_HELPER_(NAME, MODE)                                                                  \
      44             :   , NAME##_(Envoy::Stats::Utility::gaugeFromStatNames(                                             \
      45             :         scope, {prefix_, stat_names.NAME##_}, Envoy::Stats::Gauge::ImportMode::MODE, tags_))
      46             : #define STATNAME_HELPER_(NAME)
      47             : 
      48             : MAKE_STAT_NAMES_STRUCT(CacheStatNames, ALL_CACHE_STATS);
      49             : 
      50             : struct CacheStats {
      51             :   CacheStats(const CacheStatNames& stat_names, Envoy::Stats::Scope& scope,
      52             :              Stats::StatName cache_path)
      53             :       : stat_names_(stat_names), prefix_(stat_names_.cache_), cache_path_(cache_path),
      54             :         tags_({{stat_names_.cache_path_, cache_path_}}),
      55             :         tags_hit_(
      56             :             {{stat_names_.cache_path_, cache_path_}, {stat_names_.event_type_, stat_names_.hit_}}),
      57             :         tags_miss_(
      58             :             {{stat_names_.cache_path_, cache_path_}, {stat_names_.event_type_, stat_names_.miss_}})
      59             :             ALL_CACHE_STATS(COUNTER_HELPER_, GAUGE_HELPER_, HISTOGRAM_HELPER_, TEXT_READOUT_HELPER_,
      60             :                             STATNAME_HELPER_),
      61             :         cache_hit_(Envoy::Stats::Utility::counterFromStatNames(scope, {prefix_, stat_names.event_},
      62             :                                                                tags_hit_)),
      63             :         cache_miss_(Envoy::Stats::Utility::counterFromStatNames(scope, {prefix_, stat_names.event_},
      64           0 :                                                                 tags_miss_)) {}
      65             : 
      66             : private:
      67             :   const CacheStatNames& stat_names_;
      68             :   const Stats::StatName prefix_;
      69             :   const Stats::StatName cache_path_;
      70             :   Stats::StatNameTagVector tags_;
      71             :   Stats::StatNameTagVector tags_hit_;
      72             :   Stats::StatNameTagVector tags_miss_;
      73             : 
      74             : public:
      75             :   ALL_CACHE_STATS(GENERATE_COUNTER_STRUCT, GENERATE_GAUGE_STRUCT, GENERATE_HISTOGRAM_STRUCT,
      76             :                   GENERATE_TEXT_READOUT_STRUCT, GENERATE_STATNAME_STRUCT);
      77             :   Stats::Counter& cache_hit_;
      78             :   Stats::Counter& cache_miss_;
      79             : };
      80             : 
      81             : CacheStats generateStats(CacheStatNames& stat_names, Stats::Scope& scope,
      82             :                          absl::string_view cache_path);
      83             : 
      84             : } // namespace FileSystemHttpCache
      85             : } // namespace Cache
      86             : } // namespace HttpFilters
      87             : } // namespace Extensions
      88             : } // namespace Envoy

Generated by: LCOV version 1.15