Ejemplo n.º 1
0
        /**
         * Refactored from AbstractAction.java
         *
         * @param tree
         */
        public static void ConvertSubTree(HashTree tree)
        {
            LinkedList <Object> copyList = new LinkedList <Object>(tree.list());

            foreach (Object obj  in copyList)
            {
                if (typeof(TestElement).IsAssignableFrom(obj.GetType()))
                {
                    TestElement item = (TestElement)obj;
                    if (item.isEnabled())
                    {
                        if (typeof(ReplaceableController).IsAssignableFrom(item.GetType()))
                        {
                            ReplaceableController rc;

                            // TODO this bit of code needs to be tidied up
                            // Unfortunately ModuleController is in components, not core
                            if (item.GetType().Name.Equals("org.apache.jmeter.control.ModuleController"))
                            { // Bug 47165
                                rc = (ReplaceableController)item;
                            }
                            else
                            {
                                // HACK: force the controller to load its tree
                                rc = (ReplaceableController)item.Clone();
                            }

                            HashTree subTree = tree.GetTree(item);
                            if (subTree != null)
                            {
                                HashTree replacementTree = rc.getReplacementSubTree();
                                if (replacementTree != null)
                                {
                                    ConvertSubTree(replacementTree);
                                    tree.Replace(item, rc);
                                    tree.Set(rc, replacementTree);
                                }
                            }
                            else
                            { // null subTree
                                ConvertSubTree(tree.GetTree(item));
                            }
                        }
                        else
                        { // not Replaceable Controller
                            ConvertSubTree(tree.GetTree(item));
                        }
                    }
                    else
                    { // Not enabled
                        tree.Remove(item);
                    }
                }
                else
                { // Not a TestElement
                    NetMeterTreeNode item = (NetMeterTreeNode)obj;
                    if (item.isEnabled())
                    {
                        // Replacement only needs to occur when starting the engine
                        // @see StandardJMeterEngine.run()
                        if (item.getUserObject() is ReplaceableController)
                        {
                            ReplaceableController rc = (ReplaceableController)item.getTestElement();
                            HashTree subTree         = tree.GetTree(item);

                            if (subTree != null)
                            {
                                HashTree replacementTree = rc.getReplacementSubTree();
                                if (replacementTree != null)
                                {
                                    ConvertSubTree(replacementTree);
                                    tree.Replace(item, rc);
                                    tree.Set(rc, replacementTree);
                                }
                            }
                        }
                        else
                        { // Not a ReplaceableController
                            ConvertSubTree(tree.GetTree(item));
                            TestElement testElement = item.getTestElement();
                            tree.Replace(item, testElement);
                        }
                    }
                    else
                    { // Not enabled
                        tree.Remove(item);
                    }
                }
            }
        }
Ejemplo n.º 2
0
        // run test in batch mode
        private void RunTest(String testFile, String logFile, Boolean remoteStart, String remote_hosts_string)
        {
            FileStream reader = null;

            try
            {
                if (!File.Exists(testFile))
                {
                    println("Could not open " + testFile);
                    return;
                }
                //FileServer.getFileServer().setBaseForScript(f);

                reader = new FileStream(testFile, FileMode.Open, FileAccess.Read, FileShare.Read);
                log.Info("Loading file: " + testFile);

                HashTree tree = IOService.loadTree(reader);

                // Deliberate use of deprecated ctor
                NetMeterTreeModel treeModel = new NetMeterTreeModel(new Object());// Create non-GUI version to avoid headless problems
                NetMeterTreeNode  root      = (NetMeterTreeNode)treeModel.getRoot();
                treeModel.addSubTree(tree, root);

                // Hack to resolve ModuleControllers in non GUI mode
                SearchByType <ReplaceableController> replaceableControllers = new SearchByType <ReplaceableController>();
                tree.Traverse(replaceableControllers);
                List <ReplaceableController> replaceableControllersRes = replaceableControllers.GetSearchResults();

                foreach (ReplaceableController controller in replaceableControllersRes)
                {
                    controller.resolveReplacementSubTree(root);
                }

                // Remove the disabled items
                // For GUI runs this is done in Start.java
                ConvertSubTree(tree);

                ResultCollector summer         = null;
                String          summariserName = "Summariser";//$NON-NLS-1$
                log.Info("Creating summariser <" + summariserName + ">");
                println("Creating summariser <" + summariserName + ">");
                summer = new ResultCollector(summariserName);

                if (logFile != null)
                {
                    ResultCollector logger = new ResultCollector(summer);
                    logger.setFilename(logFile);
                    tree.Add(tree.GetArray()[0], logger);
                }
                else
                {
                    // only add Summariser if it can not be shared with the ResultCollector
                    if (summer != null)
                    {
                        tree.Add(tree.GetArray()[0], summer);
                    }
                }

                LinkedList <NetMeterEngine> engines = new LinkedList <NetMeterEngine>();
                tree.Put(tree.GetArray()[0], new ListenToTest(parent, (remoteStart && remoteStop) ? engines : null));
                println("Created the tree successfully using " + testFile);
                if (!remoteStart)
                {
                    NetMeterEngine engine = new StandardEngine();
                    engine.Configure(tree);
                    Int64 now = DateTime.Now.Ticks;
                    println("Starting the test @ " + DateTime.Now.ToString() + " (" + now + ")");
                    engine.RunTest();
                    engines.AddLast(engine);
                }
                //else
                //{
                //    java.util.StringTokenizer st = new java.util.StringTokenizer(remote_hosts_string, ",");//$NON-NLS-1$
                //    List<String> failingEngines = new ArrayList<String>(st.countTokens());
                //    while (st.hasMoreElements())
                //    {
                //        String el = (String) st.nextElement();
                //        println("Configuring remote engine for " + el);
                //        log.info("Configuring remote engine for " + el);
                //        JMeterEngine eng = doRemoteInit(el.trim(), tree);
                //        if (null != eng)
                //        {
                //            engines.add(eng);
                //        }
                //        else
                //        {
                //            failingEngines.add(el);
                //            println("Failed to configure "+el);
                //        }
                //    }
                //    if (engines.isEmpty())
                //    {
                //        println("No remote engines were started.");
                //        return;
                //    }
                //    if(failingEngines.size()>0) {
                //        throw new IllegalArgumentException("The following remote engines could not be configured:"+failingEngines);
                //    }
                //    println("Starting remote engines");
                //    log.Info("Starting remote engines");
                //    long now = System.currentTimeMillis();
                //    println("Starting the test @ "+new Date(now)+" ("+now+")");
                //    foreach (NetMeterEngine engine in engines)
                //    {
                //        engine.runTest();
                //    }
                //    println("Remote engines have been started");
                //    log.Info("Remote engines have been started");
                //}
                StartUdpDdaemon(engines);
            }
            catch (Exception e)
            {
                System.Console.WriteLine("Error in NonGUIDriver " + e.Message);
                log.Error("Error in NonGUIDriver", e);
            }
            finally
            {
                reader.Close();
            }
        }