Skip to content
Snippets Groups Projects
Verified Commit a266c39e authored by Alberto Miranda's avatar Alberto Miranda :hotsprings:
Browse files

Update tests involving ADM_transfer_dataset RPC

parent 10755182
No related branches found
No related tags found
1 merge request!30Resolve "Refactor library RPC implementation of `admire::transfer_dataset`"
...@@ -68,13 +68,18 @@ main(int argc, char* argv[]) { ...@@ -68,13 +68,18 @@ main(int argc, char* argv[]) {
exit_status = EXIT_FAILURE; exit_status = EXIT_FAILURE;
} }
ADM_dataset_t** sources = NULL; ADM_dataset_t* sources = NULL;
ADM_dataset_t** targets = NULL; size_t sources_len = 0;
ADM_qos_limit_t** limits = NULL; ADM_dataset_t* targets = NULL;
size_t targets_len = 0;
ADM_qos_limit_t* limits = NULL;
size_t limits_len = 0;
ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE; ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
ADM_transfer_t tx; ADM_transfer_t tx;
ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
&tx); ret = ADM_transfer_dataset(server, job, sources, sources_len, targets,
targets_len, limits, limits_len, mapping, &tx);
if(ret != ADM_SUCCESS) { if(ret != ADM_SUCCESS) {
fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed " fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
"successfully\n"); "successfully\n");
......
...@@ -68,13 +68,17 @@ main(int argc, char* argv[]) { ...@@ -68,13 +68,17 @@ main(int argc, char* argv[]) {
exit_status = EXIT_FAILURE; exit_status = EXIT_FAILURE;
} }
ADM_dataset_t** sources = NULL; ADM_dataset_t* sources = NULL;
ADM_dataset_t** targets = NULL; size_t sources_len = 0;
ADM_qos_limit_t** limits = NULL; ADM_dataset_t* targets = NULL;
size_t targets_len = 0;
ADM_qos_limit_t* limits = NULL;
size_t limits_len = 0;
ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE; ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
ADM_transfer_t tx; ADM_transfer_t tx;
ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
&tx); ret = ADM_transfer_dataset(server, job, sources, sources_len, targets,
targets_len, limits, limits_len, mapping, &tx);
if(ret != ADM_SUCCESS) { if(ret != ADM_SUCCESS) {
fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed " fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
......
...@@ -72,13 +72,19 @@ main(int argc, char* argv[]) { ...@@ -72,13 +72,19 @@ main(int argc, char* argv[]) {
ADM_data_operation_t op; ADM_data_operation_t op;
const char* path = "/tmpxxxxx"; const char* path = "/tmpxxxxx";
ADM_define_data_operation(server, job, path, &op); ADM_define_data_operation(server, job, path, &op);
ADM_dataset_t** sources = NULL;
ADM_dataset_t** targets = NULL; ADM_dataset_t* sources = NULL;
ADM_qos_limit_t** limits = NULL; size_t sources_len = 0;
ADM_dataset_t* targets = NULL;
size_t targets_len = 0;
ADM_qos_limit_t* limits = NULL;
size_t limits_len = 0;
ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE; ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
ADM_transfer_t tx; ADM_transfer_t tx;
ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
&tx); ret = ADM_transfer_dataset(server, job, sources, sources_len, targets,
targets_len, limits, limits_len, mapping, &tx);
if(ret != ADM_SUCCESS) { if(ret != ADM_SUCCESS) {
fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed " fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
......
...@@ -68,13 +68,17 @@ main(int argc, char* argv[]) { ...@@ -68,13 +68,17 @@ main(int argc, char* argv[]) {
exit_status = EXIT_FAILURE; exit_status = EXIT_FAILURE;
} }
ADM_dataset_t** sources = NULL; ADM_dataset_t* sources = NULL;
ADM_dataset_t** targets = NULL; size_t sources_len = 0;
ADM_qos_limit_t** limits = NULL; ADM_dataset_t* targets = NULL;
size_t targets_len = 0;
ADM_qos_limit_t* limits = NULL;
size_t limits_len = 0;
ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE; ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
ADM_transfer_t tx; ADM_transfer_t tx;
ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
&tx); ret = ADM_transfer_dataset(server, job, sources, sources_len, targets,
targets_len, limits, limits_len, mapping, &tx);
int incr = 42; int incr = 42;
ret = ADM_set_transfer_priority(server, job, tx, incr); ret = ADM_set_transfer_priority(server, job, tx, incr);
......
...@@ -68,13 +68,17 @@ main(int argc, char* argv[]) { ...@@ -68,13 +68,17 @@ main(int argc, char* argv[]) {
exit_status = EXIT_FAILURE; exit_status = EXIT_FAILURE;
} }
ADM_dataset_t** sources = NULL; ADM_dataset_t* sources = NULL;
ADM_dataset_t** targets = NULL; size_t sources_len = 0;
ADM_qos_limit_t** limits = NULL; ADM_dataset_t* targets = NULL;
size_t targets_len = 0;
ADM_qos_limit_t* limits = NULL;
size_t limits_len = 0;
ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE; ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE;
ADM_transfer_t tx; ADM_transfer_t tx;
ret = ADM_transfer_dataset(server, job, sources, targets, limits, mapping,
&tx); ret = ADM_transfer_dataset(server, job, sources, sources_len, targets,
targets_len, limits, limits_len, mapping, &tx);
if(ret != ADM_SUCCESS) { if(ret != ADM_SUCCESS) {
fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed " fprintf(stdout, "ADM_transfer_dataset() remote procedure not completed "
......
/****************************************************************************** /******************************************************************************
* Copyright 2021, Barcelona Supercomputing Center (BSC), Spain * Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain
* *
* This software was partially supported by the EuroHPC-funded project ADMIRE * This software was partially supported by the EuroHPC-funded project ADMIRE
* (Project ID: 956748, https://www.admire-eurohpc.eu). * (Project ID: 956748, https://www.admire-eurohpc.eu).
...@@ -24,43 +24,51 @@ ...@@ -24,43 +24,51 @@
#include <fmt/format.h> #include <fmt/format.h>
#include <admire.hpp> #include <admire.hpp>
#include "common.hpp"
#define NINPUTS 10
#define NOUTPUTS 5
#define NSOURCES 5
#define NTARGETS 5
#define NLIMITS 4
int int
main(int argc, char* argv[]) { main(int argc, char* argv[]) {
if(argc != 2) { if(argc != 2) {
fmt::print(stderr, "ERROR: no location provided\n"); fmt::print(stderr, "ERROR: no server address provided\n");
fmt::print(stderr, "Usage: ADM_transfer_dataset <SERVER_ADDRESS>\n"); fmt::print(stderr, "Usage: ADM_transfer_dataset <SERVER_ADDRESS>\n");
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
admire::server server{"tcp", argv[1]}; admire::server server{"tcp", argv[1]};
ADM_job_t job{}; const auto inputs = prepare_datasets("input-dataset-{}", NINPUTS);
ADM_dataset_t** sources = nullptr; const auto outputs = prepare_datasets("output-dataset-{}", NOUTPUTS);
ADM_dataset_t** targets = nullptr;
ADM_qos_limit_t** limits = nullptr; const auto sources = prepare_datasets("source-dataset-{}", NSOURCES);
ADM_transfer_mapping_t mapping = ADM_MAPPING_ONE_TO_ONE; const auto targets = prepare_datasets("target-dataset-{}", NTARGETS);
ADM_transfer_t tx{}; const auto qos_limits = prepare_qos_limits(NLIMITS);
ADM_return_t ret = ADM_SUCCESS; const auto mapping = admire::transfer::mapping::n_to_n;
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));
try { try {
ret = admire::transfer_dataset(server, job, sources, targets, limits, const auto job = admire::register_job(server, reqs);
mapping, &tx); const auto transfer = admire::transfer_dataset(
server, job, sources, targets, qos_limits, mapping);
fmt::print(stdout, "ADM_transfer_dataset() remote procedure completed "
"successfully\n");
exit(EXIT_SUCCESS);
} catch(const std::exception& e) { } catch(const std::exception& e) {
fmt::print(stderr, "FATAL: ADM_cancel_transfer() failed: {}\n", fmt::print(stderr, "FATAL: ADM_cancel_transfer() failed: {}\n",
e.what()); e.what());
exit(EXIT_FAILURE); exit(EXIT_FAILURE);
} }
if(ret != ADM_SUCCESS) {
fmt::print(stdout,
"ADM_transfer_dataset() remote procedure not completed "
"successfully\n");
exit(EXIT_FAILURE);
} else {
fmt::print(stdout, "ADM_transfer_dataset() remote procedure completed "
"successfully\n");
}
} }
...@@ -10,3 +10,16 @@ prepare_datasets(const std::string& pattern, size_t n) { ...@@ -10,3 +10,16 @@ prepare_datasets(const std::string& pattern, size_t n) {
return datasets; return datasets;
} }
std::vector<admire::qos::limit>
prepare_qos_limits(size_t n) {
std::vector<admire::qos::limit> limits;
limits.reserve(n);
for(size_t i = 0; i < n; ++i) {
limits.emplace_back(admire::qos::subclass::bandwidth, 50);
}
return limits;
}
...@@ -7,4 +7,7 @@ ...@@ -7,4 +7,7 @@
std::vector<admire::dataset> std::vector<admire::dataset>
prepare_datasets(const std::string& pattern, size_t n); prepare_datasets(const std::string& pattern, size_t n);
std::vector<admire::qos::limit>
prepare_qos_limits(size_t n);
#endif // SCORD_CXX_EXAMPLES_COMMON_HPP #endif // SCORD_CXX_EXAMPLES_COMMON_HPP
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment