66//
77// ===----------------------------------------------------------------------===//
88
9+ #include < helpers/CommandSubmitWrappers.hpp>
910#include < helpers/TestKernel.hpp>
1011#include < helpers/UrMock.hpp>
1112#include < sycl/sycl.hpp>
1516static unsigned NumOfEventsWaitWithBarrierCalls = 0 ;
1617static unsigned NumEventsInWaitList = 0 ;
1718
19+ class Queue : public testing ::TestWithParam<bool > {};
20+
1821static ur_result_t redefined_urEnqueueEventsWaitWithBarrierExt (void *pParams) {
1922 NumOfEventsWaitWithBarrierCalls++;
2023 // Get the number of events in the wait list
@@ -25,92 +28,111 @@ static ur_result_t redefined_urEnqueueEventsWaitWithBarrierExt(void *pParams) {
2528 return UR_RESULT_SUCCESS;
2629}
2730
28- TEST (Queue, HandlerBarrier) {
31+ TEST_P (Queue, HandlerBarrier) {
2932 sycl::unittest::UrMock<> Mock;
3033 mock::getCallbacks ().set_before_callback (
3134 " urEnqueueEventsWaitWithBarrierExt" ,
3235 &redefined_urEnqueueEventsWaitWithBarrierExt);
3336 NumOfEventsWaitWithBarrierCalls = 0 ;
37+ bool UseShortcutFunction = GetParam ();
3438
3539 sycl::queue Q;
3640
37- Q.submit ([&](sycl::handler &cgh) { cgh.single_task <TestKernel>([=]() {}); });
38- Q.submit ([&](sycl::handler &cgh) { cgh.single_task <TestKernel>([=]() {}); });
41+ sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
42+ [=]() {});
43+ sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
44+ [=]() {});
3945
4046 Q.submit ([&](sycl::handler &cgh) { cgh.ext_oneapi_barrier (); });
4147
4248 ASSERT_EQ (NumOfEventsWaitWithBarrierCalls, 1u );
4349}
4450
45- TEST (Queue, ExtOneAPISubmitBarrier) {
51+ TEST_P (Queue, ExtOneAPISubmitBarrier) {
4652 sycl::unittest::UrMock<> Mock;
4753 mock::getCallbacks ().set_before_callback (
4854 " urEnqueueEventsWaitWithBarrierExt" ,
4955 &redefined_urEnqueueEventsWaitWithBarrierExt);
5056 NumOfEventsWaitWithBarrierCalls = 0 ;
57+ bool UseShortcutFunction = GetParam ();
5158
5259 sycl::queue Q;
5360
54- Q.submit ([&](sycl::handler &cgh) { cgh.single_task <TestKernel>([=]() {}); });
55- Q.submit ([&](sycl::handler &cgh) { cgh.single_task <TestKernel>([=]() {}); });
61+ sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
62+ [=]() {});
63+ sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q,
64+ [=]() {});
5665
5766 Q.ext_oneapi_submit_barrier ();
5867
5968 ASSERT_EQ (NumOfEventsWaitWithBarrierCalls, 1u );
6069}
6170
62- TEST (Queue, HandlerBarrierWithWaitList) {
71+ TEST_P (Queue, HandlerBarrierWithWaitList) {
6372 sycl::unittest::UrMock<> Mock;
6473 mock::getCallbacks ().set_before_callback (
6574 " urEnqueueEventsWaitWithBarrierExt" ,
6675 &redefined_urEnqueueEventsWaitWithBarrierExt);
6776 NumOfEventsWaitWithBarrierCalls = 0 ;
77+ bool UseShortcutFunction = GetParam ();
6878
6979 sycl::queue Q1;
7080 sycl::queue Q2;
7181 sycl::queue Q3;
7282
73- auto E1 = Q1. submit (
74- [&](sycl::handler &cgh) { cgh. single_task <TestKernel>( [=]() {}); });
75- auto E2 = Q2. submit (
76- [&](sycl::handler &cgh) { cgh. single_task <TestKernel>( [=]() {}); });
83+ auto E1 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
84+ Q1, [=]() {});
85+ auto E2 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
86+ Q2, [=]() {});
7787
7888 Q3.submit ([&](sycl::handler &cgh) { cgh.ext_oneapi_barrier ({E1 , E2 }); });
7989
8090 ASSERT_EQ (NumOfEventsWaitWithBarrierCalls, 1u );
8191}
8292
83- TEST (Queue, ExtOneAPISubmitBarrierWithWaitList) {
93+ TEST_P (Queue, ExtOneAPISubmitBarrierWithWaitList) {
8494 sycl::unittest::UrMock<> Mock;
8595 mock::getCallbacks ().set_before_callback (
8696 " urEnqueueEventsWaitWithBarrierExt" ,
8797 &redefined_urEnqueueEventsWaitWithBarrierExt);
8898 NumOfEventsWaitWithBarrierCalls = 0 ;
99+ bool UseShortcutFunction = GetParam ();
89100
90101 sycl::queue Q1;
91102 sycl::queue Q2;
92103 sycl::queue Q3;
93104
94- auto E1 = Q1. submit (
95- [&](sycl::handler &cgh) { cgh. single_task <TestKernel>( [=]() {}); });
96- auto E2 = Q2. submit (
97- [&](sycl::handler &cgh) { cgh. single_task <TestKernel>( [=]() {}); });
105+ auto E1 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
106+ Q1, [=]() {});
107+ auto E2 = sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction,
108+ Q2, [=]() {});
98109
99110 Q3.ext_oneapi_submit_barrier ({E1 , E2 });
100111
101112 ASSERT_EQ (NumOfEventsWaitWithBarrierCalls, 1u );
102113}
103114
104- TEST (Queue, BarrierWithBarrierDep) {
115+ TEST_P (Queue, BarrierWithBarrierDep) {
105116 sycl::unittest::UrMock<> Mock;
106117 mock::getCallbacks ().set_before_callback (
107118 " urEnqueueEventsWaitWithBarrierExt" ,
108119 &redefined_urEnqueueEventsWaitWithBarrierExt);
120+ bool UseShortcutFunction = GetParam ();
121+
109122 sycl::queue Q1 (sycl::property::queue::in_order{});
110123 sycl::queue Q2 (sycl::property::queue::in_order{});
111- Q1.submit ([&](sycl::handler &cgh) { cgh.single_task <TestKernel>([=]() {}); });
124+
125+ sycl::unittest::single_task_wrapper<TestKernel>(UseShortcutFunction, Q1,
126+ [=]() {});
127+
112128 sycl::event Barrier1 = Q1.ext_oneapi_submit_barrier ();
113129 NumEventsInWaitList = 0 ;
114130 Q2.ext_oneapi_submit_barrier ({Barrier1});
115131 ASSERT_EQ (NumEventsInWaitList, 1u );
116132}
133+
134+ INSTANTIATE_TEST_SUITE_P (
135+ QueueTestInstance, Queue,
136+ testing::Values (
137+ true ,
138+ false )); /* Whether to use the shortcut command submission function */
0 commit comments