/*******************************************************************************
* Copyright (c) 2011, 2012 Anton Gorenkov
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Anton Gorenkov - initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.testsrunner.model;
import org.eclipse.cdt.testsrunner.launcher.ITestsRunnerProviderInfo;
import org.eclipse.debug.core.ILaunch;
/**
* Stores the information about tests running.
*
* @noextend This interface is not intended to be extended by clients.
* @noimplement This interface is not intended to be implemented by clients.
*/
public interface ITestingSession {
/**
* Returns the count of already finished tests.
*
* @return already finished tests count
*/
public int getCurrentCounter();
/**
* Returns the total tests count (if available).
*
* @note Usually testing frameworks do not provide the information about
* total tests count (at least Boost.Test, Google Test and Qt Test do not).
* So the total tests count from previous launch of the same test module is
* used instead. That is why, it is unavailable for the first run and it may
* be not accurate. When testing is finished the total tests count is
* updated to the accurate value.
*
* @return total tests count or -1 if unavailable
*/
public int getTotalCounter();
/**
* Returns the count tests with the specified status at the moment.
*
* @note Tests count with the specified status may change if testing session
* is not terminated.
*
* @param status the required status
* @return tests count with status 'status'
*/
public int getCount(ITestItem.Status status);
/**
* Returns whether the testing session contains errors at the moment.
* Testing session may contain errors if one of its tests failed or if there
* were some errors during tests running (e.g. test module cannot be
* launched or output parsing failed).
*
* @return whether the testing session contains errors
*/
public boolean hasErrors();
/**
* Returns whether the testing session was stopped by user.
*
* @note Testing session is not considered as stopped when it was terminated
* by the <code>ILaunch.terminate()</code> method (e.g. when user clicks on
* 'Stop' button of the 'Console' or 'Debug' view). In this case it will be
* considered as finished (probably, with errors cause not all output was
* obtained from launched process). To stop testing session properly the
* <code>stop()</code> method should be used.
*
* @return whether the testing session was stopped
*/
public boolean wasStopped();
/**
* Returns whether the testing session has been finished (with or without
* errors).
*
* @return whether the testing session has been finished
*/
public boolean isFinished();
/**
* Returns the testing model accessor that is associated with this session.
*
* @return testing model accessor
*/
public ITestModelAccessor getModelAccessor();
/**
* Returns the launch that is associated with this testing session.
*
* @return launch
*/
public ILaunch getLaunch();
/**
* Returns the information about the tests runner which was used to launch
* this testing session.
*
* @return tests runner information
*/
public ITestsRunnerProviderInfo getTestsRunnerProviderInfo();
/**
* Returns the current status message for the current testing session. It
* may contain error, some session information or simple statistics.
*
* @return text status of the testing session
*/
public String getStatusMessage();
/**
* Returns the name of the current testing session. Usually it contains
* launch configuration name with some additional information.
*
* @return testing session name
*/
public String getName();
/**
* Stops the current session with a special status setting. Does nothing if
* the launched process of testing session has already been terminated or
* cannot been terminated.
*/
public void stop();
}