23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee/*
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * CDDL HEADER START
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * The contents of this file are subject to the terms of the
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Common Development and Distribution License (the "License").
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * You may not use this file except in compliance with the License.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * or http://www.opensolaris.org/os/licensing.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * See the License for the specific language governing permissions
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * and limitations under the License.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * When distributing Covered Code, include this CDDL HEADER in each
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * If applicable, add the following below this CDDL HEADER, with the
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * fields enclosed by brackets "[]" replaced with your own identifying
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * information: Portions Copyright [yyyy] [name of copyright owner]
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee *
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * CDDL HEADER END
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee */
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee/*
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Copyright 2006 Sun Microsystems, Inc. All rights reserved.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Use is subject to license terms.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee */
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeeimport org.opensolaris.os.dtrace.*;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee/**
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * Regression test for the LocalConsumer state machine. Calls Consumer
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * methods before and after open(), compile(), enable(), go(), stop(),
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * and close() to verify that the calls succeed as expected or fail with
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee * the expected Java exception.
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee */
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomeepublic class TestStateMachine {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static Program program;
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(int status)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(status, null);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(int status, String msg)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee if (msg != null) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(msg);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.flush();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.err.flush();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.exit(status);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(Consumer consumer)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("open: " + consumer.isOpen());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("enabled: " + consumer.isEnabled());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("closed: " + consumer.isClosed());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeOpen(Consumer consumer)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // compile
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.compile("syscall:::entry");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "compile before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "compile before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // enable
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.enable();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getOption, setOption, unsetOption
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getOption(Option.bufsize);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getOption before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getOption before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.setOption(Option.bufsize, Option.mb(1));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "setOption before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "setOption before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.unsetOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "unsetOption before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "unsetOption before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // createProcess, grabProcess
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.createProcess("date");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "createProcess before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "createProcess before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.grabProcess(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "grabProcess before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "grabProcess before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // listProbes
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.listProbes(ProbeDescription.EMPTY);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "listProbes before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "listProbes before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getAggregate
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getAggregate();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getVersion
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getVersion(); // allowed
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getVersion before open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeCompile(Consumer consumer)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("before compile");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // open
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.open();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "open after open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "open after open");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // enable
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.enable();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable before compile");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable before compile");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeEnable(Consumer consumer)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("before enable");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // go
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.go();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "go before enable");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "go before enable");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeGo(Consumer consumer)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getAggregate
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getAggregate();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // lookupKernelFunction, lookupUserFunction
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.lookupKernelFunction(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupKernelFunction before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupKernelFunction before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.lookupUserFunction(1, 1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupUserFunction before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupUserFunction before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // stop
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.stop();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "stop before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "stop before go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee afterGo(Consumer consumer, Program program)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // go
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.go();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "go after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "go after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // createProcess, grabProcess
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.createProcess("date");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "createProcess after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "createProcess after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.grabProcess(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "grabProcess after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "grabProcess after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // listProbes
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.listProbes(ProbeDescription.EMPTY);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "listProbes after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "listProbes after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // compile
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.compile("syscall:::entry");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "compile after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "compile after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // enable
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.enable();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getAggregate
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getAggregate();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getProgramInfo
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getProgramInfo(program);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getProgramInfo after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getOption, setOption, unsetOption
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.setOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.unsetOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "get, set, unset option after go");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee afterStop(Consumer consumer, Program program)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("after stop");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // stop
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.stop();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "stop after stop");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "stop after stop");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getAggregate
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getAggregate();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate after stop");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getProgramInfo
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getProgramInfo(program);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getProgramInfo after stop");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getOption, setOption, unsetOption
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.setOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.unsetOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "get, set, unset option after stop");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee afterClose(Consumer consumer, Program program)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee printState(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // open
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.open();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "open after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "open after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // compile
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.compile("syscall:::entry");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "compile after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "compile after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // enable
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.enable();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "enable after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getOption, setOption, unsetOption
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getOption(Option.bufsize);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getOption after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getOption after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.setOption(Option.bufsize, Option.mb(1));
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "setOption after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "setOption after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.unsetOption(Option.quiet);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "unsetOption after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "unsetOption after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // createProcess, grabProcess
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.createProcess("date");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "createProcess after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "createProcess after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.grabProcess(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "grabProcess after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "grabProcess after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // listProbes
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.listProbes(ProbeDescription.EMPTY);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "listProbes after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "listProbes after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getAggregate
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getAggregate();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getAggregate after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getVersion
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getVersion(); // allowed
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getVersion after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // go
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.go();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "go after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "go after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // lookupKernelFunction, lookupUserFunction
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.lookupKernelFunction(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupKernelFunction after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupKernelFunction after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.lookupUserFunction(1, 1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupUserFunction after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "lookupUserFunction after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // stop
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.stop();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "stop after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "stop after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // getProgramInfo
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.getProgramInfo(program);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getProgramInfo after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (IllegalStateException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println(e);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (Exception e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1, "getProgramInfo after close");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public static void
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee main(String[] args)
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee final Consumer consumer = new LocalConsumer();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.addConsumerListener(new ConsumerAdapter() {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public void consumerStarted(ConsumerEvent e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("consumerStarted, running: " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.isRunning());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee afterGo(consumer, program);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee public void consumerStopped(ConsumerEvent e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("consumerStopped, running: " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.isRunning());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee });
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeOpen(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.open();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeCompile(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee program = consumer.compile(
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "syscall:::entry { @[execname] = count(); } " +
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee "tick-101ms { printa(@); }");
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeEnable(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.enable();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee beforeGo(consumer);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("before go, running: " + consumer.isRunning());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.go();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee // Avoid race, call afterGo() in ConsumerListener
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee try {
4d0eb50e691de4c20b1dd9976ad6839fede8a42dRichard PALO Thread.sleep(300);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (InterruptedException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.stop();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee System.out.println("after stop, running: " + consumer.isRunning());
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee afterStop(consumer, program);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee consumer.close();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee afterClose(consumer, program);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee } catch (DTraceException e) {
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee e.printStackTrace();
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee exit(1);
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee }
23b5c241225a8ade2b6b9f06ebb891ee459e3b02tomee}