OpenSync.java revision 2362
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott/*
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * Copyright (c) 2001, Oracle and/or its affiliates. All rights reserved.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott *
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * This code is free software; you can redistribute it and/or modify it
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * under the terms of the GNU General Public License version 2 only, as
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * published by the Free Software Foundation.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott *
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * This code is distributed in the hope that it will be useful, but WITHOUT
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * version 2 for more details (a copy is included in the LICENSE file that
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * accompanied this code).
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott *
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * You should have received a copy of the GNU General Public License version
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * 2 along with this work; if not, write to the Free Software Foundation,
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott *
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * or visit www.oracle.com if you need additional information or have any
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * questions.
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott */
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
6a2ae9c7fb4d2c40d75cab0edaf940f22c18224fDiego Colantoni/* @test
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott * @summary Unit test for RandomAccessFile open-sync modes
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott */
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshottimport java.io.*;
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshottpublic class OpenSync {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott static PrintStream log = System.err;
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott public static void main(String[] args) throws Exception {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott File blah = File.createTempFile("OpenSync", null);
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott blah.deleteOnExit();
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott String[] badModes = { "d", "s", "rd", "rs", "rwx", "foo" };
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott for (int i = 0; i < badModes.length; i++) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott String mode = badModes[i];
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott try {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott new RandomAccessFile(blah, mode);
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott } catch (IllegalArgumentException x) {
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott log.println("Mode \"" + mode +"\": Thrown as expected: "
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott + x.getClass().getName());
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni log.println(" " + x.getMessage());
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott continue;
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott }
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott throw new Exception("Exception not thrown for illegal mode "
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni + mode);
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott }
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott new RandomAccessFile(blah, "rw").close();
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott new RandomAccessFile(blah, "r").close();
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott String hi = "Hello, world!";
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott RandomAccessFile raf = new RandomAccessFile(blah, "rws");
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott raf.writeUTF(hi);
78c07714ec1113f7f21c75b818f2bf6a7021618aDiego Colantoni raf.close();
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott raf = new RandomAccessFile(blah, "rwd");
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott if (!raf.readUTF().equals(hi))
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott throw new Exception("File content mismatch");
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott raf.close();
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott }
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott
721bb987c406979bcfe705fa1ca8d54497d40fcbRobert Wapshott}
6a2ae9c7fb4d2c40d75cab0edaf940f22c18224fDiego Colantoni