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 */ beforeDebuggeeStart()43 protected void beforeDebuggeeStart() { 44 synchronizer = createSynchronizer(); 45 int port = synchronizer.bindServer(); 46 debuggeeWrapper.savedVMOptions = "-Djpda.settings.syncPort=" + port; 47 super.beforeDebuggeeStart(); 48 } 49 50 /** 51 * Creates wrapper for synchronization channel. 52 */ createSynchronizer()53 protected JPDADebuggeeSynchronizer createSynchronizer() { 54 return new JPDADebuggeeSynchronizer(logWriter, settings); 55 } 56 57 /** 58 * Overrides inherited method to resume debuggee VM and then to establish 59 * sync connection. 60 */ internalSetUp()61 protected void internalSetUp() throws Exception { 62 super.internalSetUp(); 63 64 debuggeeWrapper.resume(); 65 logWriter.println("Resumed debuggee VM"); 66 67 synchronizer.startServer(); 68 logWriter.println("Established sync connection"); 69 } 70 71 /** 72 * Overrides inherited method to close sync connection upon exit. 73 */ internalTearDown()74 protected void internalTearDown() { 75 if (synchronizer != null) { 76 if (null != finalSyncMessage) { 77 synchronizer.sendMessage(finalSyncMessage); 78 } 79 synchronizer.stop(); 80 logWriter.println("Completed sync connection"); 81 } 82 super.internalTearDown(); 83 } 84 85 } 86