Commit 3e695c84 authored by Alberto Miranda's avatar Alberto Miranda ♨️
Browse files

Merge branch 'amiranda/91-c-api-functions-should-not-return-error-codes' into 'main'

Resolve "C++ API functions should not return error codes"

Closes #91

See merge request !66
parents e253e582 a7113305
Loading
Loading
Loading
Loading
Loading
+33 −4
Original line number Diff line number Diff line
@@ -24,7 +24,12 @@

#include <fmt/format.h>
#include <admire.hpp>
#include "common.hpp"

#define NJOB_NODES   50
#define NADHOC_NODES 25
#define NINPUTS      10
#define NOUTPUTS     5

int
main(int argc, char* argv[]) {
@@ -37,16 +42,40 @@ main(int argc, char* argv[]) {

    admire::server server{"tcp", argv[1]};

    admire::job job{42, 42};
    const auto job_nodes = prepare_nodes(NJOB_NODES);
    const auto adhoc_nodes = prepare_nodes(NADHOC_NODES);
    const auto inputs = prepare_datasets("input-dataset-{}", NINPUTS);
    const auto outputs = prepare_datasets("output-dataset-{}", NOUTPUTS);

    std::string name = "adhoc_storage_42";
    const auto adhoc_storage_ctx = admire::adhoc_storage::ctx{
            admire::adhoc_storage::execution_mode::separate_new,
            admire::adhoc_storage::access_type::read_write,
            admire::adhoc_storage::resources{adhoc_nodes}, 100, false};

    try {
        [[maybe_unused]] const auto ret = admire::remove_job(server, job);

        const auto adhoc_storage = admire::register_adhoc_storage(
                server, name, admire::storage::type::gekkofs,
                adhoc_storage_ctx);

        admire::job_requirements reqs(inputs, outputs, adhoc_storage);

        [[maybe_unused]] const auto job = admire::register_job(
                server, admire::job::resources{job_nodes}, reqs, 0);

        // do something with job

        fmt::print(stdout, "ADM_register_job() remote procedure completed "
                           "successfully\n");

        admire::remove_job(server, job);

        fmt::print(stdout, "ADM_remove_job() remote procedure completed "
                           "successfully\n");
        exit(EXIT_SUCCESS);
    } catch(const std::exception& e) {
        fmt::print(stdout, "ADM_remove_job() remote procedure not completed "
                           "successfully\n");
        fmt::print(stderr, "FATAL: example failed: {}\n", e.what());
        exit(EXIT_FAILURE);
    }
}
+3 −10
Original line number Diff line number Diff line
@@ -63,22 +63,15 @@ main(int argc, char* argv[]) {
                server, name, admire::storage::type::gekkofs,
                adhoc_storage_ctx);

        const auto ret = admire::update_adhoc_storage(server, adhoc_storage,
        admire::update_adhoc_storage(server, adhoc_storage,
                                     new_adhoc_storage_ctx);

        if(!ret) {
            fmt::print(stderr, "FATAL: ADM_update_adhoc_storage() failed: {}\n",
                       ret.message());
            exit(EXIT_FAILURE);
        }

        fmt::print(stdout,
                   "ADM_update_adhoc_storage() remote procedure completed "
                   "successfully\n");
        exit(EXIT_SUCCESS);
    } catch(const std::exception& e) {
        fmt::print(stderr, "FATAL: ADM_register_adhoc_storage() failed: {}\n",
                   e.what());
        fmt::print(stderr, "FATAL: example failed: {}\n", e.what());
        exit(EXIT_FAILURE);
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -65,8 +65,7 @@ main(int argc, char* argv[]) {
        [[maybe_unused]] const auto job = admire::register_job(
                server, admire::job::resources{job_nodes}, reqs, 0);

        [[maybe_unused]] ADM_return_t ret = admire::update_job(
                server, job, admire::job::resources{new_job_nodes});
        admire::update_job(server, job, admire::job::resources{new_job_nodes});

        fmt::print(
                stdout,
+32 −8
Original line number Diff line number Diff line
@@ -221,15 +221,27 @@ register_job(const server& srv, const job::resources& resources,
    return rv.value();
}

admire::error_code
void
update_job(const server& srv, const job& job,
           const job::resources& job_resources) {
    return detail::update_job(srv, job, job_resources);

    const auto ec = detail::update_job(srv, job, job_resources);

    if(!ec) {
        throw std::runtime_error(
                fmt::format("ADM_update_job() error: {}", ec.message()));
    }
}

admire::error_code
void
remove_job(const server& srv, const job& job) {
    return detail::remove_job(srv, job);

    const auto ec = detail::remove_job(srv, job);

    if(!ec) {
        throw std::runtime_error(
                fmt::format("ADM_remove_job() error: {}", ec.message()));
    }
}

admire::adhoc_storage
@@ -248,15 +260,27 @@ register_adhoc_storage(const server& srv, const std::string& name,
    return rv.value();
}

admire::error_code
void
update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
                     const adhoc_storage::ctx& adhoc_storage_ctx) {
    return detail::update_adhoc_storage(srv, adhoc_storage_ctx, adhoc_storage);
    const auto ec =
            detail::update_adhoc_storage(srv, adhoc_storage_ctx, adhoc_storage);

    if(!ec) {
        throw std::runtime_error(fmt::format(
                "ADM_update_adhoc_storage() error: {}", ec.message()));
    }
}

admire::error_code
void
remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage) {
    return detail::remove_adhoc_storage(srv, adhoc_storage);

    const auto ec = detail::remove_adhoc_storage(srv, adhoc_storage);

    if(!ec) {
        throw std::runtime_error(fmt::format(
                "ADM_remove_adhoc_storage() error: {}", ec.message()));
    }
}

ADM_return_t
+4 −4
Original line number Diff line number Diff line
@@ -51,10 +51,10 @@ admire::job
register_job(const server& srv, const job::resources& job_resources,
             const job_requirements& reqs, admire::slurm_job_id slurm_id);

admire::error_code
void
update_job(const server& srv, const job&, const job::resources& job_resources);

admire::error_code
void
remove_job(const server& srv, const job& job);

admire::adhoc_storage
@@ -62,11 +62,11 @@ register_adhoc_storage(const server& srv, const std::string& name,
                       enum adhoc_storage::type type,
                       const adhoc_storage::ctx& ctx);

admire::error_code
void
update_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage,
                     const adhoc_storage::ctx& adhoc_storage_ctx);

admire::error_code
void
remove_adhoc_storage(const server& srv, const adhoc_storage& adhoc_storage);

ADM_return_t
Loading