blob: 2fbefc940fed21c85defe946c64ba737b03ae5b7 [file] [log] [blame]
J. Duke319a3b92007-12-01 00:00:00 +00001/*
2 * Copyright 2002-2003 Sun Microsystems, Inc. All Rights Reserved.
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4 *
5 * This code is free software; you can redistribute it and/or modify it
6 * under the terms of the GNU General Public License version 2 only, as
7 * published by the Free Software Foundation.
8 *
9 * This code is distributed in the hope that it will be useful, but WITHOUT
10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
12 * version 2 for more details (a copy is included in the LICENSE file that
13 * accompanied this code).
14 *
15 * You should have received a copy of the GNU General Public License version
16 * 2 along with this work; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18 *
19 * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
20 * CA 95054 USA or visit www.sun.com if you need additional information or
21 * have any questions.
22 */
23
24/* @test
25 * @bug 4738257 4853295
26 * @summary Test Util.getTemporaryBuffer
27 */
28
29import java.io.*;
30import java.nio.channels.*;
31import java.nio.*;
32
33public class TempBuffer {
34
35 private static final int SIZE = 4000;
36
37 private static final int ITERATIONS = 10;
38
39 public static void main(String[] args) throws Exception {
40 for (int i=0; i<ITERATIONS; i++)
41 testTempBufs();
42 }
43
44 private static void testTempBufs() throws Exception {
45 Pipe pipe = Pipe.open();
46 Pipe.SourceChannel sourceChannel = pipe.source();
47 final Pipe.SinkChannel sinkChannel = pipe.sink();
48
49 Thread writerThread = new Thread() {
50 public void run() {
51 try {
52 OutputStream out = Channels.newOutputStream(sinkChannel);
53 File blah = File.createTempFile("blah1", null);
54 blah.deleteOnExit();
55 TempBuffer.initTestFile(blah);
56 RandomAccessFile raf = new RandomAccessFile(blah, "rw");
57 FileChannel fs = raf.getChannel();
58 fs.transferTo(0, SIZE, Channels.newChannel(out));
59 out.flush();
60 } catch (IOException ioe) {
61 throw new RuntimeException(ioe);
62 }
63 }
64 };
65
66 writerThread.start();
67
68 InputStream in = Channels.newInputStream(sourceChannel);
69 File blah = File.createTempFile("blah2", null);
70 blah.deleteOnExit();
71 RandomAccessFile raf = new RandomAccessFile(blah, "rw");
72 FileChannel fs = raf.getChannel();
73 raf.setLength(SIZE);
74 fs.transferFrom(Channels.newChannel(in), 0, SIZE);
75 fs.close();
76 }
77
78 private static void initTestFile(File blah) throws IOException {
79 FileOutputStream fos = new FileOutputStream(blah);
80 BufferedWriter awriter
81 = new BufferedWriter(new OutputStreamWriter(fos, "8859_1"));
82
83 for(int i=0; i<4000; i++) {
84 String number = new Integer(i).toString();
85 for (int h=0; h<4-number.length(); h++)
86 awriter.write("0");
87 awriter.write(""+i);
88 awriter.newLine();
89 }
90 awriter.flush();
91 awriter.close();
92 }
93}