--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/genericunixprotocols/telnetsrv/test/src/TelnetTest.java Tue Mar 02 10:33:16 2010 +0530
@@ -0,0 +1,314 @@
+/*
+* Copyright (c) 2005-2009 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* This component and the accompanying materials are made available
+* under the terms of "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import junit.framework.TestCase;
+
+import org.apache.commons.net.telnet.TelnetClient;
+
+
+public class TelnetTest extends TestCase {
+
+ /* (non-Javadoc)
+ * @see junit.framework.TestCase#setUp()
+ */
+ TelnetClient telnetClient = new TelnetClient();
+
+ InputStream is;
+ OutputStream os;
+ byte promptBuffer[] = new byte[11]; //"localhost# "
+ String prompt = "localhost# ";
+
+
+ //FTP&Telnet-Connection-001
+ //To Establish a connection from remote host to Symbian OS device(H2/H4)
+
+ protected void setUp() throws Exception {
+ super.setUp();
+
+ String address = System.getProperty("address");
+
+ telnetClient.connect(/*"172.0.0.3"*/address);
+
+ is = telnetClient.getInputStream();
+ os = telnetClient.getOutputStream();
+
+ is.read(promptBuffer);
+
+
+ }
+
+ /* (non-Javadoc)
+ * @see junit.framework.TestCase#tearDown()
+ */
+
+ //FTP&Telnet-Connection-002
+ //To Close a connection from remote host to Symbian OS device(H2/H4)
+
+ protected void tearDown() throws Exception {
+ super.tearDown();
+
+ os.write("exit\r\n".getBytes());
+ os.flush();
+
+ telnetClient.disconnect();
+ }
+
+ private String readUntil(InputStream in, String pattern) throws IOException {
+ StringBuffer sb = new StringBuffer();
+ while(!(sb.toString().endsWith(prompt)))
+ {
+ sb.append((char)in.read());
+ }
+ return sb.toString();
+ }
+
+ public void testAYT() throws IOException, IllegalArgumentException, InterruptedException
+ {
+ assertTrue(telnetClient.sendAYT(5000));
+ }
+
+ public void testCd() throws IOException
+ {
+ os.write("cd c:\r\n".getBytes());
+ os.flush();
+ is.read(promptBuffer); //"localhost# "
+ assertEquals(prompt, new String(promptBuffer));
+ }
+
+ public void testPwd() throws IOException
+ {
+ os.write("pwd\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is,prompt);
+ s = s.substring(1, s.indexOf(prompt));
+
+ assertEquals(":\\Private\\2000cd0f\\\r\n", s);
+
+ }
+
+ public void testCdPwd() throws IOException
+ {
+
+ os.write("cd c:\r\n".getBytes());
+ os.flush();
+ is.read(promptBuffer); //"localhost# "
+ assertEquals(new String(promptBuffer),prompt);
+
+ os.write("pwd\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is,prompt);
+ s = s.substring(0, s.indexOf(prompt));
+
+ assertEquals("c:\r\n", s);
+ }
+
+ //DEF117414
+ //zsh cannot run external commands after running 82 commands
+ //TODO: change maxIter to 100 when fixed
+
+ public void testPs() throws IOException
+ {
+
+ int maxIter = 2;
+
+ for(int i=0; i<maxIter; i++)
+ {
+
+ os.write("ps\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is,prompt);
+
+ s = s.substring(0, s.indexOf(prompt));
+
+ System.out.println(s);
+
+ System.out.println("iteration "+(i+1)+" of "+maxIter);
+
+ Pattern p = Pattern.compile(".*ps.EXE\\[2000ee91\\]\\d\\d\\d\\d\r\n$", Pattern.DOTALL | Pattern.CASE_INSENSITIVE); //Pattern.DOTALL => '.' includes end of line
+ Matcher m = p.matcher(s);
+ assertTrue(m.matches());
+ }
+
+ }
+
+
+ //DEF116570
+ //after few successful ps and grep, when you do ps and grep on non exsiting string the emulator hangs
+
+ public void testPsGrepNonExistingString() throws IOException
+ {
+ int maxIter = 2;
+
+ for(int i=0; i<maxIter; i++)
+ {
+
+ os.write("ps | grep nonexisting\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is,prompt);
+
+ s = s.substring(0, s.indexOf(prompt));
+
+ assertEquals(0,s.length());
+ }
+ }
+
+ //FTP&Telnet-Remote Execution-001
+ //To Launch a process on a remote Symbian OS device(H2/H4) from PC
+
+ public void testFTP_Telnet_Remote_Execution_001() throws IOException
+ {
+ os.write("testexecute c:\\nonexisting.script\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is,prompt);
+
+ assertEquals(11, s.length());
+ }
+
+
+ //FTP&Telnet-Remote Execution-002
+ //To pool all the process on the symbian OS device(H2/H4) from PC
+
+ public void testFTP_Telnet_Remote_Execution_002() throws IOException
+ {
+ os.write("ps\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is,prompt);
+
+ s = s.substring(0, s.indexOf(prompt));
+
+ // System.out.println(s);
+
+ Pattern p = Pattern.compile(".*ps.EXE\\[2000ee91\\]\\d\\d\\d\\d\r\n$", Pattern.DOTALL | Pattern.CASE_INSENSITIVE); //Pattern.DOTALL => '.' includes end of line
+ Matcher m = p.matcher(s);
+ assertTrue(m.matches());
+ }
+
+
+ //FTP&Telnet-Remote Execution-003
+ // Kill any process on Symbian OS device(H2/H4) from PC
+
+ public void testFTP_Telnet_Remote_Execution_003() throws IOException
+ {
+ os.write("testexecute\r\n".getBytes());
+ os.flush();
+
+ //this shell will lock, open another one and kill TEF
+
+ TelnetClient tc = new TelnetClient();
+ tc.connect(telnetClient.getRemoteAddress());
+
+ InputStream is2 = tc.getInputStream();
+ OutputStream os2 = tc.getOutputStream();
+
+ readUntil(is2, prompt);
+
+ os2.write("ps | grep TestExecute\r\n".getBytes());
+ os2.flush();
+
+ String s = readUntil(is2, prompt);
+
+ Pattern p = Pattern.compile(".*\\D+(\\d+)\\s[\\s:\\d]+TestExecute Script Engine.*", Pattern.DOTALL | Pattern.CASE_INSENSITIVE); //Pattern.DOTALL => '.' includes end of line
+ Matcher m = p.matcher(s);
+
+ assertTrue(m.matches());
+
+ String s1 = m.group(1);
+
+ int pid = Integer.parseInt(s1);
+
+ os2.write(("kill "+pid+"\r\n").getBytes());
+ os2.flush();
+ readUntil(is2, prompt);
+ os2.write("bye\r\n".getBytes());
+ os2.flush();
+
+ //we should be able now to close the other shell
+
+ readUntil(is, prompt);
+
+
+ }
+
+ //FTP&Telnet-Remote Execution-004
+ //To verify the output stream of any Symbian OS process(H2/H4) to PC
+ public void testFTP_Telnet_Remote_Execution_004() throws IOException
+ {
+
+ os.write("helloworld $PIPE\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is, prompt);
+
+ assertTrue(s.length()>0); //should print "ABCDEFG...".length() > 0
+
+ }
+
+ //FTP&Telnet-Remote Execution-005
+ //To verify the Standard Error display on Symbian OS device(H2/H4) to PC
+ public void testFTP_Telnet_Remote_Execution_005() throws IOException
+ {
+ os.write("aaa\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is, prompt);
+
+ assertEquals("zsh: command not found: aaa",s.substring(0, s.lastIndexOf("\r\n")));
+ }
+
+
+ //FTP&Telnet-Software Install-001
+ //Install a SIS file on the Symbian OS device (H2/H4) from PC
+ public void testFTP_Telnet_Install_001() throws IOException
+ {
+
+ os.write("install c:\\10210d02.sis\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is, prompt);
+
+ assertEquals("Return Code: 0",s.substring(0, s.lastIndexOf("\r\n")));
+ }
+
+ //FTP&Telnet-Software Install-002
+ //Uninstall the SIS file on the symbian OS device (H2/H4) from PC
+ public void testFTP_Telnet_Install_002() throws IOException
+ {
+
+ os.write("uninstall 10210d02\r\n".getBytes());
+ os.flush();
+
+ String s = readUntil(is, prompt);
+
+ assertEquals("Return Code: 0",s.substring(0, s.lastIndexOf("\r\n")));
+ }
+
+
+
+
+}