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]