Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/qa.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ jobs:
uses: autumn-library/workflows/.github/workflows/sonar.yml@main
with:
github_repository: stivo182/oscript-httpbin
oscript_version: dev
oscript_version: stable
secrets:
SONAR_TOKEN: ${{ secrets.SONAR_TOKEN }}
9 changes: 7 additions & 2 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,12 @@ jobs:
strategy:
fail-fast: false
matrix:
oscript_version: ['stable', 'dev']
oscript_version: ['default', 'lts']
test_engine: ['1testrunner']
include:
- oscript_version: ['stable', 'dev']
test_engine: 'oneunit'
uses: autumn-library/workflows/.github/workflows/test.yml@main
with:
oscript_version: ${{ matrix.oscript_version }}
oscript_version: ${{ matrix.oscript_version }}
test_engine: ${{ matrix.test_engine }}
3 changes: 2 additions & 1 deletion packagedef
Original file line number Diff line number Diff line change
Expand Up @@ -13,12 +13,13 @@
.ВключитьФайл("LICENSE")
.ЗависитОт("autumn", "4.3.11")
.ЗависитОт("autumn-cli", "1.2.0")
.ЗависитОт("winow", "0.11.0")
.ЗависитОт("winow", "0.11.2")
.ЗависитОт("compressor", "1.0.2")
.ЗависитОт("1connector", "2.3.3")
.ЗависитОт("packageinfo", "1.1.1")
.ЗависитОт("fs", "1.2.0")
.ЗависитОт("logos", "1.7.1")
.ЗависитОт("configor", "0.11.0")
.РазработкаЗависитОт("1testrunner")
.РазработкаЗависитОт("asserts")
.РазработкаЗависитОт("coverage")
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,3 @@

#Использовать winow

Перем _Хост; // Строка
Expand Down Expand Up @@ -36,7 +35,7 @@
_НастройкиВебСервера.ИмяХоста = _Хост;
_НастройкиВебСервера.Порт = _Порт;

Если ПолучитьПеременнуюСреды("HTTPBIN_IS_TEST_MODE") = "true" Тогда
Если ПолучитьПеременнуюСреды("HTTPBIN_TESTING_MODE") = "true" Тогда
_НастройкиВебСервера.ЗадержкаПередЧтениемСокета = 400;
КонецЕсли;

Expand Down
15 changes: 8 additions & 7 deletions src/cmd/Классы/КомандаЗапустить.os
Original file line number Diff line number Diff line change
Expand Up @@ -18,21 +18,22 @@
&ПоУмолчанию(3333)
Перем _Порт; // Число

&Опция(
Имя = "routes-handlers",
Описание = "Путь к файлу или каталогу кастомных контроллеров"
)
&ТМассивСтрок
Перем _КастомныеКонтроллеры; // BSLLS:UnusedLocalVariable-off

&Опция(
Имя = "parent-pid",
Описание = "PID родительского процесса"
)
&ТЧисло
&ПоУмолчанию(0)
&СкрытьВСправке
Перем _ИдентификаторРодительскогоПроцесса; // Число

&Опция(
Имя = "routes-handlers",
Описание = "Путь к файлу или каталогу кастомных контроллеров"
)
&ТМассивСтрок
Перем _КастомныеКонтроллеры; // BSLLS:UnusedLocalVariable-off

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

#Область ОписаниеПеременных
Expand Down
90 changes: 89 additions & 1 deletion src/core/Классы/HttpBin.os
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@
#Использовать 1connector
#Использовать fs
#Использовать logos
#Использовать configor
#Использовать "../../internal"

Перем _ТаймаутЗапуска; // Число - Таймаут запуска сервиса в секундах
Перем _ТаймаутПроверки; // Число - Таймаут HTTP-проверки доступности в секундах
Expand Down Expand Up @@ -275,7 +277,7 @@

_Лог.Отладка("Запуск процесса: %1", СтрокаКоманды);

_Процесс = СоздатьПроцесс(СтрокаКоманды, РабочийКаталог, , , , ПеременныеСреды());
_Процесс = СоздатьПроцесс(СтрокаКоманды, РабочийКаталог, , , , ПолучитьПараметрыСредыПроцесса());
_Процесс.Запустить();

Если Синхронно Тогда
Expand Down Expand Up @@ -393,4 +395,90 @@

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

Функция ПолучитьПараметрыСредыПроцесса()

ПеременныеСреды = ПеременныеСреды();
СтартовыйКаталог = СтартовыйСценарий().Каталог;
ПутьККонфигурации = ОбъединитьПути(СтартовыйКаталог, "oscript.cfg");

Если Не ФС.ФайлСуществует(ПутьККонфигурации) Тогда
Возврат ПеременныеСреды;
КонецЕсли;

Конфигурация = КонфигурацияОСкрпитВСоответствие(ПеременныеСреды["OSCRIPT_CONFIG"]);
Если ЗначениеЗаполнено(Конфигурация["lib.system"]) Тогда
Возврат ПеременныеСреды;
КонецЕсли;

МенеджерПараметров = Новый МенеджерПараметров();
МенеджерПараметров.УстановитьФайлПараметров(ПутьККонфигурации);
МенеджерПараметров.ДобавитьПровайдерПараметров(Новый ПровайдерПараметровCFG());
МенеджерПараметров.Прочитать();

УстановитьКаталогВКонфигурацию(Конфигурация, "lib.system", МенеджерПараметров.Параметр("lib.system"));
УстановитьКаталогВКонфигурацию(Конфигурация, "lib.additional", МенеджерПараметров.Параметр("lib.additional"));

ПеременныеСреды["OSCRIPT_CONFIG"] = КонфигурацияОСкрпитВСтроку(Конфигурация);

Возврат ПеременныеСреды;

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

Функция КонфигурацияОСкрпитВСоответствие(Параметры)

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

Если Не ЗначениеЗаполнено(Параметры) Тогда
Возврат Результат;
КонецЕсли;

КлючиИЗначения = СтрРазделить(Параметры, ";");

Для Каждого КлючИЗначение Из КлючиИЗначения Цикл
Части = СтрРазделить(КлючИЗначение, "=");
Если Части.Количество() = 2 Тогда
Результат.Вставить(СокрЛП(Части[0]), СокрЛП(Части[1]));
КонецЕсли;
КонецЦикла;

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

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

Функция КонфигурацияОСкрпитВСтроку(Параметры)

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

Для Каждого КлючИЗначение Из Параметры Цикл
Если ЗначениеЗаполнено(КлючИЗначение.Значение) Тогда
Результат.Добавить(СтрШаблон("%1=%2", НРег(КлючИЗначение.Ключ), КлючИЗначение.Значение));
КонецЕсли;
КонецЦикла;

Возврат СтрСоединить(Результат, ";");

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

Процедура УстановитьКаталогВКонфигурацию(Конфигурация, Ключ, Знач Каталог)

Если Не ЗначениеЗаполнено(Каталог) Тогда
Возврат;
КонецЕсли;

ПозицияТочкиЗапятой = СтрНайти(Каталог, ";");
Если ПозицияТочкиЗапятой > 0 Тогда
Каталог = Сред(Каталог, 1, ПозицияТочкиЗапятой - 1);
КонецЕсли;

СтартовыйКаталог = СтартовыйСценарий().Каталог;
НормализованныйПуть = ФС.НормализоватьПуть(ОбъединитьПути(СтартовыйКаталог, Каталог));

Если ФС.КаталогСуществует(НормализованныйПуть) Тогда
Каталог = НормализованныйПуть;
КонецЕсли;

Конфигурация[Ключ] = Каталог;

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

#КонецОбласти
Original file line number Diff line number Diff line change
Expand Up @@ -51,7 +51,7 @@

Процедура ПодключитьИзКаталога(Каталог)

Файлы = НайтиФайлы(Каталог, "*.os");
Файлы = НайтиФайлы(Каталог, "*.os", Истина);

Для Каждого Файл Из Файлы Цикл
Подключить(Файл.ПолноеИмя);
Expand Down
117 changes: 117 additions & 0 deletions src/internal/Классы/ПровайдерПараметровCFG.os
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
#Использовать logos

Перем _Лог;

#Область ПрограммныйИнтерфейс

// Возвращает приоритет провайдера
//
// Возвращаемое значение:
// Число - текущий приоритет провайдера
//
Функция Приоритет() Экспорт
Возврат 1;
КонецФункции

// Возвращает идентификатор провайдера
//
// Возвращаемое значение:
// Строка - текущий идентификатор провайдера
//
Функция Идентификатор() Экспорт
Возврат "cfg";
КонецФункции

// Возвращает тип провайдера
//
// Возвращаемое значение:
// Строка - текущий тип провайдера
//
Функция ТипПровайдера() Экспорт
Возврат "file";
КонецФункции

// Возвращает расширения файлов по умолчанию
//
// Возвращаемое значение:
// Строка - расширения файлов по умолчанию
//
Функция РасширенияФайлов() Экспорт
Возврат "cfg";
КонецФункции

// Выполняет чтение параметров для провайдера
//
// Параметры:
// НастройкиПровайдера - Структура - структура настроек провайдера
//
// Возвращаемое значение:
// Соответствие - результат чтения провайдера
//
Функция ПрочитатьПараметры(НастройкиПровайдера) Экспорт

ПрочитанныеПараметры = Новый Соответствие;

ФайлПараметров = Новый Файл(НастройкиПровайдера.ФайлПараметров);

Если Не ФайлПараметров.Существует() Тогда
_Лог.Отладка("Не найден файл параметров <%1>", ФайлПараметров.ПолноеИмя);
Возврат ПрочитанныеПараметры;
КонецЕсли;

_Лог.Отладка("Выполняю чтение файла параметров <%1>", ФайлПараметров.ПолноеИмя);
ПрочитанныеПараметры = Прочитать(ФайлПараметров.ПолноеИмя);

Возврат ПрочитанныеПараметры;

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

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

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

Процедура ПриСозданииОбъекта()
_Лог = Логирование.ПолучитьЛог("oscript.lib.httpbin.configor.cfg");
КонецПроцедуры

// Выполнить чтение настроек из файла
//
// Параметры:
// ПутьКФайлу - Cтрока - путь к файлу настроек
// Возвращаемое значение:
// Соответствие - итоговые параметры
//
Функция Прочитать(Знач ПутьКФайлу)

НастройкиИзФайла = Новый Соответствие;

ТД = Новый ТекстовыйДокумент();
ТД.Прочитать(ПутьКФайлу);

Для Сч = 1 По ТД.КоличествоСтрок() Цикл

СтрокаНастроек = ТД.ПолучитьСтроку(Сч);

Если ПустаяСтрока(СтрокаНастроек) или Лев(СтрокаНастроек, 1) = "#" Тогда
Продолжить;
КонецЕсли;

Поз = СтрНайти(СтрокаНастроек, "=");
Если Поз = 0 Тогда
Продолжить;
КонецЕсли;

Ключ = СокрЛП(Лев(СтрокаНастроек, Поз - 1));
Значение = СокрЛП(Сред(СтрокаНастроек, Поз + 1));

НастройкиИзФайла.Вставить(Ключ, Значение);

КонецЦикла;

_Лог.Отладка("Прочитан файл настроек %1", ПутьКФайлу);

Возврат НастройкиИзФайла;

КонецФункции // Прочитать

#КонецОбласти
24 changes: 7 additions & 17 deletions tests/HttpBin_API_test.os
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#Использовать "../src/core"

Перем HttpBin; // HttpBin
Перем СервисЗапущен;

&ТестовыйНабор(Характер = "Одиночка")
Процедура ПриСозданииОбъекта()
Expand All @@ -16,15 +15,13 @@

&ПередВсеми
Процедура ПередЗапускомТестов() Экспорт

СервисЗапущен = Ложь;

УстановитьПеременнуюСреды("HTTPBIN_IS_TEST_MODE", "true");

HttpBin = Новый HttpBin();
HttpBin.Запустить();

СервисЗапущен = Истина;

Если HttpBin = Неопределено Или Не HttpBin.Активен() Тогда
УстановитьПеременнуюСреды("HTTPBIN_TESTING_MODE", "true");

HttpBin = Новый HttpBin();
HttpBin.Запустить();
КонецЕсли;

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

Expand All @@ -33,13 +30,6 @@
HttpBin.Остановить();
КонецПроцедуры

&ПередКаждым
Процедура ПередЗапускомТеста() Экспорт
Если Не СервисЗапущен Тогда
ВызватьИсключение "Сервис не запущен";
КонецЕсли;
КонецПроцедуры

&Тест
Процедура Должен_ПроверитьТочкуМаршрута_Html() Экспорт

Expand Down
1 change: 1 addition & 0 deletions tests/oscript.cfg
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
lib.system=../oscript_modules
Loading