diff --git a/test/edu/nps/moves/dis7/PduTest.java b/test/edu/nps/moves/dis7/PduTest.java index dd27c3f967c6b88c9a5059eb92b909ce368d488c..d0a49a387691e2d7b89f922155543166df70f60d 100644 --- a/test/edu/nps/moves/dis7/PduTest.java +++ b/test/edu/nps/moves/dis7/PduTest.java @@ -50,9 +50,13 @@ import org.junit.jupiter.api.BeforeEach; abstract public class PduTest { - protected final long THREAD_SLEEP_INTERVAL_MSEC_DEFAULT = 100l; // i.e. 100, type long + protected final long THREAD_SLEEP_INTERVAL_MSEC_DEFAULT = 1000l; // e.g. 100 msec, type long private long threadSleepInterval = THREAD_SLEEP_INTERVAL_MSEC_DEFAULT; private int maximumRetryAttempts = 10; + + Pdu receivedPdu; + DisThreadedNetworkInterface disNetworkInterface; + DisThreadedNetworkInterface.PduListener pduListener; @BeforeAll public static void setUpClass() @@ -65,10 +69,6 @@ abstract public class PduTest { } - DisThreadedNetworkInterface disNetworkInterface; - Pdu receivedPdu; - DisThreadedNetworkInterface.PduListener pduListener; - /** Ensure network connections, listener and handler are prepared */ @BeforeEach public void setUp() @@ -92,6 +92,16 @@ abstract public class PduTest disNetworkInterface.removeListener(pduListener); disNetworkInterface.kill(); disNetworkInterface = null; + try // additional sleep, allowing teardown to proceed + { + Thread.sleep(getThreadSleepInterval()); + } + catch (InterruptedException ie) + { + System.err.flush(); + System.err.println ("*** tearDown() failed to sleep"); + ie.printStackTrace(); + } } /** @@ -113,10 +123,18 @@ abstract public class PduTest Thread.sleep(getThreadSleepInterval()); if (receivedPdu != null) return; + // no receipt yet numberOfReadTests++; - System.out.flush(); + String padding1 = new String(); // count + String padding2 = new String(); // duration + if (numberOfReadTests < 10) + padding1 = " "; + if ((numberOfReadTests * getThreadSleepInterval()) < 1000l) + padding2 = " "; System.err.println ("*** PduTest.sendIeeeStandardPdu(" + createdPdu.getPduType().name() + ")" + - " receipt reattempt #" + numberOfReadTests + ", " + (numberOfReadTests * getThreadSleepInterval()) + " msec total"); + " receipt reattempt " + padding1 + "#" + numberOfReadTests + ", " + padding2 + + (numberOfReadTests * getThreadSleepInterval()) + " msec total sleep"); + System.err.flush(); } while (numberOfReadTests < getMaximumRetryAttempts()); System.err.println ("*** PduTest.sendIeeeStandardPdu(" + createdPdu.getPduType().name() + ") did not succeed"); @@ -156,7 +174,7 @@ abstract public class PduTest */ protected void testPduSendReceiveHeaderMatch (Pdu createdPdu) { - String TEST_SUITE_WARNING = " (TODO note that test works standalone but mysteriously fails as part of project test suite)"; + String TEST_SUITE_WARNING = " (TODO note that test may work standalone but mysteriously fail as part of project test suite)"; sendIeeeStandardPdu(createdPdu); // send to self, then wait a while, then return receivedPdu assertTrue(receivedPdu != null, "No response from network receive after " +