[java-metadata-aggregator] branch main updated: MDA-65 - Catch up on unit tests

Ian Young ian at iay.org.uk
Fri Sep 25 16:56:17 UTC 2020


This is an automated email from the git hooks/post-receive script.

iay pushed a commit to branch main
in repository java-metadata-aggregator.

View the commit online:
http://git.shibboleth.net/view/?p=java-metadata-aggregator.git;a=commit;h=77323f233166eae0dc61661da2c49bbf8b2f6fe7

The following commit(s) were added to refs/heads/main by this push:
       new  77323f2   MDA-65 - Catch up on unit tests
77323f2 is described below

commit 77323f233166eae0dc61661da2c49bbf8b2f6fe7
Author: Ian Young <ian at iay.org.uk>
AuthorDate: Fri Sep 25 17:56:08 2020 +0100

    MDA-65 - Catch up on unit tests
    
    https://issues.shibboleth.net/jira/browse/MDA-65
---
 .../pipeline/StatusMetadataLoggingStage.java       |   7 +-
 .../pipeline/StatusMetadataLoggingStageTest.java   | 101 +++++++++++++++++++++
 2 files changed, 105 insertions(+), 3 deletions(-)

diff --git a/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStage.java b/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStage.java
index c7bae52..49e519c 100644
--- a/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStage.java
+++ b/aggregator-pipeline/src/main/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStage.java
@@ -21,6 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 import javax.annotation.Nonnull;
+import javax.annotation.Nullable;
 import javax.annotation.concurrent.ThreadSafe;
 
 import org.slf4j.Logger;
@@ -67,7 +68,7 @@ public class StatusMetadataLoggingStage<T> extends AbstractItemMetadataSelection
      * @param statuses status messages to log
      */
     private void logInfos(@Nonnull final String itemId,
-            @Nonnull @NonnullElements final List<? extends ItemMetadata> statuses) {
+            @Nullable @NonnullElements final List<? extends ItemMetadata> statuses) {
         if (statuses != null && !statuses.isEmpty() && log.isInfoEnabled()) {
             log.info("Item {} was marked with the following Info status messages", itemId);
             for (final ItemMetadata info : statuses) {
@@ -84,7 +85,7 @@ public class StatusMetadataLoggingStage<T> extends AbstractItemMetadataSelection
      * @param statuses status messages to log
      */
     private void logWarnings(@Nonnull final String itemId,
-            @Nonnull @NonnullElements final List<? extends ItemMetadata> statuses) {
+            @Nullable @NonnullElements final List<? extends ItemMetadata> statuses) {
         if (statuses != null && !statuses.isEmpty() && log.isWarnEnabled()) {
             log.warn("Item {} was marked with the following Warning status messages", itemId);
             for (final ItemMetadata info : statuses) {
@@ -101,7 +102,7 @@ public class StatusMetadataLoggingStage<T> extends AbstractItemMetadataSelection
      * @param statuses status messages to log
      */
     private void logErrors(@Nonnull final String itemId,
-            @Nonnull @NonnullElements final List<? extends ItemMetadata> statuses) {
+            @Nullable @NonnullElements final List<? extends ItemMetadata> statuses) {
         if (statuses != null && !statuses.isEmpty() && log.isErrorEnabled()) {
             log.error("Item {} was marked with the following Error status messages", itemId);
             for (final ItemMetadata info : statuses) {
diff --git a/aggregator-pipeline/src/test/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStageTest.java b/aggregator-pipeline/src/test/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStageTest.java
new file mode 100644
index 0000000..4664aed
--- /dev/null
+++ b/aggregator-pipeline/src/test/java/net/shibboleth/metadata/pipeline/StatusMetadataLoggingStageTest.java
@@ -0,0 +1,101 @@
+
+package net.shibboleth.metadata.pipeline;
+
+import java.util.List;
+import java.util.Set;
+
+import org.slf4j.LoggerFactory;
+import org.testng.Assert;
+import org.testng.annotations.AfterMethod;
+import org.testng.annotations.BeforeMethod;
+import org.testng.annotations.Test;
+
+import ch.qos.logback.classic.Logger;
+import ch.qos.logback.classic.spi.ILoggingEvent;
+import ch.qos.logback.core.read.ListAppender;
+import net.shibboleth.metadata.ErrorStatus;
+import net.shibboleth.metadata.InfoStatus;
+import net.shibboleth.metadata.Item;
+import net.shibboleth.metadata.ItemIdentificationStrategy;
+import net.shibboleth.metadata.MockItem;
+import net.shibboleth.metadata.WarningStatus;
+
+
+public class StatusMetadataLoggingStageTest {
+
+    private Logger logger;
+    private ListAppender<ILoggingEvent> listAppender;
+
+    @BeforeMethod
+    private void initializeLogger() {
+        // Find the (logback) logger for the class under test
+        logger = (Logger)LoggerFactory.getLogger(StatusMetadataLoggingStage.class);
+
+        // Create and start a ListAppender
+        listAppender = new ListAppender<>();
+        listAppender.start();
+
+        // Add the appender to the logger.
+        logger.addAppender(listAppender);
+    }
+    
+    @AfterMethod
+    private void terminateLogger() {
+        logger.detachAppender(listAppender);
+        listAppender.stop();
+    }
+
+    private static class StringSelfIdentificationStrategy implements ItemIdentificationStrategy<String> {
+
+        @Override
+        public String getItemIdentifier(Item<String> item) {
+            return item.unwrap();
+        }
+        
+    }
+
+    private List<Item<String>> getItems() {
+        final List<Item<String>> items = List.of(new MockItem("item1"),
+                new MockItem("item2"), new MockItem("item3"));
+        items.get(0).getItemMetadata().put(new ErrorStatus("comp1", "err1"));
+        items.get(0).getItemMetadata().put(new ErrorStatus("comp1", "err2"));
+        items.get(0).getItemMetadata().put(new WarningStatus("comp1", "warn1"));
+        items.get(0).getItemMetadata().put(new InfoStatus("comp1", "info1"));
+        items.get(2).getItemMetadata().put(new WarningStatus("comp1", "warn2"));
+        return items;
+    }
+
+    @Test
+    public void testLoggingAllKinds() throws Exception {
+        final var items = getItems();
+        final var stage = new StatusMetadataLoggingStage<String>();
+        stage.setId("test");
+        stage.setIdentificationStrategy(new StringSelfIdentificationStrategy());
+        stage.setSelectionRequirements(Set.of(ErrorStatus.class, InfoStatus.class, WarningStatus.class));
+        stage.initialize();
+        
+        stage.execute(items);
+
+        stage.destroy();
+        
+        final var logsList = listAppender.list;
+        Assert.assertEquals(logsList.size(), 9); // 2+1 + 1+1 + 1+1 + 1+1
+    }
+
+    @Test
+    public void testLoggingJustErrors() throws Exception {
+        final var items = getItems();
+        final var stage = new StatusMetadataLoggingStage<String>();
+        stage.setId("test");
+        stage.setIdentificationStrategy(new StringSelfIdentificationStrategy());
+        stage.setSelectionRequirements(Set.of(ErrorStatus.class));
+        stage.initialize();
+        
+        stage.execute(items);
+
+        stage.destroy();
+        
+        final var logsList = listAppender.list;
+        Assert.assertEquals(logsList.size(), 3); // 2+1
+    }
+}

-- 
To stop receiving notification emails like this one, please contact
the administrator of this repository.


More information about the commits mailing list