|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectjunit.framework.Assert
junit.framework.TestCase
org.mule.tck.AbstractMuleTestCase
org.mule.providers.tcp.issues.ReuseExperimentMule2067TestCase
public class ReuseExperimentMule2067TestCase
Can we avoid the "address already in use" errors by using SO_REUSEADDR? Typical results are
[07-24 19:32:49] INFO ReuseExperimentMule2067TestCase [main]: Measuring average run length for 100 repeats without reuse and a pause of 100 ms [07-24 19:33:49] INFO ReuseExperimentMule2067TestCase [main]: Average run length: 57.3 +/- 33.15131973240282 [07-24 19:33:49] INFO ReuseExperimentMule2067TestCase [main]: Measuring average run length for 100 repeats with reuse and a pause of 100 ms [07-24 19:35:32] INFO ReuseExperimentMule2067TestCase [main]: Average run length: 100.0 +/- 0.0 [07-24 19:35:32] INFO ReuseExperimentMule2067TestCase [main]: Measuring average run length for 100 repeats without reuse and a pause of 10 ms [07-24 19:35:48] INFO ReuseExperimentMule2067TestCase [main]: Average run length: 96.8 +/- 7.332121111929359 [07-24 19:35:48] INFO ReuseExperimentMule2067TestCase [main]: Measuring average run length for 100 repeats with reuse and a pause of 10 ms [07-24 19:36:04] INFO ReuseExperimentMule2067TestCase [main]: Average run length: 100.0 +/- 0.0 [07-24 19:36:04] INFO ReuseExperimentMule2067TestCase [main]: Measuring average run length for 100 repeats without reuse and a pause of 1 ms [07-24 19:36:10] INFO ReuseExperimentMule2067TestCase [main]: Average run length: 75.8 +/- 37.690317058894586 [07-24 19:36:10] INFO ReuseExperimentMule2067TestCase [main]: Measuring average run length for 100 repeats with reuse and a pause of 1 ms [07-24 19:36:18] INFO ReuseExperimentMule2067TestCase [main]: Average run length: 100.0 +/- 0.0which suggest that enabling address re-use could help with the issue. Note that if a single socket (ie a single port number) is reused for all tests we often zeroes eveywhere (even with waits of 2sec and similar between iterations/tests). This suggests that once the error occurs, the socket enters a long-lived "broken" state. All this is by AC on linux, dual CPU, Java 1.4 - I suspect results will vary like crazy in different contexts.
Nested Class Summary | |
---|---|
protected static class |
ReuseExperimentMule2067TestCase.Server
|
Nested classes/interfaces inherited from class org.mule.tck.AbstractMuleTestCase |
---|
org.mule.tck.AbstractMuleTestCase.TestInfo |
Field Summary |
---|
Fields inherited from class org.mule.tck.AbstractMuleTestCase |
---|
IGNORED_DOT_MULE_DIRS |
Constructor Summary | |
---|---|
ReuseExperimentMule2067TestCase()
|
Method Summary | |
---|---|
protected void |
measureMeanRunLength(int sampleSize,
int numberOfRepeats,
int numberOfConnections,
int port,
long pause,
boolean reuse)
|
protected void |
openCloseClientServer(int numberOfConnections,
int port,
boolean reuse)
|
protected void |
pause(long pause)
|
protected int |
repeatOpenCloseClientServer(int numberOfRepeats,
int numberOfConnections,
int port,
long pause,
boolean reuse,
boolean noFail)
|
void |
testMeasureImprovement()
|
void |
testReuse()
|
Methods inherited from class org.mule.tck.AbstractMuleTestCase |
---|
createTestInfo, createWatchdog, disposeManager, doSetUp, doTearDown, getDefaultModel, getManager, getName, getTestComponent, getTestConnector, getTestDescriptor, getTestEndpoint, getTestEvent, getTestEvent, getTestEvent, getTestEvent, getTestEventContext, getTestInfo, getTestManager, getTestSession, getTestTransformer, handleTimeout, isDisabledInThisEnvironment, isDisabledInThisEnvironment, isDisposeManagerPerSuite, isExcluded, isOffline, run, runBare, setDisposeManagerPerSuite, setUp, suitePostSetUp, suitePostTearDown, suitePreSetUp, suitePreTearDown, tearDown |
Methods inherited from class junit.framework.TestCase |
---|
countTestCases, createResult, run, runTest, setName, toString |
Methods inherited from class junit.framework.Assert |
---|
assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertEquals, assertFalse, assertFalse, assertNotNull, assertNotNull, assertNotSame, assertNotSame, assertNull, assertNull, assertSame, assertSame, assertTrue, assertTrue, fail, fail |
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
Constructor Detail |
---|
public ReuseExperimentMule2067TestCase()
Method Detail |
---|
public void testReuse() throws IOException
IOException
public void testMeasureImprovement() throws IOException
IOException
protected void measureMeanRunLength(int sampleSize, int numberOfRepeats, int numberOfConnections, int port, long pause, boolean reuse) throws IOException
IOException
protected int repeatOpenCloseClientServer(int numberOfRepeats, int numberOfConnections, int port, long pause, boolean reuse, boolean noFail) throws IOException
IOException
protected void openCloseClientServer(int numberOfConnections, int port, boolean reuse) throws IOException
IOException
protected void pause(long pause)
|
||||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | |||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |