mirror of
https://github.com/sunnypilot/sunnypilot.git
synced 2026-02-19 00:43:54 +08:00
test_replay: speedup by preventing multiple downloads (#29901)
* Demo route fixture
* fix tests
* demo route download
* remove iostream
old-commit-hash: 6666413626
This commit is contained in:
@@ -12,7 +12,7 @@
|
||||
const std::string TEST_RLOG_URL = "https://commadataci.blob.core.windows.net/openpilotci/0c94aa1e1296d7c6/2021-05-05--19-48-37/0/rlog.bz2";
|
||||
const std::string TEST_RLOG_CHECKSUM = "5b966d4bb21a100a8c4e59195faeb741b975ccbe268211765efd1763d892bfb3";
|
||||
|
||||
bool donload_to_file(const std::string &url, const std::string &local_file, int chunk_size = 5 * 1024 * 1024, int retries = 3) {
|
||||
bool download_to_file(const std::string &url, const std::string &local_file, int chunk_size = 5 * 1024 * 1024, int retries = 3) {
|
||||
do {
|
||||
if (httpDownload(url, local_file, chunk_size)) {
|
||||
return true;
|
||||
@@ -29,7 +29,7 @@ TEST_CASE("httpMultiPartDownload") {
|
||||
const size_t chunk_size = 5 * 1024 * 1024;
|
||||
std::string content;
|
||||
SECTION("download to file") {
|
||||
REQUIRE(donload_to_file(TEST_RLOG_URL, filename, chunk_size));
|
||||
REQUIRE(download_to_file(TEST_RLOG_URL, filename, chunk_size));
|
||||
content = util::read_file(filename);
|
||||
}
|
||||
SECTION("download to buffer") {
|
||||
@@ -110,23 +110,36 @@ void read_segment(int n, const SegmentFile &segment_file, uint32_t flags) {
|
||||
loop.exec();
|
||||
}
|
||||
|
||||
TEST_CASE("Route") {
|
||||
// Create a local route from remote for testing
|
||||
Route remote_route(DEMO_ROUTE);
|
||||
REQUIRE(remote_route.load());
|
||||
char tmp_path[] = "/tmp/root_XXXXXX";
|
||||
const std::string data_dir = mkdtemp(tmp_path);
|
||||
const std::string route_name = DEMO_ROUTE.mid(17).toStdString();
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
std::string log_path = util::string_format("%s/%s--%d/", data_dir.c_str(), route_name.c_str(), i);
|
||||
util::create_directories(log_path, 0755);
|
||||
REQUIRE(donload_to_file(remote_route.at(i).rlog.toStdString(), log_path + "rlog.bz2"));
|
||||
REQUIRE(donload_to_file(remote_route.at(i).road_cam.toStdString(), log_path + "fcamera.hevc"));
|
||||
REQUIRE(donload_to_file(remote_route.at(i).driver_cam.toStdString(), log_path + "dcamera.hevc"));
|
||||
REQUIRE(donload_to_file(remote_route.at(i).wide_road_cam.toStdString(), log_path + "ecamera.hevc"));
|
||||
REQUIRE(donload_to_file(remote_route.at(i).qcamera.toStdString(), log_path + "qcamera.ts"));
|
||||
std::string download_demo_route() {
|
||||
static std::string data_dir;
|
||||
|
||||
if (data_dir == "") {
|
||||
char tmp_path[] = "/tmp/root_XXXXXX";
|
||||
data_dir = mkdtemp(tmp_path);
|
||||
|
||||
Route remote_route(DEMO_ROUTE);
|
||||
assert(remote_route.load());
|
||||
|
||||
// Create a local route from remote for testing
|
||||
const std::string route_name = DEMO_ROUTE.mid(17).toStdString();
|
||||
for (int i = 0; i < 2; ++i) {
|
||||
std::string log_path = util::string_format("%s/%s--%d/", data_dir.c_str(), route_name.c_str(), i);
|
||||
util::create_directories(log_path, 0755);
|
||||
REQUIRE(download_to_file(remote_route.at(i).rlog.toStdString(), log_path + "rlog.bz2"));
|
||||
REQUIRE(download_to_file(remote_route.at(i).road_cam.toStdString(), log_path + "fcamera.hevc"));
|
||||
REQUIRE(download_to_file(remote_route.at(i).driver_cam.toStdString(), log_path + "dcamera.hevc"));
|
||||
REQUIRE(download_to_file(remote_route.at(i).wide_road_cam.toStdString(), log_path + "ecamera.hevc"));
|
||||
REQUIRE(download_to_file(remote_route.at(i).qcamera.toStdString(), log_path + "qcamera.ts"));
|
||||
}
|
||||
}
|
||||
|
||||
return data_dir;
|
||||
}
|
||||
|
||||
|
||||
TEST_CASE("Route") {
|
||||
std::string data_dir = download_demo_route();
|
||||
|
||||
SECTION("Local route") {
|
||||
auto flags = GENERATE(REPLAY_FLAG_DCAM | REPLAY_FLAG_ECAM, REPLAY_FLAG_QCAMERA);
|
||||
Route route(DEMO_ROUTE, QString::fromStdString(data_dir));
|
||||
|
||||
Reference in New Issue
Block a user