mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
junit: speed up start - send objects first; do not send through err and out
This commit is contained in:
+20
-15
@@ -15,29 +15,42 @@
|
||||
*/
|
||||
package com.intellij.rt.execution.junit.segments;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.Hashtable;
|
||||
|
||||
public abstract class OutputObjectRegistry {
|
||||
private final Hashtable myKnownKeys = new Hashtable();
|
||||
private int myLastIndex = 0;
|
||||
private PacketProcessor myMainTransport;
|
||||
private PacketProcessor myAuxilaryTransport;
|
||||
|
||||
public OutputObjectRegistry(PacketProcessor transport) {
|
||||
myMainTransport = transport;
|
||||
}
|
||||
|
||||
public OutputObjectRegistry(PacketProcessor mainTransport, PacketProcessor auxilaryTransport) {
|
||||
this(mainTransport);
|
||||
myAuxilaryTransport = auxilaryTransport;
|
||||
}
|
||||
|
||||
public String referenceTo(Object test) {
|
||||
if (myKnownKeys.containsKey(test))
|
||||
return (String) myKnownKeys.get(test);
|
||||
return sendObject(test);
|
||||
}
|
||||
|
||||
public String referenceTo(Object test, Collection packets) {
|
||||
if (myKnownKeys.containsKey(test))
|
||||
return (String) myKnownKeys.get(test);
|
||||
return sendObject(test, packets);
|
||||
}
|
||||
|
||||
private String sendObject(Object test, Collection packets) {
|
||||
String key = String.valueOf(myLastIndex++);
|
||||
myKnownKeys.put(test, key);
|
||||
final Packet packet = createPacket();
|
||||
packet.addString(PoolOfDelimiters.OBJECT_PREFIX).addReference(key);
|
||||
addStringRepresentation(test, packet);
|
||||
packet.addLong(getTestCont(test));
|
||||
packet.addString(PoolOfDelimiters.REFERENCE_END_STR);
|
||||
packets.add(packet);
|
||||
return key;
|
||||
}
|
||||
|
||||
public Packet createPacket() {
|
||||
return new Packet(myMainTransport, this);
|
||||
}
|
||||
@@ -48,21 +61,13 @@ public abstract class OutputObjectRegistry {
|
||||
Packet packet = createPacket().addString(PoolOfDelimiters.OBJECT_PREFIX).addReference(key);
|
||||
addStringRepresentation(test, packet);
|
||||
packet.addLong(getTestCont(test));
|
||||
sendViaAllTransports(packet);
|
||||
packet.send();
|
||||
return key;
|
||||
}
|
||||
|
||||
protected abstract int getTestCont(Object test);
|
||||
protected abstract void addStringRepresentation(Object test, Packet packet);
|
||||
|
||||
private void sendViaAllTransports(Packet packet) {
|
||||
packet.send();
|
||||
if (myAuxilaryTransport != null)
|
||||
packet.sendThrough(myAuxilaryTransport);
|
||||
}
|
||||
|
||||
|
||||
|
||||
protected static void addTestClass(Packet packet, String className) {
|
||||
packet.
|
||||
addLimitedString(PoolOfTestTypes.TEST_CLASS).
|
||||
|
||||
@@ -18,6 +18,7 @@ package com.intellij.rt.execution.junit.segments;
|
||||
import junit.runner.BaseTestRunner;
|
||||
|
||||
import java.io.*;
|
||||
import java.util.Collection;
|
||||
import java.util.Vector;
|
||||
|
||||
public class Packet extends PacketWriter {
|
||||
@@ -36,6 +37,10 @@ public class Packet extends PacketWriter {
|
||||
return addReference(myRegistry.referenceTo(test));
|
||||
}
|
||||
|
||||
public Packet addObject(Object test, Collection packet) {
|
||||
return addReference(myRegistry.referenceTo(test, packet));
|
||||
}
|
||||
|
||||
public Packet addReference(String reference) {
|
||||
appendString(reference + PoolOfDelimiters.REFERENCE_END);
|
||||
return this;
|
||||
|
||||
@@ -20,6 +20,7 @@ package com.intellij.rt.execution.junit.segments;
|
||||
*/
|
||||
public interface PoolOfDelimiters {
|
||||
char REFERENCE_END = ':';
|
||||
String REFERENCE_END_STR = ":";
|
||||
char INTEGER_DELIMITER = ' ';
|
||||
|
||||
String OBJECT_PREFIX = "O";
|
||||
|
||||
Reference in New Issue
Block a user