public void TestWaitGceManagedInstanceGroupByRegion()
        {
            var listResponse = new RegionInstanceGroupManagersListInstancesResponse()
            {
                ManagedInstances = new[]
                {
                    FirstTestInstance,
                    SecondTestInstance
                }
            };

            string instanceGroupName = "instance-group";
            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.ListManagedInstances(FakeProjectId, FakeRegionName, instanceGroupName),
                listResponse);

            Pipeline.Commands.AddScript(
                $"Wait-GceManagedInstanceGroup -Name {instanceGroupName} -Region {FakeRegionName}");
            Pipeline.Invoke();

            instances.VerifyAll();
        }
Пример #2
0
        public void TestMachineTypeWithLabel()
        {
            const string psDiskVar        = "attachedDisk";
            const string mockedResultName = "mocked-result-name";

            Pipeline.Runspace.SessionStateProxy.SetVariable(psDiskVar, new AttachedDisk());
            Mock <InstancesResource> instances = ServiceMock.Resource(s => s.Instances);

            instances.SetupRequest(
                resource => resource.Insert(It.Is <Instance>(
                                                i => i.Labels["key"] == "value"),
                                            It.IsAny <string>(), It.IsAny <string>()),
                DoneOperation);
            instances.SetupRequest(
                i => i.Get(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()),
                new Instance {
                Name = mockedResultName
            });

            Pipeline.Commands.AddScript(
                $"Add-GceInstance -Name instance-name -Disk ${psDiskVar} -Label @{{'key' = 'value'}}");
            Collection <PSObject> results = Pipeline.Invoke();

            var instance = (Instance)results.Single().BaseObject;

            Assert.AreEqual(mockedResultName, instance.Name);
        }
Пример #3
0
        public void TestAcceptingCustomMemoryCustomCpu()
        {
            const string psDiskVar        = "attachedDisk";
            const string mockedResultName = "mocked-result-name";

            Pipeline.Runspace.SessionStateProxy.SetVariable(psDiskVar, new AttachedDisk());
            Mock <InstancesResource> instances = ServiceMock.Resource(s => s.Instances);

            instances.SetupRequest(
                i => i.Insert(It.IsAny <Instance>(), It.IsAny <string>(), It.IsAny <string>()),
                DoneOperation);
            instances.SetupRequest(
                i => i.Get(It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()),
                new Instance {
                Name = mockedResultName
            });

            Pipeline.Commands.AddScript(
                $"Add-GceInstance -Name instance-name -Disk ${psDiskVar} -CustomCpu 2 -CustomMemory 2048");
            Collection <PSObject> results = Pipeline.Invoke();

            instances.Verify(
                resource => resource.Insert(
                    It.Is <Instance>(i => i.MachineType == $"zones/{FakeZoneName}/machineTypes/custom-2-2048"),
                    FakeProjectId, FakeZoneName),
                Times.Once);
            var instance = (Instance)results.Single().BaseObject;

            Assert.AreEqual(mockedResultName, instance.Name);
        }
        public void TestGetRegionGceManagedInstanceGroup()
        {
            var listResponse = new RegionInstanceGroupManagerList()
            {
                Items = new[]
                {
                    FirstTestGroup,
                    SecondTestGroup
                }
            };

            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.List(FakeProjectId, FakeRegionName), listResponse);

            Pipeline.Commands.AddScript(
                $"Get-GceManagedInstanceGroup -Region {FakeRegionName}");
            Collection <PSObject> results = Pipeline.Invoke();

            Assert.AreEqual(results.Count, 2);
            InstanceGroupManager firstGroup  = results[0]?.BaseObject as InstanceGroupManager;
            InstanceGroupManager secondGroup = results[1]?.BaseObject as InstanceGroupManager;

            Assert.IsNotNull(firstGroup);
            Assert.AreEqual(firstGroup.Name, FirstTestGroup.Name);
            Assert.IsNotNull(secondGroup);
            Assert.AreEqual(secondGroup.Name, SecondTestGroup.Name);
        }
        public void TestSetGceManagedInstanceGroupAbandonInstanceByRegion()
        {
            string instanceGroupName = FirstTestGroup.Name;
            string instanceUri       = "uri";
            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.AbandonInstances(It.IsAny <RegionInstanceGroupManagersAbandonInstancesRequest>(),
                                              FakeProjectId, FakeRegionName, instanceGroupName), DoneOperation);
            instances.SetupRequest(
                i => i.Get(FakeProjectId, FakeRegionName, instanceGroupName),
                FirstTestGroup);

            Pipeline.Commands.AddScript(
                $"Set-GceManagedInstanceGroup -Name {instanceGroupName} -Region {FakeRegionName}" +
                $" -Abandon -InstanceUri {instanceUri}");
            Collection <PSObject> results = Pipeline.Invoke();

            instances.Verify(
                resource => resource.AbandonInstances(
                    It.Is <RegionInstanceGroupManagersAbandonInstancesRequest>(request =>
                                                                               request.Instances.Count == 1 && request.Instances.Contains(instanceUri)),
                    FakeProjectId, FakeRegionName, instanceGroupName),
                Times.Once);

            Assert.AreEqual(results.Count, 1);
            InstanceGroupManager createdInstance = results[0].BaseObject as InstanceGroupManager;

            Assert.AreEqual(createdInstance?.Name, instanceGroupName);
        }
        public void TestSetGceManagedInstanceGroupResizeByRegion()
        {
            string instanceGroupName = FirstTestGroup.Name;
            int    newSize           = 5;
            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.Resize(FakeProjectId, FakeRegionName, instanceGroupName, newSize),
                DoneOperation);
            instances.SetupRequest(
                i => i.Get(FakeProjectId, FakeRegionName, instanceGroupName),
                FirstTestGroup);

            Pipeline.Commands.AddScript(
                $"Set-GceManagedInstanceGroup -Name {instanceGroupName} -Region {FakeRegionName}" +
                $" -Size {newSize}");
            Collection <PSObject> results = Pipeline.Invoke();

            instances.Verify(
                resource => resource.Resize(
                    FakeProjectId, FakeRegionName, instanceGroupName, newSize),
                Times.Once);

            Assert.AreEqual(results.Count, 1);
            InstanceGroupManager createdInstance = results[0].BaseObject as InstanceGroupManager;

            Assert.AreEqual(createdInstance?.Name, instanceGroupName);
        }
        public void TestAddGceManagedInstanceGroupByObjectWithRegionParam()
        {
            string managedRegionObject = "managedRegionObj";
            string instanceGroupName   = FirstTestGroup.Name;

            Pipeline.Runspace.SessionStateProxy.SetVariable(managedRegionObject, FirstTestGroup);

            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.Insert(
                    It.Is <InstanceGroupManager>(manager => manager.Name == instanceGroupName),
                    FakeProjectId, FakeRegionName),
                DoneOperation);
            instances.SetupRequest(
                i => i.Get(FakeProjectId, FakeRegionName, FirstTestGroup.Name),
                FirstTestGroup);

            Pipeline.Commands.AddScript(
                $"${managedRegionObject} | Add-GceManagedInstanceGroup -Region {FakeRegionName}");
            Collection <PSObject> results = Pipeline.Invoke();

            instances.Verify(
                resource => resource.Insert(
                    It.Is <InstanceGroupManager>(manager => manager.Name == instanceGroupName),
                    FakeProjectId, FakeRegionName),
                Times.Once);

            Assert.AreEqual(results.Count, 1);
            InstanceGroupManager createdInstance = results[0].BaseObject as InstanceGroupManager;

            Assert.AreEqual(createdInstance?.Name, instanceGroupName);
        }
        public void TestAddGceManagedInstanceGroupDefault()
        {
            string instanceGroupName = FirstTestGroup.Name;
            Mock <InstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.InstanceGroupManagers);

            instances.SetupRequest(
                item => item.Insert(
                    It.Is <InstanceGroupManager>(manager => manager.Name == instanceGroupName),
                    FakeProjectId, FakeZoneName),
                DoneOperation);
            instances.SetupRequest(
                i => i.Get(FakeProjectId, FakeZoneName, instanceGroupName),
                FirstTestGroup);

            Pipeline.Commands.AddScript(
                $"Add-GceManagedInstanceGroup -Name {instanceGroupName} " +
                $"-InstanceTemplate template -TargetSize 1");
            Collection <PSObject> results = Pipeline.Invoke();

            instances.Verify(
                resource => resource.Insert(
                    It.Is <InstanceGroupManager>(manager => manager.Name == instanceGroupName),
                    FakeProjectId, FakeZoneName),
                Times.Once);

            Assert.AreEqual(results.Count, 1);
            InstanceGroupManager createdInstance = results[0].BaseObject as InstanceGroupManager;

            Assert.AreEqual(createdInstance?.Name, instanceGroupName);
        }
        public void TestAddGceManagedInstanceGroupByRegion()
        {
            string instanceGroupName = "instance-group";
            string templateName      = "instance-template";
            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.Insert(
                    It.Is <InstanceGroupManager>(manager => manager.Name == instanceGroupName),
                    FakeProjectId, FakeRegionName),
                DoneOperation);
            instances.SetupRequest(
                i => i.Get(FakeProjectId, FakeRegionName, instanceGroupName),
                new InstanceGroupManager {
                Name = instanceGroupName
            });

            Pipeline.Commands.AddScript($"Add-GceManagedInstanceGroup -Name {instanceGroupName} " +
                                        $"-InstanceTemplate {templateName} -TargetSize 1 -Region {FakeRegionName}");
            Collection <PSObject> results = Pipeline.Invoke();

            instances.Verify(
                resource => resource.Insert(
                    It.Is <InstanceGroupManager>(manager => manager.Name == instanceGroupName),
                    FakeProjectId, FakeRegionName),
                Times.Once);

            Assert.AreEqual(results.Count, 1);
            InstanceGroupManager createdInstance = results[0].BaseObject as InstanceGroupManager;

            Assert.AreEqual(createdInstance?.Name, instanceGroupName);
        }
        public void TestRemoveGceManagedInstanceGroupPipelineZonal()
        {
            string instanceGroupName = "RegionalInstanceGroup";
            string zoneLink          = $"{ComputeHttpsLink}/projects/{FakeProjectId}/zones/{FakeZoneName}";
            InstanceGroupManager regionalInstanceGroup = new InstanceGroupManager()
            {
                Name     = instanceGroupName,
                Zone     = zoneLink,
                SelfLink = $"{zoneLink}/instanceGroupManagers/{instanceGroupName}"
            };

            string managedRegionVar = "managedRegion";

            Pipeline.Runspace.SessionStateProxy.SetVariable(managedRegionVar, regionalInstanceGroup);

            Mock <InstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.InstanceGroupManagers);

            instances.SetupRequest(
                item => item.Delete(FakeProjectId, FakeZoneName, instanceGroupName), DoneOperation);

            Pipeline.Commands.AddScript(
                $"${managedRegionVar} | Remove-GceManagedInstanceGroup");
            Pipeline.Invoke();

            instances.VerifyAll();
        }
        public void TestWaitGceManagedInstanceGroupPipelineRegional()
        {
            var listResponse = new RegionInstanceGroupManagersListInstancesResponse()
            {
                ManagedInstances = new[]
                {
                    FirstTestInstance,
                    SecondTestInstance
                }
            };

            string instanceGroupName = "RegionalInstanceGroup";
            InstanceGroupManager regionalInstanceGroup =
                CreateRegionalInstanceGroup(instanceGroupName, FakeProjectId, FakeRegionName);

            string managedRegionVar = "managedRegion";

            Pipeline.Runspace.SessionStateProxy.SetVariable(managedRegionVar, regionalInstanceGroup);

            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.ListManagedInstances(FakeProjectId, FakeRegionName, instanceGroupName),
                listResponse);

            Pipeline.Commands.AddScript(
                $"${managedRegionVar} | Wait-GceManagedInstanceGroup");
            Pipeline.Invoke();

            instances.VerifyAll();
        }
        public void TestRemoveGceManagedInstanceGroupByRegion()
        {
            string instanceGroupName = "instance-group";
            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.Delete(FakeProjectId, FakeRegionName, instanceGroupName), DoneOperation);

            Pipeline.Commands.AddScript(
                $"Remove-GceManagedInstanceGroup -Name {instanceGroupName} -Region {FakeRegionName}");
            Pipeline.Invoke();

            instances.VerifyAll();
        }
Пример #13
0
        public void TestLabels()
        {
            Mock <DisksResource.CreateSnapshotRequest> requestMock = ServiceMock.Resource(s => s.Disks).SetupRequest(
                d => d.CreateSnapshot(It.Is <Snapshot>(snapshot => snapshot.Labels["key"] == "value"),
                                      It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()),
                DoneOperation);
            var snapshotResult = new Snapshot();

            ServiceMock.Resource(s => s.Snapshots).SetupRequest(
                s => s.Get(It.IsAny <string>(), It.IsAny <string>()), snapshotResult);

            Pipeline.Commands.AddScript("Add-GceSnapShot -DiskName diskname -Label @{'key' = 'value'}");
            Collection <PSObject> results = Pipeline.Invoke();

            CollectionAssert.AreEqual(results, new[] { snapshotResult });
        }
Пример #14
0
        public void TestVss()
        {
            Mock <DisksResource.CreateSnapshotRequest> requestMock = ServiceMock.Resource(s => s.Disks).SetupRequest(
                d => d.CreateSnapshot(It.IsAny <Snapshot>(), It.IsAny <string>(), It.IsAny <string>(), It.IsAny <string>()),
                DoneOperation);
            var snapshotResult = new Snapshot();

            ServiceMock.Resource(s => s.Snapshots).SetupRequest(
                s => s.Get(It.IsAny <string>(), It.IsAny <string>()), snapshotResult);

            Pipeline.Commands.AddScript("Add-GceSnapShot -DiskName diskname -VSS");
            Collection <PSObject> results = Pipeline.Invoke();

            CollectionAssert.AreEqual(results, new[] { snapshotResult });
            requestMock.VerifySet(r => r.GuestFlush = true, Times.Once);
        }
        public void TestGetGceManagedInstanceGroupByNameAndRegion()
        {
            string instanceGroupName = FirstTestGroup.Name;
            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.Get(FakeProjectId, FakeRegionName, instanceGroupName), FirstTestGroup);

            Pipeline.Commands.AddScript(
                $"Get-GceManagedInstanceGroup -Name {instanceGroupName} -Region {FakeRegionName}");
            Collection <PSObject> results = Pipeline.Invoke();

            Assert.AreEqual(results.Count, 1);
            InstanceGroupManager retrievedInstance = results[0].BaseObject as InstanceGroupManager;

            Assert.AreEqual(retrievedInstance?.Name, instanceGroupName);
        }
        public void TestGetGcsObjectMissingError()
        {
            const string           bucketName = "mock-bucket";
            const string           objectName = "mock-object";
            Mock <ObjectsResource> objects    = ServiceMock.Resource(s => s.Objects);

            objects.SetupRequestError <ObjectsResource, ObjectsResource.GetRequest, Object>(
                o => o.Get(bucketName, objectName),
                new GoogleApiException("service-name", "error-message")
            {
                HttpStatusCode = HttpStatusCode.NotFound
            });

            Pipeline.Commands.AddScript($"Get-GcsObject -Bucket {bucketName} -ObjectName {objectName}");
            Pipeline.Invoke();

            TestErrorRecord(ErrorCategory.ResourceUnavailable);
        }
        public void TestGetGcsObjectNamed()
        {
            const string bucketName = "mock-bucket";
            const string objectName = "mock-object";
            var          response   = new Object {
                Bucket = bucketName, Name = objectName
            };
            Mock <ObjectsResource> objects = ServiceMock.Resource(s => s.Objects);

            objects.SetupRequest(o => o.Get(bucketName, objectName), response);

            Pipeline.Commands.AddScript($"Get-GcsObject -Bucket {bucketName} -ObjectName {objectName}");
            Collection <PSObject> results = Pipeline.Invoke();

            var result = results.Single().BaseObject as Object;

            Assert.IsNotNull(result);
            Assert.AreEqual(bucketName, result.Bucket);
            Assert.AreEqual(objectName, result.Name);
        }
Пример #18
0
        public void TestDiskNameParameterSet()
        {
            const string         diskName         = "diskname";
            Mock <DisksResource> diskResourceMock = ServiceMock.Resource(s => s.Disks);
            Mock <DisksResource.CreateSnapshotRequest> requestMock = diskResourceMock.SetupRequest(
                d => d.CreateSnapshot(
                    It.Is <Snapshot>(s => s.Name.StartsWith(diskName, StringComparison.Ordinal)), FakeProjectId, FakeZoneName,
                    diskName),
                DoneOperation);
            var snapshotResult = new Snapshot();

            ServiceMock.Resource(s => s.Snapshots).SetupRequest(
                s => s.Get(It.IsAny <string>(), It.IsAny <string>()), snapshotResult);

            Pipeline.Commands.AddScript($"Add-GceSnapShot -DiskName {diskName}");
            Collection <PSObject> results = Pipeline.Invoke();

            CollectionAssert.AreEqual(results, new[] { snapshotResult });
            diskResourceMock.VerifyAll();
            requestMock.VerifySet(r => r.GuestFlush = It.IsAny <bool>(), Times.Never);
        }
Пример #19
0
        public void TestErrorAddGceInstance()
        {
            const string psDiskVar = "attachedDisk";

            Pipeline.Runspace.SessionStateProxy.SetVariable(psDiskVar, new AttachedDisk());
            Mock <InstancesResource> instances    = ServiceMock.Resource(s => s.Instances);
            GoogleApiException       apiException = new GoogleApiException("mock-service-name", "mock-error-message");

            apiException.HttpStatusCode = HttpStatusCode.Conflict;

            instances.SetupRequestError <InstancesResource, InstancesResource.InsertRequest, Operation>(
                i => i.Insert(It.IsAny <Instance>(), It.IsAny <string>(), It.IsAny <string>()),
                apiException);

            Pipeline.Commands.AddScript(
                $"Add-GceInstance -Name instance-name -Disk ${psDiskVar}");
            Collection <PSObject> results = Pipeline.Invoke();

            // An error should be thrown (if it is a terminating error,
            // we wouldn't even reach this point).
            TestErrorRecord(ErrorCategory.ResourceExists);
        }
        public void TestRemoveGceManagedInstanceGroupPipelineRegional()
        {
            string instanceGroupName = "RegionalInstanceGroup";
            InstanceGroupManager regionalInstanceGroup =
                CreateRegionalInstanceGroup(instanceGroupName, FakeProjectId, FakeRegionName);

            string managedRegionVar = "managedRegion";

            Pipeline.Runspace.SessionStateProxy.SetVariable(managedRegionVar, regionalInstanceGroup);

            Mock <RegionInstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.RegionInstanceGroupManagers);

            instances.SetupRequest(
                item => item.Delete(FakeProjectId, FakeRegionName, instanceGroupName), DoneOperation);

            Pipeline.Commands.AddScript(
                $"${managedRegionVar} | Remove-GceManagedInstanceGroup");
            Pipeline.Invoke();

            instances.VerifyAll();
        }
        public void TestWaitGceManagedInstanceGroupPipelineZonal()
        {
            var listResponse = new InstanceGroupManagersListManagedInstancesResponse()
            {
                ManagedInstances = new[]
                {
                    FirstTestInstance,
                    SecondTestInstance
                }
            };

            string instanceGroupName = "RegionalInstanceGroup";
            string zoneLink          = $"{ComputeHttpsLink}/projects/{FakeProjectId}/zones/{FakeZoneName}";
            InstanceGroupManager regionalInstanceGroup = new InstanceGroupManager()
            {
                Name     = instanceGroupName,
                Zone     = zoneLink,
                SelfLink = $"{zoneLink}/instanceGroupManagers/{instanceGroupName}"
            };

            string managedRegionVar = "managedRegion";

            Pipeline.Runspace.SessionStateProxy.SetVariable(managedRegionVar, regionalInstanceGroup);

            Mock <InstanceGroupManagersResource> instances =
                ServiceMock.Resource(s => s.InstanceGroupManagers);

            instances.SetupRequest(
                item => item.ListManagedInstances(FakeProjectId, FakeZoneName, instanceGroupName),
                listResponse);

            Pipeline.Commands.AddScript(
                $"${managedRegionVar} | Wait-GceManagedInstanceGroup");
            Pipeline.Invoke();

            instances.VerifyAll();
        }
Пример #22
0
        public void TestPipelinesCorrectly()
        {
            Mock <ProjectsResource> projects = ServiceMock.Resource(s => s.Projects);
            Project firstResult = new Project {
                Name = "FirstProject", ProjectId = "first-project"
            };

            projects.SetupRequest(
                p => p.List(),
                Task.FromResult(new ListProjectsResponse()
            {
                Projects = new[] {
                    firstResult,
                    new Project {
                        Name = "SecondProject", ProjectId = "second-project"
                    }
                }
            }));

            Pipeline.Commands.AddScript("Get-GcpProject | Select -First 1");
            Collection <PSObject> results = Pipeline.Invoke();

            Assert.AreEqual(firstResult, results.Single().BaseObject);
        }