Так как это для CI, временный обходной путь был необходим.Наша сборка сначала запускает тест gating, чтобы убедиться, что сеть работает без проблем.Каждый раз, когда начинаются наши тесты, эмулятор создается и тестируется на сетевое подключение.Тесты запускаются только в том случае, если сеть работает, в противном случае их перепланирование происходит на несколько минут позже (с новым экземпляром эмулятора).Хотя это не предотвращает проблему, оно предотвращает ложные сбои в нашей системе непрерывной интеграции.
Я проверяю, работает ли сеть, с помощью небольшого скриптового сценария, который выполняется как отдельное задание:
String status=
['sh', '-c', 'adb shell dumpstate | grep -m1 \"Mobile data state: \"'].execute().text.trim();
if (status=="Mobile data state: CONNECTED") {
System.exit(0);
} else {
System.exit(1);
}
Потенциально растрачивая ресурсы, она превосходит альтернативу периодических сообщений об ошибках.