Commit 8a0ae0d4 authored by Anna Kozlova's avatar Anna Kozlova
Browse files

sm runner: avoid firing form events for all open sessions at once

parent 1f97af84
Showing with 131 additions and 100 deletions
+131 -100
......@@ -65,7 +65,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
public void run() {
myTestsRootNode.setState(State.RUNNING, GeneralIdBasedToSMTRunnerEventsConvertor.this);
myTestsRootProxy.setStarted();
myEventPublisher.onTestingStarted(myTestsRootProxy);
fireOnTestingStarted(myTestsRootProxy);
}
});
}
......@@ -74,7 +74,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
public void onTestsReporterAttached() {
addToInvokeLater(new Runnable() {
public void run() {
myTestsRootProxy.setTestsReporterAttached();
fireOnTestsReporterAttached(myTestsRootProxy);
}
});
}
......@@ -104,7 +104,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
myNodeByIdMap.clear();
myRunningTestNodes.clear();
myEventPublisher.onTestingFinished(myTestsRootProxy);
fireOnTestingFinished(myTestsRootProxy);
}
});
stopEventProcessing();
......@@ -200,7 +200,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
SMTestProxy testProxy = node.getProxy();
testProxy.setDuration(testFinishedEvent.getDuration());
testProxy.setFinished();
myEventPublisher.onTestFinished(testProxy);
fireOnTestFinished(testProxy);
terminateNode(node, State.FINISHED);
}
}
......@@ -214,7 +214,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
if (node != null) {
SMTestProxy suiteProxy = node.getProxy();
suiteProxy.setFinished();
myEventPublisher.onSuiteFinished(suiteProxy);
fireOnSuiteFinished(suiteProxy);
terminateNode(node, State.FINISHED);
}
}
......@@ -259,40 +259,6 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
});
}
public void onCustomProgressTestsCategory(@Nullable final String categoryName,
final int testCount) {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestsCategory(categoryName, testCount);
}
});
}
public void onCustomProgressTestStarted() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestStarted();
}
});
}
@Override
public void onCustomProgressTestFinished() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestFinished();
}
});
}
public void onCustomProgressTestFailed() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestFailed();
}
});
}
public void onTestFailure(@NotNull final TestFailedEvent testFailedEvent) {
addToInvokeLater(new Runnable() {
public void run() {
......@@ -325,7 +291,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
}
// fire event
myEventPublisher.onTestFailed(testProxy);
fireOnTestFailed(testProxy);
terminateNode(node, State.FAILED);
}
......@@ -340,7 +306,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
SMTestProxy testProxy = node.getProxy();
testProxy.setTestIgnored(testIgnoredEvent.getIgnoreComment(), testIgnoredEvent.getStacktrace());
// fire event
myEventPublisher.onTestIgnored(testProxy);
fireOnTestIgnored(testProxy);
terminateNode(node, State.IGNORED);
}
}
......@@ -369,7 +335,7 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
public void onTestsCountInSuite(final int count) {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onTestsCountInSuite(count);
fireOnTestsCountInSuite(count);
}
});
}
......@@ -425,10 +391,10 @@ public class GeneralIdBasedToSMTRunnerEventsConvertor extends GeneralTestEventsP
SMTestProxy proxy = node.getProxy();
proxy.setStarted();
if (proxy.isSuite()) {
myEventPublisher.onSuiteStarted(proxy);
fireOnSuiteStarted(proxy);
} else {
myRunningTestNodes.add(lowestNode);
myEventPublisher.onTestStarted(proxy);
fireOnTestStarted(proxy);
}
node = node.getParentNode();
}
......
......@@ -32,6 +32,7 @@ import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
......@@ -53,7 +54,7 @@ public abstract class GeneralTestEventsProcessor implements Disposable {
return true;
}
}, getDisposedCondition(), 300);
private HashMap<SMTRunnerEventsListener, MessageBusConnection> myListenerAdapters = new HashMap<SMTRunnerEventsListener, MessageBusConnection>();
protected List<SMTRunnerEventsListener> myListenerAdapters = new ArrayList<SMTRunnerEventsListener>();
public GeneralTestEventsProcessor(Project project) {
myProject = project;
......@@ -72,28 +73,86 @@ public abstract class GeneralTestEventsProcessor implements Disposable {
// progress events
public abstract void onStartTesting();
protected void fireOnTestingStarted(SMTestProxy.SMRootTestProxy node) {
myEventPublisher.onTestingStarted(node);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestingStarted(node);
}
}
public abstract void onTestsCountInSuite(final int count);
protected void fireOnTestsCountInSuite(int count) {
myEventPublisher.onTestsCountInSuite(count);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestsCountInSuite(count);
}
}
public abstract void onTestStarted(@NotNull TestStartedEvent testStartedEvent);
protected void fireOnTestStarted(SMTestProxy testProxy) {
myEventPublisher.onTestStarted(testProxy);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestStarted(testProxy);
}
}
public abstract void onTestFinished(@NotNull TestFinishedEvent testFinishedEvent);
protected void fireOnTestFinished(SMTestProxy testProxy) {
myEventPublisher.onTestFinished(testProxy);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestFinished(testProxy);
}
}
public abstract void onTestFailure(@NotNull TestFailedEvent testFailedEvent);
protected void fireOnTestFailed(SMTestProxy testProxy) {
myEventPublisher.onTestFailed(testProxy);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestFailed(testProxy);
}
}
public abstract void onTestIgnored(@NotNull TestIgnoredEvent testIgnoredEvent);
protected void fireOnTestIgnored(SMTestProxy testProxy) {
myEventPublisher.onTestIgnored(testProxy);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestIgnored(testProxy);
}
}
public abstract void onTestOutput(@NotNull TestOutputEvent testOutputEvent);
public abstract void onSuiteStarted(@NotNull TestSuiteStartedEvent suiteStartedEvent);
protected void fireOnSuiteStarted(SMTestProxy newSuite) {
myEventPublisher.onSuiteStarted(newSuite);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onSuiteStarted(newSuite);
}
}
public abstract void onSuiteFinished(@NotNull TestSuiteFinishedEvent suiteFinishedEvent);
protected void fireOnSuiteFinished(SMTestProxy mySuite) {
myEventPublisher.onSuiteFinished(mySuite);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onSuiteFinished(mySuite);
}
}
public abstract void onUncapturedOutput(@NotNull String text, Key outputType);
public abstract void onError(@NotNull String localizedMessage, @Nullable String stackTrace, boolean isCritical);
protected static void fireOnTestsReporterAttached(SMTestProxy.SMRootTestProxy rootNode) {
rootNode.setTestsReporterAttached();
}
public abstract void onFinishTesting();
protected void fireOnTestingFinished(SMTestProxy.SMRootTestProxy root) {
myEventPublisher.onTestingFinished(root);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onTestingFinished(root);
}
}
// custom progress statistics
......@@ -102,13 +161,50 @@ public abstract class GeneralTestEventsProcessor implements Disposable {
* If name is null statistics will be switched to normal mode
* @param testCount 0 will be considered as unknown tests number
*/
public abstract void onCustomProgressTestsCategory(@Nullable String categoryName, int testCount);
public void onCustomProgressTestsCategory(@Nullable final String categoryName,
final int testCount) {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestsCategory(categoryName, testCount);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onCustomProgressTestsCategory(categoryName, testCount);
}
}
});
}
public abstract void onCustomProgressTestStarted();
public void onCustomProgressTestStarted() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestStarted();
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onCustomProgressTestStarted();
}
}
});
}
public abstract void onCustomProgressTestFinished();
public void onCustomProgressTestFinished() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestFinished();
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onCustomProgressTestFinished();
}
}
});
}
public abstract void onCustomProgressTestFailed();
public void onCustomProgressTestFailed() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestFailed();
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onCustomProgressTestFailed();
}
}
});
}
// workflow/service methods
......@@ -117,9 +213,7 @@ public abstract class GeneralTestEventsProcessor implements Disposable {
public abstract void setLocator(@NotNull SMTestLocator locator);
public void addEventsListener(@NotNull SMTRunnerEventsListener listener) {
final MessageBusConnection connection = myProject.getMessageBus().connect();
myListenerAdapters.put(listener, connection);
connection.subscribe(SMTRunnerEventsListener.TEST_STATUS, listener);
myListenerAdapters.add(listener);
}
public abstract void setPrinterProvider(@NotNull TestProxyPrinterProvider printerProvider);
......@@ -137,9 +231,7 @@ public abstract class GeneralTestEventsProcessor implements Disposable {
}
protected void disconnectListeners() {
for (MessageBusConnection connection : myListenerAdapters.values()) {
connection.disconnect();
}
myListenerAdapters.clear();
}
public Condition getDisposedCondition() {
......
......@@ -69,7 +69,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
myTestsRootNode.setStarted();
//fire
myEventPublisher.onTestingStarted(myTestsRootNode);
fireOnTestingStarted(myTestsRootNode);
}
});
}
......@@ -78,7 +78,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
public void onTestsReporterAttached() {
addToInvokeLater(new Runnable() {
public void run() {
myTestsRootNode.setTestsReporterAttached();
fireOnTestsReporterAttached(myTestsRootNode);
}
});
}
......@@ -105,7 +105,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
//fire events
myEventPublisher.onTestingFinished(myTestsRootNode);
fireOnTestingFinished(myTestsRootNode);
}
});
stopEventProcessing();
......@@ -138,6 +138,9 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
}
getCurrentSuite().addChild(testProxy);
myEventPublisher.onSuiteTreeNodeAdded(testProxy);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onSuiteTreeNodeAdded(testProxy);
}
}
});
}
......@@ -158,6 +161,9 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
mySuitesStack.pushSuite(newSuite);
myEventPublisher.onSuiteTreeStarted(newSuite);
for (SMTRunnerEventsListener adapter : myListenerAdapters) {
adapter.onSuiteTreeStarted(newSuite);
}
}
});
}
......@@ -213,7 +219,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
testProxy.setStarted();
//fire events
myEventPublisher.onTestStarted(testProxy);
fireOnTestStarted(testProxy);
}
});
}
......@@ -243,7 +249,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
newSuite.setStarted();
//fire event
myEventPublisher.onSuiteStarted(newSuite);
fireOnSuiteStarted(newSuite);
}
});
}
......@@ -278,7 +284,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
myRunningTestsFullNameToProxy.remove(fullTestName);
//fire events
myEventPublisher.onTestFinished(testProxy);
fireOnTestFinished(testProxy);
}
});
}
......@@ -292,7 +298,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
mySuite.setFinished();
//fire events
myEventPublisher.onSuiteFinished(mySuite);
fireOnSuiteFinished(mySuite);
}
}
});
......@@ -324,40 +330,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
}
});
}
public void onCustomProgressTestsCategory(@Nullable final String categoryName,
final int testCount) {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestsCategory(categoryName, testCount);
}
});
}
public void onCustomProgressTestStarted() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestStarted();
}
});
}
public void onCustomProgressTestFinished() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestFinished();
}
});
}
public void onCustomProgressTestFailed() {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onCustomProgressTestFailed();
}
});
}
public void onTestFailure(@NotNull final TestFailedEvent testFailedEvent) {
addToInvokeLater(new Runnable() {
......@@ -424,7 +397,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
myFailedTestsSet.add(testProxy);
// fire event
myEventPublisher.onTestFailed(testProxy);
fireOnTestFailed(testProxy);
}
});
}
......@@ -461,7 +434,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
testProxy.setTestIgnored(ignoreComment, stackTrace);
// fire event
myEventPublisher.onTestIgnored(testProxy);
fireOnTestIgnored(testProxy);
}
});
}
......@@ -494,7 +467,7 @@ public class GeneralToSMTRunnerEventsConvertor extends GeneralTestEventsProcesso
public void onTestsCountInSuite(final int count) {
addToInvokeLater(new Runnable() {
public void run() {
myEventPublisher.onTestsCountInSuite(count);
fireOnTestsCountInSuite(count);
}
});
}
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment