private async Task <HttpResponseMessage> PollAndVerifyAfterArmInstallation(RemoteSiteExtensionManager manager, string packageId) { TestTracer.Trace("Polling for status for '{0}'", packageId); DateTime start = DateTime.UtcNow; HttpResponseMessage responseMessage = null; UpdateHeaderIfGoingToBeArmRequest(manager.Client, true); do { responseMessage = await manager.GetLocalExtension(packageId); if (HttpStatusCode.Created == responseMessage.StatusCode) { TestTracer.Trace("Action is on-going, wait for 3 seconds for next poll. Package: '{0}'", packageId); await Task.Delay(TimeSpan.FromSeconds(3)); } else if (HttpStatusCode.OK == responseMessage.StatusCode) { TestTracer.Trace("Action is done successfully for package '{0}'.", packageId); break; } Assert.True( HttpStatusCode.Created == responseMessage.StatusCode || HttpStatusCode.OK == responseMessage.StatusCode, string.Format(CultureInfo.InvariantCulture, "Action failed. Package: '{0}'", packageId)); } while ((DateTime.UtcNow - start).TotalSeconds < 120); TestTracer.Trace("Polled for '{0}' seconds. Response status is '{1}'. Package: '{2}'", (DateTime.UtcNow - start).TotalSeconds, responseMessage.StatusCode, packageId); Assert.True(HttpStatusCode.OK == responseMessage.StatusCode, string.Format(CultureInfo.InvariantCulture, "Action failed. Package: {0}", packageId)); return(responseMessage); }
internal ApplicationManager(ISiteManager siteManager, Site site, string appName, ISettingsResolver settingsResolver) { _siteManager = siteManager; _site = site; _appName = appName; _settingsResolver = settingsResolver; // Always null in public Kudu, but makes the code more similar to private Kudu NetworkCredential credentials = null; SiteUrl = site.SiteUrl.ToString(); ServiceUrl = site.ServiceUrl.ToString(); DeploymentManager = new RemoteDeploymentManager(site.ServiceUrl + "api", credentials); SettingsManager = new RemoteDeploymentSettingsManager(site.ServiceUrl + "api/settings", credentials); LegacySettingsManager = new RemoteDeploymentLegacySettingsManager(site.ServiceUrl + "settings", credentials); LogStreamManager = new RemoteLogStreamManager(site.ServiceUrl + "api/logstream", credentials); SSHKeyManager = new RemoteSSHKeyManager(site.ServiceUrl + "api/sshkey", credentials); VfsManager = new RemoteVfsManager(site.ServiceUrl + "api/vfs", credentials); VfsWebRootManager = new RemoteVfsManager(site.ServiceUrl + "api/vfs/site/wwwroot", credentials); LiveScmVfsManager = new RemoteVfsManager(site.ServiceUrl + "api/scmvfs", credentials); ZipManager = new RemoteZipManager(site.ServiceUrl + "api/zip", credentials); RuntimeManager = new RemoteRuntimeManager(site.ServiceUrl + "api/diagnostics/runtime", credentials); CommandExecutor = new RemoteCommandExecutor(site.ServiceUrl + "api/command", credentials); ProcessManager = new RemoteProcessManager(site.ServiceUrl + "api/processes", credentials); WebHooksManager = new RemoteWebHooksManager(site.ServiceUrl + "api/hooks", credentials); RepositoryManager = new RemoteRepositoryManager(site.ServiceUrl + "api/scm", credentials); JobsManager = new RemoteJobsManager(site.ServiceUrl + "api", credentials); LogFilesManager = new RemoteLogFilesManager(site.ServiceUrl + "api/logs", credentials); SiteExtensionManager = new RemoteSiteExtensionManager(site.ServiceUrl + "api", credentials); var repositoryInfo = RepositoryManager.GetRepositoryInfo().Result; GitUrl = repositoryInfo.GitUrl.OriginalString; }
public static async Task CleanSiteExtensions(RemoteSiteExtensionManager manager) { try { TestTracer.Trace("Clean site extensions"); List <SiteExtensionInfo> results = await(await manager.GetLocalExtensions()).Content.ReadAsAsync <List <SiteExtensionInfo> >(); List <Task> tasks = new List <Task>(); foreach (var ext in results) { tasks.Add(manager.UninstallExtension(ext.Id)); } await Task.WhenAll(tasks); } catch (Exception ex) { TestTracer.Trace("Failed to perform cleanup, might cause testcase failure. {0}", ex.ToString()); } }