/* * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You 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.tomcat.jni; import org.junit.Assert; import org.junit.Test; public class TestFile extends AbstractJniTest { @Test public void testInfoGet() throws Exception { String testFile = "test/org/apache/tomcat/jni/TestFile.java"; java.io.File file = new java.io.File(testFile); Assert.assertTrue("File " + testFile + " does not exist!", file.exists()); Library.initialize(null); long pool = Pool.create(0L); int openFlags = File.APR_FOPEN_READ | File.APR_FOPEN_BUFFERED | File.APR_FOPEN_XTHREAD; int openPermissions = File.APR_FPROT_OS_DEFAULT; int statFlags = File.APR_FINFO_MIN; long fd = File.open(testFile, openFlags, openPermissions, pool); FileInfo fileInfo = new FileInfo(); for (int i = 0; i < 100000; i++) { org.apache.tomcat.jni.File.infoGet(fileInfo, statFlags, fd); @SuppressWarnings("unused") String info = inspectFileInfo(fileInfo); } } public static String inspectFileInfo(FileInfo fileInfo) { String result = fileInfo.toString() + " : {" + String.format("\n pool : %d", Long.valueOf(fileInfo.pool)) + String.format("\n valid : %d", Integer.valueOf(fileInfo.valid)) + String.format("\n protection : %d", Integer.valueOf(fileInfo.protection)) + String.format("\n filetype : %d", Integer.valueOf(fileInfo.filetype)) + String.format("\n user : %d", Integer.valueOf(fileInfo.user)) + String.format("\n group : %d", Integer.valueOf(fileInfo.group)) + String.format("\n inode : %d", Integer.valueOf(fileInfo.inode)) + String.format("\n device : %d", Integer.valueOf(fileInfo.device)) + String.format("\n nlink : %d", Integer.valueOf(fileInfo.nlink)) + String.format("\n size : %d", Long.valueOf(fileInfo.size)) + String.format("\n csize : %d", Long.valueOf(fileInfo.csize)) + String.format("\n atime : %d", Long.valueOf(fileInfo.atime)) + String.format("\n mtime : %d", Long.valueOf(fileInfo.mtime)) + String.format("\n ctime : %d", Long.valueOf(fileInfo.ctime)) + String.format("\n fname : %s", fileInfo.fname) + String.format("\n name : %s", fileInfo.name) + String.format("\n filehand : %d", Long.valueOf(fileInfo.filehand)) + "\n}"; return result; } }