import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.io.InputStream; import java.net.URL; import net.yacy.cora.util.ConcurrentLog; import net.yacy.peers.graphics.EncodedImage; import net.yacy.server.serverObjects; // ViewImagePerfTest.java // ----------------------- // part of YaCy // (C) by Michael Peter Christen; mc@yacy.net // first published on http://www.anomic.de // Frankfurt, Germany, 2006 // created 03.04.2006 // // This program is free software; you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation; either version 2 of the License, or // (at your option) any later version. // // This program 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 for more details. // // You should have received a copy of the GNU General Public License // along with this program; if not, write to the Free Software // Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA /** * Test to measure image render performance by ViewImage * * @author luc * */ public class ViewImagePerfTest { /** Default image */ private static final String DEFAULT_IMG_RESOURCE = "/viewImageTest/test/JPEG_example_JPG_RIP_100.jpg"; /** Default render max width (JPEG_example_JPG_RIP_100.jpg width / 10) */ private static final int DEFAULT_MAX_WIDTH = 31; /** Default render max height (JPEG_example_JPG_RIP_100.jpg height / 10) */ private static final int DEFAULT_MAX_HEIGHT = 23; /** Default encoding format */ private static final String DEFAUL_EXT = "png"; /** * @param testFile * file to load * @return testFile content as a bytes array * @throws IOException * when an error occured while loading */ private static byte[] getBytes(File testFile) throws IOException { InputStream inStream = new FileInputStream(testFile); byte[] res = new byte[inStream.available()]; try { inStream.read(res); } finally { inStream.close(); } return res; } /** * @param args * first item may contain file URL * @return file to be used : specified as first in args or default one */ private static File getTestFile(String args[]) { String fileURL; if (args != null && args.length > 0) { fileURL = args[0]; } else { URL defaultURL = ViewImagePerfTest.class.getResource(DEFAULT_IMG_RESOURCE); if (defaultURL == null) { throw new IllegalArgumentException("File not found : " + DEFAULT_IMG_RESOURCE); } fileURL = defaultURL.getFile(); } return new File(fileURL); } /** * Build post parameters to use with ViewImage * * @param args * main parameters : second and third items may respectively * contain max width and max height * @return a serverObjects instance */ private static serverObjects makePostParams(String args[]) { serverObjects post = new serverObjects(); int maxWidth = DEFAULT_MAX_WIDTH; if (args != null && args.length > 1) { maxWidth = Integer.parseInt(args[1]); } post.put("maxwidth", String.valueOf(maxWidth)); int maxHeight = DEFAULT_MAX_HEIGHT; if (args != null && args.length > 2) { maxHeight = Integer.parseInt(args[2]); } post.put("maxheight", String.valueOf(maxHeight)); /* Make it square by default */ post.put("quadratic", ""); return post; } /** * * @param args * main parameters : fourth item may contain extension * @return extension to use for encoding */ private static String getEncodingExt(String args[]) { String ext = DEFAUL_EXT; if (args != null && args.length > 3) { ext = args[3]; } return ext; } /** * Test image is parsed and rendered again and again until 20 seconds * elapsed. Then measured statistics are displayed. * * @param args * may be empty or contain parameters to override defaults : *