2019-01-25 11:03:02 +00:00
|
|
|
#include "TestStopConditions.h"
|
|
|
|
|
|
|
|
namespace DB
|
|
|
|
{
|
|
|
|
|
|
|
|
void TestStopConditions::loadFromConfig(ConfigurationPtr & stop_conditions_config)
|
|
|
|
{
|
|
|
|
if (stop_conditions_config->has("all_of"))
|
|
|
|
{
|
|
|
|
ConfigurationPtr config_all_of(stop_conditions_config->createView("all_of"));
|
|
|
|
conditions_all_of.loadFromConfig(config_all_of);
|
|
|
|
}
|
|
|
|
if (stop_conditions_config->has("any_of"))
|
|
|
|
{
|
|
|
|
ConfigurationPtr config_any_of(stop_conditions_config->createView("any_of"));
|
|
|
|
conditions_any_of.loadFromConfig(config_any_of);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
bool TestStopConditions::areFulfilled() const
|
|
|
|
{
|
|
|
|
return (conditions_all_of.initialized_count && conditions_all_of.fulfilled_count >= conditions_all_of.initialized_count)
|
|
|
|
|| (conditions_any_of.initialized_count && conditions_any_of.fulfilled_count);
|
|
|
|
}
|
|
|
|
|
2019-01-28 16:20:29 +00:00
|
|
|
UInt64 TestStopConditions::getMaxExecTime() const
|
|
|
|
{
|
|
|
|
UInt64 all_of_time = conditions_all_of.total_time_ms.value;
|
|
|
|
if (all_of_time == 0 && conditions_all_of.initialized_count != 0) /// max time is not set in all conditions
|
|
|
|
return 0;
|
|
|
|
else if(all_of_time != 0 && conditions_all_of.initialized_count > 1) /// max time is set, but we have other conditions
|
|
|
|
return 0;
|
|
|
|
|
|
|
|
UInt64 any_of_time = conditions_any_of.total_time_ms.value;
|
|
|
|
return std::max(all_of_time, any_of_time);
|
|
|
|
}
|
|
|
|
|
2019-01-25 11:03:02 +00:00
|
|
|
}
|