01: /*
02: * Licensed to the Apache Software Foundation (ASF) under one or more
03: * contributor license agreements. See the NOTICE file distributed with
04: * this work for additional information regarding copyright ownership.
05: * The ASF licenses this file to You under the Apache License, Version 2.0
06: * (the "License"); you may not use this file except in compliance with
07: * the License. You may obtain a copy of the License at
08: *
09: * 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: * @version $Revision: 1.5 $
22: */
23:
24: /**
25: * Created on 29.01.2005
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: protected void beforeDebuggeeStart(
44: JDWPUnitDebuggeeWrapper debuggeeWrapper) {
45: synchronizer = createSynchronizer();
46: int port = synchronizer.bindServer();
47: debuggeeWrapper.savedVMOptions = "-Djpda.settings.syncPort="
48: + port;
49: super .beforeDebuggeeStart(debuggeeWrapper);
50: }
51:
52: /**
53: * Creates wrapper for synchronization channel.
54: */
55: protected JPDADebuggeeSynchronizer createSynchronizer() {
56: return new JPDADebuggeeSynchronizer(logWriter, settings);
57: }
58:
59: /**
60: * Overrides inherited method to resume debuggee VM and then to establish
61: * sync connection.
62: */
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: }
72:
73: /**
74: * Overrides inherited method to close sync connection upon exit.
75: */
76: protected void internalTearDown() {
77: if (synchronizer != null) {
78: if (null != finalSyncMessage) {
79: synchronizer.sendMessage(finalSyncMessage);
80: }
81: synchronizer.stop();
82: logWriter.println("Completed sync connection");
83: }
84: super.internalTearDown();
85: }
86:
87: }
|