• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

mavlink / MAVSDK / 15862163887

24 Jun 2025 09:44PM UTC coverage: 44.907% (+0.5%) from 44.374%
15862163887

push

github

web-flow
Merge pull request #2599 from mavlink/pr-unit-tests-fixup

Unit tests fixup

76 of 95 new or added lines in 5 files covered. (80.0%)

14 existing lines in 6 files now uncovered.

15197 of 33841 relevant lines covered (44.91%)

129286.15 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

64.91
/src/mavsdk/core/http_loader.cpp
1
#include "http_loader.h"
2
#include "curl_wrapper.h"
3
#include "overloaded.h"
4

5
namespace mavsdk {
6

7
HttpLoader::HttpLoader() : _curl_wrapper(std::make_unique<CurlWrapper>(CurlWrapper()))
86✔
8
{
9
    start();
86✔
10
}
86✔
11

12
HttpLoader::~HttpLoader()
88✔
13
{
14
    stop();
88✔
15
}
88✔
16

17
void HttpLoader::start()
88✔
18
{
19
    _should_exit = false;
88✔
20
    _work_thread = std::thread{&HttpLoader::work_thread, this};
88✔
21
}
88✔
22

23
void HttpLoader::stop()
88✔
24
{
25
    _should_exit = true;
88✔
26
    if (_work_thread.joinable()) {
88✔
27
        _work_thread.join();
88✔
28
    }
29
}
88✔
30

31
bool HttpLoader::download_sync(const std::string& url, const std::string& local_path)
×
32
{
NEW
33
    WorkItem item = DownloadItem{url, local_path, nullptr};
×
NEW
34
    bool success = do_item(item);
×
35
    return success;
×
36
}
×
37

38
void HttpLoader::download_async(
6✔
39
    const std::string& url, const std::string& local_path, ProgressCallback progress_callback)
40
{
41
    _work_queue.push_back(
12✔
42
        std::make_shared<WorkItem>(DownloadItem{url, local_path, progress_callback}));
12✔
43
}
6✔
44

NEW
45
void HttpLoader::download_text_async(const std::string& url, TextDownloadCallback text_callback)
×
46
{
NEW
47
    _work_queue.push_back(std::make_shared<WorkItem>(DownloadTextItem{url, text_callback}));
×
NEW
48
}
×
49

50
void HttpLoader::work_thread()
88✔
51
{
52
    while (!_should_exit) {
328,684,863✔
53
        LockedQueue<WorkItem>::Guard work_queue_guard(_work_queue);
318,606,511✔
54

55
        auto work = work_queue_guard.get_front();
312,847,783✔
56

57
        if (!work) {
308,409,847✔
58
            continue;
307,896,328✔
59
        }
60

61
        do_item(*work);
6✔
62
        work_queue_guard.pop_front();
6✔
63
    }
615,817,636✔
64
}
65

66
bool HttpLoader::do_item(WorkItem& item)
6✔
67
{
68
    return std::visit(
6✔
69
        overloaded{
12✔
70
            [&](DownloadItem& download_item) { return do_download(download_item); },
6✔
NEW
71
            [&](DownloadTextItem& download_text_item) {
×
NEW
72
                return do_download_text(download_text_item);
×
73
            },
74
        },
75
        item);
6✔
76
}
77

78
bool HttpLoader::do_download(const DownloadItem& item)
6✔
79
{
80
    bool success = _curl_wrapper->download_file_to_path(
12✔
81
        item.get_url(), item.get_local_path(), item.get_progress_callback());
12✔
82
    return success;
6✔
83
}
84

NEW
85
bool HttpLoader::do_download_text(const DownloadTextItem& item)
×
86
{
NEW
87
    std::string content;
×
NEW
88
    bool success = _curl_wrapper->download_text(item.get_url(), content);
×
89

NEW
90
    if (item.get_text_callback()) {
×
NEW
91
        item.get_text_callback()(success, content);
×
92
    }
93

UNCOV
94
    return success;
×
UNCOV
95
}
×
96

97
bool HttpLoader::download_text_sync(const std::string& url, std::string& content)
×
98
{
99
    bool success = _curl_wrapper->download_text(url, content);
×
100
    return success;
×
101
}
102

103
} // namespace mavsdk
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc