STREAMS-469: fit failing ITs in streams-provider-rss

As best I can tell, junit forking was allowing the tests to pass - they started 
failing under TestNG.
Wound up removing the static modifier from some state where it didn’t really 
make sense.
Along the way, upgraded the underlying library to one under active maintenance.


Project: http://git-wip-us.apache.org/repos/asf/incubator-streams/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-streams/commit/21086e9a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-streams/tree/21086e9a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-streams/diff/21086e9a

Branch: refs/heads/master
Commit: 21086e9a84721ef0d777a65a9cbd9e1f28040b18
Parents: 899bb84
Author: Steve Blackmon <sblack...@apache.org>
Authored: Sun Dec 11 21:35:05 2016 -0600
Committer: Steve Blackmon <sblack...@apache.org>
Committed: Sun Dec 11 21:35:05 2016 -0600

----------------------------------------------------------------------
 streams-contrib/streams-provider-rss/pom.xml    |  4 +-
 .../streams/rss/provider/RssEventProcessor.java |  3 +-
 .../rss/provider/RssStreamProviderTask.java     | 11 ++--
 .../rss/serializer/SyndEntrySerializer.java     | 39 +++++++-------
 .../rss/provider/RssStreamProviderTaskIT.java   | 55 ++++++++------------
 5 files changed, 51 insertions(+), 61 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/21086e9a/streams-contrib/streams-provider-rss/pom.xml
----------------------------------------------------------------------
diff --git a/streams-contrib/streams-provider-rss/pom.xml 
b/streams-contrib/streams-provider-rss/pom.xml
index 5cf8b79..6a237d5 100644
--- a/streams-contrib/streams-provider-rss/pom.xml
+++ b/streams-contrib/streams-provider-rss/pom.xml
@@ -86,9 +86,9 @@
             <scope>test</scope>
         </dependency>
         <dependency>
-            <groupId>rome</groupId>
+            <groupId>com.rometools</groupId>
             <artifactId>rome</artifactId>
-            <version>1.0</version>
+            <version>1.7.0</version>
         </dependency>
         <dependency>
             <groupId>org.mockito</groupId>

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/21086e9a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
 
b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
index 078356c..cf768e0 100644
--- 
a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
+++ 
b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssEventProcessor.java
@@ -24,7 +24,8 @@ import 
org.apache.streams.rss.serializer.SyndEntryActivitySerializer;
 import org.apache.streams.rss.serializer.SyndEntrySerializer;
 
 import com.fasterxml.jackson.databind.ObjectMapper;
-import com.sun.syndication.feed.synd.SyndEntry;
+import com.rometools.rome.feed.synd.SyndEntry;
+
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/21086e9a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
 
b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
index 03a66d1..8437ee0 100644
--- 
a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
+++ 
b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/provider/RssStreamProviderTask.java
@@ -25,10 +25,11 @@ import 
org.apache.streams.rss.serializer.SyndEntrySerializer;
 import com.fasterxml.jackson.databind.JsonNode;
 import com.fasterxml.jackson.databind.node.ObjectNode;
 import com.google.common.annotations.VisibleForTesting;
-import com.sun.syndication.feed.synd.SyndEntry;
-import com.sun.syndication.feed.synd.SyndFeed;
-import com.sun.syndication.io.FeedException;
-import com.sun.syndication.io.SyndFeedInput;
+import com.rometools.rome.feed.synd.SyndEntry;
+import com.rometools.rome.feed.synd.SyndFeed;
+import com.rometools.rome.io.FeedException;
+import com.rometools.rome.io.SyndFeedInput;
+
 import org.joda.time.DateTime;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -77,7 +78,7 @@ public class RssStreamProviderTask implements Runnable {
    * Map that contains the Set of previously seen articles by an rss feed.
    */
   @VisibleForTesting
-  protected static final Map<String, Set<String>> PREVIOUSLY_SEEN = new 
ConcurrentHashMap<>();
+  protected Map<String, Set<String>> PREVIOUSLY_SEEN = new 
ConcurrentHashMap<>();
 
 
   private BlockingQueue<StreamsDatum> dataQueue;

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/21086e9a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntrySerializer.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntrySerializer.java
 
b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntrySerializer.java
index 63920e7..1b84d0a 100644
--- 
a/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntrySerializer.java
+++ 
b/streams-contrib/streams-provider-rss/src/main/java/org/apache/streams/rss/serializer/SyndEntrySerializer.java
@@ -21,16 +21,15 @@ package org.apache.streams.rss.serializer;
 import com.fasterxml.jackson.databind.node.ArrayNode;
 import com.fasterxml.jackson.databind.node.JsonNodeFactory;
 import com.fasterxml.jackson.databind.node.ObjectNode;
-import com.sun.syndication.feed.module.Module;
-import com.sun.syndication.feed.rss.Category;
-import com.sun.syndication.feed.rss.Content;
-import com.sun.syndication.feed.rss.Enclosure;
-import com.sun.syndication.feed.synd.SyndContent;
-import com.sun.syndication.feed.synd.SyndEnclosure;
-import com.sun.syndication.feed.synd.SyndEntry;
-import com.sun.syndication.feed.synd.SyndFeed;
-import com.sun.syndication.feed.synd.SyndImage;
-import com.sun.syndication.feed.synd.SyndLinkImpl;
+import com.rometools.rome.feed.module.Module;
+import com.rometools.rome.feed.rss.Enclosure;
+import com.rometools.rome.feed.synd.SyndContent;
+import com.rometools.rome.feed.synd.SyndEnclosure;
+import com.rometools.rome.feed.synd.SyndEntry;
+import com.rometools.rome.feed.synd.SyndFeed;
+import com.rometools.rome.feed.synd.SyndImage;
+import com.rometools.rome.feed.synd.SyndLinkImpl;
+
 import org.joda.time.format.DateTimeFormatter;
 import org.joda.time.format.ISODateTimeFormat;
 import org.slf4j.Logger;
@@ -82,9 +81,9 @@ public class SyndEntrySerializer {
     }
     ArrayNode cats = factory.arrayNode();
     for (Object obj : categories) {
-      if (obj instanceof Category) {
+      if (obj instanceof com.rometools.rome.feed.rss.Category) {
         ObjectNode catNode = factory.objectNode();
-        Category category = (Category) obj;
+        com.rometools.rome.feed.rss.Category category = 
(com.rometools.rome.feed.rss.Category) obj;
         if (category.getDomain() != null) {
           catNode.put("domain", category.getDomain());
         }
@@ -92,8 +91,8 @@ public class SyndEntrySerializer {
           catNode.put("value", category.getValue());
         }
         cats.add(catNode);
-      } else if (obj instanceof com.sun.syndication.feed.atom.Category) {
-        com.sun.syndication.feed.atom.Category category = 
(com.sun.syndication.feed.atom.Category) obj;
+      } else if (obj instanceof com.rometools.rome.feed.atom.Category) {
+        com.rometools.rome.feed.atom.Category category = 
(com.rometools.rome.feed.atom.Category) obj;
         ObjectNode catNode = factory.objectNode();
         if (category.getLabel() != null) {
           catNode.put("label", category.getLabel());
@@ -120,13 +119,13 @@ public class SyndEntrySerializer {
     ArrayNode contentsArray = factory.arrayNode();
     for (Object obj : contents) {
       ObjectNode content = factory.objectNode();
-      if (obj instanceof Content) {
-        Content rssContent = (Content) obj;
+      if (obj instanceof com.rometools.rome.feed.rss.Content) {
+        com.rometools.rome.feed.rss.Content rssContent = 
(com.rometools.rome.feed.rss.Content) obj;
         content.put("type", rssContent.getType());
         content.put("value", rssContent.getValue());
       }
-      if (obj instanceof com.sun.syndication.feed.atom.Content) {
-        com.sun.syndication.feed.atom.Content atomContent = 
(com.sun.syndication.feed.atom.Content) obj;
+      if (obj instanceof com.rometools.rome.feed.atom.Content) {
+        com.rometools.rome.feed.atom.Content atomContent = 
(com.rometools.rome.feed.atom.Content) obj;
         content.put("type", atomContent.getType());
         content.put("value", atomContent.getValue());
         content.put("mode", atomContent.getMode());
@@ -248,7 +247,9 @@ public class SyndEntrySerializer {
   }
 
   private void serializeLinks(ObjectNode root, JsonNodeFactory factory, List 
links) {
-    if (links.get(0) instanceof String) {
+    if( links.size() == 0 ) {
+      root.put("links", factory.arrayNode());
+    } else  if (links.get(0) instanceof String) {
       serializeListOfStrings(links, "links", root, factory);
     } else if (links.get(0) instanceof SyndLinkImpl) {
       ArrayNode linksArray = factory.arrayNode();

http://git-wip-us.apache.org/repos/asf/incubator-streams/blob/21086e9a/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/provider/RssStreamProviderTaskIT.java
----------------------------------------------------------------------
diff --git 
a/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/provider/RssStreamProviderTaskIT.java
 
b/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/provider/RssStreamProviderTaskIT.java
index 87ff8fc..564e215 100644
--- 
a/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/provider/RssStreamProviderTaskIT.java
+++ 
b/streams-contrib/streams-provider-rss/src/test/java/org/apache/streams/rss/provider/RssStreamProviderTaskIT.java
@@ -22,7 +22,6 @@ import org.apache.streams.core.StreamsDatum;
 
 import org.joda.time.DateTime;
 import org.joda.time.DateTimeZone;
-import org.testng.annotations.BeforeClass;
 import org.testng.annotations.Test;
 
 import java.net.URL;
@@ -39,18 +38,6 @@ import static org.testng.Assert.assertTrue;
 public class RssStreamProviderTaskIT {
 
   /**
-   * clearPreviouslySeen.
-   */
-  @BeforeClass
-  public void clearPreviouslySeen() {
-    //some test runners run in parallel so needs to be synchronized
-    //if tests are run in parallel test will have undetermined results.
-    synchronized (RssStreamProviderTask.PREVIOUSLY_SEEN) {
-      RssStreamProviderTask.PREVIOUSLY_SEEN.clear();
-    }
-  }
-
-  /**
    * Test that a task can read a valid rss from a url and queue the data.
    * @throws Exception Exception
    */
@@ -61,7 +48,7 @@ public class RssStreamProviderTaskIT {
     RssStreamProviderTask task = new RssStreamProviderTask(queue, "fake url");
     Set<String> batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
     assertEquals(batch.size(), queue.size(), "Expected batch size to be the 
same as amount of queued datums");
-    RssStreamProviderTask.PREVIOUSLY_SEEN.put("fake url", batch);
+    task.PREVIOUSLY_SEEN.put("fake url", batch);
     //Test that  it will out previously seen articles
     queue.clear();
     batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
@@ -76,22 +63,22 @@ public class RssStreamProviderTaskIT {
   public void testPerpetualNoTimeFramePull() throws Exception {
     com.healthmarketscience.common.util.resource.Handler.init();
     BlockingQueue<StreamsDatum> queue = new LinkedBlockingQueue<>();
-    RssStreamProviderTask task = new RssStreamProviderTask(queue, "fake url", 
new DateTime().minusYears(5), 10000, true);
+    RssStreamProviderTask task = new RssStreamProviderTask(queue, "fake url", 
new DateTime().minusYears(10), 10000, true);
     Set<String> batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
     assertEquals(batch.size(), queue.size(), "Expected batch size to be the 
same as amount of queued datums");
-    RssStreamProviderTask.PREVIOUSLY_SEEN.put("fake url", batch);
+    task.PREVIOUSLY_SEEN.put("fake url", batch);
     //Test that it will not out previously seen articles
     queue.clear();
     batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
-    assertEquals(0, queue.size(), "Expected queue size to be 0");
-    assertEquals(20, batch.size(), "Expected batch size to be 20");
-    RssStreamProviderTask.PREVIOUSLY_SEEN.put("fake url", batch);
+    assertEquals( queue.size(), 0 );
+    assertEquals( batch.size(), 20 );
+    task.PREVIOUSLY_SEEN.put("fake url", batch);
     //Test that not seen urls aren't blocked.
     queue.clear();
     batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist2.xml"));
     assertEquals(batch.size(), queue.size());
-    assertEquals(25, queue.size(), "Expected queue size to be 25");
-    assertEquals(25, batch.size(), "Expected batch size to be 25");
+    assertEquals( queue.size(), 25);
+    assertEquals( batch.size(), 25);
   }
 
   /**
@@ -105,15 +92,15 @@ public class RssStreamProviderTaskIT {
     DateTime publishedSince = new 
DateTime().withYear(2014).withDayOfMonth(5).withMonthOfYear(9).withZone(DateTimeZone.UTC);
     RssStreamProviderTask task = new RssStreamProviderTask(queue, "fake url", 
publishedSince, 10000, false);
     Set<String> batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
-    assertEquals( 15, queue.size());
-    assertEquals( 20 , batch.size());
+    assertEquals( queue.size(), 15);
+    assertEquals( batch.size(), 20);
     assertTrue( queue.size() < batch.size());
-    RssStreamProviderTask.PREVIOUSLY_SEEN.put("fake url", batch);
+    task.PREVIOUSLY_SEEN.put("fake url", batch);
     //Test that  it will out previously seen articles
     queue.clear();
     batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
-    assertEquals( 15, queue.size());
-    assertEquals( 20 , batch.size());
+    assertEquals( queue.size(), 15);
+    assertEquals( batch.size(), 20);
     assertTrue( queue.size() < batch.size());
   }
 
@@ -128,22 +115,22 @@ public class RssStreamProviderTaskIT {
     DateTime publishedSince = new 
DateTime().withYear(2014).withDayOfMonth(5).withMonthOfYear(9).withZone(DateTimeZone.UTC);
     RssStreamProviderTask task = new RssStreamProviderTask(queue, "fake url", 
publishedSince, 10000, true);
     Set<String> batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
-    assertEquals( 15, queue.size());
-    assertEquals( 20 , batch.size());
+    assertEquals( queue.size(),15);
+    assertEquals( batch.size(), 20);
     assertTrue( queue.size() < batch.size());
-    RssStreamProviderTask.PREVIOUSLY_SEEN.put("fake url", batch);
+    task.PREVIOUSLY_SEEN.put("fake url", batch);
     //Test that  it will not out put previously seen articles
     queue.clear();
     batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist1.xml"));
-    assertEquals( 0, queue.size());
-    assertEquals( 20 , batch.size());
+    assertEquals( queue.size(), 0);
+    assertEquals( batch.size(), 20);
     assertTrue( queue.size() < batch.size());
-    RssStreamProviderTask.PREVIOUSLY_SEEN.put("fake url", batch);
+    task.PREVIOUSLY_SEEN.put("fake url", batch);
 
     batch = task.queueFeedEntries(new 
URL("resource:///test_rss_xml/economist2.xml"));
     assertTrue( queue.size() < batch.size());
-    assertEquals(3, queue.size(), "Expected queue size to be 0");
-    assertEquals(25, batch.size(), "Expected batch size to be 0");
+    assertEquals(queue.size(), 3);
+    assertEquals(batch.size(), 25);
   }
 
 

Reply via email to