public NewAzureServiceTests() { cmdlet = new NewAzureServiceProjectCommand(); mockCommandRuntime = new MockCommandRuntime(); cmdlet.CommandRuntime = mockCommandRuntime; TestMockSupport.TestExecutionFolder = AppDomain.CurrentDomain.BaseDirectory; }
public void PublishAzureServiceCreateBasicPackageTest() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. SimpleServiceManagement channel = new SimpleServiceManagement(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.InitializeSettingsAndCreatePackage(servicePath); // Verify the generated files files.AssertFiles(new Dictionary <string, Action <string> >() { { serviceName + @"\deploymentSettings.json", null }, { serviceName + @"\ServiceDefinition.csdef", p => File.ReadAllText(p).Contains(serviceName) }, { serviceName + @"\ServiceConfiguration.Cloud.cscfg", p => File.ReadAllText(p).Contains(serviceName) }, { serviceName + @"\ServiceConfiguration.Local.cscfg", p => File.ReadAllText(p).Contains(serviceName) }, { serviceName + @"\cloud_package.cspkg", p => { using (Package package = Package.Open(p)) { Assert.AreEqual(5, package.GetParts().Count()); } } } }); } }
public void GetServiceNameTest() { using (FileSystemHelper files = new FileSystemHelper(this)) { NewAzureServiceProjectCommand newServiceCmdlet = new NewAzureServiceProjectCommand(); newServiceCmdlet.CommandRuntime = new MockCommandRuntime(); newServiceCmdlet.NewAzureServiceProcess(files.RootPath, serviceName); Assert.AreEqual <string>(serviceName, new AzureService(Path.Combine(files.RootPath, serviceName), null).ServiceName); } }
public void SetupTest() { GlobalPathInfo.GlobalSettingsDirectory = Data.AzureSdkAppDir; mockCommandRuntime = new MockCommandRuntime(); newServiceCmdlet = new NewAzureServiceProjectCommand(); addCacheRoleCmdlet = new AddAzureCacheWorkerRoleCommand(); newServiceCmdlet.CommandRuntime = mockCommandRuntime; addCacheRoleCmdlet.CommandRuntime = mockCommandRuntime; }
public AddAzureCacheWorkerRoleTests() { AzureTool.IgnoreMissingSDKError = true; AzurePowerShell.ProfileDirectory = Test.Utilities.Common.Data.AzureSdkAppDir; mockCommandRuntime = new MockCommandRuntime(); newServiceCmdlet = new NewAzureServiceProjectCommand(); addCacheRoleCmdlet = new AddAzureCacheWorkerRoleCommand(); newServiceCmdlet.CommandRuntime = mockCommandRuntime; addCacheRoleCmdlet.CommandRuntime = mockCommandRuntime; }
public void SetupTest() { GlobalPathInfo.GlobalSettingsDirectory = Data.AzureSdkAppDir; CmdletSubscriptionExtensions.SessionManager = new InMemorySessionManager(); mockCommandRuntime = new MockCommandRuntime(); newServiceCmdlet = new NewAzureServiceProjectCommand(); addCacheRoleCmdlet = new AddAzureCacheWorkerRoleCommand(); newServiceCmdlet.CommandRuntime = mockCommandRuntime; addCacheRoleCmdlet.CommandRuntime = mockCommandRuntime; }
public void TestSetup() { mockCommandRuntime = new MockCommandRuntime(); newServiceCmdlet = new NewAzureServiceProjectCommand(); newServiceCmdlet.CommandRuntime = mockCommandRuntime; }
public void PublishAzureServiceManifestTest() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. SimpleServiceManagement channel = new SimpleServiceManagement(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); // Add web and worker roles AddAzureNodeWebRoleCommand newWebRole = new AddAzureNodeWebRoleCommand(); string defaultWebRoleName = "WebRoleDefault"; string defaultWebRolePath = newWebRole.AddAzureNodeWebRoleProcess(defaultWebRoleName, 2, servicePath); AddAzureNodeWorkerRoleCommand newWorkerRole = new AddAzureNodeWorkerRoleCommand(); string defaultWorkerRoleName = "WorkerRoleDefault"; string defaultWorkerRolePath = newWorkerRole.AddAzureNodeWorkerRoleProcess(defaultWorkerRoleName, 2, servicePath); AddAzureNodeWebRoleCommand matchWebRole = new AddAzureNodeWebRoleCommand(); string matchWebRoleName = "WebRoleExactMatch"; string matchWebRolePath = matchWebRole.AddAzureNodeWebRoleProcess(matchWebRoleName, 2, servicePath); AddAzureNodeWorkerRoleCommand matchWorkerRole = new AddAzureNodeWorkerRoleCommand(); string matchWorkerRoleName = "WorkerRoleExactMatch"; string matchWorkerRolePath = matchWorkerRole.AddAzureNodeWorkerRoleProcess(matchWorkerRoleName, 2, servicePath); AddAzureNodeWebRoleCommand overrideWebRole = new AddAzureNodeWebRoleCommand(); string overrideWebRoleName = "WebRoleOverride"; string overrideWebRolePath = overrideWebRole.AddAzureNodeWebRoleProcess(overrideWebRoleName, 2, servicePath); AddAzureNodeWorkerRoleCommand overrideWorkerRole = new AddAzureNodeWorkerRoleCommand(); string overrideWorkerRoleName = "WorkerRoleOverride"; string overrideWorkerRolePath = matchWorkerRole.AddAzureNodeWorkerRoleProcess(overrideWorkerRoleName, 2, servicePath); AzureService testService = new AzureService(Path.Combine(files.RootPath, serviceName), null); RuntimePackageHelper.SetRoleRuntime(testService.Components.Definition, matchWebRoleName, testService.Paths, version: "0.8.2"); RuntimePackageHelper.SetRoleRuntime(testService.Components.Definition, matchWorkerRoleName, testService.Paths, version: "0.8.2"); RuntimePackageHelper.SetRoleRuntime(testService.Components.Definition, overrideWebRoleName, testService.Paths, overrideUrl: "http://OVERRIDE"); RuntimePackageHelper.SetRoleRuntime(testService.Components.Definition, overrideWorkerRoleName, testService.Paths, overrideUrl: "http://OVERRIDE"); testService.Components.Save(testService.Paths); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.InitializeSettingsAndCreatePackage(servicePath, RuntimePackageHelper.GetTestManifest(files)); AzureService updatedService = new AzureService(testService.Paths.RootPath, null); RuntimePackageHelper.ValidateRoleRuntime(updatedService.Components.Definition, defaultWebRoleName, "http://DATACENTER/node/default.exe;http://DATACENTER/iisnode/default.exe", null); RuntimePackageHelper.ValidateRoleRuntime(updatedService.Components.Definition, defaultWorkerRoleName, "http://DATACENTER/node/default.exe", null); RuntimePackageHelper.ValidateRoleRuntime(updatedService.Components.Definition, matchWorkerRoleName, "http://DATACENTER/node/foo.exe", null); RuntimePackageHelper.ValidateRoleRuntime(updatedService.Components.Definition, matchWebRoleName, "http://DATACENTER/node/foo.exe;http://DATACENTER/iisnode/default.exe", null); RuntimePackageHelper.ValidateRoleRuntime(updatedService.Components.Definition, overrideWebRoleName, null, "http://OVERRIDE"); RuntimePackageHelper.ValidateRoleRuntime(updatedService.Components.Definition, overrideWorkerRoleName, null, "http://OVERRIDE"); } }
public void SetupTest() { cmdlet = new NewAzureServiceProjectCommand(); mockCommandRuntime = new MockCommandRuntime(); cmdlet.CommandRuntime = mockCommandRuntime; }
public void PublishAzurePHPServiceSimpleDeployTest() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. bool createdHostedService = false; bool createdOrUpdatedDeployment = false; SimpleServiceManagement channel = new SimpleServiceManagement(); channel.GetStorageServiceThunk = ar => new StorageService(); channel.CreateHostedServiceThunk = ar => createdHostedService = true; channel.GetHostedServiceWithDetailsThunk = ar => { throw new EndpointNotFoundException(); }; channel.GetStorageKeysThunk = ar => new StorageService() { StorageServiceKeys = new StorageServiceKeys() { Primary = "VGVzdEtleSE=" } }; channel.CreateOrUpdateDeploymentThunk = ar => createdOrUpdatedDeployment = true; channel.GetDeploymentBySlotThunk = ar => new Deployment() { Status = DeploymentStatus.Starting, RoleInstanceList = new RoleInstanceList( new RoleInstance[] { new RoleInstance() { InstanceName = "Role_IN_0", InstanceStatus = RoleInstanceStatus.Ready } }) }; channel.ListCertificatesThunk = ar => new CertificateList(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); AzureService testService = new AzureService(Path.Combine(files.RootPath, serviceName), null); testService.AddWebRole(Resources.PHPScaffolding); string cloudConfigFile = File.ReadAllText(testService.Paths.CloudConfiguration); File.WriteAllText(testService.Paths.CloudConfiguration, new Regex("<Certificates\\s*/>").Replace(cloudConfigFile, "")); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.ShareChannel = true; publishService.SkipUpload = true; publishService.PublishService(servicePath); AzureService service = new AzureService(Path.Combine(files.RootPath, serviceName), null); // Verify the publish service attempted to create and update // the service through the mock. Assert.IsTrue(createdHostedService); Assert.IsTrue(createdOrUpdatedDeployment); Assert.AreEqual <string>(serviceName, service.ServiceName); } }
public void SetupTest() { writer = new FakeWriter(); cmdlet = new NewAzureServiceProjectCommand(); cmdlet.Writer = writer; }
public ServiceComponentsTests() { mockCommandRuntime = new MockCommandRuntime(); newServiceCmdlet = new NewAzureServiceProjectCommand(); newServiceCmdlet.CommandRuntime = mockCommandRuntime; }
public NewAzureServiceTests() { cmdlet = new NewAzureServiceProjectCommand(); mockCommandRuntime = new MockCommandRuntime(); cmdlet.CommandRuntime = mockCommandRuntime; }
public void PublishAzureServiceCreateWorkersPackageTest() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. SimpleServiceManagement channel = new SimpleServiceManagement(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); // Add web and worker roles AddAzureNodeWebRoleCommand newWebRole = new AddAzureNodeWebRoleCommand(); string webRoleName = "NODE_WEB_ROLE"; string webRolePath = newWebRole.AddAzureNodeWebRoleProcess(webRoleName, 2, servicePath); AddAzureNodeWorkerRoleCommand newWorkerRole = new AddAzureNodeWorkerRoleCommand(); string workerRoleName = "NODE_WORKER_ROLE"; string workerRolePath = newWorkerRole.AddAzureNodeWorkerRoleProcess(workerRoleName, 2, servicePath); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.InitializeSettingsAndCreatePackage(servicePath); // Verify the generated files Action <string> verifyContainsNames = p => { string contents = File.ReadAllText(p); Assert.IsTrue(contents.Contains(webRoleName)); Assert.IsTrue(contents.Contains(workerRoleName)); }; files.AssertFiles(new Dictionary <string, Action <string> >() { { serviceName + @"\deploymentSettings.json", null }, { serviceName + '\\' + webRoleName + @"\server.js", null }, { serviceName + '\\' + workerRoleName + @"\server.js", null }, { serviceName + @"\ServiceDefinition.csdef", verifyContainsNames }, { serviceName + @"\ServiceConfiguration.Cloud.cscfg", verifyContainsNames }, { serviceName + @"\ServiceConfiguration.Local.cscfg", verifyContainsNames }, { serviceName + @"\cloud_package.cspkg", p => { using (Package package = Package.Open(p)) { Assert.AreEqual(7, package.GetParts().Count()); } } } }); } }
public void PublishAzureServiceUpgradeTest() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. bool createdHostedService = false; bool createdOrUpdatedDeployment = false; bool upgradedDeployment = false; SimpleServiceManagement channel = new SimpleServiceManagement(); channel.GetStorageServiceThunk = ar => new StorageService(); channel.CreateHostedServiceThunk = ar => createdHostedService = true; channel.GetHostedServiceWithDetailsThunk = ar => new HostedService { Deployments = new DeploymentList() { new Deployment { DeploymentSlot = "Production" } } }; channel.GetStorageKeysThunk = ar => new StorageService() { StorageServiceKeys = new StorageServiceKeys() { Primary = "VGVzdEtleSE=" } }; channel.CreateOrUpdateDeploymentThunk = ar => createdOrUpdatedDeployment = true; channel.UpgradeDeploymentThunk = ar => upgradedDeployment = true; channel.GetDeploymentBySlotThunk = ar => new Deployment() { Status = DeploymentStatus.Starting, RoleInstanceList = new RoleInstanceList( new RoleInstance[] { new RoleInstance() { InstanceName = "Role_IN_0", InstanceStatus = RoleInstanceStatus.Ready } }) }; channel.ListCertificatesThunk = ar => new CertificateList(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.ShareChannel = true; publishService.SkipUpload = true; publishService.PublishService(servicePath); // Verify the publish service upgraded the deployment Assert.IsFalse(createdHostedService); Assert.IsFalse(createdOrUpdatedDeployment); Assert.IsTrue(upgradedDeployment); } }
public void PublishAzureServiceRemovesNodeLogs() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. SimpleServiceManagement channel = new SimpleServiceManagement(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); // Add a web role AddAzureNodeWebRoleCommand newWebRole = new AddAzureNodeWebRoleCommand(); string webRoleName = "NODE_WEB_ROLE"; newWebRole.AddAzureNodeWebRoleProcess(webRoleName, 2, servicePath); string webRolePath = Path.Combine(servicePath, webRoleName); // Add a worker role AddAzureNodeWorkerRoleCommand newWorkerRole = new AddAzureNodeWorkerRoleCommand(); string workerRoleName = "NODE_WORKER_ROLE"; newWorkerRole.AddAzureNodeWorkerRoleProcess(workerRoleName, 2, servicePath); string workerRolePath = Path.Combine(servicePath, workerRoleName); // Add second web and worker roles that we won't add log // entries to new AddAzureNodeWebRoleCommand() .AddAzureNodeWebRoleProcess("SECOND_WEB_ROLE", 2, servicePath); new AddAzureNodeWorkerRoleCommand() .AddAzureNodeWorkerRoleProcess("SECOND_WORKER_ROLE", 2, servicePath); // Add fake logs directories for server.js string logName = "server.js.logs"; string logPath = Path.Combine(webRolePath, logName); Directory.CreateDirectory(logPath); File.WriteAllText(Path.Combine(logPath, "0.txt"), "secret web role debug details were logged here"); logPath = Path.Combine(Path.Combine(workerRolePath, "NestedDirectory"), logName); Directory.CreateDirectory(logPath); File.WriteAllText(Path.Combine(logPath, "0.txt"), "secret worker role debug details were logged here"); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.InitializeSettingsAndCreatePackage(servicePath); // Rip open the package and make sure we can't find the log string packagePath = Path.Combine(servicePath, "cloud_package.cspkg"); using (Package package = Package.Open(packagePath)) { // Make sure the web role and worker role packages don't // have any files with server.js.logs in the name Action <string> validateRole = roleName => { PackagePart rolePart = package.GetParts().Where(p => p.Uri.ToString().Contains(roleName)).First(); using (Package rolePackage = Package.Open(rolePart.GetStream())) { Assert.IsFalse( rolePackage.GetParts().Any(p => p.Uri.ToString().Contains(logName)), "Found {0} part in {1} package!", logName, roleName); } }; validateRole(webRoleName); validateRole(workerRoleName); } } }
public void PublishAzureServiceCreateDeploymentForExistingService() { // Create a temp directory that we'll use to "publish" our service using (FileSystemHelper files = new FileSystemHelper(this) { EnableMonitoring = true }) { // Import our default publish settings files.CreateAzureSdkDirectoryAndImportPublishSettings(); // Create a new channel to mock the calls to Azure and // determine all of the results that we'll need. bool createdHostedService = false; bool createdOrUpdatedDeployment = false; SimpleServiceManagement channel = new SimpleServiceManagement(); channel.GetStorageServiceThunk = ar => new StorageService(); channel.CreateHostedServiceThunk = ar => { }; channel.GetHostedServiceWithDetailsThunk = ar => null; channel.GetStorageKeysThunk = ar => new StorageService() { StorageServiceKeys = new StorageServiceKeys() { Primary = "VGVzdEtleSE=" } }; channel.CreateOrUpdateDeploymentThunk = ar => createdOrUpdatedDeployment = true; channel.GetDeploymentBySlotThunk = ar => { if (createdOrUpdatedDeployment) { Deployment deployment = new Deployment("TEST_SERVICE_NAME", "Production", DeploymentStatus.Running); deployment.RoleInstanceList = new RoleInstanceList(new RoleInstance[] { new RoleInstance() { InstanceName = "Role_IN_0", InstanceStatus = RoleInstanceStatus.Ready } }); return(deployment); } else { throw new EndpointNotFoundException(); } }; channel.ListCertificatesThunk = ar => new CertificateList(); // Create a new service that we're going to publish string serviceName = "TEST_SERVICE_NAME"; NewAzureServiceProjectCommand newService = new NewAzureServiceProjectCommand(); newService.NewAzureServiceProcess(files.RootPath, serviceName); string servicePath = files.CreateDirectory(serviceName); // Get the publishing process started by creating the package PublishAzureServiceProjectCommand publishService = new PublishAzureServiceProjectCommand(channel); publishService.ShareChannel = true; publishService.SkipUpload = true; publishService.PublishService(servicePath); AzureService service = new AzureService(Path.Combine(files.RootPath, serviceName), null); // Verify the publish service attempted to create and update // the service through the mock. Assert.IsFalse(createdHostedService); Assert.IsTrue(createdOrUpdatedDeployment); Assert.AreEqual <string>(serviceName, service.ServiceName); } }
/// <summary> /// Create a new service with a given name and make that the current /// directory used by cmdlets. /// </summary> /// <param name="serviceName">Name of the service.</param> /// <returns>Directory created for the service.</returns> public string CreateNewService(string serviceName) { NewAzureServiceProjectCommand cmdlet = new NewAzureServiceProjectCommand(); cmdlet.CommandRuntime = new MockCommandRuntime(); cmdlet.NewAzureServiceProcess(RootPath, serviceName); string path = Path.Combine(RootPath, serviceName); _previousDirectory = Environment.CurrentDirectory; Environment.CurrentDirectory = path; return path; }
public void GetServiceNameTest() { using (FileSystemHelper files = new FileSystemHelper(this)) { NewAzureServiceProjectCommand newServiceCmdlet = new NewAzureServiceProjectCommand(); newServiceCmdlet.CommandRuntime = new MockCommandRuntime(); newServiceCmdlet.NewAzureServiceProcess(files.RootPath, serviceName); Assert.AreEqual<string>(serviceName, new AzureService(Path.Combine(files.RootPath, serviceName), null).ServiceName); } }