Ejemplo n.º 1
0
        public void CanInvokeRealResource()
        {
            // Arrange
            var resource = new Mock <IResource <string> >();
            var proxy    = new ProxyResource <string>(1, TimeSpan.FromSeconds(1), resource.Object);

            // Act
            proxy.Invoke();

            // Assert
            resource.Verify(x => x.Invoke());
        }
Ejemplo n.º 2
0
        public void ProxyLimitsCalls()
        {
            // Arrange
            var resource = new Mock <IResource <string> >();
            var proxy    = new ProxyResource <string>(1, TimeSpan.FromDays(1), resource.Object);

            // Act
            proxy.Invoke();
            Action fail = () => proxy.Invoke();

            // Assert
            fail.Should().Throw <LimitedException>();
            resource.Verify(r => r.Invoke(), Times.Once);
        }
Ejemplo n.º 3
0
        public void LimitWindowIsApplied()
        {
            // Arrange
            var resource = new Mock <IResource <string> >();
            var proxy    = new ProxyResource <string>(1, TimeSpan.FromMilliseconds(100), resource.Object);

            // Act
            proxy.Invoke();
            Action fail = () => proxy.Invoke();
            Action pass = () => proxy.Invoke();

            // Assert
            fail.Should().Throw <LimitedException>();

            Thread.Sleep(100);

            pass.Should().NotThrow <LimitedException>();

            resource.Verify(r => r.Invoke(), Times.Exactly(2));
        }
Ejemplo n.º 4
0
        protected void ApplyBaseChanges(MachineBasedResource machine, MachinePolicyResource machinePolicy, ProxyResource proxy)
        {
            machine.Name = MachineName;
            if (machinePolicy != null)
            {
                machine.MachinePolicyId = machinePolicy.Id;
            }

            if (CommunicationStyle == CommunicationStyle.TentaclePassive)
            {
                var listening = new ListeningTentacleEndpointResource();
                listening.Uri        = new Uri("https://" + TentacleHostname.ToLowerInvariant() + ":" + TentaclePort.ToString(CultureInfo.InvariantCulture) + "/").ToString();
                listening.Thumbprint = TentacleThumbprint;
                listening.ProxyId    = proxy?.Id;
                machine.Endpoint     = listening;
            }
            else if (CommunicationStyle == CommunicationStyle.TentacleActive)
            {
                var polling = new PollingTentacleEndpointResource();
                polling.Uri        = SubscriptionId.ToString();
                polling.Thumbprint = TentacleThumbprint;
                machine.Endpoint   = polling;
            }
        }
        void ApplyChanges(MachineResource machine, IEnumerable <EnvironmentResource> environment, MachinePolicyResource machinePolicy, IEnumerable <TenantResource> tenants, ProxyResource proxy)
        {
            machine.EnvironmentIds = new ReferenceCollection(environment.Select(e => e.Id).ToArray());
            machine.TenantIds      = new ReferenceCollection(tenants.Select(t => t.Id).ToArray());
            machine.TenantTags     = new ReferenceCollection(TenantTags);
            machine.Roles          = new ReferenceCollection(Roles);
            machine.Name           = MachineName;
            machine.TenantedDeploymentParticipation = TenantedDeploymentParticipation;

            if (machinePolicy != null)
            {
                machine.MachinePolicyId = machinePolicy.Id;
            }

            if (CommunicationStyle == CommunicationStyle.TentaclePassive)
            {
                var listening = new ListeningTentacleEndpointResource();
                listening.Uri        = new Uri("https://" + TentacleHostname.ToLowerInvariant() + ":" + TentaclePort.ToString(CultureInfo.InvariantCulture) + "/").ToString();
                listening.Thumbprint = TentacleThumbprint;
                listening.ProxyId    = proxy?.Id;
                machine.Endpoint     = listening;
            }
            else if (CommunicationStyle == CommunicationStyle.TentacleActive)
            {
                var polling = new PollingTentacleEndpointResource();
                polling.Uri        = SubscriptionId.ToString();
                polling.Thumbprint = TentacleThumbprint;
                machine.Endpoint   = polling;
            }
        }