From e1e46f500617827f7c86b6932070174111d3f523 Mon Sep 17 00:00:00 2001 From: Michael Tremer Date: Thu, 11 Mar 2021 19:13:56 +0000 Subject: [PATCH] downloader: Add a simple test Signed-off-by: Michael Tremer --- .gitignore | 1 + Makefile.am | 24 ++++++++-- src/libpakfire/downloader.c | 15 +++++++ src/libpakfire/include/pakfire/downloader.h | 2 + tests/libpakfire/downloader.c | 50 +++++++++++++++++++++ 5 files changed, 88 insertions(+), 4 deletions(-) create mode 100644 tests/libpakfire/downloader.c diff --git a/.gitignore b/.gitignore index a559bbfc7..0f5720b63 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,7 @@ /tests/libpakfire/arch /tests/libpakfire/archive /tests/libpakfire/db +/tests/libpakfire/downloader /tests/libpakfire/execute /tests/libpakfire/key /tests/libpakfire/main diff --git a/Makefile.am b/Makefile.am index 801fa517f..dfb4368f0 100644 --- a/Makefile.am +++ b/Makefile.am @@ -367,6 +367,7 @@ check_PROGRAMS += \ tests/libpakfire/arch \ tests/libpakfire/archive \ tests/libpakfire/db \ + tests/libpakfire/downloader \ tests/libpakfire/execute \ tests/libpakfire/key \ tests/libpakfire/makefile \ @@ -416,6 +417,21 @@ tests_libpakfire_db_LDADD = \ $(TESTSUITE_LDADD) \ $(PAKFIRE_LIBS) +dist_tests_libpakfire_downloader_SOURCES = \ + tests/libpakfire/downloader.c \ + src/libpakfire/downloader.c \ + src/libpakfire/util.c + +tests_libpakfire_downloader_CPPFLAGS = \ + $(TESTSUITE_CPPFLAGS) \ + -DPAKFIRE_PRIVATE + +tests_libpakfire_downloader_LDADD = \ + $(TESTSUITE_LDADD) \ + $(CURL_LIBS) \ + $(PAKFIRE_LIBS) \ + $(UUID_LIBS) + tests_libpakfire_execute_SOURCES = \ tests/libpakfire/execute.c @@ -631,13 +647,13 @@ tests_libtestsuite_la_SOURCES = \ tests/testsuite.h tests_libtestsuite_la_CPPFLAGS = \ - $(TESTSUITE_CPPFLAGS) \ - -DABS_TOP_SRCDIR=\"$(abs_top_srcdir)\" \ - -DTEST_ROOTFS=\"$(TEST_ROOTFS)\" + $(TESTSUITE_CPPFLAGS) TESTSUITE_CPPFLAGS = \ $(AM_CPPFLAGS) \ - $(PAKFIRE_CPPFLAGS) + $(PAKFIRE_CPPFLAGS) \ + -DABS_TOP_SRCDIR=\"$(abs_top_srcdir)\" \ + -DTEST_ROOTFS=\"$(TEST_ROOTFS)\" TESTSUITE_LDADD = \ tests/libtestsuite.la diff --git a/src/libpakfire/downloader.c b/src/libpakfire/downloader.c index 7e455163e..f367a9392 100644 --- a/src/libpakfire/downloader.c +++ b/src/libpakfire/downloader.c @@ -334,6 +334,21 @@ static int pakfire_transfer_done(struct pakfire_downloader* downloader, return 0; } +int pakfire_downloader_retrieve(struct pakfire_downloader* downloader, + const char* url, const char* path) { + // Do not run this when there are transfers pending + if (!TAILQ_EMPTY(&downloader->transfers)) + return EBUSY; + + // Add the transfer + int r = pakfire_downloader_add(downloader, url, path); + if (r) + return r; + + // Run it + return pakfire_downloader_run(downloader); +} + int pakfire_downloader_add(struct pakfire_downloader* downloader, const char* url, const char* path) { DEBUG(downloader->pakfire, "Adding download of %s\n", url); diff --git a/src/libpakfire/include/pakfire/downloader.h b/src/libpakfire/include/pakfire/downloader.h index 75116dabe..6ad4e5097 100644 --- a/src/libpakfire/include/pakfire/downloader.h +++ b/src/libpakfire/include/pakfire/downloader.h @@ -38,6 +38,8 @@ void pakfire_downloader_set_baseurl(struct pakfire_downloader* downloader, const int pakfire_downloader_add_mirror(struct pakfire_downloader* downloader, const char* url, unsigned int priority); +int pakfire_downloader_retrieve(struct pakfire_downloader* downloader, + const char* url, const char* path); int pakfire_downloader_add(struct pakfire_downloader* downloader, const char* url, const char* path); diff --git a/tests/libpakfire/downloader.c b/tests/libpakfire/downloader.c new file mode 100644 index 000000000..745570c50 --- /dev/null +++ b/tests/libpakfire/downloader.c @@ -0,0 +1,50 @@ +/*############################################################################# +# # +# Pakfire - The IPFire package management system # +# Copyright (C) 2021 Pakfire development team # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY; without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see . # +# # +#############################################################################*/ + +#include + +#include "../testsuite.h" + +#define DOWNLOAD_URL "file://" ABS_TOP_SRCDIR "/tests/data/beep-1.3-2.ip3.x86_64.pfm" + +#define DOWNLOAD_PATH TEST_ROOTFS "/downloaded.file" + +static int test_simple(const struct test* t) { + struct pakfire_downloader* d; + + // Create downloader + int r = pakfire_downloader_create(&d, t->pakfire); + ASSERT(r == 0); + + // Retrieve a file + r = pakfire_downloader_retrieve(d, DOWNLOAD_URL, DOWNLOAD_PATH); + ASSERT(r == 0); + + // Cleanup + pakfire_downloader_unref(d); + + return EXIT_SUCCESS; +} + +int main(int argc, char** argv) { + testsuite_add_test(test_simple); + + return testsuite_run(); +} -- 2.47.2