Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,25 @@

#Область ОбработчикиСобытий

Процедура ПриСозданииОбъекта(Идентификатор, Дескриптор, Параметры, ИсполняющаяСреда = Неопределено)
// Создает кейс запуска бенчмарка.
//
// Параметры:
// Идентификатор - Число - Уникальный идентификатор кейса.
// Дескриптор - ДескрипторБенчмарка - Дескриптор запускаемого бенчмарка.
// Параметры - Массив из ПараметрБенчмарка - Параметры запуска кейса. Если не заданы,
// - Неопределено создается пустой массив параметров.
// ИсполняющаяСреда - ИсполняющаяСредаБенчмарков - Исполняющая среда кейса. Если не задана,
// - Неопределено создается среда по умолчанию.

Check notice on line 17 in src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

src/BenchmarkOneScript/core/running/Классы/КейсБенчмарка.os#L17

Длина строки 135 превышает максимально допустимую 120
Процедура ПриСозданииОбъекта(Идентификатор, Дескриптор, Параметры = Неопределено, ИсполняющаяСреда = Неопределено)

_Идентификатор = Идентификатор;
_Дескриптор = Дескриптор;
_Параметры = Параметры;
_Идентификатор = Идентификатор;
_Дескриптор = Дескриптор;

Если Параметры = Неопределено Тогда
_Параметры = Новый Массив();
Иначе
_Параметры = Параметры;
КонецЕсли;

Если ИсполняющаяСреда = Неопределено Тогда
_ИсполняющаяСреда = Новый ИсполняющаяСредаБенчмарков();
Expand Down
10 changes: 5 additions & 5 deletions tests/fixtures/АппендерЛога.os
Original file line number Diff line number Diff line change
@@ -1,15 +1,15 @@
Перем мСообщенияЛога;
Перем _СообщенияЛога;

Функция ПолучитьСообщения() Экспорт
Возврат мСообщенияЛога;
Возврат _СообщенияЛога;
КонецФункции

Процедура Вывести(Знач Сообщение, Знач УровеньВывода) Экспорт
мСообщенияЛога.Добавить(Сообщение);
_СообщенияЛога.Добавить(Сообщение);
КонецПроцедуры

Процедура Закрыть() Экспорт
мСообщенияЛога = Неопределено;
_СообщенияЛога = Неопределено;
КонецПроцедуры

мСообщенияЛога = Новый Массив;
_СообщенияЛога = Новый Массив;
Original file line number Diff line number Diff line change
@@ -0,0 +1,162 @@
// BSLLS:LineLength-off
// BSLLS:DuplicateStringLiteral-off
// BSLLS:MagicNumber-off

#Использовать asserts
#Использовать fluent
#Использовать tempfiles
#Использовать "helpers"
#Использовать "fixtures/benchmarks"

Перем _МенеджерВременныхФайлов; // МенеджерВременныхФайлов

#Область ОбработчикиСобытий

&Инициализация
Процедура ПередВсеми() Экспорт
_МенеджерВременныхФайлов = Новый МенеджерВременныхФайлов();
КонецПроцедуры

&Завершение
Процедура ПослеВсех() Экспорт
_МенеджерВременныхФайлов.Удалить();
КонецПроцедуры

#КонецОбласти

#Область Тесты

&Тест
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномКоличествеИтераций() Экспорт

// Подготовка
НевалидныеЗначения = Новый Массив();
НевалидныеЗначения.Добавить(0);
НевалидныеЗначения.Добавить(-10);

ТекстОшибки = "Количество итераций не может быть меньше 1";

Конфигурация = Новый КонфигурацияБенчмарков();

Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл

Параметры = Новый Массив();
Параметры.Добавить(НевалидноеЗначение);

// Действие и Проверка
Ожидаем
.Что(Конфигурация)
.Метод("УстановитьКоличествоИтераций", Параметры)
.ВыбрасываетИсключение(ТекстОшибки);

КонецЦикла;

КонецПроцедуры

&Тест
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномКоличествеВызововЗаИтерацию() Экспорт

// Подготовка
НевалидныеЗначения = Новый Массив();
НевалидныеЗначения.Добавить(-10);

ТекстОшибки = "Количество вызовов за итерацию не может быть меньше 0";

Конфигурация = Новый КонфигурацияБенчмарков();

Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл

Параметры = Новый Массив();
Параметры.Добавить(НевалидноеЗначение);

// Действие и Проверка
Ожидаем
.Что(Конфигурация)
.Метод("УстановитьКоличествоВызововЗаИтерацию", Параметры)
.ВыбрасываетИсключение(ТекстОшибки);

КонецЦикла;

КонецПроцедуры

&Тест
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномКоличествеИтерацийПрогрева() Экспорт

// Подготовка
НевалидныеЗначения = Новый Массив();
НевалидныеЗначения.Добавить(-10);

ТекстОшибки = "Количество прогревочных итераций не может быть меньше 0";

Конфигурация = Новый КонфигурацияБенчмарков();

Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл

Параметры = Новый Массив();
Параметры.Добавить(НевалидноеЗначение);

// Действие и Проверка
Ожидаем
.Что(Конфигурация)
.Метод("УстановитьКоличествоПрогревочныхИтераций", Параметры)
.ВыбрасываетИсключение(ТекстОшибки);

КонецЦикла;

КонецПроцедуры

&Тест
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномМинимальномВремениИтерации() Экспорт

// Подготовка
НевалидныеЗначения = Новый Массив();
НевалидныеЗначения.Добавить(0);
НевалидныеЗначения.Добавить(-10);

ТекстОшибки = "Минимальное время итерации не может быть меньше 1 мс";

Конфигурация = Новый КонфигурацияБенчмарков();

Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл

Параметры = Новый Массив();
Параметры.Добавить(НевалидноеЗначение);

// Действие и Проверка
Ожидаем
.Что(Конфигурация)
.Метод("УстановитьМинимальноеВремяИтерации", Параметры)
.ВыбрасываетИсключение(ТекстОшибки);

КонецЦикла;

КонецПроцедуры

&Тест
Процедура ТестДолжен_ВыброситьИсключениеПриНевалидномМинимальномКоличествеВызововЗаИтерацию() Экспорт

// Подготовка
НевалидныеЗначения = Новый Массив();
НевалидныеЗначения.Добавить(0);
НевалидныеЗначения.Добавить(-10);

ТекстОшибки = "Минимальное количество вызовов за итерацию не может быть меньше 1";

Конфигурация = Новый КонфигурацияБенчмарков();

Для Каждого НевалидноеЗначение Из НевалидныеЗначения Цикл

Параметры = Новый Массив();
Параметры.Добавить(НевалидноеЗначение);

// Действие и Проверка
Ожидаем
.Что(Конфигурация)
.Метод("УстановитьМинимальноеКоличествоВызововЗаИтерацию", Параметры)
.ВыбрасываетИсключение(ТекстОшибки);

КонецЦикла;

КонецПроцедуры

#КонецОбласти
Original file line number Diff line number Diff line change
@@ -0,0 +1,145 @@
// BSLLS:LineLength-off

#Использовать asserts
#Использовать "helpers"
#Использовать "fixtures/benchmarks"

#Область Тесты

&Тест
Процедура ТестДолжен_СгенерироватьОдинКейсДляБенчмаркаБезПараметров() Экспорт

// Подготовка
Тип = Тип("ПустойБенчмарк");
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
Конфигурация = Новый КонфигурацияБенчмарков(Тип);
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);

// Действие
Кейсы = ГенераторКейсов.СгенерироватьВсеКейсы();
Кейс = Кейсы[0];

// Проверка
Ожидаем.Что(Кейсы).ИмеетДлину(1);
Ожидаем.Что(Кейс.Идентификатор()).Равно(1);
Ожидаем.Что(Кейс.ДескрипторБенчмарка().ТипКласса()).Равно(Тип);
Ожидаем.Что(Кейс.Параметры()).ИмеетДлину(0);
Ожидаем.Что(Кейс.ИсполняющаяСреда()).ИмеетТип("ИсполняющаяСредаБенчмарков");
Ожидаем.Что(Кейс.ИсполняющаяСреда().Версия).Равно("");

КонецПроцедуры

&Тест
Процедура ТестДолжен_СгенерироватьМатрицуКейсовДляПараметровИИсполняющихСред() Экспорт

// Подготовка
Тип = Тип("БенчмаркСПараметрамиМетодаИПоля");
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
Конфигурация = Новый КонфигурацияБенчмарков(Тип)
.ДобавитьИсполняющуюСреду("dev")
.ДобавитьИсполняющуюСреду("stable");
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);

// Действие
Кейсы = ГенераторКейсов.СгенерироватьВсеКейсы();
ПредставленияКейсов = ПредставленияКейсов(Кейсы);

// Проверка
Ожидаем.Что(Кейсы).ИмеетДлину(8);

Check notice on line 48 in tests/ТестыГенератораКейсовБенчмарков.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

tests/ТестыГенератораКейсовБенчмарков.os#L48

Создайте константу с понятным названием, присвойте ей значение "8" и используйте эту константу вместо магического числа.
Ожидаем.Что(Кейсы[0].Идентификатор()).Равно(1);
Ожидаем.Что(Кейсы[7].Идентификатор()).Равно(8);

Check notice on line 50 in tests/ТестыГенератораКейсовБенчмарков.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

tests/ТестыГенератораКейсовБенчмарков.os#L50

Создайте константу с понятным названием, присвойте ей значение "8" и используйте эту константу вместо магического числа.
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|1|3|4");
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|1|5|6");
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|2|3|4");
Ожидаем.Что(ПредставленияКейсов).Содержит("dev|2|5|6");
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|1|3|4");
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|1|5|6");
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|2|3|4");
Ожидаем.Что(ПредставленияКейсов).Содержит("stable|2|5|6");

КонецПроцедуры

&Тест
Процедура ТестДолжен_СгенерироватьТолькоЗапрошенныеКейсыПоИдентификаторам() Экспорт

// Подготовка
Тип = Тип("БенчмаркСПараметрамиМетода");
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
Конфигурация = Новый КонфигурацияБенчмарков(Тип);
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);
ИдентификаторыКейсов = Новый Массив();
ИдентификаторыКейсов.Добавить(2);

// Действие
Кейсы = ГенераторКейсов.СгенерироватьПоИдентификаторам(ИдентификаторыКейсов);
Кейс = Кейсы[0];

// Проверка
Ожидаем.Что(Кейсы).ИмеетДлину(1);
Ожидаем.Что(Кейс.Идентификатор()).Равно(2);
Ожидаем.Что(ЗначениеПараметра(Кейс, "Парам1")).Равно(20);

Check notice on line 80 in tests/ТестыГенератораКейсовБенчмарков.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

tests/ТестыГенератораКейсовБенчмарков.os#L80

Создайте константу с понятным названием, присвойте ей значение "20" и используйте эту константу вместо магического числа.
Ожидаем.Что(ЗначениеПараметра(Кейс, "Парам2")).Равно(200);

Check notice on line 81 in tests/ТестыГенератораКейсовБенчмарков.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

tests/ТестыГенератораКейсовБенчмарков.os#L81

Создайте константу с понятным названием, присвойте ей значение "200" и используйте эту константу вместо магического числа.

КонецПроцедуры

&Тест
Процедура ТестДолжен_ВыброситьИсключениеПриГенерацииКейсовСНеизвестнымИдентификатором() Экспорт

// Подготовка
Тип = Тип("ПустойБенчмарк");
ДескрипторыБенчмарков = Новый КоллекцияДескрипторовБенчмарков(Тип);
Конфигурация = Новый КонфигурацияБенчмарков(Тип);
ГенераторКейсов = Новый ГенераторКейсовБенчмарков(ДескрипторыБенчмарков, Конфигурация);

ИдентификаторыКейсов = Новый Массив();
ИдентификаторыКейсов.Добавить(1);
ИдентификаторыКейсов.Добавить(100);

Check notice on line 96 in tests/ТестыГенератораКейсовБенчмарков.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

tests/ТестыГенератораКейсовБенчмарков.os#L96

Создайте константу с понятным названием, присвойте ей значение "100" и используйте эту константу вместо магического числа.

ПараметрыМетода = Новый Массив();
ПараметрыМетода.Добавить(ИдентификаторыКейсов);

// Действие и Проверка
Ожидаем
.Что(ГенераторКейсов)
.Метод("СгенерироватьПоИдентификаторам", ПараметрыМетода)
.ВыбрасываетИсключение("Не найдено 1 из 2 запрошенных кейсов. Ненайденные идентификаторы кейсов: 100");

КонецПроцедуры

#КонецОбласти

#Область СлужебныеПроцедурыИФункции

Функция ПредставленияКейсов(Кейсы)

Результат = Новый Массив();

Для Каждого Кейс Из Кейсы Цикл
Результат.Добавить(

Check notice on line 118 in tests/ТестыГенератораКейсовБенчмарков.os

View check run for this annotation

sonar.openbsl.ru qa-bot / SonarQube Code Analysis

tests/ТестыГенератораКейсовБенчмарков.os#L118

Уберите инициализацию параметров метода "Добавить" вложенными методами
СтрШаблон(
"%1|%2|%3|%4",
Кейс.ИсполняющаяСреда().Версия,
ЗначениеПараметра(Кейс, "ПолеОбщее"),
ЗначениеПараметра(Кейс, "Парам1"),
ЗначениеПараметра(Кейс, "Парам2")
)
);
КонецЦикла;

Возврат Результат;

КонецФункции

Функция ЗначениеПараметра(Кейс, ИмяПараметра)

Для Каждого Параметр Из Кейс.Параметры() Цикл
Если Параметр.Имя() = ИмяПараметра Тогда
Возврат Параметр.Значение();
КонецЕсли;
КонецЦикла;

Возврат Неопределено;

КонецФункции

#КонецОбласти
Loading
Loading