You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ftpserver-dev@incubator.apache.org by Peter Kostouros <kp...@melbpc.org.au> on 2007/08/24 10:59:21 UTC
RetrieveTest and RetrievePassiveTest failing on Linux due to line
separators
Hi
Test cases
ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/RetrieveTest
and
ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/RetrievePassiveTest
are failing under a Unix/Linux type of environment: the file sizes do
not match - looks like a \r\n issue.
From the the org.apache.commons.net.ftp.FTPClient document page,
paraphrasing, retrieveFile(String, OutputStream) retrieves a named file
from the server and writes it to the given OutputStream. ... If the
current file type is ASCII, line separators in the file are converted to
the local representation.
Here is how I got around it (not yet tested under Windows)
--- RetrieveTest.java~ 2007-08-24 20:50:43.000000000 +1000
+++ RetrieveTest.java 2007-08-24 20:45:43.000000000 +1000
@@ -30,6 +30,8 @@
private static final File TEST_FILE = new File(ROOT_DIR,
TEST_FILENAME);
private static byte[] testData = null;
+
+ private static final String EOL = System.getProperty("line.separator");
/* (non-Javadoc)
* @see org.apache.ftpserver.clienttests.ClientTestTemplate#setUp()
@@ -37,7 +39,12 @@
protected void setUp() throws Exception {
super.setUp();
- testData = "TESTDATA\r\n".getBytes("UTF-8");
+ if (EOL.equals("\n"))
+ testData = "TESTDATA\n".getBytes("UTF-8");
+ else if (EOL.equals("\r\n"))
+ testData = "TESTDATA\r\n".getBytes("UTF-8");
+ else
+ testData = "TESTDATA\r\n".getBytes("UTF-8");
client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
}
The failed sure-fire report for RetrieveTest:
-------------------------------------------------------------------------------
Test set: org.apache.ftpserver.clienttests.RetrieveTest
-------------------------------------------------------------------------------
Tests run: 7, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 9.962
sec <<< FAILURE!
testRetrieve(org.apache.ftpserver.clienttests.RetrieveTest) Time
elapsed: 1.276 sec <<< FAILURE!
junit.framework.AssertionFailedError: Arrays are of different length
at junit.framework.Assert.fail(Assert.java:47)
at
org.apache.ftpserver.test.TestUtil.assertArraysEqual(TestUtil.java:164)
at
org.apache.ftpserver.clienttests.RetrieveTest.testRetrieve(RetrieveTest.java:55)
at
org.apache.ftpserver.clienttests.RetrieveTest.testRetrieve(RetrieveTest.java:55)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:299)
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:837)
testRetrieveWithRestart(org.apache.ftpserver.clienttests.RetrieveTest)
Time elapsed: 2.124 sec <<< FAILURE!
junit.framework.AssertionFailedError: Arrays are of different length
at junit.framework.Assert.fail(Assert.java:47)
at
org.apache.ftpserver.test.TestUtil.assertArraysEqual(TestUtil.java:164)
at
org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithRestart(RetrieveTest.java:88)
at
org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithRestart(RetrieveTest.java:88)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:299)
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:837)
testRetrieveWithPath(org.apache.ftpserver.clienttests.RetrieveTest)
Time elapsed: 1.194 sec <<< FAILURE!
junit.framework.AssertionFailedError: Arrays are of different length
at junit.framework.Assert.fail(Assert.java:47)
at
org.apache.ftpserver.test.TestUtil.assertArraysEqual(TestUtil.java:164)
at
org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithPath(RetrieveTest.java:105)
at
org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithPath(RetrieveTest.java:105)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at junit.framework.TestCase.runTest(TestCase.java:154)
at junit.framework.TestCase.runBare(TestCase.java:127)
at junit.framework.TestResult$1.protect(TestResult.java:106)
at junit.framework.TestResult.runProtected(TestResult.java:124)
at junit.framework.TestResult.run(TestResult.java:109)
at junit.framework.TestCase.run(TestCase.java:118)
at junit.framework.TestSuite.runTest(TestSuite.java:208)
at junit.framework.TestSuite.run(TestSuite.java:203)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
at
org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:299)
at
org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:837)
--
Regards
Peter
As always the organisation disavows knowledge of this email
Re: RetrieveTest and RetrievePassiveTest failing on Linux due to
line separators
Posted by Peter Kostouros <kp...@melbpc.org.au>.
Thanks. These tests now pass for me.
Niklas Gustavsson wrote:
> Thanks for reporting! I've implemented a very similar solution as you
> describe below. Please test to see if it works better.
>
> /niklas
>
> Peter Kostouros wrote:
>> Hi
>>
>> Test cases
>>
>> ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/RetrieveTest
>> and
>> ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/RetrievePassiveTest
>>
>>
>> are failing under a Unix/Linux type of environment: the file sizes do
>> not match - looks like a \r\n issue.
--
Regards
Peter
As always the organisation disavows knowledge of this email
Re: RetrieveTest and RetrievePassiveTest failing on Linux due to
line separators
Posted by Niklas Gustavsson <ni...@protocol7.com>.
Thanks for reporting! I've implemented a very similar solution as you
describe below. Please test to see if it works better.
/niklas
Peter Kostouros wrote:
> Hi
>
> Test cases
>
> ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/RetrieveTest
> and
> ftpserver/trunk/core/src/test/org/apache/ftpserver/clienttests/RetrievePassiveTest
>
>
> are failing under a Unix/Linux type of environment: the file sizes do
> not match - looks like a \r\n issue.
>
> From the the org.apache.commons.net.ftp.FTPClient document page,
> paraphrasing, retrieveFile(String, OutputStream) retrieves a named file
> from the server and writes it to the given OutputStream. ... If the
> current file type is ASCII, line separators in the file are converted to
> the local representation.
> Here is how I got around it (not yet tested under Windows)
>
> --- RetrieveTest.java~ 2007-08-24 20:50:43.000000000 +1000
> +++ RetrieveTest.java 2007-08-24 20:45:43.000000000 +1000
> @@ -30,6 +30,8 @@
> private static final File TEST_FILE = new File(ROOT_DIR,
> TEST_FILENAME);
>
> private static byte[] testData = null;
> +
> + private static final String EOL =
> System.getProperty("line.separator");
> /* (non-Javadoc)
> * @see org.apache.ftpserver.clienttests.ClientTestTemplate#setUp()
> @@ -37,7 +39,12 @@
> protected void setUp() throws Exception {
> super.setUp();
>
> - testData = "TESTDATA\r\n".getBytes("UTF-8");
> + if (EOL.equals("\n"))
> + testData = "TESTDATA\n".getBytes("UTF-8");
> + else if (EOL.equals("\r\n"))
> + testData = "TESTDATA\r\n".getBytes("UTF-8");
> + else
> + testData = "TESTDATA\r\n".getBytes("UTF-8");
> client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
> }
>
> The failed sure-fire report for RetrieveTest:
>
> -------------------------------------------------------------------------------
>
> Test set: org.apache.ftpserver.clienttests.RetrieveTest
> -------------------------------------------------------------------------------
>
> Tests run: 7, Failures: 3, Errors: 0, Skipped: 0, Time elapsed: 9.962
> sec <<< FAILURE!
> testRetrieve(org.apache.ftpserver.clienttests.RetrieveTest) Time
> elapsed: 1.276 sec <<< FAILURE!
> junit.framework.AssertionFailedError: Arrays are of different length
> at junit.framework.Assert.fail(Assert.java:47)
> at
> org.apache.ftpserver.test.TestUtil.assertArraysEqual(TestUtil.java:164)
> at
> org.apache.ftpserver.clienttests.RetrieveTest.testRetrieve(RetrieveTest.java:55)
>
> at
> org.apache.ftpserver.clienttests.RetrieveTest.testRetrieve(RetrieveTest.java:55)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
>
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
>
> at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:299)
>
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:837)
>
>
> testRetrieveWithRestart(org.apache.ftpserver.clienttests.RetrieveTest)
> Time elapsed: 2.124 sec <<< FAILURE!
> junit.framework.AssertionFailedError: Arrays are of different length
> at junit.framework.Assert.fail(Assert.java:47)
> at
> org.apache.ftpserver.test.TestUtil.assertArraysEqual(TestUtil.java:164)
> at
> org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithRestart(RetrieveTest.java:88)
>
> at
> org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithRestart(RetrieveTest.java:88)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
>
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
>
> at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:299)
>
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:837)
>
>
> testRetrieveWithPath(org.apache.ftpserver.clienttests.RetrieveTest)
> Time elapsed: 1.194 sec <<< FAILURE!
> junit.framework.AssertionFailedError: Arrays are of different length
> at junit.framework.Assert.fail(Assert.java:47)
> at
> org.apache.ftpserver.test.TestUtil.assertArraysEqual(TestUtil.java:164)
> at
> org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithPath(RetrieveTest.java:105)
>
> at
> org.apache.ftpserver.clienttests.RetrieveTest.testRetrieveWithPath(RetrieveTest.java:105)
>
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at junit.framework.TestCase.runTest(TestCase.java:154)
> at junit.framework.TestCase.runBare(TestCase.java:127)
> at junit.framework.TestResult$1.protect(TestResult.java:106)
> at junit.framework.TestResult.runProtected(TestResult.java:124)
> at junit.framework.TestResult.run(TestResult.java:109)
> at junit.framework.TestCase.run(TestCase.java:118)
> at junit.framework.TestSuite.runTest(TestSuite.java:208)
> at junit.framework.TestSuite.run(TestSuite.java:203)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.junit.JUnitTestSet.execute(JUnitTestSet.java:213)
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.executeTestSet(AbstractDirectoryTestSuite.java:138)
>
> at
> org.apache.maven.surefire.suite.AbstractDirectoryTestSuite.execute(AbstractDirectoryTestSuite.java:125)
>
> at org.apache.maven.surefire.Surefire.run(Surefire.java:132)
> at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> at
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>
> at
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> at java.lang.reflect.Method.invoke(Method.java:597)
> at
> org.apache.maven.surefire.booter.SurefireBooter.runSuitesInProcess(SurefireBooter.java:299)
>
> at
> org.apache.maven.surefire.booter.SurefireBooter.main(SurefireBooter.java:837)
>
>
>