1 /* 2 * Licensed to the Apache Software Foundation (ASF) under one or more 3 * contributor license agreements. See the NOTICE file distributed with 4 * this work for additional information regarding copyright ownership. 5 * The ASF licenses this file to You under the Apache License, Version 2.0 6 * (the "License"); you may not use this file except in compliance with 7 * the License. You may obtain a copy of the License at 8 * 9 * http://www.apache.org/licenses/LICENSE-2.0 10 * 11 * Unless required by applicable law or agreed to in writing, software 12 * distributed under the License is distributed on an "AS IS" BASIS, 13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14 * 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 /** 20 * @author Vitaly A. Provodin 21 */ 22 23 /** 24 * Created on 29.01.2005 25 */ 26 package org.apache.harmony.jpda.tests.jdwp.share; 27 28 import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; 29 30 /** 31 * Base class for unit tests which use one debuggee VM with synchronization 32 * channel. 33 */ 34 public abstract class JDWPSyncTestCase extends JDWPTestCase { 35 36 protected JPDADebuggeeSynchronizer synchronizer; 37 38 protected String finalSyncMessage; 39 40 /** 41 * This method is invoked right before starting debuggee VM. 42 */ 43 @Override beforeDebuggeeStart()44 protected void beforeDebuggeeStart() { 45 synchronizer = createSynchronizer(); 46 int port = synchronizer.bindServer(); 47 debuggeeWrapper.savedVMOptions = "-Djpda.settings.syncPort=" + port; 48 super.beforeDebuggeeStart(); 49 } 50 51 /** 52 * Creates wrapper for synchronization channel. 53 */ createSynchronizer()54 protected JPDADebuggeeSynchronizer createSynchronizer() { 55 return new JPDADebuggeeSynchronizer(logWriter, settings); 56 } 57 58 /** 59 * Overrides inherited method to resume debuggee VM and then to establish 60 * sync connection. 61 */ 62 @Override internalSetUp()63 protected void internalSetUp() throws Exception { 64 super.internalSetUp(); 65 66 debuggeeWrapper.resume(); 67 logWriter.println("Resumed debuggee VM"); 68 69 synchronizer.startServer(); 70 logWriter.println("Established sync connection"); 71 // Get the pid 72 String remotePid = synchronizer.receiveMessage(); 73 this.debuggeeWrapper.setRealPid(Integer.valueOf(remotePid)); 74 } 75 76 /** 77 * Overrides inherited method to close sync connection upon exit. 78 */ 79 @Override internalTearDown()80 protected void internalTearDown() { 81 if (synchronizer != null) { 82 if (null != finalSyncMessage) { 83 synchronizer.sendMessage(finalSyncMessage); 84 } 85 synchronizer.stop(); 86 logWriter.println("Completed sync connection"); 87 } 88 super.internalTearDown(); 89 } 90 91 } 92