diff --git a/examples/c/ADM_register_pfs_storage.c b/examples/c/ADM_register_pfs_storage.c new file mode 100644 index 0000000000000000000000000000000000000000..66af17f4221633960d1f77d49e401b04d81746d9 --- /dev/null +++ b/examples/c/ADM_register_pfs_storage.c @@ -0,0 +1,94 @@ +/****************************************************************************** + * Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain + * + * This software was partially supported by the EuroHPC-funded project ADMIRE + * (Project ID: 956748, https://www.admire-eurohpc.eu). + * + * This file is part of scord. + * + * scord 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. + * + * scord 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 scord. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + *****************************************************************************/ + +#include +#include +#include +#include + +#define NINPUTS 10 +#define NOUTPUTS 5 + +int +main(int argc, char* argv[]) { + + if(argc != 2) { + fprintf(stderr, "ERROR: no server address provided\n"); + fprintf(stderr, "Usage: ADM_register_pfs_storage \n"); + exit(EXIT_FAILURE); + } + + int exit_status = EXIT_SUCCESS; + ADM_server_t server = ADM_server_create("tcp", argv[1]); + + + ADM_dataset_t inputs[NINPUTS]; + + for(int i = 0; i < NINPUTS; ++i) { + const char* pattern = "input-dataset-%d"; + size_t n = snprintf(NULL, 0, pattern, i); + char* id = (char*) alloca(n + 1); + snprintf(id, n + 1, pattern, i); + inputs[i] = ADM_dataset_create(id); + } + + ADM_dataset_t outputs[NOUTPUTS]; + + for(int i = 0; i < NOUTPUTS; ++i) { + const char* pattern = "output-dataset-%d"; + size_t n = snprintf(NULL, 0, pattern, i); + char* id = (char*) alloca(n + 1); + snprintf(id, n + 1, pattern, i); + outputs[i] = ADM_dataset_create(id); + } + + ADM_job_requirements_t reqs = ADM_job_requirements_create( + inputs, NINPUTS, outputs, NOUTPUTS, NULL); + assert(reqs); + + ADM_storage_t pfs_storage; + + ADM_pfs_context_t ctx = ADM_pfs_context_create("/gpfs"); + assert(ctx); + + ADM_storage_t st = ADM_storage_create("barbaz", ADM_STORAGE_GPFS, ctx); + assert(st); + + ADM_return_t ret = ADM_register_pfs_storage(server, ctx, &pfs_storage); + + if(ret != ADM_SUCCESS) { + fprintf(stdout, + "ADM_register_pfs_storage() remote procedure not completed " + "successfully\n"); + exit_status = EXIT_FAILURE; + goto cleanup; + } + + fprintf(stdout, "ADM_register_pfs_storage() remote procedure completed " + "successfully\n"); + +cleanup: + ADM_server_destroy(server); + exit(exit_status); +} diff --git a/examples/c/ADM_remove_pfs_storage.c b/examples/c/ADM_remove_pfs_storage.c new file mode 100644 index 0000000000000000000000000000000000000000..cf88f7eadc327076caf1d96d87bdf04f2258cfff --- /dev/null +++ b/examples/c/ADM_remove_pfs_storage.c @@ -0,0 +1,81 @@ +/****************************************************************************** + * Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain + * + * This software was partially supported by the EuroHPC-funded project ADMIRE + * (Project ID: 956748, https://www.admire-eurohpc.eu). + * + * This file is part of scord. + * + * scord 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. + * + * scord 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 scord. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + *****************************************************************************/ + +#include +#include +#include +#include + +#define NINPUTS 10 +#define NOUTPUTS 5 + +int +main(int argc, char* argv[]) { + + if(argc != 2) { + fprintf(stderr, "ERROR: no server address provided\n"); + fprintf(stderr, "Usage: ADM_remove_pfs_storage \n"); + exit(EXIT_FAILURE); + } + + int exit_status = EXIT_SUCCESS; + ADM_server_t server = ADM_server_create("tcp", argv[1]); + + ADM_pfs_context_t ctx = ADM_pfs_context_create("/gpfs"); + assert(ctx); + + ADM_storage_t st = ADM_storage_create("barbaz", ADM_STORAGE_GPFS, ctx); + assert(st); + + ADM_storage_t pfs_storage; + ADM_return_t ret = ADM_register_pfs_storage(server, ctx, &pfs_storage); + + if(ret != ADM_SUCCESS) { + fprintf(stdout, + "ADM_register_pfs_storage() remote procedure not completed " + "successfully\n"); + exit_status = EXIT_FAILURE; + goto cleanup; + } + + fprintf(stdout, "ADM_register_pfs_storage() remote procedure completed " + "successfully\n"); + + ret = ADM_remove_pfs_storage(server, pfs_storage); + + if(ret != ADM_SUCCESS) { + fprintf(stdout, + "ADM_remove_pfs_storage() remote procedure not completed " + "successfully\n"); + exit_status = EXIT_FAILURE; + goto cleanup; + } + + fprintf(stdout, "ADM_remove_pfs_storage() remote procedure completed " + "successfully\n"); + +cleanup: + ADM_server_destroy(server); + exit(exit_status); +} diff --git a/examples/c/ADM_update_pfs_storage.c b/examples/c/ADM_update_pfs_storage.c new file mode 100644 index 0000000000000000000000000000000000000000..425206511189ed5186562844428c1e3f40c0f9ec --- /dev/null +++ b/examples/c/ADM_update_pfs_storage.c @@ -0,0 +1,81 @@ +/****************************************************************************** + * Copyright 2021-2022, Barcelona Supercomputing Center (BSC), Spain + * + * This software was partially supported by the EuroHPC-funded project ADMIRE + * (Project ID: 956748, https://www.admire-eurohpc.eu). + * + * This file is part of scord. + * + * scord 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. + * + * scord 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 scord. If not, see . + * + * SPDX-License-Identifier: GPL-3.0-or-later + *****************************************************************************/ + +#include +#include +#include +#include + +#define NINPUTS 10 +#define NOUTPUTS 5 + +int +main(int argc, char* argv[]) { + + if(argc != 2) { + fprintf(stderr, "ERROR: no server address provided\n"); + fprintf(stderr, "Usage: ADM_update_pfs_storage \n"); + exit(EXIT_FAILURE); + } + + int exit_status = EXIT_SUCCESS; + ADM_server_t server = ADM_server_create("tcp", argv[1]); + + ADM_pfs_context_t ctx = ADM_pfs_context_create("/gpfs"); + assert(ctx); + + ADM_storage_t st = ADM_storage_create("barbaz", ADM_STORAGE_GPFS, ctx); + assert(st); + + ADM_storage_t pfs_storage; + ADM_return_t ret = ADM_register_pfs_storage(server, ctx, &pfs_storage); + + if(ret != ADM_SUCCESS) { + fprintf(stdout, + "ADM_register_pfs_storage() remote procedure not completed " + "successfully\n"); + exit_status = EXIT_FAILURE; + goto cleanup; + } + + fprintf(stdout, "ADM_register_pfs_storage() remote procedure completed " + "successfully\n"); + + ret = ADM_update_pfs_storage(server, ctx, pfs_storage); + + if(ret != ADM_SUCCESS) { + fprintf(stdout, + "ADM_update_pfs_storage() remote procedure not completed " + "successfully\n"); + exit_status = EXIT_FAILURE; + goto cleanup; + } + + fprintf(stdout, "ADM_update_pfs_storage() remote procedure completed " + "successfully\n"); + +cleanup: + ADM_server_destroy(server); + exit(exit_status); +} diff --git a/examples/c/CMakeLists.txt b/examples/c/CMakeLists.txt index 3f683cc04b26cd6000b522bc74253a87ec9c81d3..6d9d2faff70af08d4ad14b577f01c090aa0730d7 100644 --- a/examples/c/CMakeLists.txt +++ b/examples/c/CMakeLists.txt @@ -27,7 +27,8 @@ list(APPEND examples_c ADM_register_job ADM_cancel_transfer ADM_connect_data_ope ADM_get_statistics ADM_get_transfer_priority ADM_link_transfer_to_data_operation ADM_register_adhoc_storage ADM_remove_adhoc_storage ADM_remove_job ADM_set_dataset_information ADM_set_io_resources ADM_set_qos_constraints ADM_set_transfer_priority ADM_transfer_dataset - ADM_update_adhoc_storage ADM_update_job) + ADM_update_adhoc_storage ADM_update_job ADM_register_pfs_storage + ADM_update_pfs_storage ADM_remove_pfs_storage) # ADM_in_situ_ops ADM_in_transit_ops not implemented foreach(example IN LISTS examples_c) @@ -62,8 +63,8 @@ if(SCORD_BUILD_TESTS) add_test(ADM_register_adhoc_storage_c_test ADM_register_adhoc_storage ofi+tcp://127.0.0.1:52000) - # TODO: ADM_register_pfs_storage test is missing because is not working in cpp. - # Will be created when it works in cpp. + add_test(ADM_register_pfs_storage_c_test ADM_register_pfs_storage ofi+tcp://127.0.0.1:52000) + add_test(ADM_remove_adhoc_storage_c_test ADM_remove_adhoc_storage ofi+tcp://127.0.0.1:52000) add_test(ADM_remove_job_c_test ADM_remove_job ofi+tcp://127.0.0.1:52000) diff --git a/examples/cxx/ADM_register_pfs_storage.cpp b/examples/cxx/ADM_register_pfs_storage.cpp index 6b0c28dbb90e4dbf339be33e39076898a2d0ea23..5c6e23564529f28f70df1faedb619cbfc8cfba21 100644 --- a/examples/cxx/ADM_register_pfs_storage.cpp +++ b/examples/cxx/ADM_register_pfs_storage.cpp @@ -30,7 +30,7 @@ int main(int argc, char* argv[]) { 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_register_pfs_storage \n"); exit(EXIT_FAILURE); diff --git a/examples/cxx/ADM_remove_pfs_storage.cpp b/examples/cxx/ADM_remove_pfs_storage.cpp index c4ae0588f2ae8e9af833cdf5ea8545105f1a7eb7..b4e88de1462097c1b044089c35d3b635794eda99 100644 --- a/examples/cxx/ADM_remove_pfs_storage.cpp +++ b/examples/cxx/ADM_remove_pfs_storage.cpp @@ -30,7 +30,7 @@ int main(int argc, char* argv[]) { 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_remove_pfs_storage \n"); exit(EXIT_FAILURE); } diff --git a/examples/cxx/ADM_update_pfs_storage.cpp b/examples/cxx/ADM_update_pfs_storage.cpp index 5e3b5ab3cedd41a059a98615abb0b1e64619e8ed..904519020aa82dbff9d73f89eee043b101053235 100644 --- a/examples/cxx/ADM_update_pfs_storage.cpp +++ b/examples/cxx/ADM_update_pfs_storage.cpp @@ -30,7 +30,7 @@ int main(int argc, char* argv[]) { 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_update_pfs_storage \n"); exit(EXIT_FAILURE); } diff --git a/examples/cxx/CMakeLists.txt b/examples/cxx/CMakeLists.txt index ec8d44092afd9b75fd2ba431fe76598733aaff14..e1ab0acb8624d816ce807fc4fae93670099197c4 100644 --- a/examples/cxx/CMakeLists.txt +++ b/examples/cxx/CMakeLists.txt @@ -69,12 +69,14 @@ if(SCORD_BUILD_TESTS) add_test(ADM_register_job_cxx_test ADM_register_job ofi+tcp://127.0.0.1:52000) - # TODO: add_test(ADM_register_pfs_storage_test ADM_register_pfs_storage ofi+tcp://127.0.0.1:52000) + add_test(ADM_register_pfs_storage_cxx_test ADM_register_pfs_storage ofi+tcp://127.0.0.1:52000) + add_test(ADM_remove_adhoc_storage_cxx_test ADM_remove_adhoc_storage ofi+tcp://127.0.0.1:52000) add_test(ADM_remove_job_cxx_test ADM_remove_job ofi+tcp://127.0.0.1:52000) - # TODO: add_test(ADM_remove_pfs_storage_test ADM_remove_pfs_storage ofi+tcp://127.0.0.1:52000 42) + add_test(ADM_remove_pfs_storage_cxx_test ADM_remove_pfs_storage ofi+tcp://127.0.0.1:52000) + add_test(ADM_set_dataset_information_cxx_test ADM_set_dataset_information ofi+tcp://127.0.0.1:52000) add_test(ADM_set_io_resources_cxx_test ADM_set_io_resources ofi+tcp://127.0.0.1:52000)