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

Merge branch...

Merge branch 'amanzano/36-refactor-library-rpc-implementation-of-admire-register_adhoc_storage' into 'main'

Resolve "Refactor library RPC implementation of `admire::register_adhoc_storage`"

This MR moves the implementation of the RPC construction to `admire::detail` in `impl.[ch]pp` similarly to other RPCs already refactored. This includes changing the C ADM_types to native C++ types.

Closes #36

See merge request !26
parents e749cd7a 5c9f1805
Loading
Loading
Loading
Loading
Loading
+25 −2
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@
#include <stdio.h>
#include <admire.h>
#include <assert.h>
#include "common.h"

#define NINPUTS  10
#define NOUTPUTS 5

int
main(int argc, char* argv[]) {
@@ -39,6 +43,12 @@ main(int argc, char* argv[]) {
    int exit_status = EXIT_SUCCESS;
    ADM_server_t server = ADM_server_create("tcp", argv[1]);

    ADM_job_t job;
    ADM_dataset_t* inputs = prepare_datasets("input-dataset-%d", NINPUTS);
    assert(inputs);
    ADM_dataset_t* outputs = prepare_datasets("output-dataset-%d", NOUTPUTS);
    assert(outputs);

    ADM_adhoc_context_t ctx = ADM_adhoc_context_create(
            ADM_ADHOC_MODE_SEPARATE_NEW, ADM_ADHOC_ACCESS_RDWR, 42, 100, false);
    assert(ctx);
@@ -46,9 +56,22 @@ main(int argc, char* argv[]) {
    ADM_storage_t st = ADM_storage_create("foobar", ADM_STORAGE_GEKKOFS, ctx);
    assert(st);

    ADM_storage_t adhoc_storage;
    ADM_job_requirements_t reqs =
            ADM_job_requirements_create(inputs, NINPUTS, outputs, NOUTPUTS, st);
    assert(reqs);

    ADM_return_t ret = ADM_register_adhoc_storage(server, ctx, &adhoc_storage);
    ADM_return_t ret = ADM_register_job(server, reqs, &job);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_register_job() remote procedure not completed "
                        "successfully\n");
        exit_status = EXIT_FAILURE;
    }

    const char* user_id = "adhoc_storage_42";

    ADM_storage_t adhoc_storage;
    ret = ADM_register_adhoc_storage(server, job, user_id, ctx, &adhoc_storage);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout,
+12 −2
Original line number Diff line number Diff line
@@ -43,6 +43,7 @@ main(int argc, char* argv[]) {
    int exit_status = EXIT_SUCCESS;
    ADM_server_t server = ADM_server_create("tcp", argv[1]);

    ADM_job_t job;
    ADM_dataset_t* inputs = prepare_datasets("input-dataset-%d", NINPUTS);
    assert(inputs);
    ADM_dataset_t* outputs = prepare_datasets("output-dataset-%d", NOUTPUTS);
@@ -59,9 +60,18 @@ main(int argc, char* argv[]) {
            ADM_job_requirements_create(inputs, NINPUTS, outputs, NOUTPUTS, st);
    assert(reqs);

    ADM_storage_t adhoc_storage;
    ADM_return_t ret = ADM_register_job(server, reqs, &job);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_register_job() remote procedure not completed "
                        "successfully\n");
        exit_status = EXIT_FAILURE;
    }

    ADM_return_t ret = ADM_register_adhoc_storage(server, ctx, &adhoc_storage);
    const char* user_id = "adhoc_storage_42";

    ADM_storage_t adhoc_storage;
    ret = ADM_register_adhoc_storage(server, job, user_id, ctx, &adhoc_storage);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout,
+25 −1
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@
#include <stdio.h>
#include <admire.h>
#include <assert.h>
#include "common.h"

#define NINPUTS  10
#define NOUTPUTS 5

int
main(int argc, char* argv[]) {
@@ -39,6 +43,12 @@ main(int argc, char* argv[]) {
    int exit_status = EXIT_SUCCESS;
    ADM_server_t server = ADM_server_create("tcp", argv[1]);

    ADM_job_t job;
    ADM_dataset_t* inputs = prepare_datasets("input-dataset-%d", NINPUTS);
    assert(inputs);
    ADM_dataset_t* outputs = prepare_datasets("output-dataset-%d", NOUTPUTS);
    assert(outputs);

    ADM_adhoc_context_t ctx = ADM_adhoc_context_create(
            ADM_ADHOC_MODE_SEPARATE_NEW, ADM_ADHOC_ACCESS_RDWR, 42, 100, false);
    assert(ctx);
@@ -46,8 +56,22 @@ main(int argc, char* argv[]) {
    ADM_storage_t st = ADM_storage_create("foobar", ADM_STORAGE_GEKKOFS, ctx);
    assert(st);

    ADM_job_requirements_t reqs =
            ADM_job_requirements_create(inputs, NINPUTS, outputs, NOUTPUTS, st);
    assert(reqs);

    ADM_return_t ret = ADM_register_job(server, reqs, &job);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_register_job() remote procedure not completed "
                        "successfully\n");
        exit_status = EXIT_FAILURE;
    }

    const char* user_id = "adhoc_storage_42";

    ADM_storage_t adhoc_storage;
    ADM_return_t ret = ADM_register_adhoc_storage(server, ctx, &adhoc_storage);
    ret = ADM_register_adhoc_storage(server, job, user_id, ctx, &adhoc_storage);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout,
+26 −1
Original line number Diff line number Diff line
@@ -26,6 +26,10 @@
#include <stdio.h>
#include <admire.h>
#include <assert.h>
#include "common.h"

#define NINPUTS  10
#define NOUTPUTS 5

int
main(int argc, char* argv[]) {
@@ -39,6 +43,12 @@ main(int argc, char* argv[]) {
    int exit_status = EXIT_SUCCESS;
    ADM_server_t server = ADM_server_create("tcp", argv[1]);

    ADM_job_t job;
    ADM_dataset_t* inputs = prepare_datasets("input-dataset-%d", NINPUTS);
    assert(inputs);
    ADM_dataset_t* outputs = prepare_datasets("output-dataset-%d", NOUTPUTS);
    assert(outputs);

    ADM_adhoc_context_t ctx = ADM_adhoc_context_create(
            ADM_ADHOC_MODE_SEPARATE_NEW, ADM_ADHOC_ACCESS_RDWR, 42, 100, false);
    assert(ctx);
@@ -46,8 +56,23 @@ main(int argc, char* argv[]) {
    ADM_storage_t st = ADM_storage_create("foobar", ADM_STORAGE_GEKKOFS, ctx);
    assert(st);

    ADM_job_requirements_t reqs =
            ADM_job_requirements_create(inputs, NINPUTS, outputs, NOUTPUTS, st);
    assert(reqs);

    ADM_return_t ret = ADM_register_job(server, reqs, &job);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout, "ADM_register_job() remote procedure not completed "
                        "successfully\n");
        exit_status = EXIT_FAILURE;
        goto cleanup;
    }

    const char* user_id = "adhoc_storage_42";

    ADM_storage_t adhoc_storage;
    ADM_return_t ret = ADM_register_adhoc_storage(server, ctx, &adhoc_storage);
    ret = ADM_register_adhoc_storage(server, job, user_id, ctx, &adhoc_storage);

    if(ret != ADM_SUCCESS) {
        fprintf(stdout,
+20 −3
Original line number Diff line number Diff line
@@ -24,7 +24,10 @@

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

#define NINPUTS  10
#define NOUTPUTS 5

int
main(int argc, char* argv[]) {
@@ -38,12 +41,26 @@ main(int argc, char* argv[]) {

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

    ADM_adhoc_context_t ctx{};
    ADM_storage_t adhoc_storage{};
    const auto inputs = prepare_datasets("input-dataset-{}", NINPUTS);
    const auto outputs = prepare_datasets("output-dataset-{}", NOUTPUTS);

    auto p = std::make_unique<admire::adhoc_storage>(
            admire::storage::type::gekkofs, "foobar",
            admire::adhoc_storage::execution_mode::separate_new,
            admire::adhoc_storage::access_type::read_write, 42, 100, false);

    admire::job_requirements reqs(inputs, outputs, std::move(p));

    std::string user_id = "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, 42, 100, false};
    ADM_return_t ret = ADM_SUCCESS;

    try {
        ret = admire::register_adhoc_storage(server, ctx, &adhoc_storage);
        const auto job = admire::register_job(server, reqs);
        const auto adhoc_storage = admire::register_adhoc_storage(
                server, job, user_id, adhoc_storage_ctx);
    } catch(const std::exception& e) {
        fmt::print(stderr, "FATAL: ADM_register_adhoc_storage() failed: {}\n",
                   e.what());
Loading