You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by sc...@apache.org on 2005/02/05 13:56:15 UTC

svn commit: r151489 - in jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp: AllTests.java FTPClientConfigFunctionalTest.java

Author: scohen
Date: Sat Feb  5 04:56:14 2005
New Revision: 151489

URL: http://svn.apache.org/viewcvs?view=rev&rev=151489
Log:
Add new functional test submitted by W. McDonald Buck accessing a server at NOAA to test timezone functionality.

Added:
    jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/FTPClientConfigFunctionalTest.java
Modified:
    jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/AllTests.java

Modified: jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/AllTests.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/AllTests.java?view=diff&r1=151488&r2=151489
==============================================================================
--- jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/AllTests.java (original)
+++ jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/AllTests.java Sat Feb  5 04:56:14 2005
@@ -28,6 +28,7 @@
         //$JUnit-BEGIN$
         suite.addTest(ListingFunctionalTest.suite());
         suite.addTestSuite(FTPClientConfigTest.class);
+        suite.addTestSuite(FTPClientConfigFunctionalTest.class);
         //$JUnit-END$
         return suite;
     }

Added: jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/FTPClientConfigFunctionalTest.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/FTPClientConfigFunctionalTest.java?view=auto&rev=151489
==============================================================================
--- jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/FTPClientConfigFunctionalTest.java (added)
+++ jakarta/commons/proper/net/trunk/src/test/org/apache/commons/net/ftp/FTPClientConfigFunctionalTest.java Sat Feb  5 04:56:14 2005
@@ -0,0 +1,161 @@
+/*
+ * Copyright 2005 The Apache Software Foundation
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.commons.net.ftp;
+
+import junit.framework.TestCase;
+import java.io.IOException;
+import java.net.SocketException;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.TimeZone;
+import java.util.TreeSet;
+
+/*
+ * This test was contributed in a different form by W. McDonald Buck
+ * of Boulder, Colorado, to help fix some bugs with the FTPClientConfig
+ * in a real world setting.  It is a perfect functional test for the
+ * Time Zone functionality of FTPClientConfig.
+ * 
+ * A publicly accessible FTP server at the US National Oceanographic and
+ * Atmospheric Adminstration houses a directory which contains 
+ * 300 files, named sn.0000 to sn.0300. Every ten minutes or so 
+ * the next file in sequence is rewritten with new data. Thus the directory 
+ * contains observations for more than 24 hours of data.  Since the server
+ * has its clock set to GMT this is an excellent functional test for any
+ * machine in a different time zone. 
+ */
+
+public class FTPClientConfigFunctionalTest extends TestCase {
+
+    private FTPClient FTP = new FTPClient(); 
+    private FTPClientConfig FTPConf; 
+
+
+    /**
+     * 
+     */
+    public FTPClientConfigFunctionalTest() {
+        super();
+
+	}
+
+    /* 
+     * @throws java.lang.Exception
+     */
+    protected void setUp() throws Exception {
+        super.setUp();
+	    FTPConf = new FTPClientConfig(FTPClientConfig.SYST_UNIX);
+	    FTPConf.setServerTimeZoneId("GMT"); 
+	    FTP.configure(FTPConf); 
+        try {
+            FTP.connect("tgftp.nws.noaa.gov");
+            FTP.login("anonymous","testing@apache.org");
+            FTP.changeWorkingDirectory("SL.us008001/DF.an/DC.sflnd/DS.metar");
+            FTP.enterLocalPassiveMode();
+        } catch (SocketException e) {
+            e.printStackTrace();
+        } catch (IOException e) {
+            e.printStackTrace();
+        }
+    }
+    /* 
+     * @throws java.lang.Exception
+     */
+    protected void tearDown() throws Exception {
+        FTP.disconnect();
+        super.tearDown();
+    }
+    /**
+     * @param arg0
+     */
+    public FTPClientConfigFunctionalTest(String arg0) {
+        super(arg0);
+    }
+
+	
+    private TreeSet getSortedList(FTPFile[] files) {
+        // create a TreeSet which will sort each element
+        // as it is added.
+        TreeSet sorted = new TreeSet(new Comparator() {
+
+            public int compare(Object o1, Object o2) {
+                FTPFile f1 = (FTPFile) o1;
+                FTPFile f2 = (FTPFile) o2;
+                return f1.getTimestamp().getTime().compareTo(f2.getTimestamp().getTime());
+            }
+            
+        });
+        
+         
+        for (int i=0; i < files.length; i++) {
+			// The directory contains a few additional files at the beginning
+			// which aren't in the series we want. The series we want consists
+			// of files named sn.dddd. This adjusts the file list to get rid 
+			// of the uninteresting ones. 
+            if (files[i].getName().startsWith("sn")) {
+                sorted.add(files[i]);
+            }    
+        }
+        return sorted;
+    }
+
+	
+    public static void main(String[] args) {
+        FTPClientConfigFunctionalTest F = new FTPClientConfigFunctionalTest();
+    }
+    
+    public void testTimeZoneFunctionality() throws Exception {
+        java.util.Date now = new java.util.Date();
+        FTPFile[] files = FTP.listFiles();
+        TreeSet sorted = getSortedList(files);
+        //SimpleDateFormat sdf = new SimpleDateFormat("MM/dd/yyyy HH:mm z" );
+        FTPFile lastfile = null;
+        FTPFile firstfile = null;
+        for (Iterator it = sorted.iterator(); it.hasNext();) {
+            FTPFile thisfile = (FTPFile) it.next();
+            if (firstfile == null) {
+                firstfile = thisfile;
+            }
+            //System.out.println(sdf.format(thisfile.getTimestamp().getTime()) 
+            //        + " " +thisfile.getName());
+            if (lastfile != null) {
+                // verify that the list is sorted earliest to latest.
+                assertTrue(lastfile.getTimestamp()
+                        .before(thisfile.getTimestamp()));
+            }
+            lastfile = thisfile;
+        }
+        
+        // test that notwithstanding any time zone differences, the newest file
+        // is older than now.
+        assertTrue(lastfile.getTimestamp().getTime().before(now);
+        Calendar first = firstfile.getTimestamp();
+
+        // test that the oldest is less than two days older than the newest 
+        // and, in particular, that no files have been considered "future" 
+        // by the parser and therefore been relegated to the same date a 
+        // year ago.
+        first.add(Calendar.DATE, 2);
+        assertTrue(lastfile.getTimestamp().before(first));
+
+    }
+}
+
+
+
+



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org