# HG changeset patch # User ksrini # Date 1282583960 25200 # Node ID 0a20892f9af6898b20ff3ce0f2b0cb87111abd26 # Parent 358d20cf213d80333e0a372e7bed2d185f10fe1e 6969063: (pack200) The default value of Pack200.Packer.SEGMENT_LIMIT property is empty string instead of -1 Reviewed-by: jrose diff -r 358d20cf213d -r 0a20892f9af6 jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java --- a/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java Mon Aug 23 21:59:13 2010 +0100 +++ b/jdk/src/share/classes/com/sun/java/util/jar/pack/PropMap.java Mon Aug 23 10:19:20 2010 -0700 @@ -91,7 +91,7 @@ String.valueOf(Boolean.getBoolean(Utils.PACK_DEFAULT_TIMEZONE))); // The segment size is unlimited - props.put(Pack200.Packer.SEGMENT_LIMIT, ""); + props.put(Pack200.Packer.SEGMENT_LIMIT, "-1"); // Preserve file ordering by default. props.put(Pack200.Packer.KEEP_FILE_ORDER, Pack200.Packer.TRUE); diff -r 358d20cf213d -r 0a20892f9af6 jdk/test/tools/pack200/Pack200Props.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/tools/pack200/Pack200Props.java Mon Aug 23 10:19:20 2010 -0700 @@ -0,0 +1,128 @@ +/* + * Copyright (c) 2010, 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 6575373 6969063 + * @summary verify default properties of the packer/unpacker and segment limit + * @compile -XDignore.symbol.file Utils.java Pack200Props.java + * @run main Pack200Props + * @author ksrini + */ + +import java.io.File; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.jar.Pack200; +import java.util.jar.Pack200.Packer; + +/* + * Run this against a large jar file, by default the packer should generate only + * one segment, parse the output of the packer to verify if this is indeed true. + */ + +public class Pack200Props { + + public static void main(String... args) { + verifyDefaults(); + File out = new File("test" + Utils.PACK_FILE_EXT); + out.delete(); + verifySegmentLimit(out); + } + + static void verifySegmentLimit(File outFile) { + File sdkHome = Utils.JavaSDK; + File testJar = new File(new File(sdkHome, "lib"), "tools.jar"); + + System.out.println("using pack200: " + Utils.getPack200Cmd()); + + List cmdsList = new ArrayList<>(); + cmdsList.add(Utils.getPack200Cmd()); + cmdsList.add("--effort=1"); + cmdsList.add("--verbose"); + cmdsList.add("--no-gzip"); + cmdsList.add(outFile.getName()); + cmdsList.add(testJar.getAbsolutePath()); + List outList = Utils.runExec(cmdsList); + + int count = 0; + for (String line : outList) { + System.out.println(line); + if (line.matches(".*Transmitted.*files of.*input bytes in a segment of.*bytes")) { + count++; + } + } + if (count == 0) { + throw new RuntimeException("no segments or no output ????"); + } else if (count > 1) { + throw new RuntimeException("multiple segments detected, expected 1"); + } + } + + private static void verifyDefaults() { + Map expectedDefaults = new HashMap<>(); + Packer p = Pack200.newPacker(); + expectedDefaults.put("com.sun.java.util.jar.pack.default.timezone", + p.FALSE); + expectedDefaults.put("com.sun.java.util.jar.pack.disable.native", + p.FALSE); + expectedDefaults.put("com.sun.java.util.jar.pack.verbose", "0"); + expectedDefaults.put(p.CLASS_ATTRIBUTE_PFX + "CompilationID", "RUH"); + expectedDefaults.put(p.CLASS_ATTRIBUTE_PFX + "SourceID", "RUH"); + expectedDefaults.put(p.CODE_ATTRIBUTE_PFX + "CharacterRangeTable", + "NH[PHPOHIIH]"); + expectedDefaults.put(p.CODE_ATTRIBUTE_PFX + "CoverageTable", + "NH[PHHII]"); + expectedDefaults.put(p.DEFLATE_HINT, p.KEEP); + expectedDefaults.put(p.EFFORT, "5"); + expectedDefaults.put(p.KEEP_FILE_ORDER, p.TRUE); + expectedDefaults.put(p.MODIFICATION_TIME, p.KEEP); + expectedDefaults.put(p.SEGMENT_LIMIT, "-1"); + expectedDefaults.put(p.UNKNOWN_ATTRIBUTE, p.PASS); + + Map props = p.properties(); + int errors = 0; + for (String key : expectedDefaults.keySet()) { + String def = expectedDefaults.get(key); + String x = props.get(key); + if (x == null) { + System.out.println("Error: key not found:" + key); + errors++; + } else { + if (!def.equals(x)) { + System.out.println("Error: key " + key + + "\n value expected: " + def + + "\n value obtained: " + x); + errors++; + } + } + } + if (errors > 0) { + throw new RuntimeException(errors + + " error(s) encountered in default properties verification"); + } + } +} + diff -r 358d20cf213d -r 0a20892f9af6 jdk/test/tools/pack200/SegmentLimit.java --- a/jdk/test/tools/pack200/SegmentLimit.java Mon Aug 23 21:59:13 2010 +0100 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,77 +0,0 @@ -/* - * Copyright (c) 2010, 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 6575373 - * @summary verify default segment limit - * @compile -XDignore.symbol.file Utils.java SegmentLimit.java - * @run main SegmentLimit - * @author ksrini - */ - -import java.io.File; -import java.util.ArrayList; -import java.util.List; - -/* - * Run this against a large jar file, by default the packer should generate only - * one segment, parse the output of the packer to verify if this is indeed true. - */ - -public class SegmentLimit { - - public static void main(String... args) { - File out = new File("test" + Utils.PACK_FILE_EXT); - out.delete(); - runPack200(out); - } - - static void runPack200(File outFile) { - File sdkHome = Utils.JavaSDK; - File testJar = new File(new File(sdkHome, "lib"), "tools.jar"); - - System.out.println("using pack200: " + Utils.getPack200Cmd()); - - List cmdsList = new ArrayList(); - cmdsList.add(Utils.getPack200Cmd()); - cmdsList.add("--effort=1"); - cmdsList.add("--verbose"); - cmdsList.add("--no-gzip"); - cmdsList.add(outFile.getName()); - cmdsList.add(testJar.getAbsolutePath()); - List outList = Utils.runExec(cmdsList); - - int count = 0; - for (String line : outList) { - System.out.println(line); - if (line.matches(".*Transmitted.*files of.*input bytes in a segment of.*bytes")) { - count++; - } - } - if (count != 1) { - throw new Error("test fails: check for 0 or multiple segments"); - } - } -} -