Open ADsty opened 2 months ago
Исправил первые 4 пункта, в т.ч. немного поправил внутреннюю логику для непосредственного покрытия ТЗ
По поводу пункта 5 - как я заметил это особенность непосредственно connectivity manager от самих гугл, он пытается одними и теми же данными отправить к себе и в конце немного округляет результат для кб/с, от чего падает незначительно чувствительность, данную особенность с уже существующим классом не исправить и я бы наверное просто в таком случае повторил реализацию как в libreSpeed с созданием сервера для проверки на том же ktor, чтобы иметь высокую совместимость с уже существующим кодом, благо архитектурный подход в решении ТЗ это может позволить сделать путём замены одного класса
Пункты 1-4 поправлены, касательно пункта 5: Проблема вашей реализации в том, что вы не измеряете реальную скорость соединения. Вы используете методы для получения пропускной способности канала, по которому в данный момент осуществляется подключение, что собственно и написано в документации к методу .linkDownstreamBandwidthKbps. Подумайте каков процесс проведения проверки скорости соединения, и опишите ваш алгоритм замера (просто поэтапно в свободной форме), без ссылок на сторонние реализации, не описывая процесс (например: «буду измерять также, как сделано у них»)
Чтобы реализовать непосредственно проверку скорости, как я и описал выше, можно подготовить сервер, который на входящий запрос о начале тестирования сгенерирует тестовый файл определённого размера(например 10 мбайт). Со стороны приложения-клиента, в ссобственной реализации, можно получать, используя данные от http-клиента(будь то например okhttp), размер переданных значений и высчитывать непосредственно время, за которое пришёл блок данных. При подобной реализации получение данных будет сводиться к вычислению следующего вида: Текущая скорость загрузки = Размер части данных / Время чтения части данных.
Далее получение среднего значения уже не представляет сложности. Более того, как и описал выше, подобную реализацию можно уже добавить в приложение, благо используемые архитектурные подходы позволяют реализовать это путём замены соответствующего класса на описанную выше реализацию.
Подойдет ли под Ваш алгоритм ftp-сервер? Мы можем предоставить его на время разработки алгоритма
Да, должен будет подойти для алгоритма
Отправил Вам на почту креды от сервера, воспользуйтесь ими для реализации алгоритма
Добрый день, во время проверки Вашего тестового задания обнаружилось несколько проблем, которые следует устранить:
Пункты 1-4 обязательно нужно исправить, для пункта 5 можно предложить алгоритм, как бы Вы замеряли скорость иначе.