public PluginExecutionResult Execute(PluginExecutionData executionData) { CtcSettings.Initialize(executionData); // create activity data DotOneXActivityData activityData = executionData.GetMetadata <DotOneXActivityData>(CtcMetadataConverter.Converters); PrinterFamilies family = (PrinterFamilies)Enum.Parse(typeof(PrinterFamilies), activityData.ProductFamily); activityData.DotOneXUserName = DOT1X_USERNAME.FormatWith(activityData.RadiusServerType.ToString().ToLower(CultureInfo.CurrentCulture)); activityData.DotOneXPassword = DOT1X_PASSWORD; activityData.SharedSecret = SHARED_SECRET; activityData.PolicyName = NETWORK_POLICY; bool continueTest = true; while (continueTest && !NetworkUtil.PingUntilTimeout(IPAddress.Parse(activityData.Ipv4Address), TimeSpan.FromSeconds(30))) { continueTest = DotOneXTemplates.ShowErrorPopUp("Printer: {0} is not available.\nPlease cold reset the printer.".FormatWith(activityData.Ipv4Address)); } if (!continueTest) { return(new PluginExecutionResult(PluginResult.Failed, "Printer: {0} is not available.\nPlease cold reset the printer.".FormatWith(activityData.Ipv4Address))); } // create instance of ews adapter EwsWrapper.Instance().Create(family, activityData.ProductName, activityData.Ipv4Address, Path.Combine(activityData.SitemapPath, activityData.SiteMapVersion), BrowserModel.Firefox); EwsWrapper.Instance().Start(); EwsWrapper.Instance().WakeUpPrinter(); EwsWrapper.Instance().EnableSnmpv1v2ReadWriteAccess(); SnmpWrapper.Instance().Create(activityData.Ipv4Address); SnmpWrapper.Instance().SetCommunityName("public"); TelnetWrapper.Instance().Create(activityData.Ipv4Address); //TODO: Migration issue even thought it is not migration issue why it is commented //EwsWrapper.Instance().SetWSDiscovery(true); Printer.Printer printer = PrinterFactory.Create(activityData.ProductFamily, activityData.Ipv4Address); activityData.MacAddress = printer.MacAddress; using (DhcpApplicationServiceClient dhcpClient = DhcpApplicationServiceClient.Create(activityData.DhcpServerIp)) { string scope = dhcpClient.Channel.GetDhcpScopeIP(activityData.DhcpServerIp); dhcpClient.Channel.DeleteReservation(activityData.DhcpServerIp, scope, activityData.Ipv4Address, activityData.MacAddress); if (dhcpClient.Channel.CreateReservation(activityData.DhcpServerIp, scope, activityData.Ipv4Address, activityData.MacAddress, ReservationType.Both)) { TraceFactory.Logger.Info("Successfully created reservation for IP address: {0}, Mac address: {1} for {2}".FormatWith(activityData.Ipv4Address, activityData.MacAddress, ReservationType.Both)); } else { TraceFactory.Logger.Info("Failed to create reservation for IP address: {0}, Mac address: {1} for {2}".FormatWith(activityData.Ipv4Address, activityData.MacAddress, ReservationType.Both)); return(new PluginExecutionResult(PluginResult.Failed, "Failed to create reservation for IP address: {0}, Mac address: {1} for {2}".FormatWith(activityData.Ipv4Address, activityData.MacAddress, ReservationType.Both))); } } if (!ConfigureRadiusServer(activityData)) { return(new PluginExecutionResult(PluginResult.Failed, "Failed to configure radius server")); } if (!ConfigureSwitch(activityData)) { return(new PluginExecutionResult(PluginResult.Failed, "Failed to configure switch")); } activityData.SessionId = executionData.SessionId; if (null == _tests) { _tests = new DotOneXTests(activityData); } // Execute the selected tests foreach (int testNumber in activityData.SelectedTests) { try { ExecutionServices.SessionRuntime.AsInternal().WaitIfPaused(); _tests.RunTest(executionData, testNumber, IPAddress.Parse(activityData.Ipv4Address), (ProductFamilies)Enum.Parse(typeof(ProductFamilies), activityData.ProductFamily)); } catch (Exception ex) { TraceFactory.Logger.Fatal("Error while executing Test:{0} \n".FormatWith(testNumber, ex.Message)); } } EwsWrapper.Instance().Stop(); return(new PluginExecutionResult(PluginResult.Passed)); }