public LimitsLoger(string configurationName, SLimits limits)
        {
            this.ConfigurationName = configurationName;
            this.Limits            = limits;

            this.ApiDailyRequestsLoger = new ApiDailyRequestsLoger(this.ConfigurationName, limits.DailyApiRequests);
            this.DataStorageLoger      = new DataStorageLoger(this.ConfigurationName, limits.DataStorageMb);
        }
示例#2
0
        public void GetSalesforceLimitsTest()
        {
            SLimits limits = SalesforceManager.GetSalesforceLimits(this.Client);

            Assert.IsNotNull(limits);
            Assert.IsNotNull(limits.DailyApiRequests);
            Assert.IsNotNull(limits.DataStorageMb);
            Assert.Pass(string.Format("LIMITS -- Daily Api Requests: {0}/{1} | Data Storage: {2}/{3} Mb", limits.DailyApiRequests.Remaining, limits.DailyApiRequests.Max, limits.DataStorageMb.Remaining, limits.DataStorageMb.Max));
        }
        public virtual void Run()
        {
            foreach (var configuration in SalesforceManager.GetConfigurations())
            {
                SLimits limits = SalesforceManager.GetSalesforceLimits(configuration.Client);
                this.loger = new LimitsLoger(configuration.Name, limits);

                this.ProcessLimits(limits);
            }
        }
        public virtual void ProcessLimits(SLimits limits)
        {
            if (limits != null)
            {
                if (this.LogStatistic)
                {
                    this.loger.LogStatisticInfo();
                }

                this.ProcessLimit(limits.DailyApiRequests, this.loger.ApiDailyRequestsLoger, this.ApiUsageThreshold);
                this.ProcessLimit(limits.DataStorageMb, this.loger.DataStorageLoger, this.DataStorageThreshold);
            }
            else
            {
                this.loger.LogInformationAreNotAvailableWarning();
            }
        }
        public void ProcessLimitsTest(
            string configurationName,
            SLimits limits,
            bool logStatistic,
            int apiUsageThreshold,
            int dataStorageThreshold,
            Times[] result)
        {
            var mockedApiDailyRequestsLoger = new Moq.Mock <ILimitLoger>();

            if (limits != null)
            {
                var apiDailyRequestsLoger = new ApiDailyRequestsLoger(configurationName, limits.DailyApiRequests);
                mockedApiDailyRequestsLoger.SetupGet(p => p.UsedAmount).Returns(apiDailyRequestsLoger.UsedAmount);
                mockedApiDailyRequestsLoger.SetupGet(p => p.UsedPercents).Returns(apiDailyRequestsLoger.UsedPercents);
            }

            mockedApiDailyRequestsLoger.Setup(m => m.LogPointWarning()).Verifiable();
            mockedApiDailyRequestsLoger.Setup(m => m.LogHasReachedError()).Verifiable();


            var mockedDataStorageLoger = new Moq.Mock <ILimitLoger>();

            if (limits != null)
            {
                var dataStorageLoger = new ApiDailyRequestsLoger(configurationName, limits.DataStorageMb);
                mockedDataStorageLoger.SetupGet(p => p.UsedAmount).Returns(dataStorageLoger.UsedAmount);
                mockedDataStorageLoger.SetupGet(p => p.UsedPercents).Returns(dataStorageLoger.UsedPercents);
            }

            mockedDataStorageLoger.Setup(m => m.LogPointWarning()).Verifiable();
            mockedDataStorageLoger.Setup(m => m.LogHasReachedError()).Verifiable();


            var mockedLoger = new Moq.Mock <ILimitsLoger>();

            mockedLoger.SetupGet(p => p.ApiDailyRequestsLoger).Returns(mockedApiDailyRequestsLoger.Object);
            mockedLoger.SetupGet(p => p.DataStorageLoger).Returns(mockedDataStorageLoger.Object);
            mockedLoger.Setup(m => m.LogStatisticInfo()).Verifiable();
            mockedLoger.Setup(m => m.LogInformationAreNotAvailableWarning()).Verifiable();

            var agent = new LimitsAgent();

            agent.LogStatistic         = logStatistic;
            agent.ApiUsageThreshold    = apiUsageThreshold;
            agent.DataStorageThreshold = dataStorageThreshold;
            var logerField = typeof(LimitsAgent).GetField("loger", BindingFlags.Instance | BindingFlags.NonPublic);

            if (logerField != null)
            {
                logerField.SetValue(agent, mockedLoger.Object);
            }

            agent.ProcessLimits(limits);

            mockedLoger.Verify(m => m.LogStatisticInfo(), result[0]);
            mockedLoger.Verify(m => m.LogInformationAreNotAvailableWarning(), result[1]);
            mockedApiDailyRequestsLoger.Verify(m => m.LogPointWarning(), result[2]);
            mockedApiDailyRequestsLoger.Verify(m => m.LogHasReachedError(), result[3]);
            mockedDataStorageLoger.Verify(m => m.LogPointWarning(), result[4]);
            mockedDataStorageLoger.Verify(m => m.LogHasReachedError(), result[5]);
        }