mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
testng: use SerializedMessageSender in case it is supported by users library; StringMessageSender otherwise; as now StringMessageSender doesn't wait until ack messages - tests with old testng libs may terminate unexpectedly (IDEA-64361 )
This commit is contained in:
+1
-1
@@ -102,7 +102,7 @@ public class SearchingForTestsTask extends Task.Backgroundable {
|
||||
writeTempFile();
|
||||
connect();
|
||||
|
||||
myClient.startListening();
|
||||
myClient.startListening(myConfig);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+22
-1
@@ -57,6 +57,9 @@ import com.intellij.openapi.util.text.StringUtil;
|
||||
import com.intellij.openapi.wm.ToolWindowId;
|
||||
import com.intellij.openapi.wm.ToolWindowManager;
|
||||
import com.intellij.pom.java.LanguageLevel;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.intellij.psi.search.GlobalSearchScope;
|
||||
import com.intellij.util.PathUtil;
|
||||
import com.intellij.util.net.NetUtils;
|
||||
import com.theoryinpractice.testng.model.*;
|
||||
@@ -69,7 +72,9 @@ import org.testng.CommandLineArgs;
|
||||
import org.testng.IDEATestNGListener;
|
||||
import org.testng.RemoteTestNGStarter;
|
||||
import org.testng.annotations.AfterClass;
|
||||
import org.testng.remote.RemoteArgs;
|
||||
import org.testng.remote.strprotocol.MessageHelper;
|
||||
import org.testng.remote.strprotocol.SerializedMessageSender;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.io.File;
|
||||
@@ -278,7 +283,7 @@ public class TestNGRunnableState extends JavaCommandLineState {
|
||||
|
||||
final TestData data = config.getPersistantData();
|
||||
|
||||
javaParameters.getProgramParametersList().add(CommandLineArgs.PORT, String.valueOf(port));
|
||||
javaParameters.getProgramParametersList().add(supportSerializationProtocol(config) ? RemoteArgs.PORT : CommandLineArgs.PORT, String.valueOf(port));
|
||||
|
||||
if (data.getOutputDirectory() != null && !"".equals(data.getOutputDirectory())) {
|
||||
javaParameters.getProgramParametersList().add(CommandLineArgs.OUTPUT_DIRECTORY, data.getOutputDirectory());
|
||||
@@ -363,4 +368,20 @@ public class TestNGRunnableState extends JavaCommandLineState {
|
||||
final File tempFile) {
|
||||
return new SearchingForTestsTask(serverSocket, config, tempFile, client);
|
||||
}
|
||||
|
||||
public static boolean supportSerializationProtocol(TestNGConfiguration config) {
|
||||
final Project project = config.getProject();
|
||||
final GlobalSearchScope scopeToDetermineTestngIn;
|
||||
if (config.getPersistantData().getScope() == TestSearchScope.WHOLE_PROJECT) {
|
||||
scopeToDetermineTestngIn = GlobalSearchScope.allScope(project);
|
||||
}
|
||||
else {
|
||||
scopeToDetermineTestngIn = GlobalSearchScope.moduleWithDependenciesAndLibrariesScope(config.getConfigurationModule().getModule());
|
||||
}
|
||||
|
||||
final TestData data = config.getPersistantData();
|
||||
|
||||
return JavaPsiFacade.getInstance(project)
|
||||
.findClass(SerializedMessageSender.class.getName(), scopeToDetermineTestngIn) != null;
|
||||
}
|
||||
}
|
||||
|
||||
+8
-2
@@ -17,6 +17,10 @@ package com.theoryinpractice.testng.model;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.application.ModalityState;
|
||||
import com.intellij.psi.JavaPsiFacade;
|
||||
import com.intellij.psi.PsiClass;
|
||||
import com.theoryinpractice.testng.configuration.TestNGConfiguration;
|
||||
import com.theoryinpractice.testng.configuration.TestNGRunnableState;
|
||||
import org.testng.remote.strprotocol.*;
|
||||
|
||||
import java.net.SocketTimeoutException;
|
||||
@@ -30,8 +34,10 @@ public class IDEARemoteTestRunnerClient extends AbstractRemoteTestRunnerClient
|
||||
private TestNGRemoteListener myListener;
|
||||
private int myPort;
|
||||
|
||||
public synchronized void startListening() {
|
||||
final StringMessageSender messageSender = new StringMessageSender("localhost", myPort);
|
||||
public synchronized void startListening(TestNGConfiguration config) {
|
||||
final IMessageSender messageSender = TestNGRunnableState.supportSerializationProtocol(config)
|
||||
? new SerializedMessageSender("localhost", myPort)
|
||||
: new StringMessageSender("localhost", myPort);
|
||||
final ServerConnection srvConnection = new ServerConnection(messageSender) {
|
||||
@Override
|
||||
protected void handleThrowable(Throwable cause) {
|
||||
|
||||
Reference in New Issue
Block a user