Go to the documentation of this file.
14#ifndef OPENMP_TOOLS_OMPTEST_INCLUDE_ASSERTMACROS_H
15#define OPENMP_TOOLS_OMPTEST_INCLUDE_ASSERTMACROS_H
17#define OMPTEST_EXCLUDED_EVENT omptest::ObserveState::Never
18#define OMPTEST_REQUIRED_EVENT omptest::ObserveState::Always
22#define OMPT_GENERATE_EVENTS(NumberOfCopies, EventMacro) \
23 for (size_t i = 0; i < NumberOfCopies; ++i) { \
29#define OMPT_ASSERT_SET_EVENT(Name, Group, EventTy, ...) \
30 SetAsserter->insert(OmptAssertEvent::EventTy( \
31 Name, Group, OMPTEST_REQUIRED_EVENT, __VA_ARGS__));
32#define OMPT_ASSERT_SET(EventTy, ...) \
33 OMPT_ASSERT_SET_EVENT("", "", EventTy, __VA_ARGS__)
34#define OMPT_ASSERT_SET_GROUPED(Group, EventTy, ...) \
35 OMPT_ASSERT_SET_EVENT("", Group, EventTy, __VA_ARGS__)
36#define OMPT_ASSERT_SET_NAMED(Name, EventTy, ...) \
37 OMPT_ASSERT_SET_EVENT(Name, "", EventTy, __VA_ARGS__)
39#define OMPT_ASSERT_SET_EVENT_NOT(Name, Group, EventTy, ...) \
40 SetAsserter->insert(OmptAssertEvent::EventTy( \
41 Name, Group, OMPTEST_EXCLUDED_EVENT, __VA_ARGS__));
42#define OMPT_ASSERT_SET_NOT(EventTy, ...) \
43 OMPT_ASSERT_SET_EVENT_NOT("", "", EventTy, __VA_ARGS__)
44#define OMPT_ASSERT_SET_GROUPED_NOT(Group, EventTy, ...) \
45 OMPT_ASSERT_SET_EVENT_NOT("", Group, EventTy, __VA_ARGS__)
46#define OMPT_ASSERT_SET_NAMED_NOT(Name, EventTy, ...) \
47 OMPT_ASSERT_SET_EVENT_NOT(Name, "", EventTy, __VA_ARGS__)
51#define OMPT_ASSERT_SEQUENCE_EVENT(Name, Group, EventTy, ...) \
52 SequenceAsserter->insert(OmptAssertEvent::EventTy( \
53 Name, Group, OMPTEST_REQUIRED_EVENT, __VA_ARGS__));
54#define OMPT_ASSERT_SEQUENCE(EventTy, ...) \
55 OMPT_ASSERT_SEQUENCE_EVENT("", "", EventTy, __VA_ARGS__)
56#define OMPT_ASSERT_SEQUENCE_GROUPED(Group, EventTy, ...) \
57 OMPT_ASSERT_SEQUENCE_EVENT("", Group, EventTy, __VA_ARGS__)
58#define OMPT_ASSERT_SEQUENCE_NAMED(Name, EventTy, ...) \
59 OMPT_ASSERT_SEQUENCE_EVENT(Name, "", EventTy, __VA_ARGS__)
61#define OMPT_ASSERT_SEQUENCE_EVENT_NOT(Name, Group, EventTy, ...) \
62 SequenceAsserter->insert(OmptAssertEvent::EventTy( \
63 Name, Group, OMPTEST_EXCLUDED_EVENT, __VA_ARGS__));
64#define OMPT_ASSERT_SEQUENCE_NOT(EventTy, ...) \
65 OMPT_ASSERT_SEQUENCE_EVENT_NOT("", "", EventTy, __VA_ARGS__)
66#define OMPT_ASSERT_SEQUENCE_GROUPED_NOT(Group, EventTy, ...) \
67 OMPT_ASSERT_SEQUENCE_EVENT_NOT("", Group, EventTy, __VA_ARGS__)
68#define OMPT_ASSERT_SEQUENCE_NAMED_NOT(Name, EventTy, ...) \
69 OMPT_ASSERT_SEQUENCE_EVENT_NOT(Name, "", EventTy, __VA_ARGS__)
72#define OMPT_ASSERT_SEQUENCE_SUSPEND() \
73 SequenceAsserter->insert( \
74 OmptAssertEvent::AssertionSuspend("", "", OMPTEST_EXCLUDED_EVENT));
75#define OMPT_ASSERT_SEQUENCE_ONLY(EventTy, ...) \
76 OMPT_ASSERT_SEQUENCE_SUSPEND() \
77 OMPT_ASSERT_SEQUENCE_EVENT("", "", EventTy, __VA_ARGS__) \
78 OMPT_ASSERT_SEQUENCE_SUSPEND()
79#define OMPT_ASSERT_SEQUENCE_GROUPED_ONLY(Group, EventTy, ...) \
80 OMPT_ASSERT_SEQUENCE_SUSPEND() \
81 OMPT_ASSERT_SEQUENCE_EVENT("", Group, EventTy, __VA_ARGS__) \
82 OMPT_ASSERT_SEQUENCE_SUSPEND()
83#define OMPT_ASSERT_SEQUENCE_NAMED_ONLY(Name, EventTy, ...) \
84 OMPT_ASSERT_SEQUENCE_SUSPEND() \
85 OMPT_ASSERT_SEQUENCE_EVENT(Name, "", EventTy, __VA_ARGS__) \
86 OMPT_ASSERT_SEQUENCE_SUSPEND()
88#define OMPT_ASSERTER_MODE_STRICT(Asserter) \
89 Asserter->setOperationMode(AssertMode::Strict);
90#define OMPT_ASSERTER_MODE_RELAXED(Asserter) \
91 Asserter->setOperationMode(AssertMode::Relaxed);
92#define OMPT_ASSERT_SEQUENCE_MODE_STRICT() \
93 OMPT_ASSERTER_MODE_STRICT(SequenceAsserter)
94#define OMPT_ASSERT_SEQUENCE_MODE_RELAXED() \
95 OMPT_ASSERTER_MODE_RELAXED(SequenceAsserter)
96#define OMPT_ASSERT_SET_MODE_STRICT() OMPT_ASSERTER_MODE_STRICT(SetAsserter)
97#define OMPT_ASSERT_SET_MODE_RELAXED() OMPT_ASSERTER_MODE_RELAXED(SetAsserter)
100#define OMPT_ASSERTER_DISABLE(Asserter) Asserter->setActive(false);
101#define OMPT_ASSERTER_ENABLE(Asserter) Asserter->setActive(true);
102#define OMPT_ASSERT_SET_DISABLE() OMPT_ASSERTER_DISABLE(SetAsserter)
103#define OMPT_ASSERT_SET_ENABLE() OMPT_ASSERTER_ENABLE(SetAsserter)
104#define OMPT_ASSERT_SEQUENCE_DISABLE() OMPT_ASSERTER_DISABLE(SequenceAsserter)
105#define OMPT_ASSERT_SEQUENCE_ENABLE() OMPT_ASSERTER_ENABLE(SequenceAsserter)
106#define OMPT_REPORT_EVENT_DISABLE() OMPT_ASSERTER_DISABLE(EventReporter)
107#define OMPT_REPORT_EVENT_ENABLE() OMPT_ASSERTER_ENABLE(EventReporter)
110#define OMPT_ASSERTER_PERMIT_EVENT(Asserter, EventTy) \
111 Asserter->permitEvent(EventTy);
112#define OMPT_ASSERTER_SUPPRESS_EVENT(Asserter, EventTy) \
113 Asserter->suppressEvent(EventTy);
114#define OMPT_PERMIT_EVENT(EventTy) \
115 OMPT_ASSERTER_PERMIT_EVENT(SetAsserter, EventTy); \
116 OMPT_ASSERTER_PERMIT_EVENT(EventReporter, EventTy); \
117 OMPT_ASSERTER_PERMIT_EVENT(SequenceAsserter, EventTy);
118#define OMPT_SUPPRESS_EVENT(EventTy) \
119 OMPT_ASSERTER_SUPPRESS_EVENT(SetAsserter, EventTy); \
120 OMPT_ASSERTER_SUPPRESS_EVENT(EventReporter, EventTy); \
121 OMPT_ASSERTER_SUPPRESS_EVENT(SequenceAsserter, EventTy);
125#define OMPT_ASSERTER_LOG_LEVEL(Asserter, LogLevel) \
126 Asserter->getLog()->setLoggingLevel(LogLevel);
130#define OMPT_ASSERTER_LOG_FORMATTED(Asserter, FormatLog) \
131 Asserter->getLog()->setFormatOutput(FormatLog);
134#define OMPT_ASSERT_SYNC_POINT(SyncPointName) \
135 flush_traced_devices(); \
136 OmptCallbackHandler::get().handleAssertionSyncPoint(SyncPointName);