From b6612137bab8726d1374be164c5109bf68a87b64 Mon Sep 17 00:00:00 2001
From: terry-norbraten <tnorb@comcast.net>
Date: Fri, 26 Jun 2020 19:56:02 -0600
Subject: [PATCH] can figure it out. Since going to NB 12, upgrading Junit5,
 SignalPdusTest fails due to twice the packets received than sent when run in
 conjunction with all unit tests? Will test successfully when run as a single
 test though, weird...

---
 .../nps/moves/dis7/BitFieldRoundTripTest.java | 11 ++-
 test/edu/nps/moves/dis7/CommentPdusTest.java  | 13 +++-
 .../moves/dis7/DataQueryPduRoundTripTest.java | 15 +++-
 .../FixedAndVariableDatumRoundTripTest.java   | 20 ++---
 test/edu/nps/moves/dis7/SignalPdusTest.java   | 77 ++++++++++---------
 5 files changed, 82 insertions(+), 54 deletions(-)

diff --git a/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java b/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
index 602e02052d..733fdf0dfa 100644
--- a/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
+++ b/test/edu/nps/moves/dis7/BitFieldRoundTripTest.java
@@ -17,6 +17,7 @@ public class BitFieldRoundTripTest
 {
     Pdu receivedPdu;
     DisThreadedNetIF netif;
+    DisThreadedNetIF.PduListener lis;
 
   @BeforeAll
   public static void setUpClass()
@@ -33,12 +34,19 @@ public class BitFieldRoundTripTest
   public void setUp()
   {   
       netif = new DisThreadedNetIF();
-      netif.addListener(pdu -> setUpReceiver(pdu));
+      lis = new DisThreadedNetIF.PduListener() {
+          @Override
+          public void incomingPdu(Pdu pdu) {
+              setUpReceiver(pdu);
+          }
+      };
+      netif.addListener(lis);
   }
 
   @AfterEach
   public void tearDown()
   {
+      netif.removeListener(lis);
       netif.kill();
       netif = null;
   }
@@ -69,7 +77,6 @@ public class BitFieldRoundTripTest
       .set(LandPlatformAppearance.IS_FROZEN,1);
   
     try {
-      Thread.sleep(250l); // make sure receiver is listening
       netif.send(espdu);
       Thread.sleep(100l); 
     }
diff --git a/test/edu/nps/moves/dis7/CommentPdusTest.java b/test/edu/nps/moves/dis7/CommentPdusTest.java
index daceed84eb..c376e8155f 100644
--- a/test/edu/nps/moves/dis7/CommentPdusTest.java
+++ b/test/edu/nps/moves/dis7/CommentPdusTest.java
@@ -15,6 +15,7 @@ public class CommentPdusTest
 {
   DisThreadedNetIF netif;
   Pdu receivedPdu;
+  DisThreadedNetIF.PduListener lis;
     
   @BeforeAll
   public static void setUpClass()
@@ -29,14 +30,21 @@ public class CommentPdusTest
 
   @BeforeEach
   public void setUp()
-  {
+  {   
       netif = new DisThreadedNetIF();
-      netif.addListener(pdu -> setUpReceiver(pdu));
+      lis = new DisThreadedNetIF.PduListener() {
+          @Override
+          public void incomingPdu(Pdu pdu) {
+              setUpReceiver(pdu);
+          }
+      };
+      netif.addListener(lis);
   }
 
   @AfterEach
   public void tearDown()
   {
+      netif.removeListener(lis);
       netif.kill();
       netif = null;
   }
@@ -68,7 +76,6 @@ public class CommentPdusTest
   private void sendPdu(Pdu pdu)
   {
     try {
-      Thread.sleep(250l); // make sure receiver is listening
       netif.send(pdu);
       Thread.sleep(100l);
     }
diff --git a/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java b/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java
index 84fafbb9a4..e11bf3c478 100644
--- a/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java
+++ b/test/edu/nps/moves/dis7/DataQueryPduRoundTripTest.java
@@ -16,6 +16,7 @@ public class DataQueryPduRoundTripTest
 
  Pdu receivedPdu;
  DisThreadedNetIF netif;
+ DisThreadedNetIF.PduListener lis;
 
   @BeforeAll
   public static void setUpClass()
@@ -30,14 +31,21 @@ public class DataQueryPduRoundTripTest
 
   @BeforeEach
   public void setUp()
-  {
+  {   
       netif = new DisThreadedNetIF();
-      netif.addListener(pdu -> setUpReceiver(pdu));
+      lis = new DisThreadedNetIF.PduListener() {
+          @Override
+          public void incomingPdu(Pdu pdu) {
+              setUpReceiver(pdu);
+          }
+      };
+      netif.addListener(lis);
   }
 
   @AfterEach
   public void tearDown()
   {
+      netif.removeListener(lis);
       netif.kill();
       netif = null;
   }
@@ -99,9 +107,8 @@ public class DataQueryPduRoundTripTest
     sendingPdu.getVariableDatums().add(variableDatum2);
 
     try {
-      Thread.sleep(250l); // make sure receiver is listening
       netif.send(sendingPdu);
-      Thread.sleep(1000l); 
+      Thread.sleep(100l);
     }
     catch (InterruptedException ex) {
       System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
diff --git a/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java b/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java
index 6f4cc2c7ac..04d331d215 100644
--- a/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java
+++ b/test/edu/nps/moves/dis7/FixedAndVariableDatumRoundTripTest.java
@@ -4,7 +4,6 @@
  */
 package edu.nps.moves.dis7;
 
-import edu.nps.moves.dis7.enumerations.ActionResponseRequestStatus;
 import edu.nps.moves.dis7.enumerations.VariableRecordType;
 import edu.nps.moves.dis7.utilities.DisThreadedNetIF;
 import edu.nps.moves.dis7.utilities.PduFactory;
@@ -16,6 +15,7 @@ public class FixedAndVariableDatumRoundTripTest
 {
   Pdu receivedPdu;
   DisThreadedNetIF netif;
+  DisThreadedNetIF.PduListener lis;
 
   @BeforeAll
   public static void setUpClass()
@@ -32,19 +32,23 @@ public class FixedAndVariableDatumRoundTripTest
   public void setUp()
   {   
       netif = new DisThreadedNetIF();
-      netif.addListener(pdu -> setUpReceiver(pdu));
+      lis = new DisThreadedNetIF.PduListener() {
+          @Override
+          public void incomingPdu(Pdu pdu) {
+              setUpReceiver(pdu);
+          }
+      };
+      netif.addListener(lis);
   }
 
   @AfterEach
   public void tearDown()
   {
+      netif.removeListener(lis);
       netif.kill();
       netif = null;
   }
 
-  private static int REQUEST_ID = 0x00112233;
-  private static ActionResponseRequestStatus REQUEST_STATUS = ActionResponseRequestStatus.RETRANSMIT_REQUEST_LATER;
-
   private static FixedDatum fixedDatum1 = new FixedDatum();
   private static int fixedDatum1Value = 0x111111FF;
   private static VariableRecordType fixedDatum1VarRecordType = VariableRecordType.ACTIVATE_OWNSHIP;
@@ -59,7 +63,6 @@ public class FixedAndVariableDatumRoundTripTest
   private static VariableRecordType variableDatum1Type = VariableRecordType.ACLS_AIRCRAFT_REPORT;
   private static String variableDatum1String = "varDatum1Value111";
   private static byte[] variableDatum1Value = variableDatum1String.getBytes();
-  private static int variableDatum1LengthInBits = variableDatum1String.length() * 8 - 1; // test
 
   private static VariableDatum variableDatum2 = new VariableDatum();
   private static VariableRecordType variableDatum2Type = VariableRecordType.Z_ACCELERATION;
@@ -77,11 +80,9 @@ public class FixedAndVariableDatumRoundTripTest
 
     variableDatum1.setVariableDatumID(variableDatum1Type);
     variableDatum1.setVariableDatumValue(variableDatum1Value);
-    //variableDatum1.setVariableDatumLength(variableDatum1LengthInBits);
 
     variableDatum2.setVariableDatumID(variableDatum2Type);
     variableDatum2.setVariableDatumValue(variableDatum2Value);
-    //variableDatum2.setVariableDatumLength(variableDatum2Value.length * 8); //in bits
   }
 
   @Test
@@ -98,9 +99,8 @@ public class FixedAndVariableDatumRoundTripTest
     sentPdu.getVariableDatums().add(variableDatum2);
 
     try {
-      Thread.sleep(250l); // make sure receiver is listening
       netif.send(sentPdu);
-      Thread.sleep(1000l);
+      Thread.sleep(100l);
     }
     catch (InterruptedException ex) {
       System.err.println("Error sending Multicast: " + ex.getLocalizedMessage());
diff --git a/test/edu/nps/moves/dis7/SignalPdusTest.java b/test/edu/nps/moves/dis7/SignalPdusTest.java
index 1ae60ffc7c..0c62da9652 100644
--- a/test/edu/nps/moves/dis7/SignalPdusTest.java
+++ b/test/edu/nps/moves/dis7/SignalPdusTest.java
@@ -29,30 +29,30 @@ import static org.junit.jupiter.api.Assertions.*;
 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
 public class SignalPdusTest {
     
-    DisThreadedNetIF netif;
-    List<Pdu> receivedPdus;
-    PduRecorder recorder;
+    static DisThreadedNetIF netif;
+    static DisThreadedNetIF.PduListener lis;
+    static List<Pdu> receivedPdus;
+    static PduRecorder recorder;
     
-    Semaphore mutex;
-    PduFactory pduFac;
-    List<Pdu> sentPdus;
+    static Semaphore mutex;
+    static PduFactory pduFac;
+    static List<Pdu> sentPdus;
     byte[] buff;
     int size;
 
     @BeforeAll
     public static void setUpClass() throws IOException {
         System.out.println("SignalPdusTest");
-    }
-
-    @AfterAll
-    public static void tearDownClass() throws IOException {
-    }
-
-    @BeforeEach
-    public void setUp() throws IOException, InterruptedException {
+        
         recorder = new PduRecorder(); // default dir
         netif = recorder.getDisThreadedNetIF();
-        netif.addListener(pdu -> handleReceivedPdu(pdu));
+        lis = new DisThreadedNetIF.PduListener() {
+          @Override
+          public void incomingPdu(Pdu pdu) {
+              handleReceivedPdu(pdu);
+          }
+        };
+        netif.addListener(lis);
         
         mutex = new Semaphore(1);
         
@@ -80,21 +80,24 @@ public class SignalPdusTest {
         ((IntercomSignalPdu) pdu).setData("IntercomSignalPdu-testdata".getBytes());
         sentPdus.add(pdu);
 
-        try {
-            Thread.sleep(250l); // give receive time to spool up
-            sentPdus.forEach(p -> netif.send(p));
-            Thread.sleep(250l); // give receiver time to process
-        } catch (InterruptedException ex) {
-            fail("NetIF Send: " + ex);
-        }
+        sentPdus.forEach(p -> {
+            netif.send(p);
+            sleep(10l); // give receiver time to process
+        });
+    }
+
+    @AfterAll
+    public static void tearDownClass() throws IOException {
+    }
+
+    @BeforeEach
+    public void setUp() throws IOException, InterruptedException {
     }
 
     @AfterEach
     public void tearDown() throws IOException {
-        sentPdus.clear();
-        receivedPdus.clear();
+        netif.removeListener(lis);
         recorder.end(); // kills the netif as well
-        mutex.release();
     }
 
     @Test
@@ -102,9 +105,6 @@ public class SignalPdusTest {
     public void testRoundTripNet() {
         System.out.println("testRoundTripNet");
         
-        // Compare
-        assertEquals(sentPdus, receivedPdus, "Sent and received pdus not identical");
-
         // Let's see how these unmarshall
         receivedPdus.forEach(pdu -> {
             try {
@@ -119,6 +119,9 @@ public class SignalPdusTest {
                 Logger.getLogger(SignalPdusTest.class.getName()).log(Level.SEVERE, null, ex);
             }
         });
+        
+        // Compare
+        assertEquals(sentPdus, receivedPdus, "Sent and received pdus not identical");
     }
 
     @Test
@@ -126,7 +129,6 @@ public class SignalPdusTest {
     public void testRoundTripLog() throws IOException, InterruptedException {   
         System.out.println("testRoundTripLog");
         
-        recorder.end(); // this finishes the 2nd log file so it can be played
         mutex.acquire();
         Path path = Path.of(recorder.getLogFile()).getParent();
         
@@ -144,22 +146,27 @@ public class SignalPdusTest {
     
         mutex.acquire();
     }
+    
+    private static void sleep(long ms) {
+        try {
+            Thread.sleep(ms);
+        } catch (InterruptedException ex) {
+            fail("NetIF Send: " + ex);
+        }
+    }
 
-    private void handleReceivedPdu(Pdu pdu) {
+    private static void handleReceivedPdu(Pdu pdu) {
         receivedPdus.add(pdu);
     }
 
     public static void main(String[] args) throws IOException, InterruptedException {
         
+        setUpClass();
+        
         SignalPdusTest spt = new SignalPdusTest();
-
-        spt.setUp();
         spt.testRoundTripNet();
         spt.tearDown();
-
-        spt.setUp();
         spt.testRoundTripLog();
-        spt.tearDown();
     }
 
 }
-- 
GitLab