/* * Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved. * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * The contents of this file are subject to the terms of either the Universal Permissive License * v 1.0 as shown at http://oss.oracle.com/licenses/upl * * or the following license: * * Redistribution and use in source and binary forms, with or without modification, are permitted * provided that the following conditions are met: * * 1. Redistributions of source code must retain the above copyright notice, this list of conditions * and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright notice, this list of * conditions and the following disclaimer in the documentation and/or other materials provided with * the distribution. * * 3. Neither the name of the copyright holder nor the names of its contributors may be used to * endorse or promote products derived from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY * WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ package org.openjdk.jmc.console.uitest.mbeanhelpers; /** * Design choice for this is to make the subclasses as small as possible. */ public abstract class TestRunner extends Thread { protected volatile boolean loopRun = true; protected String[] args = new String[] {}; protected boolean runFirst = false; protected boolean initied = false; public void loopRun(boolean loopRun) { this.loopRun = loopRun; } public TestRunner() { this(true); } public TestRunner(boolean runFirst) { this.runFirst = runFirst; setName(this.getClass().getName()); loopRun = true; } public void stopRunning() { loopRun(false); runLast(); System.out.println("Stopping " + this.getClass().getName()); } public void setArgs(String[] args) { this.args = args; } public void runFirst() { initied = true; } public abstract void runLoop(); public void runLast() { } public boolean isUpAndRunning() { return initied; } @Override public void run() { System.out.println("Starting " + this.getClass().getName()); runFirst(); while (loopRun) { runLoop(); try { Thread.sleep(500); } catch (Exception ex) { } } } }