public FunctionsScaleManagerTests() { _monitors = new List <IScaleMonitor>(); _loggerProvider = new TestLoggerProvider(); ILoggerFactory loggerFactory = new LoggerFactory(); loggerFactory.AddProvider(_loggerProvider); _testLogger = loggerFactory.CreateLogger("Test"); _monitorManagerMock = new Mock <IScaleMonitorManager>(MockBehavior.Strict); _monitorManagerMock.Setup(p => p.GetMonitors()).Returns(() => _monitors); _metricsRepositoryMock = new Mock <IScaleMetricsRepository>(MockBehavior.Strict); _scaleManager = new FunctionsScaleManager(_monitorManagerMock.Object, _metricsRepositoryMock.Object, loggerFactory); }
public void GetAggregateScaleVote_ReturnsExpectedResult(int workerCount, int numScaleOutVotes, int numScaleInVotes, ScaleVote expected) { var context = new ScaleStatusContext { WorkerCount = workerCount }; List <ScaleVote> votes = new List <ScaleVote>(); for (int i = 0; i < numScaleOutVotes; i++) { votes.Add(ScaleVote.ScaleOut); } for (int i = 0; i < numScaleInVotes; i++) { votes.Add(ScaleVote.ScaleIn); } var vote = FunctionsScaleManager.GetAggregateScaleVote(votes, context, _testLogger); Assert.Equal(expected, vote); }
public async Task <IActionResult> GetScaleStatus([FromBody] ScaleStatusContext context, [FromServices] FunctionsScaleManager scaleManager) { // if runtime scale isn't enabled return error if (!_environment.IsRuntimeScaleMonitoringEnabled()) { return(BadRequest("Runtime scale monitoring is not enabled.")); } var scaleStatus = await scaleManager.GetScaleStatusAsync(context); return(new ObjectResult(scaleStatus)); }