001: /*
002: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
003: *
004: * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
005: *
006: * The contents of this file are subject to the terms of either the GNU
007: * General Public License Version 2 only ("GPL") or the Common
008: * Development and Distribution License("CDDL") (collectively, the
009: * "License"). You may not use this file except in compliance with the
010: * License. You can obtain a copy of the License at
011: * http://www.netbeans.org/cddl-gplv2.html
012: * or nbbuild/licenses/CDDL-GPL-2-CP. See the License for the
013: * specific language governing permissions and limitations under the
014: * License. When distributing the software, include this License Header
015: * Notice in each file and include the License file at
016: * nbbuild/licenses/CDDL-GPL-2-CP. Sun designates this
017: * particular file as subject to the "Classpath" exception as provided
018: * by Sun in the GPL Version 2 section of the License file that
019: * accompanied this code. If applicable, add the following below the
020: * License Header, with the fields enclosed by brackets [] replaced by
021: * your own identifying information:
022: * "Portions Copyrighted [year] [name of copyright owner]"
023: *
024: * Contributor(s):
025: *
026: * The Original Software is NetBeans. The Initial Developer of the Original
027: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
028: * Microsystems, Inc. All Rights Reserved.
029: *
030: * If you wish your version of this file to be governed by only the CDDL
031: * or only the GPL Version 2, indicate your decision by adding
032: * "[Contributor] elects to include this software in this distribution
033: * under the [CDDL or GPL Version 2] license." If you do not indicate a
034: * single choice of license, a recipient has the option to distribute
035: * your version of this file under either the CDDL, the GPL Version 2 or
036: * to extend the choice of license to its licensees as provided above.
037: * However, if you add GPL Version 2 code and therefore, elected the GPL
038: * Version 2 license, then the option applies only if the new code is
039: * made subject to such option by the copyright holder.
040: */
041:
042: package gui.window;
043:
044: import org.netbeans.jellytools.Bundle;
045: import org.netbeans.jellytools.ProjectsTabOperator;
046: import org.netbeans.jellytools.RuntimeTabOperator;
047: import org.netbeans.jellytools.TopComponentOperator;
048: import org.netbeans.jellytools.NbDialogOperator;
049: import org.netbeans.jellytools.PaletteOperator;
050: import org.netbeans.jellytools.nodes.Node;
051: import org.netbeans.jellytools.actions.ActionNoBlock;
052: import org.netbeans.jellytools.actions.DeleteAction;
053: import org.netbeans.jemmy.JemmyProperties;
054:
055: import org.netbeans.jemmy.QueueTool;
056: import org.netbeans.jemmy.TimeoutExpiredException;
057: import org.netbeans.jemmy.operators.ComponentOperator;
058: import org.netbeans.jemmy.operators.JTextComponentOperator;
059: import org.netbeans.jemmy.operators.JTreeOperator;
060:
061: /**
062: *
063: * @author mkhramov@netbeans.org
064: */
065: public class DatabaseTableDrop extends
066: org.netbeans.performance.test.utilities.PerformanceTestCase {
067: private RuntimeTabOperator rto;
068: protected WebFormDesignerOperator surface;
069: protected PaletteComponentOperator palette;
070:
071: protected String categoryName;
072: protected String componentName;
073: protected java.awt.Point addPoint;
074:
075: private static final String DBRootName = "jdbc:derby://localhost:1527/travel [travel on TRAVEL]";
076: private static final String DBTableName = "Tables" + "|" + "TRIP";
077:
078: /** Creates a new instance of DatabaseTableDrop
079: * @param testName
080: */
081: public DatabaseTableDrop(String testName) {
082: super (testName);
083: expectedTime = 10000; // 20 seconds ?
084: WAIT_AFTER_OPEN = 5000;
085: categoryName = "Woodstock Basic"; // NOI18N
086: componentName = "Table"; // NOI18N
087: addPoint = new java.awt.Point(50, 50);
088: }
089:
090: /** Creates a new instance of DatabaseTableDrop
091: * @param testName
092: * @param performanceDataName
093: */
094: public DatabaseTableDrop(String testName, String performanceDataName) {
095: super (testName, performanceDataName);
096: expectedTime = 10000; // 20 seconds ?
097: WAIT_AFTER_OPEN = 5000;
098: categoryName = "Woodstock Basic"; // NOI18N
099: componentName = "Table"; // NOI18N
100: addPoint = new java.awt.Point(50, 50);
101: }
102:
103: @Override
104: protected void initialize() {
105: log(":: initialize");
106: new ActionNoBlock("Window|Navigating|Navigator", null)
107: .perform(); //NOI18N
108:
109: rto = RuntimeTabOperator.invoke();
110: Node travelBaseNode = new Node(rto.getRootNode(), "Databases"
111: + "|" + DBRootName); // NOI18N
112: travelBaseNode.performPopupActionNoBlock("Connect"); // NOI18N
113: processDBConnectDialogNoPass();
114: ProjectsTabOperator.invoke();
115:
116: PaletteOperator.invoke();
117: openPage();
118: }
119:
120: private void openPage() {
121: surface = gui.VWPUtilities.openedWebDesignerForJspFile(
122: "VisualWebProject", "Page1");
123: palette = new PaletteComponentOperator();
124: }
125:
126: private void addComponent() throws Error {
127: //Select component in palette
128: palette.getCategoryListOperator(categoryName).selectItem(
129: componentName);
130:
131: //Click on design surface to add selected component on page
132: surface.clickOnSurface(new Double(addPoint.getX()).intValue(),
133: new Double(addPoint.getY()).intValue());
134:
135: long click1 = System.currentTimeMillis();
136: log(":: click on surface");
137: //Click some other surface point to make added component deselected
138:
139: new QueueTool().waitEmpty();
140: long click2 = System.currentTimeMillis();
141: surface.clickOnSurface(10, 10);
142: log(":: click on surface");
143: log(":: Delta = " + (click2 - click1));
144: waitNoEvent(5000);
145: }
146:
147: public void prepare() {
148: log(":: prepare");
149: addComponent();
150: selectDBTableNode();
151: }
152:
153: public ComponentOperator open() {
154: log(":: open");
155: surface.clickOnSurface(70, 70);
156: return null;
157: }
158:
159: @Override
160: public void close() {
161: log(":: close");
162: clearBindingArtefacts();
163: }
164:
165: private void processDBConnectDialogNoPass() {
166: NbDialogOperator connectDlg = new NbDialogOperator(
167: "Connecting to Database"); // NOI18N
168: connectDlg.waitClosed();
169: }
170:
171: private void processDBConnectDialog() {
172: NbDialogOperator connectDlg = new NbDialogOperator(
173: "Connecting to Database"); // NOI18N
174: JTextComponentOperator password = new JTextComponentOperator(
175: connectDlg, 0);
176: password.setText("travel");
177:
178: long oldTimeout = JemmyProperties.getCurrentTimeouts()
179: .getTimeout("ComponentOperator.WaitStateTimeout");
180: JemmyProperties.getCurrentTimeouts().setTimeout(
181: "ComponentOperator.WaitStateTimeout", 60000);
182:
183: connectDlg.ok();
184: try {
185: connectDlg.waitClosed();
186: } catch (TimeoutExpiredException tex) {
187: fail("Unable to start Java DB server");
188: }
189: JemmyProperties.getCurrentTimeouts().setTimeout(
190: "ComponentOperator.WaitStateTimeout", oldTimeout);
191: }
192:
193: private void selectDBTableNode() {
194: RuntimeTabOperator.invoke();
195: Node TableNode = new Node(rto.getRootNode(), "Databases" + "|"
196: + DBRootName + "|" + DBTableName); // NOI18N
197: TableNode.select();
198:
199: }
200:
201: private void clearBindingArtefacts() {
202: String title = Bundle.getStringTrimmed(
203: "org.openide.explorer.Bundle",
204: "MSG_ConfirmDeleteObjectTitle"); //Confirm Object Deletion
205:
206: TopComponentOperator navigator = new TopComponentOperator(
207: "Navigator"); // NOI18N
208:
209: JTreeOperator tree = new JTreeOperator(navigator);
210:
211: Node table = new Node(tree,
212: "Page1|page1|html1|body1|form1|table1");
213: new DeleteAction().perform(table);
214: new NbDialogOperator(title).yes();
215: surface.clickOnSurface(10, 10);
216:
217: table = new Node(tree, "Page1|tripDataProvider");
218: new DeleteAction().perform(table);
219: new NbDialogOperator(title).yes();
220: surface.clickOnSurface(10, 10);
221:
222: table = new Node(tree, "SessionBean1|tripRowSet:");
223: new DeleteAction().perform(table);
224: new NbDialogOperator(title).yes();
225: }
226:
227: protected void shutdown() {
228: super .shutdown();
229: rto = RuntimeTabOperator.invoke();
230: Node travelBaseNode = new Node(rto.getRootNode(), "Databases"
231: + "|" + DBRootName); // NOI18N
232: travelBaseNode.performPopupActionNoBlock("Disconnect"); // NOI18N
233: }
234:
235: public static void main(String[] args) {
236: junit.textui.TestRunner.run(new DatabaseTableDrop(
237: "measureTime", "Time to Drop Database table on table"));
238: }
239: }
|