Skip to content

Commit

Permalink
Исправления #921 + больше логирования в ЖР
Browse files Browse the repository at this point in the history
  • Loading branch information
LazarenkoA authored and artbear committed Nov 9, 2021
1 parent 28a949b commit fb7fa70
Showing 1 changed file with 55 additions and 28 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -278,18 +278,22 @@

&НаКлиенте
Функция ТестКлиентПоУмолчанию() Экспорт

Если ЗначениеЗаполнено(ЗапущенныеТестКлиенты) Тогда
ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Был использован один из запущенных ранее тест клиентов.
|ИмяПользователя: %1
|Порт: %2
|ДопПараметры: %3", ЗапущенныеТестКлиенты[0].ИмяПользователя, ЗапущенныеТестКлиенты[0].Порт, ЗапущенныеТестКлиенты[0].ДопПараметры));
Возврат ЗапущенныеТестКлиенты[0].ТестКлиент;
КонецЕсли;

ОписаниеТестКлиента = ПодключитьТестКлиент();
Результат = ОписаниеТестКлиента.Клиент;

ЗапомнитьДанныеТестКлиента(Результат, "", ОписаниеТестКлиента.Порт, "");

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

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

&НаКлиенте
Expand Down Expand Up @@ -643,14 +647,14 @@
//
&НаКлиенте
Функция НайтиСвободныйПортЕслиТекущийЗанят(Знач Порт = 1538, Знач НачалоДиапазонаПортов = 48000, Знач ОкончаниеДиапазонаПортов = 50000) Экспорт

Если Порт <= 0 Или Порт > 65536 Тогда
Порт = 1538;
КонецЕсли;

//НачалоДиапазонаПортов = 48000;
//ОкончаниеДиапазонаПортов = 50000;

//Если ЗначениеЗаполнено(Объект.ДиапазонПортовTestclient) Тогда
// //там должна быть строка вида 48000-48020
// МассивЗначений = СтрРазделить(Объект.ДиапазонПортовTestclient, "-");
Expand All @@ -662,21 +666,23 @@
// НачалоДиапазонаПортов = Число(МассивЗначений[0]);
// ОкончаниеДиапазонаПортов = Число(МассивЗначений[1]);
//КонецЕсли;

МассивЗанятыхПортов = МассивЗанятыхПортов();

ПортПид = Новый Соответствие();
МассивЗанятыхПортов = МассивЗанятыхПортов(ПортПид);
Если МассивЗанятыхПортов.Найти(Порт) <> Неопределено Тогда

ЗаписатьПредупреждениеВЖурналРегистрации(СтрШаблон("Порт ""%1"" занят процессом pid: ""%2"" ", Порт, ПортПид[Порт]));

Для СвободныйПорт = НачалоДиапазонаПортов По ОкончаниеДиапазонаПортов Цикл
Если МассивЗанятыхПортов.Найти(СвободныйПорт) = Неопределено Тогда

ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Будет использован свободный порт: ""%1""", СвободныйПорт));
Возврат СвободныйПорт;

КонецЕсли;
КонецЦикла;
КонецЕсли;

Возврат Порт;

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

// } Plugin interface
Expand Down Expand Up @@ -796,6 +802,15 @@

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

&НаСервереБезКонтекста
Процедура ЗаписатьИнформациюВЖурналРегистрации(Знач Текст)

ЗаписьЖурналаРегистрации(ИмяСобытияЖР(),
УровеньЖурналаРегистрации.Информация, , ,
Текст);

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

&НаСервереБезКонтекста
Функция ИмяСобытияЖР()

Expand Down Expand Up @@ -841,10 +856,12 @@
Если Не ЗначениеЗаполнено(Порт) Тогда
Порт = ПортПоУмолчанию();
КонецЕсли;

Если ТипЗнч(Порт) <> Тип("Число") Тогда
Порт = Число(Порт);
КонецЕсли;

ЗаписатьИнформациюВЖурналРегистрации(СтрШаблон("Будет использован порт: ""%1""", Порт));
Возврат Порт;
КонецФункции

Expand Down Expand Up @@ -1093,35 +1110,41 @@
КонецПроцедуры

&НаКлиенте
Функция МассивЗанятыхПортов()

Функция МассивЗанятыхПортов(ПортПид = Неопределено)
Результат = Новый Массив;

ИмяВременногоФайла = ПолучитьИмяВременногоФайла("txt");

Если НЕ ЭтоLinux() Тогда

СтрокаЗапуска = "netstat -ano > """ + ИмяВременногоФайла + """";

//TODO проверить быстрое использование ВыполнитьКомандуОСБезПоказаЧерногоОкна(..., Истина, Ложь);
//ВыполнитьКомандуОСБезПоказаЧерногоОкна(ТекстКоманды, Истина, Истина);
УправлениеПриложениями = КонтекстЯдра.Плагин("УправлениеПриложениями");
УправлениеПриложениями.ВыполнитьКомандуОСБезПоказаЧерногоОкна(СтрокаЗапуска);

Текст = Новый ЧтениеТекста;
Текст.Открыть(ИмяВременногоФайла, "UTF-8");

Пока Истина Цикл
Стр = Текст.ПрочитатьСтроку();
Если Стр = Неопределено Тогда
Прервать;
КонецЕсли;

Если Стр = "" Тогда
Продолжить;
КонецЕсли;

Порт_ = Сред(Сред(СокрЛП(Стр), 8), 1, Найти(Сред(СокрЛП(Стр), 8), " "));

Разбивка = СтрРазделить(Стр, " ", Ложь);
Если Разбивка.Количество() <> 5 Тогда
Продолжить;
КонецЕсли;
Порт_ = Разбивка[1];
PID = Разбивка[Разбивка.ВГраница()];

Порт = "";
Для НомерСимвола = 0 По СтрДлина(Порт_) - 1 Цикл
СимволСтроки = Сред(Порт_, СтрДлина(Порт_) - НомерСимвола, 1);
Expand All @@ -1132,10 +1155,13 @@
Порт = СимволСтроки + Порт;
КонецЕсли;
КонецЦикла;

Попытка
Порт = Число(Порт);
Результат.Добавить(Порт);
Если ПортПид <> Неопределено Тогда
ПортПид.Вставить(Порт, PID);
КонецЕсли;
Исключение
Продолжить;
КонецПопытки;
Expand All @@ -1152,17 +1178,17 @@

Текст = Новый ЧтениеТекста;
Текст.Открыть(ИмяВременногоФайла, "UTF-8");

Пока Истина Цикл
Стр = Текст.ПрочитатьСтроку();
Если Стр = Неопределено Тогда
Прервать;
КонецЕсли;

Если Стр = "" Тогда
Продолжить;
КонецЕсли;

Порт = СокрЛП(Стр);
Попытка
Порт = Число(Порт);
Expand All @@ -1174,13 +1200,14 @@

Текст.Закрыть();
КонецЕсли;

//Для каждого СтрокаДанныеКлиентовТестирования Из ДанныеКлиентовТестирования Цикл // TODO
// Результат.Добавить(СтрокаДанныеКлиентовТестирования.ПортЗапускаТестКлиента);
//КонецЦикла;


УдалитьФайлы(ИмяВременногоФайла);
Возврат Результат;

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

Функция НовоеОписаниеТестКлиента()
Expand Down

0 comments on commit fb7fa70

Please sign in to comment.