8162146132b0fb9b7c6dc3371ff205edc236ebfatomee/*
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * CDDL HEADER START
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee *
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * The contents of this file are subject to the terms of the
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * Common Development and Distribution License (the "License").
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * You may not use this file except in compliance with the License.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee *
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * or http://www.opensolaris.org/os/licensing.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * See the License for the specific language governing permissions
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * and limitations under the License.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee *
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * When distributing Covered Code, include this CDDL HEADER in each
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * If applicable, add the following below this CDDL HEADER, with the
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * fields enclosed by brackets "[]" replaced with your own identifying
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * information: Portions Copyright [yyyy] [name of copyright owner]
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee *
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * CDDL HEADER END
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee */
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee/*
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * Use is subject to license terms.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee *
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * ident "%Z%%M% %I% %E% SMI"
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee */
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomeeimport org.opensolaris.os.dtrace.*;
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee/**
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * Regression for 6506495 -DJAVA_DTRACE_MAX_CONSUMERS=N for any N < 8
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee * is treated as if it were 8.
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee */
8162146132b0fb9b7c6dc3371ff205edc236ebfatomeepublic class TestMaxConsumers {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee static final String MAX_CONSUMERS_PROPERTY_NAME =
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee "JAVA_DTRACE_MAX_CONSUMERS";
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee static Integer
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee getIntegerProperty(String name)
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee Integer value = null;
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee String property = System.getProperty(name);
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee if (property != null && property.length() != 0) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee try {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee value = Integer.parseInt(property);
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee } catch (NumberFormatException e) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee e.printStackTrace();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee return value;
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee public static void
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee main(String[] args)
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee Integer property = getIntegerProperty(MAX_CONSUMERS_PROPERTY_NAME);
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee int max = (property == null ? 0 : property);
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee int n = (property == null ? 11 : (max < 1 ? 1 : max));
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee Consumer[] consumers = new Consumer[n];
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee try {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee for (int i = 0; i < n; ++i) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumers[i] = new LocalConsumer();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumers[i].open();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee for (int i = 0; i < n; ++i) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumers[i].close();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee for (int i = 0; i < n; ++i) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumers[i] = new LocalConsumer();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumers[i].open();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee } catch (Exception e) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee e.printStackTrace();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee System.exit(1);
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee try {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee Consumer consumer = new LocalConsumer();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumer.open();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee if (max > 0) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee System.out.println("Error: " + (max + 1) + " > " +
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee MAX_CONSUMERS_PROPERTY_NAME);
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee } else {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee System.out.println("Success");
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumer.close();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee } catch (Exception e) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee System.out.println("Success");
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee } finally {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee for (int i = 0; i < n; ++i) {
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee consumers[i].close();
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee }
8162146132b0fb9b7c6dc3371ff205edc236ebfatomee}