Author: bago Date: Mon May 29 05:48:22 2006 New Revision: 410089 URL: http://svn.apache.org/viewvc?rev=410089&view=rev Log: Fixes for newline issues and RemoteManager (Thanks to Norman for helping debugging this issue) Should also fix randomly failing remote manager tests. To be tested under macos.
Modified: james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java Modified: james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java?rev=410089&r1=410088&r2=410089&view=diff ============================================================================== --- james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java (original) +++ james/server/trunk/src/test/org/apache/james/remotemanager/RemoteManagerTest.java Mon May 29 05:48:22 2006 @@ -34,14 +34,15 @@ import org.apache.james.test.mock.james.MockUsersStore; import org.apache.james.test.util.Util; import org.apache.james.userrepository.MockUsersRepository; +import org.apache.james.util.InternetPrintWriter; import org.apache.james.util.connection.SimpleConnectionManager; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; -import java.io.OutputStreamWriter; import java.util.ArrayList; -import java.util.Arrays; import java.util.Iterator; import java.util.List; @@ -56,14 +57,12 @@ public class RemoteManagerTest extends TestCase { - public static final String LINE_SEPARATOR = System.getProperties().getProperty("line.separator"); - protected int m_remoteManagerListenerPort = Util.getNonPrivilegedPort(); protected RemoteManager m_remoteManager; protected RemoteManagerTestConfiguration m_testConfiguration; protected String m_host = "127.0.0.1"; protected BufferedReader m_reader; - protected OutputStreamWriter m_writer; + protected InternetPrintWriter m_writer; protected TelnetClient m_telnetClient; private MockUsersRepository m_mockUsersRepository; @@ -105,31 +104,32 @@ } protected List readAnswer() { - try { - while (!m_reader.ready()) { ; } - } catch (IOException e) { - return null; - } - - StringBuffer stringBuffer = new StringBuffer(); - char[] charBuffer = new char[100]; + return readAnswer(1); + } + + protected List readAnswer(int numLines) { List allAnswerLines = new ArrayList(); try { - int readCount; - while ((m_reader.ready() && (readCount = m_reader.read(charBuffer)) > 0)) { - stringBuffer.append(charBuffer, 0, readCount); + if (numLines > 0) { + for (int i = 0; i < numLines; i++) { + allAnswerLines.add(m_reader.readLine()); + } + } else { + String line = m_reader.readLine(); + allAnswerLines.add(line); + + while (m_reader.ready()) { + allAnswerLines.add(m_reader.readLine()); + } } + return allAnswerLines; } catch (IOException e) { - fail("reading remote manager answer failed"); + return null; } - - allAnswerLines.addAll(Arrays.asList(stringBuffer.toString().split(LINE_SEPARATOR))); - if ("".equals(getLastLine(allAnswerLines))) allAnswerLines.remove(allAnswerLines.size()-1); - return allAnswerLines; } protected void sendCommand(String command) throws IOException { - m_writer.write(command + LINE_SEPARATOR); + m_writer.println(command); m_writer.flush(); } @@ -137,10 +137,10 @@ m_telnetClient = new TelnetClient(); m_telnetClient.connect(m_host, m_remoteManagerListenerPort); - m_reader = new BufferedReader(new InputStreamReader(m_telnetClient.getInputStream())); - m_writer = new OutputStreamWriter(m_telnetClient.getOutputStream()); + m_reader = new BufferedReader(new InputStreamReader(new BufferedInputStream(m_telnetClient.getInputStream(), 1024), "ASCII")); + m_writer = new InternetPrintWriter(new BufferedOutputStream(m_telnetClient.getOutputStream(), 1024), true); - readAnswer(); + readAnswer(3); } private MockServiceManager setUpServiceManager() { @@ -170,11 +170,13 @@ connect(); sendCommand("sindbad"); + List answers = readAnswer(); sendCommand(m_testConfiguration.getLoginPassword()); - List answers = readAnswer(); + // we should receive the fail message and a new Login id. + answers = readAnswer(2); String last = getLastLine(answers); - assertTrue(last.startsWith("Login id:")); // login failed, getting new login prompt + assertTrue("Last line does not start with 'Login id:' but with '"+last+"'",last.startsWith("Login id:")); // login failed, getting new login prompt } public void testWrongLoginPassword() throws IOException { @@ -182,11 +184,12 @@ connect(); sendCommand(m_testConfiguration.getLoginName()); + List answers = readAnswer(); sendCommand("getmethru"); - List answers = readAnswer(); + answers = readAnswer(2); String last = getLastLine(answers); - assertTrue(last.startsWith("Login id:")); // login failed, getting new login prompt + assertTrue("Line does not start with 'Login id:' but with '"+last+"'", last.startsWith("Login id:")); // login failed, getting new login prompt } public void testUserCount() throws IOException { @@ -276,7 +279,7 @@ } catch (InterruptedException e) { ; // ignore } - readAnswer(); + readAnswer(0); sendCommand("help"); try { @@ -297,6 +300,7 @@ for (int i = 0; i < users.length; i++) { String user = users[i]; sendCommand("adduser " + user + " test"); + readAnswer(1); } try { @@ -304,10 +308,9 @@ } catch (InterruptedException e) { ; // ignore } - readAnswer(); sendCommand("listusers"); - List list = readAnswer(); + List list = readAnswer(5); assertEquals("user count line", "Existing accounts " + users.length, list.get(0)); @@ -469,25 +472,28 @@ connect(); login(); + String lastLine; + sendCommand("adduser testPwdUser pwd1"); - assertTrue(getLastLine(readAnswer()).endsWith(" added")); + lastLine = getLastLine(readAnswer()); + assertTrue(lastLine.endsWith(" added")); assertTrue("initial password", m_mockUsersRepository.test("testPwdUser", "pwd1")); - sendCommand("setpassword testPwdUser "); - assertTrue("password changed to empty", m_mockUsersRepository.test("testPwdUser", "pwd1")); - readAnswer(); // ignore + sendCommand("setpassword testPwdUser "); + lastLine = getLastLine(readAnswer()); + assertTrue("password changed to empty: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd1")); // change pwd sendCommand("setpassword testPwdUser pwd2"); - assertTrue("password not changed to pwd2", m_mockUsersRepository.test("testPwdUser", "pwd2")); - readAnswer(); // ignore + lastLine = getLastLine(readAnswer()); + assertTrue("password not changed to pwd2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd2")); // assure case sensitivity sendCommand("setpassword testPwdUser pWD2"); - assertFalse("password not changed to pWD2", m_mockUsersRepository.test("testPwdUser", "pwd2")); - assertTrue("password not changed to pWD2", m_mockUsersRepository.test("testPwdUser", "pWD2")); - readAnswer(); // ignore + lastLine = getLastLine(readAnswer()); + assertFalse("password not changed to pWD2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pwd2")); + assertTrue("password not changed to pWD2: "+lastLine, m_mockUsersRepository.test("testPwdUser", "pWD2")); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]