#include #include #include #include "catch2/catch.hpp" #include "selfdrive/common/util.h" #include "selfdrive/ui/replay/framereader.h" #include "selfdrive/ui/replay/route.h" const char *stream_url = "https://commadataci.blob.core.windows.net/openpilotci/0c94aa1e1296d7c6/2021-05-05--19-48-37/0/fcamera.hevc"; // TEST_CASE("FrameReader") { // SECTION("process&get") { // FrameReader fr; // REQUIRE(fr.load(stream_url) == true); // REQUIRE(fr.valid() == true); // REQUIRE(fr.getFrameCount() == 1200); // // random get 50 frames // // srand(time(NULL)); // // for (int i = 0; i < 50; ++i) { // // int idx = rand() % (fr.getFrameCount() - 1); // // REQUIRE(fr.get(idx) != nullptr); // // } // // sequence get 50 frames { // for (int i = 0; i < 50; ++i) { // REQUIRE(fr.get(i) != nullptr); // } // } // } std::string sha_256(const QString &dat) { return QString(QCryptographicHash::hash(dat.toUtf8(), QCryptographicHash::Sha256).toHex()).toStdString(); } TEST_CASE("httpMultiPartDownload") { char filename[] = "/tmp/XXXXXX"; int fd = mkstemp(filename); REQUIRE(fd != -1); close(fd); SECTION("http 200") { REQUIRE(httpMultiPartDownload(stream_url, filename, 5)); std::string content = util::read_file(filename); REQUIRE(content.size() == 37495242); std::string checksum = sha_256(QString::fromStdString(content)); REQUIRE(checksum == "d8ff81560ce7ed6f16d5fb5a6d6dd13aba06c8080c62cfe768327914318744c4"); } SECTION("http 404") { REQUIRE(httpMultiPartDownload(util::string_format("%s_abc", stream_url), filename, 5) == false); } }