You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@plc4x.apache.org by jf...@apache.org on 2018/11/25 13:40:31 UTC

[incubator-plc4x] 01/04: [plc4j-scraper] Extended ResultHandler.java to also pass jobname and connection alias.

This is an automated email from the ASF dual-hosted git repository.

jfeinauer pushed a commit to branch features/scraper-builder
in repository https://gitbox.apache.org/repos/asf/incubator-plc4x.git

commit edbf0c803a831c375bbe75a8d0b145391d855f11
Author: Julian Feinauer <j....@pragmaticminds.de>
AuthorDate: Sun Nov 25 10:56:43 2018 +0100

    [plc4j-scraper] Extended ResultHandler.java to also pass jobname and connection alias.
---
 .../apache/plc4x/java/scraper/ResultHandler.java}  | 26 +++++++++++-----------
 .../org/apache/plc4x/java/scraper/Scraper.java     |  7 ------
 .../org/apache/plc4x/java/scraper/ScraperTask.java |  6 ++---
 .../apache/plc4x/java/scraper/ScraperRunner.java   |  2 +-
 .../apache/plc4x/java/scraper/ScraperTaskTest.java |  8 +++----
 .../org/apache/plc4x/java/scraper/ScraperTest.java |  8 +++----
 6 files changed, 25 insertions(+), 32 deletions(-)

diff --git a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ResultHandler.java
similarity index 59%
copy from plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java
copy to plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ResultHandler.java
index fa91ea5..f6ad53c 100644
--- a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java
+++ b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ResultHandler.java
@@ -19,20 +19,20 @@
 
 package org.apache.plc4x.java.scraper;
 
-import org.apache.plc4x.java.scraper.config.ScraperConfiguration;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
+import java.util.Map;
 
-import java.io.IOException;
-
-public class ScraperRunner {
-
-    private static final Logger LOGGER = LoggerFactory.getLogger(ScraperRunner.class);
+/**
+ * Callback interface to handle results of one run of a {@link ScraperTask}.
+ */
+@FunctionalInterface
+public interface ResultHandler {
 
-    public static void main(String[] args) throws IOException {
-        ScraperConfiguration configuration = ScraperConfiguration.fromFile("plc4j/utils/scraper/src/test/resources/example.yml");
-        Scraper scraper = new Scraper(configuration, m -> {}/*LOGGER.info("Results: {}", m)*/);
+    /**
+     * Callback handler.
+     * @param job name of the job (from config)
+     * @param alias alias of the connection (<b>not</b> connection String)
+     * @param results Results in the form alias to result value
+     */
+    void handle(String job, String alias, Map<String, Object> results);
 
-        scraper.start();
-    }
 }
diff --git a/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java
index 44e9fc6..52efa8e 100644
--- a/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java
+++ b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/Scraper.java
@@ -153,11 +153,4 @@ public class Scraper {
         futures.clear();
     }
 
-    @FunctionalInterface
-    public interface ResultHandler {
-
-        void handle(Map<String, Object> results);
-
-    }
-
 }
diff --git a/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperTask.java b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperTask.java
index afbfe07..3175ee1 100644
--- a/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperTask.java
+++ b/plc4j/utils/scraper/src/main/java/org/apache/plc4x/java/scraper/ScraperTask.java
@@ -55,7 +55,7 @@ public class ScraperTask implements Runnable {
     private final Map<String, String> fields;
     private final long requestTimeoutMs;
     private final ExecutorService handlerService;
-    private final Scraper.ResultHandler resultHandler;
+    private final ResultHandler resultHandler;
 
     private final AtomicLong requestCounter = new AtomicLong(0);
     private final AtomicLong successCounter = new AtomicLong(0);
@@ -63,7 +63,7 @@ public class ScraperTask implements Runnable {
     private final DescriptiveStatistics failedStatistics = new DescriptiveStatistics(1000);
 
     public ScraperTask(PlcDriverManager driverManager, String jobName, String connectionAlias, String connectionString,
-                       Map<String, String> fields, long requestTimeoutMs, ExecutorService handlerService, Scraper.ResultHandler resultHandler) {
+                       Map<String, String> fields, long requestTimeoutMs, ExecutorService handlerService, ResultHandler resultHandler) {
         Validate.notNull(driverManager);
         Validate.notBlank(jobName);
         Validate.notBlank(connectionAlias);
@@ -123,7 +123,7 @@ public class ScraperTask implements Runnable {
             // Validate response
             validateResponse(response);
             // Handle response (Async)
-            CompletableFuture.runAsync(() -> resultHandler.handle(transformResponseToMap(response)), handlerService);
+            CompletableFuture.runAsync(() -> resultHandler.handle(jobName, connectionAlias, transformResponseToMap(response)), handlerService);
         } catch (Exception e) {
             LOGGER.debug("Exception during scrape", e);
             handleException(e);
diff --git a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java b/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java
index fa91ea5..029a25a 100644
--- a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java
+++ b/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperRunner.java
@@ -31,7 +31,7 @@ public class ScraperRunner {
 
     public static void main(String[] args) throws IOException {
         ScraperConfiguration configuration = ScraperConfiguration.fromFile("plc4j/utils/scraper/src/test/resources/example.yml");
-        Scraper scraper = new Scraper(configuration, m -> {}/*LOGGER.info("Results: {}", m)*/);
+        Scraper scraper = new Scraper(configuration, (j, a, m) -> LOGGER.info("Results from {}/{}: {}", j, a, m));
 
         scraper.start();
     }
diff --git a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java b/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
index a83a939..670a0b7 100644
--- a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
+++ b/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTaskTest.java
@@ -54,7 +54,7 @@ public class ScraperTaskTest implements WithAssertions {
         when(mockDevice.read(any())).thenReturn(Pair.of(PlcResponseCode.OK, new DefaultStringFieldItem("hallo")));
 
         ScraperTask scraperTask = new ScraperTask(driverManager, "job1", "m1", "mock:scraper", Collections.singletonMap("a", "b"),
-            1_000, ForkJoinPool.commonPool(), m -> {});
+            1_000, ForkJoinPool.commonPool(), (j,a,m) -> {});
 
         scraperTask.run();
     }
@@ -71,7 +71,7 @@ public class ScraperTaskTest implements WithAssertions {
             when(mockDevice.read(any())).thenReturn(Pair.of(PlcResponseCode.NOT_FOUND, new DefaultStringFieldItem("hallo")));
 
             ScraperTask scraperTask = new ScraperTask(driverManager, "job1", "m1",
-                "mock:scraper", Collections.singletonMap("a", "b"), 1_000, ForkJoinPool.commonPool(), m -> {});
+                "mock:scraper", Collections.singletonMap("a", "b"), 1_000, ForkJoinPool.commonPool(), (j,a,m) -> {});
 
             // When
             scraperTask.run();
@@ -86,7 +86,7 @@ public class ScraperTaskTest implements WithAssertions {
             when(driverManager.getConnection(anyString())).thenThrow(new PlcConnectionException("stfu"));
 
             ScraperTask scraperTask = new ScraperTask(driverManager, "job1", "m1", "mock:scraper", Collections.singletonMap("a", "b"),
-                1_000, ForkJoinPool.commonPool(), m -> {});
+                1_000, ForkJoinPool.commonPool(), (j,a,m) -> {});
 
             ScraperTask spy = spy(scraperTask);
             spy.run();
@@ -99,7 +99,7 @@ public class ScraperTaskTest implements WithAssertions {
             when(driverManager.getConnection(anyString())).thenThrow(new PlcConnectionException("stfu"));
             ScheduledExecutorService pool = Executors.newScheduledThreadPool(1);
             ScraperTask scraperTask = new ScraperTask(driverManager, "job1", "m1", "mock:scraper", Collections.singletonMap("a", "b"),
-                1_000, ForkJoinPool.commonPool(), m -> {});
+                1_000, ForkJoinPool.commonPool(), (j,a,m) -> {});
 
             Future<?> future = pool.scheduleAtFixedRate(scraperTask, 0, 10, TimeUnit.MILLISECONDS);
 
diff --git a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java b/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
index 1822a20..40637d2 100644
--- a/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
+++ b/plc4j/utils/scraper/src/test/java/org/apache/plc4x/java/scraper/ScraperTest.java
@@ -71,7 +71,7 @@ class ScraperTest implements WithAssertions {
             return new GenericKeyedObjectPool<>(pooledPlcConnectionFactory, config);
         });
 
-        Scraper scraper = new Scraper(m -> {}, driverManager, Arrays.asList(
+        Scraper scraper = new Scraper((j,a,m) -> {}, driverManager, Arrays.asList(
             new ScrapeJob("job1",
                 10,
                 Collections.singletonMap("tim", CONN_STRING_TIM),
@@ -95,7 +95,7 @@ class ScraperTest implements WithAssertions {
 
         when(mockDevice.read(any())).thenReturn(Pair.of(PlcResponseCode.OK, new DefaultIntegerFieldItem(1)));
 
-        Scraper scraper = new Scraper(m -> {}, driverManager, Collections.singletonList(
+        Scraper scraper = new Scraper((j,a,m) -> {}, driverManager, Collections.singletonList(
             new ScrapeJob("job1",
                 10,
                 Collections.singletonMap("m1", "mock:m1"),
@@ -119,7 +119,7 @@ class ScraperTest implements WithAssertions {
     void stop_stopsAllJobs() {
         PlcDriverManager driverManager = new PlcDriverManager();
 
-        Scraper scraper = new Scraper(m -> {}, driverManager, Collections.singletonList(
+        Scraper scraper = new Scraper((j,a,m) -> {}, driverManager, Collections.singletonList(
             new ScrapeJob("job1",
                 1,
                 Collections.singletonMap("m1", "mock:m1"),
@@ -146,7 +146,7 @@ class ScraperTest implements WithAssertions {
 
         when(mockDevice.read(any())).thenReturn(Pair.of(PlcResponseCode.OK, new DefaultIntegerFieldItem(1)));
 
-        Scraper scraper = new Scraper(m -> {}, driverManager, Collections.singletonList(
+        Scraper scraper = new Scraper((j,a,m) -> {}, driverManager, Collections.singletonList(
             new ScrapeJob("job1",
                 1,
                 Collections.singletonMap("m1", "mock:m1"),