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);
+  }
+}