You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2009/01/09 22:37:49 UTC

svn commit: r733158 - in /mina/ftpserver/trunk/core/src: main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java test/java/org/apache/ftpserver/clienttests/SiteTest.java

Author: ngn
Date: Fri Jan  9 13:37:49 2009
New Revision: 733158

URL: http://svn.apache.org/viewvc?rev=733158&view=rev
Log:
Fix for statistics being wrong for the number of connections (FTPSERVER-259) and removed directories (FTPSERVER-261). Also added test for all stats

Modified:
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
    mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java?rev=733158&r1=733157&r2=733158&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpHandler.java Fri Jan  9 13:37:49 2009
@@ -58,6 +58,13 @@
 
     public void sessionCreated(final FtpIoSession session) throws Exception {
         session.setListener(listener);
+        
+        ServerFtpStatistics stats = ((ServerFtpStatistics) context
+                .getFtpStatistics());
+
+        if (stats != null) {
+            stats.setOpenConnection(session);
+        }
     }
 
     public void sessionOpened(final FtpIoSession session) throws Exception {
@@ -83,6 +90,7 @@
 
         if (stats != null) {
             stats.setLogout(session);
+            stats.setCloseConnection(session);
         }
     }
 

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java?rev=733158&r1=733157&r2=733158&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/impl/DefaultFtpStatistics.java Fri Jan  9 13:37:49 2009
@@ -178,7 +178,7 @@
      * Get total directory removed.
      */
     public int getTotalDirectoryRemoved() {
-        return mkdirCount.get();
+        return rmdirCount.get();
     }
 
     /**

Modified: mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java?rev=733158&r1=733157&r2=733158&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java (original)
+++ mina/ftpserver/trunk/core/src/test/java/org/apache/ftpserver/clienttests/SiteTest.java Fri Jan  9 13:37:49 2009
@@ -19,9 +19,11 @@
 
 package org.apache.ftpserver.clienttests;
 
-import java.util.regex.Matcher;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
 import java.util.regex.Pattern;
 
+import org.apache.commons.net.ftp.FTPClient;
 import org.apache.commons.net.ftp.FTPReply;
 
 /**
@@ -32,6 +34,11 @@
 */
 public class SiteTest extends ClientTestTemplate {
 
+    private static final String TEST_FILENAME = "test.txt";
+    private static final byte[] TESTDATA = "TESTDATA".getBytes();
+    
+    private static final String TIMESTAMP_PATTERN = "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}";
+
     public void testSiteDescUser() throws Exception {
         client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
 
@@ -62,15 +69,63 @@
         String[] siteReplies = client.getReplyString().split("\r\n");
 
         assertEquals("200-", siteReplies[0]);
+        String pattern = "200 admin           127.0.0.1       " + TIMESTAMP_PATTERN + " " + TIMESTAMP_PATTERN + " "; 
         
-        String timestampPattern = "\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}";
-        System.out.println(">>" + siteReplies[1] + "<<");
+        assertTrue(Pattern.matches(pattern, siteReplies[1]));
+    }
+
+    public void testSiteStat() throws Exception {
+        // reboot server to clear stats
+        server.stop();
+        initServer();
         
-        String pattern = "200 admin           127.0.0.1       " + timestampPattern + " " + timestampPattern + " "; 
+        // let's generate some stats
+        FTPClient client1 = new FTPClient();
+        client1.connect("localhost", port);
+        
+        assertTrue(client1.login(ADMIN_USERNAME, ADMIN_PASSWORD));
+        assertTrue(client1.makeDirectory("foo"));
+        assertTrue(client1.makeDirectory("foo2"));
+        assertTrue(client1.removeDirectory("foo2"));
+        assertTrue(client1.storeFile(TEST_FILENAME, new ByteArrayInputStream(TESTDATA)));
+        assertTrue(client1.storeFile(TEST_FILENAME, new ByteArrayInputStream(TESTDATA)));
+        assertTrue(client1.retrieveFile(TEST_FILENAME, new ByteArrayOutputStream()));
+        assertTrue(client1.deleteFile(TEST_FILENAME));
+        
+        assertTrue(client1.logout());
+        client1.disconnect();
+
+        FTPClient client2 = new FTPClient();
+        client2.connect("localhost", port);
+
+        assertTrue(client2.login(ANONYMOUS_USERNAME, ANONYMOUS_PASSWORD));
+        // done setting up stats
         
+        client.connect("localhost", port);
+        client.login(ADMIN_USERNAME, ADMIN_PASSWORD);
+
+        client.sendCommand("SITE STAT");
+        String[] siteReplies = client.getReplyString().split("\r\n");
+
+        assertEquals("200-", siteReplies[0]);
+        
+        String pattern = "Start Time               : " + TIMESTAMP_PATTERN; 
         assertTrue(Pattern.matches(pattern, siteReplies[1]));
-    }
 
+        assertTrue(Pattern.matches("File Upload Number       : 2", siteReplies[2]));
+        assertTrue(Pattern.matches("File Download Number     : 1", siteReplies[3]));
+        assertTrue(Pattern.matches("File Delete Number       : 1", siteReplies[4]));
+        assertTrue(Pattern.matches("File Upload Bytes        : 16", siteReplies[5]));
+        assertTrue(Pattern.matches("File Download Bytes      : 8", siteReplies[6]));
+        assertTrue(Pattern.matches("Directory Create Number  : 2", siteReplies[7]));
+        assertTrue(Pattern.matches("Directory Remove Number  : 1", siteReplies[8]));
+        assertTrue(Pattern.matches("Current Logins           : 2", siteReplies[9]));
+        assertTrue(Pattern.matches("Total Logins             : 3", siteReplies[10]));
+        assertTrue(Pattern.matches("Current Anonymous Logins : 1", siteReplies[11]));
+        assertTrue(Pattern.matches("Total Anonymous Logins   : 1", siteReplies[12]));
+        assertTrue(Pattern.matches("Current Connections      : 2", siteReplies[13]));
+        assertTrue(Pattern.matches("200 Total Connections        : 3", siteReplies[14]));
+    }
 
     
 }