public void VerifyLogHasCreatedStatusWhenItIsCreated() { //Arrange var loggerController = new LoggerController(); //Act var logToSave = new LoggerEntities.Log("LogType", "LogMessage"); //Assert Assert.IsTrue(logToSave.LogStatus.Equals(AppConstant.LogStatus.Created)); }
public void VerifyLogIsSuccessfullySavedFromFileEngine() { //Arrange var loggerController = new LoggerController(); var engineLogger = AppConstant.LogEngine.File; var assemblyName = "FileLogger"; var domainName = "FileNewDomain"; var logToSave = new LoggerEntities.Log("LogType", "LogMessage"); var methodToInvoke = AppConstant.LogMethod.DoLog; loggerController.LoadAssembly(engineLogger, assemblyName, domainName); //Act loggerController.ProcessMethod(engineLogger, methodToInvoke, logToSave); //Assert Assert.IsTrue(logToSave.LogStatus.Equals(AppConstant.LogStatus.Saved)); }
/// <summary> /// /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void btnLogMessage_Click(object sender, RoutedEventArgs e) { try { var isValid = DoLogValidations(); if (!isValid) { return; } var logMessage = txtLogMessage.Text.Trim(); var logEngineType = cmbLoggerEngineTest.SelectedValue.ToString(); var logMessageType = cmbLogMessageTypeTest.SelectedValue.ToString(); var log = new LoggerEntities.Log(logMessageType, logMessage); var methodToInvoke = AppConstant.LogMethod.DoLog; //Processing the Log regarding the LogEngine selected var wasAssemblyAlreadyLoaded = LoggerController.IsAlreadyLoaded(logEngineType); if (wasAssemblyAlreadyLoaded) { LoggerController.ProcessMethod(logEngineType, methodToInvoke, log); } else { MessageBox.Show(string.Format("The Assembly {0} is not loaded.", logEngineType)); return; } //Notifiying if the Log was successfully processed if (log.LogStatus.Equals(AppConstant.LogStatus.Saved)) { MessageBox.Show(string.Format("The Log was successfully Saved."), "Results"); } else { MessageBox.Show(string.Format("The Log was not Saved."), "Results"); } } catch (Exception ex) { MessageBox.Show(string.Format("Unable to Log: {0}", ex.Message)); } }
/// <summary> /// /// </summary> /// <param name="loggerEngineType"></param> /// <param name="methodToInvoke"></param> /// <returns></returns> public bool ProcessMethod(string loggerEngineType, string methodToInvoke, LoggerEntities.Log logMessage) { ValidationUtil.CheckArgumentNull(loggerEngineType, "loggerEngineType"); ValidationUtil.CheckArgumentNull(methodToInvoke, "methodToInvoke"); ValidationUtil.CheckArgumentNull(logMessage, "logMessage"); bool methodProcessed = true; try { if (!CurrentAssemblies.ContainsKey(loggerEngineType)) { return(false); } var assemblyToUse = CurrentAssemblies[loggerEngineType]; //Getting the Logger component -- All assemblies (DatabaseLogger, FileLogger, ConsoleLogger) has the same Name Type type = assemblyToUse.GetTypes().FirstOrDefault(typess => typess.Name == "Logger"); var totalMethods = type.GetMethods(); var loggerMethod = type.GetMethod(methodToInvoke); object classInstance = Activator.CreateInstance(type, null); var logMessageParams = new object[] { logMessage.LogType, logMessage.LogMessage }; object result = loggerMethod.Invoke(classInstance, logMessageParams); //The DoLog method in all assemblies should return a boolean methodProcessed = Convert.ToBoolean(result); //updating the status of the Log logMessage.LogStatus = methodProcessed ? AppConstant.LogStatus.Saved : AppConstant.LogStatus.Failed; } catch (Exception ex) { methodProcessed = false; logMessage.LogStatus = AppConstant.LogStatus.Failed; } return(methodProcessed); }
/// <summary> /// /// </summary> /// <param name="loggerEngineType"></param> /// <param name="method"></param> /// <param name="parameters"></param> public bool ProcessMethod(string loggerEngineType, string method, LoggerEntities.Log logMessage) { return(LoggerAssemblyManager.ProcessMethod(loggerEngineType, method, logMessage)); }