Skip to content
Merged
2 changes: 1 addition & 1 deletion .bsl-language-server.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"listOfIncorrectFirstSymbol": ";|,\\s*\\S+"
},
"Typo": {
"userWordsToIgnore": "Аппендер,Дто,Бенчмаркинг,Запускателя,Бенчмарками,Бенчмаркам,Бенчмарк,бенчмарк,Бенчмарки,бенчмарки,Бенчмарков,бенчмарков,Бенчмарка,бенчмарками,бенчмарка,Бенчмарку,Прогревочных,прогревочных,Десериализованный,Десериализуемые,Сериализуемый,Сериализуемое,Несериализуемое,Запускатель,запускатель,Распарсить,распарсить,Регулярка,Десериализатор,Сериализовать,Сериализации,сериализации,Сериализуемые,Сериализацией,Сериализуется,Сериализацию,сериализацию,сериализуемым,сериализован,Сериализуемость,Чекпоинт,Извлекатель,непримитивный,Десериализации,десериализации,Несериализуемых,Валидатор,Валидировать,Алиас,Эталонность"
"userWordsToIgnore": "Аппендер,Дто,Бенчмаркинг,Запускателя,Несериализуемыми,Чекпоинта,Чекпоинту,Бенчмарками,Бенчмаркам,Бенчмарк,бенчмарк,Бенчмарки,бенчмарки,Бенчмарков,бенчмарков,Бенчмарка,бенчмарками,бенчмарка,Бенчмарку,Прогревочных,прогревочных,Десериализованный,Десериализуемые,Сериализуемый,Сериализуемое,Несериализуемое,Запускатель,запускатель,Распарсить,распарсить,Регулярка,Десериализатор,Сериализовать,Сериализации,сериализации,Сериализуемые,Сериализацией,Сериализуется,Сериализацию,сериализацию,сериализуемым,сериализован,Сериализуемость,Чекпоинт,Извлекатель,непримитивный,Десериализации,десериализации,Несериализуемых,Валидатор,Валидировать,Алиас,Эталонность"
},
"LatinAndCyrillicSymbolInWord": false,
"MagicNumber": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,11 +6,25 @@

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

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

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

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

Если ИсполняющаяСреда = Неопределено Тогда
_ИсполняющаяСреда = Новый ИсполняющаяСредаБенчмарков();
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,144 @@
// BSLLS:LineLength-off
// BSLLS:DuplicateStringLiteral-off
// BSLLS:MagicNumber-off

#Использовать asserts
#Использовать "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,147 @@
// BSLLS:LineLength-off
// BSLLS:MagicNumber-off
// BSLLS:NestedFunctionInParameters-off

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

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

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

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

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

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

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

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

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

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

// Проверка
Ожидаем.Что(Кейсы).ИмеетДлину(8);
Ожидаем.Что(Кейсы[0].Идентификатор()).Равно(1);
Ожидаем.Что(Кейсы[7].Идентификатор()).Равно(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);
Ожидаем.Что(ЗначениеПараметра(Кейс, "Парам2")).Равно(200);

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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