Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование микросервисов на Spring Boot / 20 сообщений из 20, страница 1 из 1
18.10.2018, 09:22
    #39719197
springy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
Подскажите, plz, как в один тест завязать несколько микросервисов.
Исходные данные:
1) Есть несколько микросервисов на Spring Boot оформленные на maven.
2) По бизнес-логике сервисы завязаны на друг-друге(дергают друг-друга)
3) Отдельно протестировать (написать интеграционные тесты) отдельный микросервис не проблема.
4) Можно написать заглушки для имитации других сервисов, такой вариант я в простых ситуациях использую. Но тут слишком много завязано.
5) Хотелось бы вариант, когда указываешь, какие сервисы поднимать, какие aplication.yml подсовывать. И запуск тестов после подъема всех сервисов.

Подскажите куда можно посмотреть?
...
Рейтинг: 0 / 0
18.10.2018, 10:02
    #39719220
сезонатор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
springyПодскажите куда можно посмотреть?docker-compose
...
Рейтинг: 0 / 0
18.10.2018, 10:21
    #39719238
springy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
docker вещь неплохая.
Можно написать скрипт, который перед тестом будет собирать image, подсовывать туда jar, прописывать порты и где-то поднимать контейнер с этим добром.
Проблема в том, что это банк, нет даже локального администратора и поставить виртуалку нет возможности.
Можно попробовать покляньчить доступ к серверу, где можно развернуть контейнер с докером, но это малоперспективно.

Хотелось бы попробовать обойтись явой и какими-нибудь библиотеками.
...
Рейтинг: 0 / 0
18.10.2018, 10:25
    #39719240
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
springyнет даже локального администраторатогда им нужен монолит))))
...
Рейтинг: 0 / 0
18.10.2018, 10:28
    #39719243
aeugen
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
Я, в свое время, хотел разобраться с цитрусом , но так времени и не хватило....
...
Рейтинг: 0 / 0
18.10.2018, 10:28
    #39719244
сезонатор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
springyХотелось бы попробовать обойтись явой и какими-нибудь библиотеками. https://habr.com/company/jugru/blog/343298/
...
Рейтинг: 0 / 0
18.10.2018, 10:51
    #39719260
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
сезонаторspringyПодскажите куда можно посмотреть?docker-composeесть мнение, что докером нужно пользоваться только когда уже совсем невмоготу (на например в CI запускать пару десятков сборок одновременно), а изначально сам ЖЦ мэйвена должен работать прозрачно без каких-либо костылей в виде докера, в противном случае поддерживать комбайны крайне затруднительно (накрапать нетленку-то не сложно, а вот когда другому разработчику придется отладиться у себя, вот тогда наступает грусть и печаль). В целом для генерации конфигов и рассовывания их куда нужно вполне достаточно двух плагинов: maven resources и maven dependency.
...
Рейтинг: 0 / 0
18.10.2018, 12:15
    #39719292
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
как раз сейчас сталкиваюсь с аналогичной проблемой. как эту трихамудь отлаживать целиком - непонятно. да, думаю, наверное и не надо. для этих целей есть монолит.
...
Рейтинг: 0 / 0
18.10.2018, 13:13
    #39719340
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
Андрей Панфиловсезонаторпропущено...
docker-composeесть мнение, что докером нужно пользоваться только когда уже совсем невмоготу (на например в CI запускать пару десятков сборок одновременно), а изначально сам ЖЦ мэйвена должен работать прозрачно без каких-либо костылей в виде докера, в противном случае поддерживать комбайны крайне затруднительно (накрапать нетленку-то не сложно, а вот когда другому разработчику придется отладиться у себя, вот тогда наступает грусть и печаль). В целом для генерации конфигов и рассовывания их куда нужно вполне достаточно двух плагинов: maven resources и maven dependency.
у тебя с десяток микросервисов. как их адекватно развернуть без докера? ну.. можно не спорю. но несколько неудобно.
...
Рейтинг: 0 / 0
18.10.2018, 13:37
    #39719359
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
andreykaTкак их адекватно развернуть без докера?не мельчить при микро)
...
Рейтинг: 0 / 0
18.10.2018, 13:58
    #39719376
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
andreykaTу тебя с десяток микросервисов. как их адекватно развернуть без докера? ну.. можно не спорю. но несколько неудобно.Вообще проблемы нет никакой, и не нужно преклоняться перед докером, единственный его профит в обсуждаемом вопросе - это то, что в сервисе мы можем захардкодить эндпойнты как service_name:default_port, а изоляцию портов и разрешение имен отдать на откуп докеру (пусть контейнеры с --link запускает), однако:
никто не мешает генерировать конфиги сервисов через maven resources plugin и раскидывать конфиги через maven dependency plugin

это может быть конечно сюрпризом, но tcp-портов с одним и тем же номером на машине аж 16 миллионов, так что даже здесь мудрить особо-то и не нужно:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
[user@localhost ~]$ nc -l 127.0.0.1 9000
^Z
[1]+  Stopped                 nc -l 127.0.0.1 9000
[user@localhost ~]$ nc -l 127.0.0.2 9000
^Z
[2]+  Stopped                 nc -l 127.0.0.2 9000
[user@localhost ~]$ nc -l 127.0.0.3 9000
^Z
[3]+  Stopped                 nc -l 127.0.0.3 9000
...
Рейтинг: 0 / 0
18.10.2018, 14:42
    #39719407
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
хахаха. да. лол. а ведь прав на 143% ))
...
Рейтинг: 0 / 0
18.10.2018, 17:22
    #39719514
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
с докером просто еще что удобно тебе какие то там всякие разные конфигурации стандартных инструментов проще держать в нем нежели каждый раз конфигурировать локально что то выдумывать или сочинять.

типа вот у меня проект, там пайплайн из кучи сервисов, помимо этого для них надо тут кафку там касандру здесь постгрес там монгу с того края редис и прочую требшатину, и всё это ты такой значит сидишь и на своем локальном хосте поднимаешь и дружишь. чем проще в докере докер-композ блаблабла ямл ап и вперёд. где угодно как угодно и на чем угодно.

впрочем, тут конечно же вопрос предпочтения и кому как удобно.
...
Рейтинг: 0 / 0
18.10.2018, 18:38
    #39719551
Андрей Панфилов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
andreykaT,

мне откровенно не нравится базовая концепция того, что контейнер нужно настоятельно рекомендуется запускать с --rm и, соответственно, никакие данные в нем не держать, как только начинаешь нарушать эту концепцию ("там всякие разные конфигурации стандартных инструментов"), то сразу всплывают всякого рода грабли, а именно:
- среда в контейнере не особо полноценная: помимо того что туда инструментарий нужный не ставят еще умудряются запихивать порезанный alpine linux - так что в большинстве случаев приходится самому все собирать, последний трешак, который наблюдал: в официальным образе Oracle EE не включена partitioning option - хотите включить? собирайте образ сами, ибо $ORACLE_HOME тоже порезанный
- тема про volumes понятна, но выглядит несколько неэстетично: контейнеры где-то сами по себе, данные сами по себе, а потом пойди и угадай что от чего и нужно оно вообще или нет - с виртуальными машинами порядка больше (ровно как и в первой претензии)
- сетевой стэк сделан неудобно для рядового пользователя (хотите чтобы контейнеры были доступны по сети без порт маппинга? добро пожаловать в ад), а где-то даже и глючно (вот оно вставляет в iptables правила, основанные на connection tracking, а потом удивляешься почему долгоживущие коннекты начинают рваться)
- управление ресурсами тоже так себе, т.е. контейнер-то мы можем ограничить по памяти и CPU, однако софтина, которая в нем крутится видит все ресурсы хоста, из-за чего принимает неверные решения для себя, ну самый простой пример - java, там умолчательный размер кучи и количество потоков GC определяются на основе хоста, поэтому приходится перенастраивать всегда
- что еще удивляет: оно почему-то внутри себя overlayfs умеет, а снаружи нет, вот условно хочу в докере mvn запускать и чтобы оно не тупило постоянно на скачивании артефактов, что делать? нужно хостовый ~/.m2 подключать, а что делать если я еще не хочу чтобы оно в хостовый ~/.m2 гадило? контейнер переделывать и постоянно в нем ~/.m2 обновлять.

По вполне объективным причинам оказалось гораздо удобнее купить нормальный десктоп и гонять в нем vmware, чем постоянно бороться с неудобствами докера. Меж тем:
- существование докера в продакшене - вполне нормальная концепция, однако при условии что для этого продакшена мы в итоге собираем готовые образы, а не так, что сборка и тестирование живет само по себе без докера, а в продакшн какие-то умельцы что-то там закатывают в докер
- использование докера в CI/CD тоже нормальная концепция (особенно если мы хотит чтобы злодеи нам какой-нить rm -rf / не закоммитили), но это не значит что вот нужно все бросать и начинать делать сборки в докере: сборка должна и без докера правильно работать
...
Рейтинг: 0 / 0
18.10.2018, 19:19
    #39719563
Petro123
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
Андрей Панфилов,
А есть контейнер или докер чтобы внутри оракле и поставить на дебиан хостинг?
...
Рейтинг: 0 / 0
19.10.2018, 04:19
    #39719634
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
andreykaTАндрей Панфиловпропущено...
есть мнение, что докером нужно пользоваться только когда уже совсем невмоготу (на например в CI запускать пару десятков сборок одновременно), а изначально сам ЖЦ мэйвена должен работать прозрачно без каких-либо костылей в виде докера, в противном случае поддерживать комбайны крайне затруднительно (накрапать нетленку-то не сложно, а вот когда другому разработчику придется отладиться у себя, вот тогда наступает грусть и печаль). В целом для генерации конфигов и рассовывания их куда нужно вполне достаточно двух плагинов: maven resources и maven dependency.
у тебя с десяток микросервисов. как их адекватно развернуть без докера? ну.. можно не спорю. но несколько неудобно.

Если это спринг бут то обычным скриптом по разным портам.
...
Рейтинг: 0 / 0
19.10.2018, 10:10
    #39719725
сезонатор
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
SergunkaandreykaTпропущено...

у тебя с десяток микросервисов. как их адекватно развернуть без докера? ну.. можно не спорю. но несколько неудобно.

Если это спринг бут то обычным скриптом по разным портам.Как быть, если одному из сервисов нужен redis и postgresql?
...
Рейтинг: 0 / 0
19.10.2018, 14:14
    #39719967
andreykaT
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
и что? ) значит поставишь редис или постгрес на свой хост.
...
Рейтинг: 0 / 0
20.10.2018, 20:53
    #39720356
Sergunka
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
andreykaTи что? ) значит поставишь редис или постгрес на свой хост.

Можно еще попросить доброго гнома чтоб обслужил Никто не мешает юзать редис и постгрес на тестовом хосте и таскать через порт оттуда. Я собственно держу у себя на локальной машине редис, RabbitMQ, Kafka, Posgres, MySql, Oracle, Cassandra, MongoDB. Обычно механизм простой вытаскиваешь image, а сейчас еще проще docker и запускаешь по мере необходимости либо в виртуальном боксе либо в докере.

Я даже один из первых кто писанулся и поставил на Мак Cloud Foundry

https://vyatkins.wordpress.com/2015/02/13/how-to-deploy-cloud-foundry-on-your-local-machine/

Задача беспорно повышенного геморроя, но реально того стоит если хочется просто все вбубенить для счастиливой жизни добрых гномом и лесных эльфов
...
Рейтинг: 0 / 0
20.10.2018, 22:44
    #39720366
GregTk
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Тестирование микросервисов на Spring Boot
Вот такая штука есть https://github.com/testcontainers/testcontainers-java отлично решает вопросы интеграционного тестирования
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Тестирование микросервисов на Spring Boot / 20 сообщений из 20, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]