@@ -109,27 +109,34 @@ void setupNopLAC()
109
109
{
110
110
LocalAdmissionController::global_instance.reset ();
111
111
LocalAdmissionController::global_instance = std::make_unique<MockLocalAdmissionController>();
112
- LocalAdmissionController::global_instance->consume_resource_func = nopConsumeResource;
113
- LocalAdmissionController::global_instance->get_priority_func = nopGetPriority;
112
+ {
113
+ std::lock_guard lock (LocalAdmissionController::global_instance->mu );
114
+ LocalAdmissionController::global_instance->consume_resource_func = nopConsumeResource;
115
+ LocalAdmissionController::global_instance->get_priority_func = nopGetPriority;
116
+ }
114
117
}
115
118
116
119
void setupMockLAC (const std::vector<ResourceGroupPtr> & resource_groups)
117
120
{
118
121
LocalAdmissionController::global_instance.reset ();
119
122
LocalAdmissionController::global_instance = std::make_unique<MockLocalAdmissionController>();
120
- LocalAdmissionController::global_instance->consume_resource_func = dynamicConsumeResource;
121
- LocalAdmissionController::global_instance->get_priority_func = dynamicGetPriority;
122
123
123
124
uint64_t max_ru_per_sec = 0 ;
124
- for (const auto & resource_group : resource_groups)
125
125
{
126
- auto cur_ru_per_sec = resource_group-> user_ru_per_sec ;
127
- if (max_ru_per_sec < cur_ru_per_sec)
128
- max_ru_per_sec = cur_ru_per_sec ;
126
+ std::lock_guard lock (LocalAdmissionController::global_instance-> mu ) ;
127
+ LocalAdmissionController::global_instance-> consume_resource_func = dynamicConsumeResource;
128
+ LocalAdmissionController::global_instance-> get_priority_func = dynamicGetPriority ;
129
129
130
- LocalAdmissionController::global_instance->resource_groups .insert ({resource_group->name , resource_group});
130
+ for (const auto & resource_group : resource_groups)
131
+ {
132
+ auto cur_ru_per_sec = resource_group->user_ru_per_sec ;
133
+ if (max_ru_per_sec < cur_ru_per_sec)
134
+ max_ru_per_sec = cur_ru_per_sec;
135
+
136
+ LocalAdmissionController::global_instance->resource_groups .insert ({resource_group->name , resource_group});
137
+ }
138
+ LocalAdmissionController::global_instance->max_ru_per_sec = max_ru_per_sec;
131
139
}
132
- LocalAdmissionController::global_instance->max_ru_per_sec = max_ru_per_sec;
133
140
}
134
141
135
142
std::vector<TaskPtr> setupTasks (
@@ -469,7 +476,10 @@ TEST_F(TestResourceControlQueue, RunOutOfRU)
469
476
LocalAdmissionController::global_instance->resource_groups .insert ({rg_name, resource_group});
470
477
LocalAdmissionController::global_instance->max_ru_per_sec = new_ru_per_sec;
471
478
}
472
- LocalAdmissionController::global_instance->refill_token_callback ();
479
+ {
480
+ std::lock_guard lock (LocalAdmissionController::global_instance->call_back_mutex );
481
+ LocalAdmissionController::global_instance->refill_token_callback ();
482
+ }
473
483
ASSERT_NO_THROW (exec_context.waitFor (std::chrono::seconds (10 )));
474
484
}
475
485
0 commit comments