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 footprint;
043:
044: import org.netbeans.jellytools.NbDialogOperator;
045: import org.netbeans.jellytools.OutputOperator;
046: import org.netbeans.jellytools.OutputTabOperator;
047: import org.netbeans.jellytools.ProjectsTabOperator;
048: import org.netbeans.jellytools.WizardOperator;
049: import org.netbeans.jellytools.actions.ActionNoBlock;
050: import org.netbeans.jellytools.actions.OutputWindowViewAction;
051: import org.netbeans.jellytools.nodes.Node;
052: import org.netbeans.jellytools.nodes.ProjectRootNode;
053:
054: import org.netbeans.jemmy.operators.ComponentOperator;
055: import org.netbeans.jemmy.operators.JListOperator;
056: import org.netbeans.jemmy.operators.JTextFieldOperator;
057:
058: /**
059: * Measure UML Project Workflow Memory footprint
060: *
061: * @author mmirilovic@netbeans.org
062: */
063: public class UMLWorkflow extends
064: org.netbeans.performance.test.utilities.MemoryFootprintTestCase {
065:
066: private ProjectRootNode j2seproject, j2seprojectmodel;
067:
068: /**
069: * Creates a new instance of J2EEProjectWorkflow
070: *
071: * @param testName the name of the test
072: */
073: public UMLWorkflow(String testName) {
074: super (testName);
075: prefix = "UML Project Workflow |";
076: }
077:
078: /**
079: * Creates a new instance of J2EEProjectWorkflow
080: *
081: * @param testName the name of the test
082: * @param performanceDataName measured values will be saved under this name
083: */
084: public UMLWorkflow(String testName, String performanceDataName) {
085: super (testName, performanceDataName);
086: prefix = "UML Project Workflow |";
087: }
088:
089: @Override
090: public void setUp() {
091: //do nothing
092: }
093:
094: public void prepare() {
095: }
096:
097: public void initialize() {
098: super .initialize();
099: UMLFootprintUtilities.closeAllDocuments();
100: UMLFootprintUtilities.closeMemoryToolbar();
101: }
102:
103: public ComponentOperator open() {
104: // Create, edit, build and execute a sample J2SE project
105: String j2seprojectName = UMLFootprintUtilities.createproject(
106: "Samples|Java", "Anagram Game", true);
107: j2seproject = new ProjectsTabOperator()
108: .getProjectRootNode(j2seprojectName);
109:
110: new OutputWindowViewAction().performAPI();
111: UMLFootprintUtilities.buildproject(j2seprojectName);
112:
113: // reverse enginnering
114: new ActionNoBlock(null, "Reverse Engineer...")
115: .performPopup(j2seproject); //NOI18N
116: new NbDialogOperator("Reverse Engineer").ok(); //NOI18N
117:
118: new OutputOperator().getOutputTab("Reverse Engineering Log")
119: .waitText("Task Successful"); //NOI18N
120: j2seprojectmodel = new ProjectsTabOperator()
121: .getProjectRootNode(j2seprojectName + "-Model");
122: j2seprojectmodel.expand();
123:
124: Node modelNode = new Node(j2seprojectmodel, "Model");
125: modelNode.expand();
126:
127: String modelNodeNames[] = modelNode.getChildren();
128: Node modelNodes[] = new Node[modelNodeNames.length];
129:
130: for (int i = 0; i < modelNodeNames.length; i++) {
131: modelNodes[i] = new Node(modelNode, modelNodeNames[i]);
132: }
133:
134: new ActionNoBlock(null,
135: "Create Diagram From Selected Elements...")
136: .performPopup(modelNodes); //NOI18N
137: WizardOperator createNewDiagram = new WizardOperator(
138: "Create New Diagram"); //NOI18N
139: new JListOperator(createNewDiagram, "Activity Diagram")
140: .selectItem("Class Diagram"); //NOI18N
141: JTextFieldOperator textfield = new JTextFieldOperator(
142: createNewDiagram);
143: textfield.clearText();
144: textfield.typeText("ClassDiagram");
145: createNewDiagram.finish();
146:
147: return null;
148: }
149:
150: public void close() {
151: // UMLFootprintUtilities.deleteProject(j2seprojectmodel.getText());
152: // UMLFootprintUtilities.deleteProject(j2seproject.getText());
153: }
154:
155: public static void main(java.lang.String[] args) {
156: junit.textui.TestRunner.run(new UMLWorkflow(
157: "measureMemoryFooprint"));
158: }
159:
160: }
|