From 38522f8fb1685cf9fb61812e34d63a506119ee16 Mon Sep 17 00:00:00 2001 From: Sergey Yakubov <sergey.yakubov@desy.de> Date: Wed, 8 Apr 2020 14:20:27 +0200 Subject: [PATCH] fix curl client --- .../cpp/src/http_client/curl_http_client.cpp | 2 +- .../curl_http_client_command/check_linux.sh | 7 +++-- .../check_windows.bat | 2 +- .../curl_httpclient_command.cpp | 30 +++++++++++++++---- .../rest_api/check_linux.sh | 5 ++-- .../python_tests/consumer/consumer_api.py | 11 ++++--- .../manual/python_tests/consumer/test_k8s.sh | 4 +++ 7 files changed, 46 insertions(+), 15 deletions(-) create mode 100755 tests/manual/python_tests/consumer/test_k8s.sh diff --git a/common/cpp/src/http_client/curl_http_client.cpp b/common/cpp/src/http_client/curl_http_client.cpp index ca543c0a6..829c6a7f1 100644 --- a/common/cpp/src/http_client/curl_http_client.cpp +++ b/common/cpp/src/http_client/curl_http_client.cpp @@ -33,7 +33,7 @@ size_t curl_write( void* ptr, size_t size, size_t nmemb, void* data_container) { if (container->bytes_received + nbytes > container->array_size) { return -1; } - memcpy(container->p_array->get(), ptr, nbytes); + memcpy(container->p_array->get()+container->bytes_received, ptr, nbytes); container->bytes_received += nbytes; break; case CurlDataMode::file: diff --git a/tests/automatic/curl_http_client/curl_http_client_command/check_linux.sh b/tests/automatic/curl_http_client/curl_http_client_command/check_linux.sh index 989a4562e..406b111aa 100644 --- a/tests/automatic/curl_http_client/curl_http_client_command/check_linux.sh +++ b/tests/automatic/curl_http_client/curl_http_client_command/check_linux.sh @@ -11,7 +11,7 @@ Cleanup() { echo cleanup nomad stop authorizer nomad stop file_transfer - rm -rf $file_transfer_folder bbb + rm -rf $file_transfer_folder bbb random } nomad run authorizer.nmd @@ -21,7 +21,10 @@ sleep 1 mkdir -p $file_transfer_folder echo -n hello > $file_transfer_folder/aaa -$1 127.0.0.1:5007 127.0.0.1:5008 $file_transfer_folder aaa +dd if=/dev/urandom of=$file_transfer_folder/random bs=1 count=100000 + +$1 127.0.0.1:5007 127.0.0.1:5008 $file_transfer_folder cat bbb | tee /dev/stderr | grep hello +diff -q random $file_transfer_folder/random diff --git a/tests/automatic/curl_http_client/curl_http_client_command/check_windows.bat b/tests/automatic/curl_http_client/curl_http_client_command/check_windows.bat index 1748f6e8c..25d7e5c10 100644 --- a/tests/automatic/curl_http_client/curl_http_client_command/check_windows.bat +++ b/tests/automatic/curl_http_client/curl_http_client_command/check_windows.bat @@ -13,7 +13,7 @@ ping 1.0.0.0 -n 1 -w 100 > nul mkdir %file_transfer_folder% echo | set /p dummyName="hello" > %file_transfer_folder%\aaa -"%1" 127.0.0.1:5007 127.0.0.1:5008 %file_transfer_folder% aaa || goto :error +"%1" 127.0.0.1:5007 127.0.0.1:5008 %file_transfer_folder% || goto :error type bbb | findstr /c:"hello" || goto :error diff --git a/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp b/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp index 63d202b67..75bc3d65b 100644 --- a/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp +++ b/tests/automatic/curl_http_client/curl_http_client_command/curl_httpclient_command.cpp @@ -4,24 +4,24 @@ #include "testing.h" #include "../../../consumer/api/cpp/src/server_data_broker.h" #include "preprocessor/definitions.h" +#include "io/io_factory.h" +#include "io/io.h" struct Args { std::string uri_authorizer; std::string uri_fts; std::string folder; - std::string fname; }; Args GetArgs(int argc, char* argv[]) { - if (argc != 5) { + if (argc != 4) { std::cout << "Wrong number of arguments" << std::endl; exit(EXIT_FAILURE); } std::string uri_authorizer{argv[1]}; std::string uri_fts{argv[2]}; std::string folder{argv[3]}; - std::string fname{argv[4]}; - return Args{uri_authorizer, uri_fts, folder, fname}; + return Args{uri_authorizer, uri_fts, folder}; } @@ -58,14 +58,34 @@ int main(int argc, char* argv[]) { auto content = server_broker->httpclient__->Post(args.uri_fts + "/transfer", cookie, transfer, &code, &err); M_AssertEq("hello", content); M_AssertTrue(code == asapo::HttpCode::OK); - +// with array asapo::FileData data; err = server_broker->httpclient__->Post(args.uri_fts + "/transfer", cookie, transfer, &data, 5, &code); M_AssertEq( "hello", reinterpret_cast<char const*>(data.get())); M_AssertTrue(code == asapo::HttpCode::OK); + transfer = "{\"Folder\":\"" + args.folder + "\",\"FileName\":\"random\"}"; + auto io = asapo::GenerateDefaultIO(); + auto fname = args.folder+asapo::kPathSeparator+"random"; + uint64_t size=0; + auto expected_data = io->GetDataFromFile(fname,&size,&err); + M_AssertEq(nullptr, err); + err = server_broker->httpclient__->Post(args.uri_fts + "/transfer", cookie, transfer, &data, size, &code); + M_AssertTrue(code == asapo::HttpCode::OK); + for (uint64_t i=0;i<size;i++) { + if (expected_data[i] != data[i]) { + M_AssertTrue(false,"recieve array equal to sent array"); + } + } + +// with file + transfer = "{\"Folder\":\"" + args.folder + "\",\"FileName\":\"aaa\"}"; err = server_broker->httpclient__->Post(args.uri_fts + "/transfer", cookie, transfer, "bbb", &code); M_AssertTrue(code == asapo::HttpCode::OK); + transfer = "{\"Folder\":\"" + args.folder + "\",\"FileName\":\"random\"}"; + err = server_broker->httpclient__->Post(args.uri_fts + "/transfer", cookie, transfer, "random", &code); + M_AssertTrue(code == asapo::HttpCode::OK); + return 0; } diff --git a/tests/automatic/file_transfer_service/rest_api/check_linux.sh b/tests/automatic/file_transfer_service/rest_api/check_linux.sh index 89f45c4c8..b1b61e262 100644 --- a/tests/automatic/file_transfer_service/rest_api/check_linux.sh +++ b/tests/automatic/file_transfer_service/rest_api/check_linux.sh @@ -25,11 +25,12 @@ token=bnCXpOdBV90wU1zybEw1duQNSORuwaKz6oDHqmL35p0= #token for aaa folder_token=`curl --silent --data "{\"Folder\":\"$file_transfer_folder\",\"BeamtimeId\":\"aaa\",\"Token\":\"$token\"}" 127.0.0.1:5007/folder` echo $folder_token -echo hello > $file_transfer_folder/aaa + +dd if=/dev/urandom of=$file_transfer_folder/aaa bs=1 count=100000 curl -o aaa --silent -H "Authorization: Bearer ${folder_token}" --data "{\"Folder\":\"$file_transfer_folder\",\"FileName\":\"aaa\",\"Token\":\"$folder_token\"}" 127.0.0.1:5008/transfer --stderr - | tee /dev/stderr -cat aaa | grep hello +diff -q aaa $file_transfer_folder/aaa dd if=/dev/zero of=$file_transfer_folder/big_file bs=1 count=0 seek=5368709120 diff --git a/tests/manual/python_tests/consumer/consumer_api.py b/tests/manual/python_tests/consumer/consumer_api.py index c59d022e4..d67e7577d 100644 --- a/tests/manual/python_tests/consumer/consumer_api.py +++ b/tests/manual/python_tests/consumer/consumer_api.py @@ -3,15 +3,18 @@ from __future__ import print_function import asapo_consumer import sys -source, beamtime,path, token = sys.argv[1:] +source, path,beamtime, token = sys.argv[1:] broker = asapo_consumer.create_server_broker(source,path,False, beamtime,"",token,1000) group_id = broker.generate_group_id() -data, meta = broker.get_by_id(1, group_id, meta_only=False) +_, meta = broker.get_by_id(1,group_id, meta_only=True) -print (meta) -print (len(data)) +meta["buf_id"]=0 +data = broker.retrieve_data(meta) +print (meta) +print (len(data),data[0:100]) +data.tofile("out") sys.exit(0) \ No newline at end of file diff --git a/tests/manual/python_tests/consumer/test_k8s.sh b/tests/manual/python_tests/consumer/test_k8s.sh new file mode 100755 index 000000000..3cd69a940 --- /dev/null +++ b/tests/manual/python_tests/consumer/test_k8s.sh @@ -0,0 +1,4 @@ +export PYTHONPATH=/Users/yakubov/projects/asapo/cmake-build-debug/consumer/api/python +export token=IEfwsWa0GXky2S3MkxJSUHJT1sI8DD5teRdjBUXVRxk= +python3 consumer_api.py gest-k8s-test2.desy.de/yakser /test_offline/test_facility/gpfs/test/2019/data/asapo_test asapo_test $token +#python3 getnext.py gest-k8s-test2.desy.de/yakser /test_offline/test_facility/gpfs/test/2019/data/asapo_test asapo_test $token new \ No newline at end of file -- GitLab