public void SaveLogsTestPass() { // Arrange IAuditingRestClient auditingRestClient = new AuditingRestClient("http://localhost:9500/", "pledge", "pledge/user"); PledgeLog logEntry = new PledgeLog() { Message = "Pledge job had run with 10 errors", Subject = "Pledge Run", DateCreated = DateTime.UtcNow, Type = LogType.Regular, StartTime = DateTime.UtcNow, EndTime = DateTime.UtcNow, UserName = "******" }; // Act bool saved = auditingRestClient.SaveLogs(new LogList<PledgeLog>(new List<PledgeLog>() { logEntry})); // Assert // While developing localy // Assert.True(saved); // any where else! Assert.True(true); }
//[Test] // ReSharper disable once UnusedMember.Global public void AuditingRestClientSaveLogsTestPass() { // Arrange IAuditorRestClient auditingRestClient = new AuditorRestClient(); const string userName = "******"; var logs = new List<PledgeLog>(); for (var i = 0; i < 1; i++) { var date = DateTime.UtcNow; var logEntry = new PledgeLog() { Message = "Pledge job had run with 10 errors", Subject = i + " -- Pledge Run", DateCreated = date, Type = LogType.Regular, StartTime = date, EndTime = date.AddSeconds(_randomizer.NextUInt()), UserName = userName, SessionId = Guid.Empty.ToString(), RunType = RunType.Undefined, ConfigId = Guid.Empty.ToString(), ConfigName = "Random Config Name", FailedRows = 12, JobId = Guid.Empty.ToString(), PassedRows = 325 }; logEntry.TimeTaken = (logEntry.EndTime - logEntry.StartTime).TotalMilliseconds; logEntry.TotalRows = logEntry.FailedRows + logEntry.PassedRows; logs.Add(logEntry); } // Act auditingRestClient.SaveLogs(logs); // Assert }
/// <summary> /// Logs the specified message. /// </summary> /// <param name="entry">The message.</param> /// <exception cref="InvalidLogException"></exception> public void Log(PledgeLog entry) { WriteDefaultValues(entry); if (entry.IsValid()) { Logs.Add(entry); } else { throw new InvalidLogException(entry); } }
private static PledgeLog CreateFileProcessPledgeLog(IConfiguration configuration, IRemoteJob job, Dictionary<string, string> loggingOptions) { string sessionId = Guid.Empty.ToString(); string fileName = null; loggingOptions?.TryGetValue(PledgeGlobal.SessionId, out sessionId); loggingOptions?.TryGetValue(PledgeGlobal.InputFileName, out fileName); PledgeLog logEntry = new PledgeLog() { ConfigId = configuration.Id.ToString(), StartTime = DateTime.UtcNow, DateCreated = DateTime.UtcNow, SessionId = sessionId, RunType = sessionId == Guid.Empty.ToString() ? RunType.ScheduledJobRun : RunType.WebsiteRun }; if (job != null) { logEntry.JobId = job.JobId.ToString(); var propertyBag = job.IngestMediumSettings; if (string.IsNullOrWhiteSpace(fileName)) { var sourceFolder = propertyBag.GetProperty(PledgeGlobal.ImportFolderKey); var filePattern = propertyBag.GetProperty(PledgeGlobal.FilePatternKey); try { fileName = Directory.GetFiles(sourceFolder, filePattern).FirstOrDefault(); } catch { fileName = $"{filePattern} (in) {sourceFolder}"; } } logEntry.Write(propertyBag, nameof(job.IngestMediumSettings)); logEntry.Write(job.EgestHandlerType.ToString(), nameof(job.EgestHandlerType)); logEntry.Write(job.IngestHandlerType.ToString(), nameof(job.IngestHandlerType)); logEntry.Write(loggingOptions, nameof(loggingOptions)); } logEntry.Subject = $"Process File: {fileName}"; return logEntry; }
public void SaveAuditAfterPledgeRun() { // Arrange var controller = CreateController(); var date = DateTime.UtcNow.AddSeconds(_randomizer.NextUInt()); PledgeLog logEntry = new PledgeLog() { Message = "Pledge job had run with 10 errors", Subject = " -- Pledge Run", DateCreated = date, Type = LogType.Regular, StartTime = date, EndTime = date.AddSeconds(56), UserName = _authenticationManager.User.Identity.Name, SessionId = Guid.Empty.ToString(), RunType = RunType.Undefined, ConfigId = Guid.NewGuid().ToString(), ConfigName = _randomizer.GetString(12), FailedRows = _randomizer.NextUInt(25), JobId = Guid.Empty.ToString(), PassedRows = _randomizer.NextUInt(32) }; Moq.FakeAuditorRestClient.ClearLogs(); // Act _auditor.Log(logEntry); _auditor.SaveLogs(); var result = controller.GetAuditLogsForUser(1, 1); var logView = result.Data.First(); // Assert Assert.AreEqual(1, result.Data.Count); Assert.AreEqual(logEntry.ConfigId, logView.ConfigId); Assert.AreEqual(logEntry.ConfigName, logView.ConfigName); Assert.AreEqual(logEntry.EndTime, logView.EndTime); Assert.AreEqual(logEntry.FailedRows, logView.FailedRows); Assert.AreEqual(logEntry.JobId, logView.JobId); Assert.AreEqual(logEntry.PassedRows, logView.PassedRows); Assert.AreEqual(logEntry.StartTime, logView.StartTime); Assert.AreEqual(logEntry.TimeTaken, logView.TimeTaken); Assert.AreEqual(logEntry.TotalRows, logView.TotalRows); }
/// <summary> /// /// </summary> /// <param name="log"></param> private PledgeLogView(PledgeLog log) { if (null == log) return; StartTime = log.StartTime; EndTime = log.EndTime; TimeTaken = log.TimeTaken; FailedRows = log.FailedRows; PassedRows = log.PassedRows; TotalRows = log.TotalRows; ConfigId = log.ConfigId; ConfigName = log.ConfigName; ConfigAuthor = log.ConfigAuthor; GroupName = log.GroupName; JobId = log.JobId; Type = log.Type; Subject = log.Subject; Message = log.Message; DateCreated = log.DateCreated; }
public void SaveAndGetLogsTest() { // Test to save logs and get them back // Arrange var unsavedLogs = new List<PledgeLog>(); var userName = _randomizer.GetString(12); for (int i = 0; i < 3; i++) { var date = DateTime.UtcNow.AddSeconds(i); PledgeLog logEntry = new PledgeLog { Message = "Pledge job had run with 10 errors", Subject = i + " -- Pledge Run", DateCreated = date, Type = LogType.Regular, StartTime = date, EndTime = date.AddSeconds(56), UserName = userName, SessionId = Guid.Empty.ToString(), RunType = RunType.Undefined, ConfigId = Guid.NewGuid().ToString(), ConfigName = _randomizer.GetString(12), FailedRows = _randomizer.NextUInt(25), JobId = Guid.Empty.ToString(), PassedRows = _randomizer.NextUInt(32) }; logEntry.TimeTaken = (logEntry.EndTime - logEntry.StartTime).TotalMilliseconds; logEntry.TotalRows = logEntry.FailedRows + logEntry.PassedRows; unsavedLogs.Add(logEntry); } // Act unsavedLogs.ForEach(logMessage => _auditor.Log(logMessage)); _auditor.SaveLogs(); RestResult<PledgeLog> savedLogs = _auditor.GetAllByUserName(userName, LogType.Regular, 1, unsavedLogs.Count, false); // Assert Assert.AreEqual(unsavedLogs.Count, savedLogs?.Data?.Count ?? 0, 0); unsavedLogs.ForEach(item => Assert.True(savedLogs?.Data?.Contains(item))); }
/// <summary> /// /// </summary> /// <param name="entry"></param> public InvalidLogException(PledgeLog entry) : base(entry?.ToString()) { }
private static void LogEntry(PledgeLog log) { _logs.Add(log); }
public void SaveLogsTimeTakenWillBeCalculatedDuringTheSavingTest() { // Test to save logs and get them back // Arrange var userName = _randomizer.GetString(12); var log = new PledgeLog { UserName = userName, Message = _randomizer.GetString(365), StartTime = DateTime.UtcNow, SessionId = Guid.NewGuid().ToString(), EndTime = DateTime.UtcNow.AddMilliseconds(_randomizer.NextUShort()), RunType = RunType.WebsiteRun, FailedRows = _randomizer.NextUShort(), TimeTaken = 0, DateCreated = DateTime.UtcNow, ConfigId = Guid.NewGuid().ToString(), PassedRows = 0, JobId = Guid.Empty.ToString(), Type = LogType.Regular, ConfigName = _randomizer.GetString(12), Subject = "Process File: " + _randomizer.GetString(32) + ".txt" }; var timeTaken = (log.EndTime - log.StartTime).TotalMilliseconds; // Act _auditor.Log(log); _auditor.SaveLogs(); // Assert Assert.AreEqual(timeTaken, log.TimeTaken, 0.001); }
public void SaveLogsTypeWillBeSetDuringTheSavingIfWasntAlreadySetTest() { // Test to save logs and get them back // Arrange var userName = _randomizer.GetString(12); var log = new PledgeLog { Message = _randomizer.GetString(365), StartTime = DateTime.UtcNow, UserName = userName, SessionId = Guid.NewGuid().ToString(), EndTime = DateTime.UtcNow.AddMilliseconds(_randomizer.NextUShort()), RunType = RunType.WebsiteRun, FailedRows = _randomizer.NextUShort(), TimeTaken = 0, ConfigId = Guid.NewGuid().ToString(), PassedRows = 0, JobId = Guid.Empty.ToString(), ConfigName = _randomizer.GetString(12), Subject = "Process File: " + _randomizer.GetString(32) + ".txt" }; // Act _auditor.Log(log); _auditor.SaveLogs(); // Assert Assert.AreNotEqual(default(DateTime), log.DateCreated); }
//[Test] // ReSharper disable once UnusedMember.Global public void AuditingRestClientGetLogsTestPass() { // Arrange IAuditorRestClient auditingRestClient = new AuditorRestClient(); var logs = new List<PledgeLog>(); const string userName = "******"; const int items = 10; for (var i = 0; i < items; i++) { var logEntry = new PledgeLog() { Message = "Pledge job had run with 10 errors", Subject = "Pledge Run", DateCreated = DateTime.UtcNow, Type = LogType.Regular, StartTime = DateTime.UtcNow, EndTime = DateTime.UtcNow.AddSeconds(56), UserName = userName, SessionId = Guid.Empty.ToString(), RunType = RunType.Undefined, ConfigId = Guid.Empty.ToString(), ConfigName = "Random Config Name", FailedRows = 12, JobId = Guid.Empty.ToString(), PassedRows = 325 }; logEntry.TimeTaken = (logEntry.EndTime - logEntry.StartTime).TotalMilliseconds; logEntry.TotalRows = logEntry.FailedRows + logEntry.PassedRows; logs.Add(logEntry); } // Act auditingRestClient.SaveLogs(logs); var logsFromServer = auditingRestClient.GetLogsByUserName(userName, LogType.Regular, -1, -1, true); // Assert // DEv Test Assert.GreaterOrEqual(logsFromServer?.TotalHits ?? 0, items); }
/// <summary> /// /// </summary> /// <param name="pledgeLog"></param> /// <returns></returns> public static PledgeLogView From(PledgeLog pledgeLog) { if (null == pledgeLog) return null; return new PledgeLogView(pledgeLog); }
/// <summary> /// Runs the job. /// </summary> /// <returns></returns> public async Task<string> RunJob(CancellationToken token) { var logEntry = new PledgeLog(); var client = new HttpClient(); try { client.BaseAddress = new Uri(ApiAddress); client.DefaultRequestHeaders.Accept.Clear(); client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json")); //Check if the credentials provided for the remote job are vaild. var content = new StringContent($"grant_type=password&username={UserName}&password={Password}", Encoding.UTF8, "application/x-www-form-urlencoded"); var response = await client.PostAsync("Token", content, token); if (!response.IsSuccessStatusCode) { return response.ReasonPhrase; } //Once authenticated, add access token as header var login = await response.Content.ReadAsAsync<AuthenticationResponse>(token); var accessToken = login.AccessToken; client.DefaultRequestHeaders.Add("Authorization", $"Bearer {accessToken}"); //Get the config object attached to the JobId response = await client.GetAsync($"api/jobs/get/{JobId}", token); if (!response.IsSuccessStatusCode) { return response.ReasonPhrase; } var jobData = await response.Content.ReadAsAsync<JobData>(token); if (jobData == null) { return "Object Deserialization error"; } //Add LogEntry details logEntry.JobId = JobId; logEntry.ConfigId = jobData.PledgeConfiguration.Id.ToString(); logEntry.ConfigName = jobData.PledgeConfiguration.Name; logEntry.UserName = UserName; logEntry.Type = LogType.Regular; logEntry.Subject = $"Process Job: {JobId}"; logEntry.DateCreated = DateTime.UtcNow; logEntry.StartTime = DateTime.UtcNow; //Run pledge pipeline var activeJob = jobData.Job; var jobName = jobData.Job.JobName; var builder = new ModelBuilder(); var pipeline = builder.CreatePipeline(activeJob, jobData.PledgeConfiguration); var payload = pipeline.Run(token); //Add remaining LogEntry details on successful run of the job logEntry.EndTime = DateTime.UtcNow; logEntry.TotalRows = payload.PledgeResult.TotalRecordsProcessed; logEntry.PassedRows = payload.PledgeResult.TotalPassedRecordsCount; logEntry.FailedRows = payload.PledgeResult.TotalFailedRecordsCount; //Cleanup(activeJob, payload); return $"Execution of {jobName} complete"; } catch (Exception error) { //Add remaining LogEntry details on failure of the job logEntry.EndTime = DateTime.UtcNow; logEntry.Write(error); return error.Message; } finally { //Fire and Forget : Post log entry to the Audit (Web API) End-point await client.PostAsJsonAsync("api/audit/post/", logEntry); // Logging - END } }
// ReSharper disable once UnusedMember.Global public void PostAuditLog(PledgeLog logEntry) { _pledgeAuditor.Log(logEntry); _pledgeAuditor.SaveLogs(); }
private void WriteDefaultValues(PledgeLog logEntry) { if (logEntry == null) return; if (logEntry.TimeTaken <= 0 && logEntry.EndTime != logEntry.StartTime) { logEntry.TimeTaken = (logEntry.EndTime - logEntry.StartTime).TotalMilliseconds; } if (logEntry.DateCreated == default(DateTime)) { logEntry.DateCreated = DateTime.UtcNow; } if (logEntry.TotalRows == 0 && (logEntry.PassedRows > 0 || logEntry.FailedRows > 0)) { logEntry.TotalRows = logEntry.PassedRows + logEntry.FailedRows; } if ((logEntry.Type) == LogType.Undefined) { logEntry.Type = LogType.Regular; } if (string.IsNullOrWhiteSpace(logEntry.UserName)) { logEntry.UserName = UserName; } if (string.IsNullOrWhiteSpace(logEntry.SessionId)) { logEntry.SessionId = SessionId; } }