8169599: Several JShell tests are failing on Solaris after JDK-8145838
authorjlahoda
Fri, 11 Nov 2016 17:45:29 +0100
changeset 41995 1ac75bf2dc3a
parent 41994 e43f670394ca
child 41996 389212e0746c
8169599: Several JShell tests are failing on Solaris after JDK-8145838 Summary: Partially reverting e43f670394ca Reviewed-by: rfield
langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/JdiDefaultExecutionControl.java
langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java
--- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/JdiDefaultExecutionControl.java	Fri Nov 11 12:54:47 2016 +0100
+++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/JdiDefaultExecutionControl.java	Fri Nov 11 17:45:29 2016 +0100
@@ -24,7 +24,6 @@
  */
 package jdk.jshell.execution;
 
-import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.ObjectInput;
@@ -33,14 +32,11 @@
 import java.net.InetAddress;
 import java.net.ServerSocket;
 import java.net.Socket;
-import java.security.SecureRandom;
 import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.function.Consumer;
-
 import com.sun.jdi.BooleanValue;
 import com.sun.jdi.ClassNotLoadedException;
 import com.sun.jdi.Field;
@@ -127,14 +123,6 @@
             VirtualMachine vm = jdii.vm();
             Process process = jdii.process();
 
-            OutputStream processOut = process.getOutputStream();
-            SecureRandom rng = new SecureRandom();
-            byte[] randomBytes = new byte[VERIFY_HASH_LEN];
-
-            rng.nextBytes(randomBytes);
-            processOut.write(randomBytes);
-            processOut.flush();
-
             List<Consumer<String>> deathListeners = new ArrayList<>();
             deathListeners.add(s -> env.closeDown());
             Util.detectJdiExitEvent(vm, s -> {
@@ -143,8 +131,6 @@
                 }
             });
 
-            ByteArrayOutputStream receivedRandomBytes = new ByteArrayOutputStream();
-
             // Set-up the commands/reslts on the socket.  Piggy-back snippet
             // output.
             Socket socket = listener.accept();
@@ -153,35 +139,11 @@
             Map<String, OutputStream> outputs = new HashMap<>();
             outputs.put("out", env.userOut());
             outputs.put("err", env.userErr());
-            outputs.put("echo", new OutputStream() {
-                @Override public void write(int b) throws IOException {
-                    synchronized (receivedRandomBytes) {
-                        receivedRandomBytes.write(b);
-                        receivedRandomBytes.notify();
-                    }
-                }
-            });
             Map<String, InputStream> input = new HashMap<>();
             input.put("in", env.userIn());
-            return remoteInputOutput(socket.getInputStream(), out, outputs, input, (objIn, objOut) -> {
-                synchronized (receivedRandomBytes) {
-                    while (receivedRandomBytes.size() < randomBytes.length) {
-                        try {
-                            receivedRandomBytes.wait();
-                        } catch (InterruptedException ex) {
-                            //ignore
-                        }
-                    }
-                    if (!Arrays.equals(receivedRandomBytes.toByteArray(), randomBytes)) {
-                        throw new IllegalStateException("Invalid connection!");
-                    }
-                }
-                return new JdiDefaultExecutionControl(objOut, objIn, vm, process, deathListeners);
-            });
+            return remoteInputOutput(socket.getInputStream(), out, outputs, input, (objIn, objOut) -> new JdiDefaultExecutionControl(objOut, objIn, vm, process, deathListeners));
         }
     }
-    //where:
-        private static final int VERIFY_HASH_LEN = 20;
 
     /**
      * Create an instance.
--- a/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java	Fri Nov 11 12:54:47 2016 +0100
+++ b/langtools/src/jdk.jshell/share/classes/jdk/jshell/execution/RemoteExecutionControl.java	Fri Nov 11 17:45:29 2016 +0100
@@ -24,7 +24,6 @@
  */
 package jdk.jshell.execution;
 
-import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
 import java.io.PrintStream;
@@ -58,7 +57,6 @@
      * @throws Exception any unexpected exception
      */
     public static void main(String[] args) throws Exception {
-        InputStream fd0 = System.in;
         String loopBack = null;
         Socket socket = new Socket(loopBack, Integer.parseInt(args[0]));
         InputStream inStream = socket.getInputStream();
@@ -66,25 +64,6 @@
         Map<String, Consumer<OutputStream>> outputs = new HashMap<>();
         outputs.put("out", st -> System.setOut(new PrintStream(st, true)));
         outputs.put("err", st -> System.setErr(new PrintStream(st, true)));
-        outputs.put("echo", st -> {
-            new Thread(() -> {
-                try {
-                    int read;
-
-                    while ((read = fd0.read()) != (-1)) {
-                        st.write(read);
-                    }
-                } catch (IOException ex) {
-                    ex.printStackTrace();
-                } finally {
-                    try {
-                        st.close();
-                    } catch (IOException ex) {
-                        ex.printStackTrace();
-                    }
-                }
-            }).start();
-        });
         Map<String, Consumer<InputStream>> input = new HashMap<>();
         input.put("in", st -> System.setIn(st));
         forwardExecutionControlAndIO(new RemoteExecutionControl(), inStream, outStream, outputs, input);