public WorkerRole AddAzureCacheWorkerRoleProcess(string workerRoleName, int instances, string rootPath) { // Create cache worker role. Action<string, RoleInfo> cacheWorkerRoleAction = CacheConfigurationFactory.GetCacheRoleConfigurationAction( AzureTool.GetAzureSdkVersion()); CloudServiceProject cloudServiceProject = new CloudServiceProject(rootPath, null); RoleInfo genericWorkerRole = cloudServiceProject.AddWorkerRole( Path.Combine(Resources.GeneralScaffolding, RoleType.WorkerRole.ToString()), workerRoleName, instances); // Dedicate the worker role for caching. cacheWorkerRoleAction(cloudServiceProject.Paths.RootPath, genericWorkerRole); cloudServiceProject.Reload(); WorkerRole cacheWorkerRole = cloudServiceProject.Components.GetWorkerRole(genericWorkerRole.Name); // Write output SafeWriteOutputPSObject( cacheWorkerRole.GetType().FullName, Parameters.CacheWorkerRoleName, genericWorkerRole.Name, Parameters.Instances, genericWorkerRole.InstanceCount ); return cloudServiceProject.Components.GetWorkerRole(workerRoleName); }
public WorkerRole AddAzureCacheWorkerRoleProcess(string workerRoleName, int instances, string rootPath) { // Create cache worker role. Action <string, RoleInfo> cacheWorkerRoleAction = CacheConfigurationFactory.GetCacheRoleConfigurationAction( new AzureTool().AzureSdkVersion); CloudServiceProject cloudServiceProject = new CloudServiceProject(rootPath, null); RoleInfo genericWorkerRole = cloudServiceProject.AddWorkerRole( Path.Combine(Resources.GeneralScaffolding, RoleType.WorkerRole.ToString()), workerRoleName, instances); // Dedicate the worker role for caching. cacheWorkerRoleAction(cloudServiceProject.Paths.RootPath, genericWorkerRole); cloudServiceProject.Reload(); WorkerRole cacheWorkerRole = cloudServiceProject.Components.GetWorkerRole(genericWorkerRole.Name); // Write output SafeWriteOutputPSObject( cacheWorkerRole.GetType().FullName, Parameters.CacheWorkerRoleName, genericWorkerRole.Name, Parameters.Instances, genericWorkerRole.InstanceCount ); return(cloudServiceProject.Components.GetWorkerRole(workerRoleName)); }
public void CreateCloudPackageWithMultipleRoles() { using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Test.Utilities.Common.Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Test.Utilities.Common.Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Test.Utilities.Common.Data.PHPWorkerRoleScaffoldingPath); service.AddWebRole(Test.Utilities.Common.Data.PHPWebRoleScaffoldingPath); service.CreatePackage(DevEnv.Cloud); using (Package package = Package.Open(service.Paths.CloudPackage)) { Assert.Equal(9, package.GetParts().Count()); } } }
public void CreateLocalPackageWithMultipleRoles() { using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Test.Utilities.Common.Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Test.Utilities.Common.Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Test.Utilities.Common.Data.PHPWorkerRoleScaffoldingPath); service.AddWebRole(Test.Utilities.Common.Data.PHPWebRoleScaffoldingPath); service.CreatePackage(DevEnv.Local); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WorkerRole1\approot"), Path.Combine(Resources.NodeScaffolding, Resources.WorkerRole)); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WebRole1\approot"), Path.Combine(Resources.NodeScaffolding, Resources.WebRole)); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WorkerRole2\approot"), Path.Combine(Resources.PHPScaffolding, Resources.WorkerRole)); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WebRole2\approot"), Path.Combine(Resources.PHPScaffolding, Resources.WebRole)); } }
public void CreateCloudPackageWithMultipleRoles() { using (FileSystemHelper files = new FileSystemHelper(this)) { string standardOutput; string standardError; CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath); service.AddWebRole(Data.PHPWebRoleScaffoldingPath); service.CreatePackage(DevEnv.Cloud, out standardOutput, out standardError); using (Package package = Package.Open(service.Paths.CloudPackage)) { Assert.AreEqual(9, package.GetParts().Count()); } } }
public void AzureServiceAddNewPHPWorkerRoleTest() { using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); RoleInfo workerRole = service.AddWorkerRole(Test.Utilities.Common.Data.PHPWorkerRoleScaffoldingPath, "MyWorkerRole", 10); AzureAssert.AzureServiceExists(Path.Combine(files.RootPath, serviceName), Resources.GeneralScaffolding, serviceName, workerRoles: new WorkerRoleInfo[] { (WorkerRoleInfo)workerRole }, workerScaff: Path.Combine(Resources.PHPScaffolding, Resources.WorkerRole), roles: new RoleInfo[] { workerRole }); } }
public void CreateLocalPackageWithNodeWorkerRoleTest() { using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service.CreatePackage(DevEnv.Local); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WorkerRole1\approot"), Path.Combine(Resources.NodeScaffolding, Resources.WorkerRole)); } }
public void GetNextPortPHPWebRoleNull() { using (FileSystemHelper files = new FileSystemHelper(this)) { int expectedPort = int.Parse(Resources.DefaultPort); CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath); service = new CloudServiceProject(service.Paths.RootPath, null); int nextPort = service.Components.GetNextPort(); Assert.AreEqual <int>(expectedPort, nextPort); } }
public void SetAzureVMSizeProcessTestsNodeRoleNameDoesNotExistServiceContainsWorkerRoleFail() { string roleName = "WorkerRole1"; string invalidRoleName = "foo"; using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath, roleName, 1); Testing.AssertThrows <ArgumentException>(() => service.SetRoleVMSize(service.Paths, invalidRoleName, RoleSize.Large.ToString()), string.Format(Resources.RoleNotFoundMessage, invalidRoleName)); } }
public void SetAzureInstancesProcessTestsPHPRoleNameDoesNotExistServiceContainsWorkerRoleFail() { string roleName = "WorkerRole1"; string invalidRoleName = "foo"; using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Test.Utilities.Common.Data.PHPWorkerRoleScaffoldingPath, roleName, 1); Testing.AssertThrows <ArgumentException>(() => service.SetRoleInstances(service.Paths, invalidRoleName, 10), string.Format(Resources.RoleNotFoundMessage, invalidRoleName)); } }
public void CreateLocalPackageWithPHPWorkerRoleTest() { using (FileSystemHelper files = new FileSystemHelper(this)) { string standardOutput; string standardError; CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath); service.CreatePackage(DevEnv.Local, out standardOutput, out standardError); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WorkerRole1\approot"), Path.Combine(Resources.PHPScaffolding, Resources.WorkerRole)); } }
public void TestCreatePackageWithMultipleRolesSuccessfull() { using (FileSystemHelper files = new FileSystemHelper(this)) { files.CreateAzureSdkDirectoryAndImportPublishSettings(); files.CreateNewService("NEW_SERVICE"); string rootPath = Path.Combine(files.RootPath, "NEW_SERVICE"); string packagePath = Path.Combine(rootPath, Resources.CloudPackageFileName); CloudServiceProject service = new CloudServiceProject(rootPath, FileUtilities.GetContentFilePath(@"..\..\..\..\..\Package\Debug\ServiceManagement\Azure\Services")); service.AddWebRole(Test.Utilities.Common.Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Test.Utilities.Common.Data.NodeWorkerRoleScaffoldingPath); service.AddWorkerRole(Test.Utilities.Common.Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Test.Utilities.Common.Data.NodeWebRoleScaffoldingPath); cmdlet.ExecuteCmdlet(); PSObject obj = mockCommandRuntime.OutputPipeline[0] as PSObject; Assert.Equal <string>(string.Format(Resources.PackageCreated, packagePath), mockCommandRuntime.VerboseStream[0]); Assert.Equal <string>(packagePath, obj.GetVariableValue <string>(Parameters.PackagePath)); Assert.True(File.Exists(packagePath)); } }
public void GetNextPortNullNodeWebEndpointAndWorkerRole() { using (FileSystemHelper files = new FileSystemHelper(this)) { int expectedPort = int.Parse(Resources.DefaultPort); CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWebRole(Data.NodeWebRoleScaffoldingPath); service.Components.Definition.WebRole.ToList().ForEach(wr => wr.Endpoints = null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service = new CloudServiceProject(service.Paths.RootPath, null); int nextPort = service.Components.GetNextPort(); Assert.AreEqual <int>(expectedPort, nextPort); } }
public void CreateLocalPackageWithMultipleRoles() { using (FileSystemHelper files = new FileSystemHelper(this)) { string standardOutput; string standardError; CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath); service.AddWebRole(Data.PHPWebRoleScaffoldingPath); service.CreatePackage(DevEnv.Local, out standardOutput, out standardError); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WorkerRole1\approot"), Path.Combine(Resources.NodeScaffolding, Resources.WorkerRole)); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WebRole1\approot"), Path.Combine(Resources.NodeScaffolding, Resources.WebRole)); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WorkerRole2\approot"), Path.Combine(Resources.PHPScaffolding, Resources.WorkerRole)); AzureAssert.ScaffoldingExists(Path.Combine(service.Paths.LocalPackage, @"roles\WebRole2\approot"), Path.Combine(Resources.PHPScaffolding, Resources.WebRole)); } }
void RetrieveRightErrorFromCsPackProcess() { string serviceName = "AzureService"; string sampleError = "error"; string stagingFolder = FileSystemHelper.GetTemporaryDirectoryName(); string fakedSDKBinPath = @"c:\foobar"; Directory.CreateDirectory(stagingFolder); try { CloudServiceProject service = new CloudServiceProject(stagingFolder, serviceName, null); service.AddWorkerRole(Test.Utilities.Common.Data.NodeWorkerRoleScaffoldingPath); CsPack packTool = new CsPack(); string standardOutput, standardError; //Scenario #1 we set up so cspack.exe fails (exitcode is 1), but gives out the error through standardOutput. Mock <ProcessHelper> commandRunner = new Mock <ProcessHelper>(); commandRunner.Setup(p => p.StartAndWaitForProcess(It.IsAny <string>(), It.IsAny <string>())) .Callback(() => { commandRunner.Object.StandardOutput = sampleError; commandRunner.Object.StandardError = ""; commandRunner.Object.ExitCode = 1; }); packTool.ProcessUtil = commandRunner.Object; //action packTool.CreatePackage(service.Components.Definition, service.Paths, DevEnv.Local, fakedSDKBinPath, out standardOutput, out standardError); //assert we take "standardoutput" as the error message Assert.Equal(sampleError, standardError); //Scenario #2: set up so cspack.exe succeed (exitcode is 0) commandRunner = new Mock <ProcessHelper>(); commandRunner.Setup(p => p.StartAndWaitForProcess(It.IsAny <string>(), It.IsAny <string>())) .Callback(() => { commandRunner.Object.StandardOutput = sampleError; commandRunner.Object.StandardError = string.Empty; commandRunner.Object.ExitCode = 0; }); packTool.ProcessUtil = commandRunner.Object; //action packTool.CreatePackage(service.Components.Definition, service.Paths, DevEnv.Local, fakedSDKBinPath, out standardOutput, out standardError); //assert, we outputs no error Assert.Equal(string.Empty, standardError); //Sceanrio 3: set up so cspack.exe failed (exitcode is 1), but gives out no ouput and error commandRunner = new Mock <ProcessHelper>(); commandRunner.Setup(p => p.StartAndWaitForProcess(It.IsAny <string>(), It.IsAny <string>())) .Callback(() => { commandRunner.Object.StandardOutput = string.Empty; commandRunner.Object.StandardError = string.Empty; commandRunner.Object.ExitCode = 1; }); packTool.ProcessUtil = commandRunner.Object; //action packTool.CreatePackage(service.Components.Definition, service.Paths, DevEnv.Local, fakedSDKBinPath, out standardOutput, out standardError); //assert, we output a generic error message Assert.Equal(Resources.CsPackExeGenericFailure, standardError); } finally { Directory.Delete(stagingFolder, true); } }
public void SetAzureVMSizeProcessTestsPHPRoleNameDoesNotExistServiceContainsWorkerRoleFail() { string roleName = "WorkerRole1"; string invalidRoleName = "foo"; using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath, roleName, 1); Testing.AssertThrows<ArgumentException>(() => service.SetRoleVMSize(service.Paths, invalidRoleName, RoleSize.Large.ToString()), string.Format(Resources.RoleNotFoundMessage, invalidRoleName)); } }
public void TestCreatePackageWithMultipleRolesSuccessfull() { using (FileSystemHelper files = new FileSystemHelper(this)) { files.CreateAzureSdkDirectoryAndImportPublishSettings(); files.CreateNewService("NEW_SERVICE"); string rootPath = Path.Combine(files.RootPath, "NEW_SERVICE"); string packagePath = Path.Combine(rootPath, Resources.CloudPackageFileName); CloudServiceProject service = new CloudServiceProject(rootPath, FileUtilities.GetContentFilePath("Services")); service.AddWebRole(Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Data.NodeWebRoleScaffoldingPath); cmdlet.ExecuteCmdlet(); PSObject obj = mockCommandRuntime.OutputPipeline[0] as PSObject; Assert.AreEqual<string>(string.Format(Resources.PackageCreated, packagePath), mockCommandRuntime.VerboseStream[0]); Assert.AreEqual<string>(packagePath, obj.GetVariableValue<string>(Parameters.PackagePath)); Assert.IsTrue(File.Exists(packagePath)); } }
public void CreateCloudPackageWithMultipleRoles() { using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service.AddWebRole(Data.NodeWebRoleScaffoldingPath); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath); service.AddWebRole(Data.PHPWebRoleScaffoldingPath); service.CreatePackage(DevEnv.Cloud); using (Package package = Package.Open(service.Paths.CloudPackage)) { Assert.AreEqual(9, package.GetParts().Count()); } } }
public void GetNextPortNullPHPWebEndpointAndWorkerRole() { using (FileSystemHelper files = new FileSystemHelper(this)) { int expectedPort = int.Parse(Resources.DefaultPort); CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWebRole(Data.PHPWebRoleScaffoldingPath); service.Components.Definition.WebRole.ToList().ForEach(wr => wr.Endpoints = null); service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath); service = new CloudServiceProject(service.Paths.RootPath, null); int nextPort = service.Components.GetNextPort(); Assert.AreEqual<int>(expectedPort, nextPort); } }
public void GetNextPortNodeWebRoleNull() { using (FileSystemHelper files = new FileSystemHelper(this)) { int expectedPort = int.Parse(Resources.DefaultPort); CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); service.AddWorkerRole(Data.NodeWorkerRoleScaffoldingPath); service = new CloudServiceProject(service.Paths.RootPath, null); int nextPort = service.Components.GetNextPort(); Assert.AreEqual<int>(expectedPort, nextPort); } }
public void AzureServiceAddNewPHPWorkerRoleTest() { using (FileSystemHelper files = new FileSystemHelper(this)) { CloudServiceProject service = new CloudServiceProject(files.RootPath, serviceName, null); RoleInfo workerRole = service.AddWorkerRole(Data.PHPWorkerRoleScaffoldingPath, "MyWorkerRole", 10); AzureAssert.AzureServiceExists(Path.Combine(files.RootPath, serviceName), Resources.GeneralScaffolding, serviceName, workerRoles: new WorkerRoleInfo[] { (WorkerRoleInfo)workerRole }, workerScaff: Path.Combine(Resources.PHPScaffolding, Resources.WorkerRole), roles: new RoleInfo[] { workerRole }); } }