/* * Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License version 2 only, as * published by the Free Software Foundation. * * This code is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License * version 2 for more details (a copy is included in the LICENSE file that * accompanied this code). * * You should have received a copy of the GNU General Public License version * 2 along with this work; if not, write to the Free Software Foundation, * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. * * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA * or visit www.oracle.com if you need additional information or have any * questions.
*/
/* * @test * @bug 8255078 * @summary verify that datetime in MDTM and MLSD responses are properly parsed * @library /test/lib * @modules java.base/sun.net.ftp * @build jdk.test.lib.Asserts * @run main/othervm -Duser.timezone=UTC TestFtpTimeValue * @run main/othervm -Duser.timezone=America/Los_Angeles TestFtpTimeValue
*/
publicfinal Date expectedCreated; publicfinal Date expectedModified; publicfinal String create; publicfinal String modify;
TestCase(int year, int month, int day, int hrs, int min, int sec, int milliseconds) { var calendar = GregorianCalendar.getInstance(TimeZone.getTimeZone("GMT")); // month is 0-based in Calendar
calendar.set(year, month - 1, day, hrs, min, sec);
calendar.set(Calendar.MILLISECOND, milliseconds);
expectedCreated = calendar.getTime(); var s = String.format("%4d%02d%02d%02d%02d%02d", year, month, day, hrs, min, sec); if (milliseconds != 0) {
s += "." + String.format("%03d", milliseconds);
}
create = s;
publicstaticvoid main(String[] args) throws Exception {
System.out.println("user.timezone: " + System.getProperty("user.timezone")); try (FtpServer server = new FtpServer();
FtpClient client = FtpClient.create()) {
(newThread(server)).start(); int port = server.getPort(); var loopback = InetAddress.getLoopbackAddress();
client.connect(new InetSocketAddress(loopback, port));
client.enablePassiveMode(true); for (var testCase : TestCase.values()) {
Asserts.assertEQ(testCase.expectedModified, client.getLastModified(testCase.name()), "wrong modified date from MDTM for " + testCase);
} for (var it = client.listFiles(null); it.hasNext(); ) { var e = it.next();
Asserts.assertEQ(TestCase.valueOf(e.getName()).expectedCreated, e.getCreated(), "wrong created date from MLSD for " + e.getName());
Asserts.assertEQ(TestCase.valueOf(e.getName()).expectedModified, e.getLastModified(), "wrong modified date from MLSD for " + e.getName());
}
}
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.