YugabyteDB (2.13.0.0-b42, bfc6a6643e7399ac8a0e81d06a3ee6d6571b33ab)

Coverage Report

Created: 2022-03-09 17:30

/Users/deen/code/yugabyte-db/src/yb/util/status_format.h
Line
Count
Source (jump to first uncovered line)
1
//
2
// Copyright (c) YugaByte, Inc.
3
//
4
// Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except
5
// in compliance with the License.  You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software distributed under the License
10
// is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express
11
// or implied.  See the License for the specific language governing permissions and limitations
12
// under the License.
13
//
14
//
15
16
#ifndef YB_UTIL_STATUS_FORMAT_H
17
#define YB_UTIL_STATUS_FORMAT_H
18
19
#include "yb/gutil/strings/substitute.h"
20
21
#include "yb/util/format.h"
22
#include "yb/util/status.h"
23
24
#define STATUS_SUBSTITUTE(status_type, ...) \
25
653k
    (Status(Status::BOOST_PP_CAT(k, status_type), \
26
653k
            __FILE__, \
27
653k
            __LINE__, \
28
0
            strings::Substitute(__VA_ARGS__)))
29
30
#define STATUS_FORMAT(status_type, ...) \
31
18.9M
    (::yb::Status(::yb::Status::BOOST_PP_CAT(k, status_type), \
32
18.9M
            __FILE__, \
33
18.9M
            __LINE__, \
34
3.04M
            ::yb::Format(__VA_ARGS__)))
35
36
#define STATUS_EC_FORMAT(status_type, error_code, ...) \
37
117k
    (::yb::Status(::yb::Status::BOOST_PP_CAT(k, status_type), \
38
117k
            __FILE__, \
39
117k
            __LINE__, \
40
14
            ::yb::Format(__VA_ARGS__), error_code))
41
42
1.72k
#define SCHECK_FORMAT(expr, status_type, msg, ...) do { \
43
1.72k
    if (PREDICT_FALSE(!(expr))) return STATUS_FORMAT(status_type, (msg), __VA_ARGS__); \
44
1.72k
  } while (0)
45
46
#define SCHECK_OP(var1, op, var2, status_type, msg) \
47
3.29G
  do { \
48
2.66M
    auto v1_tmp = (var1); \
49
15
    auto v2_tmp = (var2); \
50
2.51G
    if (PREDICT_FALSE(!((v1_tmp) op (v2_tmp)))) return STATUS(status_type, \
51
888k
      yb::Format("$0: $1 vs. $2", (msg), v1_tmp, v2_tmp)); \
52
2.51G
  } while (0)
53
54
100M
#define SCHECK_EQ(var1, var2, status_type, msg) SCHECK_OP(var1, ==, var2, status_type, msg)
55
442k
#define SCHECK_NE(var1, var2, status_type, msg) SCHECK_OP(var1, !=, var2, status_type, msg)
56
2.90M
#define SCHECK_GT(var1, var2, status_type, msg) SCHECK_OP(var1, >, var2, status_type, msg)
57
838M
#define SCHECK_GE(var1, var2, status_type, msg) SCHECK_OP(var1, >=, var2, status_type, msg)
58
783M
#define SCHECK_LT(var1, var2, status_type, msg) SCHECK_OP(var1, <, var2, status_type, msg)
59
784M
#define SCHECK_LE(var1, var2, status_type, msg) SCHECK_OP(var1, <=, var2, status_type, msg)
60
#define SCHECK_BOUNDS(var1, lbound, rbound, status_type, msg) \
61
964k
    do { \
62
964k
      SCHECK_GE(var1, lbound, status_type, msg); \
63
964k
      SCHECK_LE(var1, rbound, status_type, msg); \
64
964k
    } while(false)
65
66
#ifndef NDEBUG
67
68
// Debug mode ("not defined NDEBUG (non-debug-mode)" means "debug mode").
69
// In case the check condition is false, we will crash with a CHECK failure.
70
71
14.6M
#define RSTATUS_DCHECK(expr, type, msg) DCHECK(expr) << msg
72
9.48k
#define RSTATUS_DCHECK_EQ(var1, var2, type, msg) DCHECK_EQ(var1, var2) << msg
73
48.2k
#define RSTATUS_DCHECK_NE(var1, var2, type, msg) DCHECK_NE(var1, var2) << msg
74
#define RSTATUS_DCHECK_GT(var1, var2, type, msg) DCHECK_GT(var1, var2) << msg
75
16.9M
#define RSTATUS_DCHECK_GE(var1, var2, type, msg) DCHECK_GE(var1, var2) << msg
76
#define RSTATUS_DCHECK_LT(var1, var2, type, msg) DCHECK_LT(var1, var2) << msg
77
87
#define RSTATUS_DCHECK_LE(var1, var2, type, msg) DCHECK_LE(var1, var2) << msg
78
79
#else
80
81
// Release mode.
82
// In case the check condition is false, we will return an error status.
83
84
#define RSTATUS_DCHECK(expr, type, msg) SCHECK(expr, type, msg)
85
#define RSTATUS_DCHECK_EQ(var1, var2, type, msg) SCHECK_EQ(var1, var2, type, msg)
86
#define RSTATUS_DCHECK_NE(var1, var2, type, msg) SCHECK_NE(var1, var2, type, msg)
87
#define RSTATUS_DCHECK_GT(var1, var2, type, msg) SCHECK_GT(var1, var2, type, msg)
88
#define RSTATUS_DCHECK_GE(var1, var2, type, msg) SCHECK_GE(var1, var2, type, msg)
89
#define RSTATUS_DCHECK_LT(var1, var2, type, msg) SCHECK_LT(var1, var2, type, msg)
90
#define RSTATUS_DCHECK_LE(var1, var2, type, msg) SCHECK_LE(var1, var2, type, msg)
91
92
#endif
93
94
#endif // YB_UTIL_STATUS_FORMAT_H