#java #linux #azure #docker #azure-cosmosdb
Вопрос:
Я запускаю эмулятор Linux cosmos со следующими конфигурациями (в соответствии с официальной документацией Microsoft) на Ubuntu 20.04.3 ( я также пробовал 18.04)
ipaddr="`ifconfig | grep "inet " | grep -Fv 127.0.0.1 | awk '{print $2}' | head -n 1`"
sudo docker pull mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
sudo docker run -d -p 8081:8081 -p 10251:10251 -p 10252:10252 -p 10253:10253 -p 10254:10254 -m 4g --cpus=2.0 --name=test-linux-emulator -e AZURE_COSMOS_EMULATOR_PARTITION_COUNT=10 -e AZURE_COSMOS_EMULATOR_ENABLE_DATA_PERSISTENCE=true -e AZURE_COSMOS_EMULATOR_IP_ADDRESS_OVERRIDE=$ipaddr mcr.microsoft.com/cosmosdb/linux/azure-cosmos-emulator
Также добавление сертификата в хранилище ключей Java в соответствии с официальным документом.
что я делаю? Я запускаю модульное тестирование, подключаясь к эмулятору простой работы с CRUD с помощью 1 или 2 элементов atmost. Каждый тест создаст контейнер и удалит его. Конфигурация моей машины-4 ядра и 16 ГБ памяти. Я запускаю Junit в весенней загрузке.
Что происходит? Спорадически случаи модульного тестирования завершаются сбоем с таймаутом чтения или ошибкой недоступности службы. Я заметил в пользовательском интерфейсе эмулятора, что базы данных иногда исчезают, но эмулятор всегда работает и работает.
Примечание: То же самое работает нормально, когда я запускаю эмулятор cosmos DB в Windows 10 (как exe, так и в качестве контейнера docker).
Вопросы:
- В чем может быть проблема при работе с Linux ?
- Можно ли удалить контейнер cosmos(таблицу) и создать заново для каждого тестового случая?
Мы высоко ценим любое предложение по этому вопросу.
Ответ №1:
- В чем может быть проблема при работе с Linux?
Ответ: Не должно быть никаких проблем с запуском эмулятора Cosmos (Linux) в Linux. Заразить это может быть очень удобно, так как оба они относятся к одной и той же ОС.
- Можно ли удалить контейнер и создать его заново для каждого тестового случая?
Ответ: Похоже, это не подходит для удаления и создания контейнера для каждого тестового случая.
Я бы посоветовал вам использовать один и тот же контейнер для всего модульного тестирования, если вы все еще хотите выполнить то же самое, обязательно остановите контейнер перед его удалением, потому что прямое удаление контейнера может привести к тому, что демон docker выдаст ошибку. Сначала мы должны остановить контейнер и удалить его.
Ссылка: https://k21academy.com/docker-kubernetes/docker-container-lifecycle-management/
Комментарии:
1. Вы имеете в виду контейнер cosmos DB (таблицы) ? Для ясности я обновил контейнер cosmos DB в вопросе.
2. приведенный выше ответ является общим и для всех типов контейнеров.
3. Извините, я думаю, небольшое недоразумение.. в cosmos DB таблицы называются контейнерами для sql. Поэтому я имею в виду таблицы (контейнеры) внутри Cosmos DB.
4. Могу я узнать, какова конфигурация вашей оконной машины, на которой она работает нормально ?
5. Конфигурация машины с Windows такая же.. 4 ядра и 16 ГБ памяти