Skip to content

Commit

Permalink
кеш плагинов для ускорения
Browse files Browse the repository at this point in the history
  • Loading branch information
artbear committed Jan 12, 2023
1 parent 6564497 commit 45a748c
Showing 1 changed file with 54 additions and 15 deletions.
69 changes: 54 additions & 15 deletions epf/xddTestRunner/xddTestRunner/Ext/ObjectModule.bsl
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@
Перем КешРежимСовместимости;
Перем КешВерсияРежимСовместимости;

Перем КешПлагины; // кеш плагинов

Функция Версия() Экспорт
Версия = "6.8.0";
Возврат Версия;
Expand Down Expand Up @@ -65,14 +67,38 @@

ИдентификаторПлагинаСПрефиксомПодсистемы = ДополнитьИдентификаторПрефиксомПодсистемы(Идентификатор);
ИдентификаторПлагинаБезПрефиксаПодсистемы = ПолучитьИдентификаторБезПрефиксаПодсистемы(Идентификатор);

Если Плагины = Неопределено Тогда // в случае использования на сервере через ВнешниеОбработки.Создать("xddTestRunner")

Если Не ЗначениеЗаполнено(КешПлагины) Тогда
КешПлагины = Новый Структура;
Иначе
Плагин = Неопределено;
Если КешПлагины.Свойство(ИдентификаторПлагинаБезПрефиксаПодсистемы, Плагин) Тогда
Возврат Плагин;
КонецЕсли;
КонецЕсли;

ЕстьПлагины = Плагины <> Неопределено;
//Если Плагины = Неопределено Тогда // в случае использования на сервере через ВнешниеОбработки.Создать("xddTestRunner")
Если Не ЕстьПлагины Тогда // в случае использования на сервере через ВнешниеОбработки.Создать("xddTestRunner")
Плагин = ИдентификаторПлагинаБезПрефиксаПодсистемы;
Иначе
Плагин = Плагины[ИдентификаторПлагинаБезПрефиксаПодсистемы];
КонецЕсли;
Если ТипЗнч(Плагин) = Тип("Строка") Тогда
Плагин = СоздатьОбъектПлагина(Плагин);
Плагин = Неопределено;
Если Не ЗначениеЗаполнено(АдресВременногоХранилища) Тогда
ЗагрузитьНастройки();
АдресВременногоХранилища = Настройки.АдресВременногоХранилища;
КонецЕсли;
НастройкиПродукта = ПолучитьИзВременногоХранилища(АдресВременногоХранилища);
КешПлагины = НастройкиПродукта.КешПлагины;
Если Не КешПлагины.Свойство(ИдентификаторПлагинаБезПрефиксаПодсистемы, Плагин) Тогда
Плагин = СоздатьОбъектПлагина(Плагин);

КешПлагины.Вставить(ИдентификаторПлагинаБезПрефиксаПодсистемы, Плагин);

ПоместитьВоВременноеХранилище(НастройкиПродукта, АдресВременногоХранилища);
КонецЕсли;
КонецЕсли;

Возврат Плагин;
Expand Down Expand Up @@ -565,6 +591,7 @@
Функция ПолучитьПустыеНастройкиБраузераТестирования()
Результат = Новый Структура;
Результат.Вставить("ИсторияЗагрузкиТестов", Новый Массив);
Результат.Вставить("АдресВременногоХранилища", АдресВременногоХранилища);

Возврат Результат;
КонецФункции
Expand Down Expand Up @@ -946,23 +973,35 @@
Перем СтрокаГдеИщем;

ТипКоллекции = ТипЗнч(КоллекцияДляПоиска);
Если ТипКоллекции = Тип("СписокЗначений") Тогда
Если ТипКоллекции = Тип("Массив") Тогда
Если РегулярныеВыражения = Неопределено Тогда
РегулярныеВыражения = Плагин("РегулярныеВыражения");
КонецЕсли;

ШаблонПоиска = СтрСоединить(КоллекцияДляПоиска, "____");
ШаблонПоиска = РегулярныеВыражения.ПодготовитьШаблонКИспользованиюВРегулярке(ШаблонПоиска);
ШаблонПоиска = СтрЗаменить(ШаблонПоиска, "____", "|");

Возврат РегулярныеВыражения.СтрокаСоответствуетШаблону(ЧтоИщем, ШаблонПоиска, Истина);
//Для Каждого СтрокаГдеИщем Из КоллекцияДляПоиска Цикл
// Если СтрокаСоответствуетШаблону(ЧтоИщем, СтрокаГдеИщем) Тогда
// Возврат Истина;
// КонецЕсли;
//КонецЦикла;

ИначеЕсли ТипКоллекции = Тип("СписокЗначений") Тогда
Если КоллекцияДляПоиска.НайтиПоЗначению(ЧтоИщем) <> Неопределено Тогда
Возврат Истина;
КонецЕсли;


МассивДляПоиска = Новый Массив;
Для Каждого ЭлементСписка Из КоллекцияДляПоиска Цикл
Если СтрокаСоответствуетШаблону(ЧтоИщем, ЭлементСписка.Значение) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;

ИначеЕсли ТипКоллекции = Тип("Массив") Тогда
Для Каждого СтрокаГдеИщем Из КоллекцияДляПоиска Цикл
Если СтрокаСоответствуетШаблону(ЧтоИщем, СтрокаГдеИщем) Тогда
Возврат Истина;
КонецЕсли;
МассивДляПоиска.Добавить(ЭлементСписка.Значение);
//Если СтрокаСоответствуетШаблону(ЧтоИщем, ЭлементСписка.Значение) Тогда
// Возврат Истина;
//КонецЕсли;
КонецЦикла;
Возврат ЕстьВИсключаемойКоллекции(ЧтоИщем, МассивДляПоиска);

Иначе
ВызватьИсключение "Неверный тип параметра КоллекцияДляПоиска. Нужен Массив или СписокЗначений, а получили " + ТипКоллекции + ", значение " + КоллекцияДляПоиска;
Expand Down

0 comments on commit 45a748c

Please sign in to comment.