Beispiel #1
0
 /// <summary>
 /// Posts the iteration to Seq
 /// </summary>
 /// <param name="iteration">Iteration object that will be serialized to the JSON.</param>
 public async Task PostIterationToSeqAsync(IWardenIteration iteration)
 {
     if (iteration == null)
     {
         throw new ArgumentNullException(nameof(iteration), "Warden iteration can not be null.");
     }
     await _configuration.HttpServiceProvider().PostAsync(_configuration.Uri.ToString(),
                                                          iteration.ToSeqJson(_configuration.JsonSerializerSettings), _configuration.Headers,
                                                          _configuration.FailFast);
 }
Beispiel #2
0
        internal static string ToSeqJson(this IWardenIteration data, JsonSerializerSettings serializerSettings)
        {
            var rawData = new {
                Events = new List <object>()
            };

            foreach (IWardenCheckResult checkResult in data.Results)
            {
                var @event = checkResult.ToSeqObject(data.WardenName);
                rawData.Events.Add(@event);
            }
            return(JsonConvert.SerializeObject(rawData, serializerSettings));
        }
Beispiel #3
0
        private static void OnIterationCompleted(IWardenIteration wardenIteration)
        {
            var newLine = Environment.NewLine;

            System.Console.WriteLine($"{wardenIteration.WardenName} iteration {wardenIteration.Ordinal} has completed.");
            foreach (var result in wardenIteration.Results)
            {
                System.Console.WriteLine($"Watcher: '{result.WatcherCheckResult.WatcherName}'{newLine}" +
                                         $"Description: {result.WatcherCheckResult.Description}{newLine}" +
                                         $"Is valid: {result.IsValid}{newLine}" +
                                         $"Started at: {result.StartedAt}{newLine}" +
                                         $"Completed at: {result.CompletedAt}{newLine}" +
                                         $"Execution time: {result.ExecutionTime}{newLine}");
            }
        }
        /// <summary>
        /// Sends a POST request to the Warden Panel API endpoint.
        /// </summary>
        /// <param name="iteration">Iteration object that will be serialized to the JSON.</param>
        /// <returns></returns>
        public async Task PostIterationToWardenPanelAsync(IWardenIteration iteration)
        {
            if (iteration == null)
            {
                throw new ArgumentNullException(nameof(iteration), "Warden iteration can not be null.");
            }
            if (string.IsNullOrWhiteSpace(iteration.WardenName))
            {
                throw new ArgumentException("Warden name can not be empty.", nameof(iteration.WardenName));
            }

            var baseUrl         = _configuration.Uri.ToString();
            var fixedWardenName = iteration.WardenName.Replace(" ", "%20");
            var endpoint        = GetWardenApiIterationEndpoint(_configuration.OrganizationId, fixedWardenName);
            var fullUrl         = baseUrl.GetFullUrl(endpoint);
            await _configuration.HttpServiceProvider().PostAsync(fullUrl,
                                                                 iteration.ToJson(_configuration.JsonSerializerSettings), _configuration.Headers,
                                                                 _configuration.Timeout, _configuration.FailFast);
        }
        /// <summary>
        /// Inserts the IWardenIteration into the MS SQL database using tables based on the provided schema file.
        /// </summary>
        /// <param name="iteration">Iteration object that will be saved into the MS SQL database.</param>
        /// <returns></returns>
        public async Task SaveIterationAsync(IWardenIteration iteration)
        {
            var wardenIterationCommand = "insert into WardenIterations values" +
                                         "(@wardenName, @ordinal, @startedAt, @completedAt, @executionTime, @isValid);" +
                                         "select cast(scope_identity() as bigint)";
            var wardenIterationParameters = new Dictionary <string, object>
            {
                ["wardenName"]    = iteration.WardenName,
                ["ordinal"]       = iteration.Ordinal,
                ["startedAt"]     = iteration.StartedAt,
                ["completedAt"]   = iteration.CompletedAt,
                ["executionTime"] = iteration.ExecutionTime,
                ["isValid"]       = iteration.IsValid,
            };
            var iterationResultIds = await QueryAsync <long>(wardenIterationCommand, wardenIterationParameters);

            var iterationId = iterationResultIds.FirstOrDefault();

            if (iterationId <= 0)
            {
                return;
            }
            await SaveWardenCheckResultsAsync(iteration.Results, iterationId);
        }
Beispiel #6
0
 private static async Task OnIterationCompletedCachetAsync(IWardenIteration wardenIteration,
                                                           CachetIntegration cachet)
 {
     await cachet.SaveIterationAsync(wardenIteration);
 }
Beispiel #7
0
 private static async Task OnIterationCompletedMsSqlAsync(IWardenIteration wardenIteration,
                                                          MsSqlIntegration integration)
 {
     await integration.SaveIterationAsync(wardenIteration);
 }
 /// <summary>
 /// Saves the IWardenIteration using Cachet API.
 /// </summary>
 /// <param name="iteration">Iteration object that will be saved using Cachet API.</param>
 /// <param name="notify">Flag determining whether to notify the system administrator(s).</param>
 /// <param name="saveValidIncidents">Flag determining whether to save the valid incidents even if there were no errors previously reported.</param>
 /// <param name="updateIfStatusesAreTheSame">Flag determining whether to update the components and/or incidents even if the previous status is the same (false by default).</param>
 /// <returns></returns>
 public async Task SaveIterationAsync(IWardenIteration iteration, bool notify = false,
                                      bool saveValidIncidents = false, bool updateIfStatusesAreTheSame = false)
 {
     var tasks = iteration.Results.Select(x => SaveCheckResultAsync(x, notify, saveValidIncidents));
     await Task.WhenAll(tasks);
 }
Beispiel #9
0
 /// <summary>
 /// Saves the IWardenIteration using Cachet API.
 /// </summary>
 /// <param name="iteration">Iteration object that will be saved using Cachet API.</param>
 /// <param name="notify">Flag determining whether to notify the system administrator(s).</param>
 /// <returns></returns>
 public async Task SaveIterationAsync(IWardenIteration iteration, bool notify = false)
 {
     var tasks = iteration.Results.Select(x => SaveCheckResultAsync(x, notify));
     await Task.WhenAll(tasks);
 }