public void TestNoValidAttrYesCodeReviewFilterDefinedFails() { bool bIsCodeReviewFilterEnabled = true; string attrName = string.Empty; string resolvedAttrValue = string.Empty; string testingAttrValue = string.Empty; string failedAttrValue = string.Empty; string mergedAttrValue = string.Empty; string errorMsg; MultilinerBotConfiguration.StatusProperty statusConf = new MultilinerBotConfiguration.StatusProperty( attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue); MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM( bIsCodeReviewFilterEnabled, statusConf); Assert.IsTrue(plasticConfig.IsApprovedCodeReviewFilterEnabled); Assert.IsFalse(plasticConfig.IsBranchAttrFilterEnabled); bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg); Assert.IsFalse( bResult, "CheckValidPlasticFields should have failed " + "due to no valid basic attr name and merged value defined when only code review filter enabled"); Assert.AreEqual(Normalize(BuildInvalidAttributeDefinedMessage()), Normalize(errorMsg)); }
public void TestNoAttrYesCodeReviewFilterDefinedSucceeds() { bool bIsCodeReviewFilterEnabled = true; string attrName = "status"; string resolvedAttrValue = string.Empty; string testingAttrValue = string.Empty; string failedAttrValue = string.Empty; string mergedAttrValue = "merged"; string errorMsg; MultilinerBotConfiguration.StatusProperty statusConf = new MultilinerBotConfiguration.StatusProperty( attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue); MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM( bIsCodeReviewFilterEnabled, statusConf); Assert.IsTrue(plasticConfig.IsApprovedCodeReviewFilterEnabled); Assert.IsFalse(plasticConfig.IsBranchAttrFilterEnabled); bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg); Assert.IsTrue(bResult, "CheckValidPlasticFields should have succeed!"); Assert.AreEqual(string.Empty, errorMsg); }
public void TestNoValidMergedAttrYesCodeReviewFilterDefinedFails() { bool bIsCodeReviewFilterEnabled = true; string attrName = "status"; string resolvedAttrValue = "resolved"; string testingAttrValue = "testing"; string failedAttrValue = "failed"; string mergedAttrValue = string.Empty; string errorMsg; MultilinerBotConfiguration.StatusProperty statusConf = new MultilinerBotConfiguration.StatusProperty( attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue); MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM( bIsCodeReviewFilterEnabled, statusConf); bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg); Assert.IsTrue(plasticConfig.IsApprovedCodeReviewFilterEnabled); Assert.IsTrue(plasticConfig.IsBranchAttrFilterEnabled); Assert.IsFalse( bResult, "CheckValidPlasticFields should have failed due to no " + "resolved value set when only attr filter is defined"); Assert.AreEqual( Normalize("* The merged value of the status attribute for Plastic config must be defined."), Normalize(errorMsg)); }
public void TestNoAttrNoCodeReviewFiltersDefinedFails() { bool bIsCodeReviewFilterEnabled = false; string attrName = string.Empty; string resolvedAttrValue = string.Empty; string testingAttrValue = string.Empty; string failedAttrValue = string.Empty; string mergedAttrValue = string.Empty; string errorMsg; MultilinerBotConfiguration.StatusProperty statusConf = new MultilinerBotConfiguration.StatusProperty( attrName, resolvedAttrValue, testingAttrValue, failedAttrValue, mergedAttrValue); MultilinerBotConfiguration.PlasticSCM plasticConfig = new MultilinerBotConfiguration.PlasticSCM( bIsCodeReviewFilterEnabled, statusConf); Assert.IsFalse(plasticConfig.IsApprovedCodeReviewFilterEnabled); Assert.IsFalse(plasticConfig.IsBranchAttrFilterEnabled); bool bResult = MultilinerBotConfigurationChecker.CheckValidPlasticFields(plasticConfig, out errorMsg); Assert.IsFalse(bResult, "CheckValidPlasticFields should have failed due to no filters defined"); Assert.AreEqual(Normalize(BuildNoFiltersEnabledErrorMessage()), Normalize(errorMsg)); }
public void TestValidNotifiersNoProfileField() { MultilinerBotConfiguration.Notifier notifier = new MultilinerBotConfiguration.Notifier( "notifier1", "plug1", null, new string[] { "recipient" }); string errorMsg; bool bResult = MultilinerBotConfigurationChecker.CheckValidNotifierFields( notifier, out errorMsg); Assert.That(bResult, Is.True, "CheckValidNotifierFields shouldn't have failed!"); Assert.That(errorMsg, Is.Null.Or.Empty); }
public void TestInvalidNotifierNoDestination() { MultilinerBotConfiguration.Notifier notifier = new MultilinerBotConfiguration.Notifier( "notifier1", "plug1", string.Empty, new string[0]); string errorMsg; bool result = MultilinerBotConfigurationChecker.CheckValidNotifierFields( notifier, out errorMsg); string expectedError = "*There is no destination info in the Notifier 'notifier1'" + " config. Please specify a user profile field, a list of recipients" + " or both (recommended).\n"; Assert.That(result, Is.False, "CheckValidNotifierFields should have failed!"); Assert.That(errorMsg, Is.Not.Null.Or.Empty.And.EqualTo(expectedError)); }
public void TestInvalidNotifierNoPlug() { MultilinerBotConfiguration.Notifier notifier = new MultilinerBotConfiguration.Notifier( "notifier1", string.Empty, "profileFields1", new string[] { "fixedField1" }); string errorMsg; bool bResult = MultilinerBotConfigurationChecker.CheckValidNotifierFields( notifier, out errorMsg); string expectedError = "plug name for Notifier 'notifier1' config"; Assert.That(bResult, Is.False, "CheckValidNotifierFields should have failed!"); Assert.That(errorMsg, Is.Not.Null.Or.Empty.And.EqualTo(expectedError)); }
static int Main(string[] args) { string botName = null; try { MultilinerBotArguments botArgs = new MultilinerBotArguments(args); bool bValidArgs = botArgs.Parse(); botName = botArgs.BotName; ConfigureLogging(botName); mLog.InfoFormat("MultilinerBot [{0}] started. Version [{1}]", botName, System.Reflection.Assembly.GetExecutingAssembly().GetName().Version); string argsStr = args == null ? string.Empty : string.Join(" ", args); mLog.DebugFormat("Args: [{0}]. Are valid args?: [{1}]", argsStr, bValidArgs); if (!bValidArgs || botArgs.ShowUsage) { PrintUsage(); if (botArgs.ShowUsage) { mLog.InfoFormat( "MultilinerBot [{0}] is going to finish: " + "user explicitly requested to show usage.", botName); return(0); } mLog.ErrorFormat( "MultilinerBot [{0}] is going to finish: " + "invalid arguments found in command line.", botName); return(0); } string errorMessage = null; if (!MultilinerBotArgumentsChecker.CheckArguments( botArgs, out errorMessage)) { Console.WriteLine(errorMessage); mLog.ErrorFormat( "MultilinerBot [{0}] is going to finish: error found on arguments check", botName); mLog.Error(errorMessage); return(1); } MultilinerBotConfiguration botConfig = MultilinerBotConfiguration. BuidFromConfigFile(botArgs.ConfigFilePath); errorMessage = null; if (!MultilinerBotConfigurationChecker.CheckConfiguration( botConfig, out errorMessage)) { Console.WriteLine(errorMessage); mLog.ErrorFormat( "MultilinerBot [{0}] is going to finish: error found on configuration check", botName); mLog.Error(errorMessage); return(1); } ConfigureServicePoint(); string escapedBotName = GetEscapedBotName(botName); LaunchMultilinerMergebot( botArgs.WebSocketUrl, botArgs.RestApiUrl, botConfig, ToolConfig.GetBranchesFile(escapedBotName), ToolConfig.GetCodeReviewsFile(escapedBotName), botName, botArgs.ApiKey); mLog.InfoFormat( "MultilinerBot [{0}] is going to finish: orderly shutdown.", botName); return(0); } catch (Exception e) { Console.WriteLine(e.Message); mLog.FatalFormat( "MultilinerBot [{0}] is going to finish: uncaught exception " + "thrown during execution. Message: {1}", botName, e.Message); mLog.DebugFormat("Stack trace:{0}{1}", Environment.NewLine, e.StackTrace); return(1); } }