1 18 19 package org.apache.jmeter.gui.action; 20 21 import java.awt.event.ActionEvent ; 22 import java.io.File ; 23 import java.io.FileInputStream ; 24 import java.io.InputStream ; 25 import java.util.HashSet ; 26 import java.util.Set ; 27 28 import javax.swing.JFileChooser ; 29 import javax.swing.tree.TreePath ; 30 31 import junit.framework.TestCase; 32 33 import org.apache.jmeter.exceptions.IllegalUserActionException; 34 import org.apache.jmeter.gui.GuiPackage; 35 import org.apache.jmeter.gui.tree.JMeterTreeNode; 36 import org.apache.jmeter.gui.util.FileDialoger; 37 import org.apache.jmeter.save.SaveService; 38 import org.apache.jmeter.testelement.TestPlan; 39 import org.apache.jmeter.util.JMeterUtils; 40 import org.apache.jorphan.collections.HashTree; 41 import org.apache.jorphan.logging.LoggingManager; 42 import org.apache.log.Logger; 43 44 48 public class Load implements Command 49 { 50 transient private static Logger log = LoggingManager.getLoggerForClass(); 51 52 private static Set commands = new HashSet (); 53 static { 54 commands.add("open"); 55 commands.add("merge"); 56 } 57 58 public Load() 59 { 60 } 61 62 public Set getActionNames() 63 { 64 return commands; 65 } 66 67 public void doAction(ActionEvent e) 68 { 69 boolean merging = e.getActionCommand().equals("merge"); 70 71 if (!merging) 72 { 73 ActionRouter.getInstance().doActionNow( 74 new ActionEvent (e.getSource(),e.getID(),"close")); 75 } 76 77 JFileChooser chooser = 78 FileDialoger.promptToOpenFile(new String [] { ".jmx" }); 79 if (chooser == null) 80 { 81 return; 82 } 83 boolean isTestPlan = false; 84 InputStream reader = null; 85 File f = null; 86 try 87 { 88 f = chooser.getSelectedFile(); 89 if (f != null) 90 { 91 if (merging){ 92 log.info("Merging file: " + f); 93 } else { 94 log.info("Loading file: " + f); 95 } 96 reader = new FileInputStream (f); 97 HashTree tree = SaveService.loadSubTree(reader); 98 isTestPlan = insertLoadedTree(e.getID(), tree); 99 } 100 } 101 catch (Exception ex) 102 { 103 String msg = ex.getMessage(); 104 if (msg == null) 105 { 106 msg = "Unexpected error - see log for details"; 107 log.warn("Unexpected error", ex); 108 } 109 JMeterUtils.reportErrorToUser(msg); 110 } 111 finally 112 { 113 GuiPackage.getInstance().updateCurrentGui(); 114 GuiPackage.getInstance().getMainFrame().repaint(); 115 } 116 if (!merging && isTestPlan && f != null) 118 { 119 ( 120 (Save) ActionRouter.getInstance().getAction( 121 "save", 122 "org.apache.jmeter.gui.action.Save")).setTestPlanFile( 123 f.getAbsolutePath()); 124 } 125 } 126 127 130 public boolean insertLoadedTree(int id, HashTree tree) 131 throws Exception , IllegalUserActionException 132 { 133 if (tree == null) 135 { 136 throw new Exception ("Error in TestPlan - see log file"); 137 } 138 boolean isTestPlan = tree.getArray()[0] instanceof TestPlan; 139 HashTree newTree = GuiPackage.getInstance().addSubTree(tree); 140 GuiPackage.getInstance().updateCurrentGui(); 141 GuiPackage.getInstance().getMainFrame().getTree().setSelectionPath( 142 new TreePath (((JMeterTreeNode) newTree.getArray()[0]).getPath())); 143 tree = GuiPackage.getInstance().getCurrentSubTree(); 144 ActionRouter.getInstance().actionPerformed( 145 new ActionEvent ( 146 tree.get(tree.getArray()[tree.size() - 1]), 147 id, 148 CheckDirty.SUB_TREE_LOADED)); 149 150 return isTestPlan; 151 } 152 153 157 public static class Test extends TestCase 158 { 159 File testFile1, 160 testFile2, 161 testFile3, 162 testFile4, 163 testFile5, 164 testFile6, 165 testFile7, 166 testFile8, 167 testFile9, 168 testFile10, 169 testFile11, 170 testFile12, 171 testFile13; 172 static Load loader = new Load(); 173 174 public Test(String name) 175 { 176 super(name); 177 } 178 179 public void setUp() 180 { 181 testFile1 = new File ( 183 System.getProperty("user.dir") + "/testfiles", 184 "Test Plan.jmx"); 185 testFile2 = new File ( 187 System.getProperty("user.dir") + "/testfiles", 188 "Modification Manager.jmx"); 189 testFile3 = 190 new File ( 191 System.getProperty("user.dir") + "/testfiles", 192 "proxy.jmx"); 193 testFile4 = 194 new File ( 195 System.getProperty("user.dir") + "/testfiles", 196 "AssertionTestPlan.jmx"); 197 testFile5 = 198 new File ( 199 System.getProperty("user.dir") + "/testfiles", 200 "AuthManagerTestPlan.jmx"); 201 testFile6 = 202 new File ( 203 System.getProperty("user.dir") + "/testfiles", 204 "HeaderManagerTestPlan.jmx"); 205 testFile7 = 206 new File ( 207 System.getProperty("user.dir") + "/testfiles", 208 "InterleaveTestPlan.jmx"); 209 testFile8 = 210 new File ( 211 System.getProperty("user.dir") + "/testfiles", 212 "InterleaveTestPlan2.jmx"); 213 testFile9 = 214 new File ( 215 System.getProperty("user.dir") + "/testfiles", 216 "LoopTestPlan.jmx"); 217 testFile10 = 218 new File ( 219 System.getProperty("user.dir") + "/testfiles", 220 "OnceOnlyTestPlan.jmx"); 221 testFile11 = 222 new File ( 223 System.getProperty("user.dir") + "/testfiles", 224 "ProxyServerTestPlan.jmx"); 225 testFile12 = 226 new File ( 227 System.getProperty("user.dir") + "/testfiles", 228 "SimpleTestPlan.jmx"); 229 testFile13 = new File ( 231 System.getProperty("user.dir") + "/testfiles", 232 "URLRewritingExample.jmx"); 233 } 234 235 public void testFile3() throws Exception 236 { 237 assertTree(getTree(testFile3)); 238 } 239 240 private void assertTree(HashTree tree) throws Exception 241 { 242 assertTrue( 243 tree.getArray()[0] 244 instanceof org.apache.jmeter.testelement.TestPlan); 245 } 246 247 public void testFile4() throws Exception 248 { 249 assertTree(getTree(testFile4)); 250 } 251 252 public void testFile5() throws Exception 253 { 254 assertTree(getTree(testFile5)); 255 } 256 257 public void testFile6() throws Exception 258 { 259 assertTree(getTree(testFile6)); 260 } 261 262 public void testFile7() throws Exception 263 { 264 assertTree(getTree(testFile7)); 265 } 266 267 public void testFile8() throws Exception 268 { 269 assertTree(getTree(testFile8)); 270 } 271 272 public void testFile9() throws Exception 273 { 274 assertTree(getTree(testFile9)); 275 } 276 277 public void testFile10() throws Exception 278 { 279 assertTree(getTree(testFile10)); 280 } 281 282 public void testFile11() throws Exception 283 { 284 assertTree(getTree(testFile11)); 285 } 286 287 public void testFile12() throws Exception 288 { 289 assertTree(getTree(testFile12)); 290 } 291 292 private HashTree getTree(File f) throws Exception 293 { 294 FileInputStream reader = new FileInputStream (f); 295 HashTree tree = SaveService.loadSubTree(reader); 296 return tree; 297 } 298 } 299 } 300 | Popular Tags |