Esempio n. 1
0
        private void InitializeConfigurationControl()
        {
            // Datagridview
            _gFriendFiles = new BindingList <GFriendFile>(_data.GFriendFiles);
            scripts_DataGridView.DataSource       = _gFriendFiles;
            scripts_DataGridView.Columns[0].Width = 200;
            scripts_DataGridView.Columns[1].Width = 100;
            scripts_DataGridView.Columns[2].Width = 460;

            // Field Validator
            fieldValidator.RequireCustom(assetSelectionControl, ValidateAsset);
            fieldValidator.RequireCustom(scripts_DataGridView, ValidateFiles);

            // Lock Timeout
            lockTimeoutControl.Initialize(_data.LockTimeouts);

            // GFriend Initialize
            if (!_libraryWritten)
            {
                string gfLibraryPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "GFriend", "libs");
                GFriendPreparationManager.PrepareLibrary(gfLibraryPath);
                LibraryUtils.LibraryPath = gfLibraryPath;
                _libraryWritten          = true;
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Run GFriend Script
        /// </summary>
        /// <param name="executionData">Execution data</param>
        /// <param name="gfScriptPath">Path of GFriend Script to run</param>
        /// <param name="device">Device info</param>
        /// <returns></returns>
        private PluginExecutionResult RunGFriendScript(PluginExecutionData executionData, string gfScriptPath, IDeviceInfo device)
        {
            _workflowLogger.RecordEvent(DeviceWorkflowMarker.ActivityBegin);
            string gfLibraryPath = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "GFriend", "libs");
            string outputPath    = Path.Combine(Path.GetDirectoryName(Assembly.GetEntryAssembly().Location), "GFriend_Output", executionData.SessionId, executionData.ActivityExecutionId.ToString());

            // Prepare GF Native Libraries and Add event handler
            // Developer Note :
            // GFriend dynamically load native libraries (GFK.*.dll files) when execution.
            // For exeucting GFriend script path of library files should be given.
            // In this step plugin unzip the embeded archive which contains GFriend native library to Plugin\GFriend\libs
            if (!_isGFPrepared)
            {
                UpdateStatus("Preparing GF libraries");
                GFEvent.OnGFEvent += GFEvent_OnGFEvent;
                GFriendPreparationManager.PrepareLibrary(gfLibraryPath);
                LibraryUtils.LibraryPath = gfLibraryPath;

                _isGFPrepared = true;
            }
            TestDataManager        testDataManager = new TestDataManager();
            List <DeviceUnderTest> gfDevices       = new List <DeviceUnderTest>();

            if (device != null)
            {
                DeviceUnderTest dut = new DeviceUnderTest()
                {
                    DeviceId        = device.AssetId,
                    DeviceAddress   = device.Address,
                    LanDebugAddress = device.Address2,
                    AdminPassword   = device.AdminPassword
                };
                gfDevices.Add(dut);
            }
            UpdateStatus("GFrined Initialization");
            Runner.InitGFRunner(gfDevices, outputPath);
            UpdateStatus("Running GFriend Script");
            Runner.Run(gfScriptPath, out testDataManager, null, gfLibraryPath);

            // Check Result with output.xml
            string      outputXMLPath = Path.Combine(outputPath, "output.xml");
            XmlDocument outputXML     = new XmlDocument();

            outputXML.Load(outputXMLPath);
            XmlNode testSuite  = outputXML.SelectSingleNode("//TestSuite");
            int     passCount  = testSuite.SelectNodes("//TestCase/Result[contains(text(),'PASS')]")?.Count ?? 0;
            int     failCount  = testSuite.SelectNodes("//TestCase/Result[contains(text(),'FAIL')]")?.Count ?? 0;
            int     errorCount = testSuite.SelectNodes("//TestCase/Result[contains(text(),'ERROR')]")?.Count ?? 0;

            _workflowLogger.RecordEvent(DeviceWorkflowMarker.ActivityEnd);
            if (errorCount > 0)
            {
                return(new PluginExecutionResult(PluginResult.Error, $"GFriend Execution Ended with Pass:{passCount}, Fail:{failCount}, Error:{errorCount}"));
            }

            if (failCount > 0)
            {
                return(new PluginExecutionResult(PluginResult.Failed, $"GFriend Execution Ended with Pass:{passCount}, Fail:{failCount}, Error:{errorCount}"));
            }

            return(new PluginExecutionResult(PluginResult.Passed));
        }