Mercurial > hg > orthanc
changeset 3125:8296f0f75716 db-changes
integration mainline->db-changes
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Tue, 15 Jan 2019 21:11:44 +0100 |
parents | c0d7aee8c3f8 (current diff) 58ea4ef84c92 (diff) |
children | e678a2b1a25b |
files | |
diffstat | 6 files changed, 208 insertions(+), 4 deletions(-) [+] |
line wrap: on
line diff
--- a/Core/HttpClient.cpp Tue Jan 15 21:09:33 2019 +0100 +++ b/Core/HttpClient.cpp Tue Jan 15 21:11:44 2019 +0100 @@ -62,8 +62,8 @@ } else { - LOG(INFO) << "Error code " << static_cast<int>(code) - << " in libcurl: " << curl_easy_strerror(code); + LOG(ERROR) << "Error code " << static_cast<int>(code) + << " in libcurl: " << curl_easy_strerror(code); *status = 0; return code; } @@ -697,8 +697,8 @@ else { answerBody.clear(); - LOG(INFO) << "Error in HTTP request, received HTTP status " << status - << " (" << EnumerationToString(lastStatus_) << ")"; + LOG(ERROR) << "Error in HTTP request, received HTTP status " << status + << " (" << EnumerationToString(lastStatus_) << ")"; } return success;
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Testing/Issue32/Cpp/CMakeLists.txt Tue Jan 15 21:11:44 2019 +0100 @@ -0,0 +1,20 @@ +cmake_minimum_required(VERSION 2.8) + +project(Orthanc) + +set(ORTHANC_ROOT ${CMAKE_SOURCE_DIR}/../../../../Resources/CMake) + +include(${ORTHANC_ROOT}/OrthancFrameworkParameters.cmake) +set(ENABLE_WEB_CLIENT ON) +include(${ORTHANC_ROOT}/OrthancFrameworkConfiguration.cmake) + +add_definitions( + -DORTHANC_ENABLE_LOGGING_PLUGIN=OFF + ) + +include_directories(${ORTHANC_ROOT}) + +add_executable(Sample + main.cpp + ${ORTHANC_CORE_SOURCES} + ) \ No newline at end of file
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Testing/Issue32/Cpp/main.cpp Tue Jan 15 21:11:44 2019 +0100 @@ -0,0 +1,86 @@ +#include <Core/HttpClient.h> +#include <Core/Logging.h> +#include <Core/OrthancException.h> +#include <Core/SystemToolbox.h> + +#include <iostream> +#include <boost/thread.hpp> + +static void Worker(bool *done) +{ + LOG(WARNING) << "One thread has started"; + + Orthanc::HttpClient client; + //client.SetUrl("http://localhost:8042/studies"); + //client.SetUrl("http://localhost:8042/tools/default-encoding"); + client.SetUrl("http://localhost:8042/system"); + //client.SetUrl("http://localhost:8042/"); + //client.SetCredentials("orthanc", "orthanc"); + client.SetRedirectionFollowed(false); + + while (!(*done)) + { + try + { +#if 0 + Json::Value v; + if (!client.Apply(v) || + v.type() != Json::objectValue) + { + printf("ERROR\n"); + } +#else + std::string s; + if (!client.Apply(s) || + s.empty()) + { + printf("ERROR\n"); + } +#endif + } + catch (Orthanc::OrthancException& e) + { + printf("EXCEPTION: %s", e.What()); + } + } + + LOG(WARNING) << "One thread has stopped"; +} + +int main() +{ + Orthanc::Logging::Initialize(); + //Orthanc::Logging::EnableInfoLevel(true); + Orthanc::HttpClient::GlobalInitialize(); + + { + bool done = false; + + std::vector<boost::thread*> threads; + + for (size_t i = 0; i < 100; i++) + { + threads.push_back(new boost::thread(Worker, &done)); + } + + LOG(WARNING) << "STARTED"; + Orthanc::SystemToolbox::ServerBarrier(); + LOG(WARNING) << "STOPPING"; + + done = true; + + for (size_t i = 0; i < threads.size(); i++) + { + if (threads[i]->joinable()) + { + threads[i]->join(); + } + + delete threads[i]; + } + } + + Orthanc::HttpClient::GlobalFinalize(); + printf("OK\n"); + return 0; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Testing/Issue32/Java/README.txt Tue Jan 15 21:11:44 2019 +0100 @@ -0,0 +1,2 @@ +$ sudo apt-get install maven +$ mvn test
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Testing/Issue32/Java/pom.xml Tue Jan 15 21:11:44 2019 +0100 @@ -0,0 +1,35 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <groupId>io.osimis</groupId> + <artifactId>issue32</artifactId> + <version>1.0-SNAPSHOT</version> + + <name>issue32</name> + <!-- FIXME change it to the project's website --> + <url>http://www.example.com</url> + + <properties> + <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> + <maven.compiler.source>1.8</maven.compiler.source> + <maven.compiler.target>1.8</maven.compiler.target> + </properties> + + <dependencies> + <dependency> + <groupId>org.apache.httpcomponents</groupId> + <artifactId>httpclient</artifactId> + <version>4.5.3</version> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.11</version> + <scope>test</scope> + </dependency> + </dependencies> +</project>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/Resources/Testing/Issue32/Java/src/test/java/io/osimis/AppTest.java Tue Jan 15 21:11:44 2019 +0100 @@ -0,0 +1,61 @@ +package io.osimis; + +import java.io.IOException; +import org.apache.http.HttpEntity; +import org.apache.http.client.HttpRequestRetryHandler; +import org.apache.http.client.methods.CloseableHttpResponse; +import org.apache.http.client.methods.HttpGet; +import org.apache.http.client.methods.HttpRequestBase; +import org.apache.http.impl.client.CloseableHttpClient; +import org.apache.http.impl.client.HttpClients; +import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; +import org.apache.http.util.EntityUtils; + +import static org.junit.Assert.assertTrue; + +import org.junit.Test; + +public class AppTest +{ + @Test + public void testKeepAlive() + { + PoolingHttpClientConnectionManager cm = new PoolingHttpClientConnectionManager(); + + CloseableHttpClient client = HttpClients + .custom() + .setConnectionManager(cm) + .setRetryHandler((HttpRequestRetryHandler) (exception, executionCount, context) -> { + System.out.println("ERROR"); + assertTrue(false); + return false; + }).build(); + + HttpRequestBase request = new HttpGet("http://localhost:8042/system"); + + // The following call works + //HttpRequestBase request = new HttpGet("https://api.ipify.org?format=json"); + + for (int i = 0; i < 5; i++) { + System.out.println("================================"); + try (CloseableHttpResponse httpResponse = client.execute(request)) { + String responseContent = null; + + HttpEntity entity = httpResponse.getEntity(); + if (entity != null) { + responseContent = EntityUtils.toString(entity); + } + + System.out.println(httpResponse.getStatusLine().getStatusCode()); + System.out.println(responseContent); + + EntityUtils.consume(entity); + httpResponse.close(); + } catch (IOException e) { + System.out.println("Request error " + e); + } + } + + assertTrue(true); + } +}