public void ProductAddedUnhandledExceptionInPlugIn() { String dllLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String[] folders = { dllLocation }; BugTrackerManager manager = new BugTrackerManager(folders); Assert.AreEqual(true, manager.NumberOfPlugIns >= 1); StackHashBugTrackerPlugInSettings plugInSettings = new StackHashBugTrackerPlugInSettings(); plugInSettings.PlugInSettings = new StackHashBugTrackerPlugInCollection(); plugInSettings.PlugInSettings.Add(new StackHashBugTrackerPlugIn()); plugInSettings.PlugInSettings[0].Name = "TestPlugIn"; plugInSettings.PlugInSettings[0].Enabled = true; BugTrackerContext plugInContext = new BugTrackerContext(manager, plugInSettings); StackHashBugTrackerPlugInDiagnosticsCollection fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); NameValueCollection diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("0", diagnostics["ProductAddedCount"]); Assert.AreEqual("0", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("0", diagnostics["FileAddedCount"]); Assert.AreEqual("0", diagnostics["FileUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventAddedCount"]); Assert.AreEqual("0", diagnostics["EventUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("0", diagnostics["CabAddedCount"]); Assert.AreEqual("0", diagnostics["CabUpdatedCount"]); Assert.AreEqual("0", diagnostics["CabNoteAddedCount"]); NameValueCollection properties = new NameValueCollection(); properties.Add("UnhandledException", "1"); plugInContext.SetProperties("TestPlugIn", properties); plugInContext.ProductAdded(null, BugTrackerReportType.Automatic, null); fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("0", diagnostics["ProductAddedCount"]); Assert.AreEqual("0", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("0", diagnostics["FileAddedCount"]); Assert.AreEqual("0", diagnostics["FileUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventAddedCount"]); Assert.AreEqual("0", diagnostics["EventUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("0", diagnostics["CabAddedCount"]); Assert.AreEqual("0", diagnostics["CabUpdatedCount"]); Assert.AreEqual("0", diagnostics["CabNoteAddedCount"]); }
public void InitializeFailInvalidFolder() { String [] folders = { "c:\\thisfolderdoesntexist" }; BugTrackerManager manager = new BugTrackerManager(folders); Assert.AreEqual(0, manager.NumberOfPlugIns); }
public void InitializeFailNoPlugIns() { String[] folders = { m_TestFolder }; BugTrackerManager manager = new BugTrackerManager(folders); Assert.AreEqual(0, manager.NumberOfPlugIns); }
public void InitializeOkOnePlugIn() { String testPlugInFolder = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String[] folders = { testPlugInFolder }; BugTrackerManager manager = new BugTrackerManager(folders); Assert.AreEqual(true, manager.NumberOfPlugIns >= 1); }
public void GetContextSettings() { String dllLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String[] folders = { dllLocation }; BugTrackerManager manager = new BugTrackerManager(folders); StackHashBugTrackerPlugInSettings plugInSettings = new StackHashBugTrackerPlugInSettings(); plugInSettings.PlugInSettings = new StackHashBugTrackerPlugInCollection(); plugInSettings.PlugInSettings.Add(new StackHashBugTrackerPlugIn()); plugInSettings.PlugInSettings[0].Name = "TestPlugIn"; plugInSettings.PlugInSettings[0].Enabled = true; BugTrackerContext plugInContext = new BugTrackerContext(manager, plugInSettings); Assert.AreEqual(true, manager.NumberOfPlugIns >= 1); StackHashBugTrackerPlugInDiagnosticsCollection fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); Assert.AreEqual("http://www.stackhash.com/", fullDiagnostics[0].HelpUrl.ToString()); Assert.AreEqual(true, fullDiagnostics[0].Loaded); Assert.AreEqual("Plug-in used to control StackHash unit testing.", fullDiagnostics[0].PlugInDescription); Assert.AreEqual(true, fullDiagnostics[0].PlugInSetsBugReference); NameValueCollection diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("0", diagnostics["ProductAddedCount"]); Assert.AreEqual("0", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("0", diagnostics["FileAddedCount"]); Assert.AreEqual("0", diagnostics["FileUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventAddedCount"]); Assert.AreEqual("0", diagnostics["EventUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("0", diagnostics["CabAddedCount"]); Assert.AreEqual("0", diagnostics["CabUpdatedCount"]); Assert.AreEqual("0", diagnostics["CabNoteAddedCount"]); }
public void MyTestInitialize() { m_TempPath = Path.GetTempPath() + "StackHashTaskTesting"; m_ScriptPath = m_TempPath + "\\Scripts"; m_ActivationAdminEvent.Reset(); m_DeactivationAdminEvent.Reset(); String dllLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String[] folders = { dllLocation }; BugTrackerManager manager = new BugTrackerManager(folders); TidyTest(); m_AllReports.Clear(); if (!Directory.Exists(m_TempPath)) { Directory.CreateDirectory(m_TempPath); } if (!Directory.Exists(m_ScriptPath)) { Directory.CreateDirectory(m_ScriptPath); } }
/// <summary> /// An index will be created in sourceFolder\SourceIndex called SourceIndex. /// It will then be moved to destFolder\DestIndex. /// If defaultDatabaseLocation is specified then only the cab files will be moved and not the SQL database. /// </summary> private void runMoveTask(String settingsFolder, String sourceErrorIndexFolder, String sourceErrorIndexName, String destErrorIndexFolder, String destErrorIndexName, bool defaultDatabaseLocation, StackHashTestIndexData testIndexData) { String scriptFolder = settingsFolder + "\\Scripts"; SqlCommands sqlCommands = new SqlCommands(m_ProviderFactory, s_MasterConnectionString, s_MasterConnectionString, 1); // Create the source database folders and settings. if (sqlCommands.DatabaseExists(destErrorIndexName)) { try { sqlCommands.DeleteDatabase(destErrorIndexName); } catch {; } } if (sqlCommands.DatabaseExists(sourceErrorIndexName)) { try { sqlCommands.DeleteDatabase(sourceErrorIndexName); } catch {; } } if (Directory.Exists(settingsFolder)) { PathUtils.DeleteDirectory(settingsFolder, true); } if (Directory.Exists(destErrorIndexFolder)) { PathUtils.DeleteDirectory(destErrorIndexFolder, true); } if (Directory.Exists(sourceErrorIndexFolder)) { PathUtils.DeleteDirectory(sourceErrorIndexFolder, true); } if (!Directory.Exists(sourceErrorIndexFolder)) { Directory.CreateDirectory(sourceErrorIndexFolder); } if (!Directory.Exists(settingsFolder)) { Directory.CreateDirectory(settingsFolder); } if (!Directory.Exists(scriptFolder)) { Directory.CreateDirectory(scriptFolder); } if (!Directory.Exists(destErrorIndexFolder)) { Directory.CreateDirectory(destErrorIndexFolder); } try { // Create a settings manager and a new context. SettingsManager settingsManager = new SettingsManager(settingsFolder + "\\ServiceSettings.XML"); StackHashContextSettings contextSettings = settingsManager.CreateNewContextSettings(); contextSettings.ErrorIndexSettings = new ErrorIndexSettings(); contextSettings.ErrorIndexSettings.Folder = sourceErrorIndexFolder; contextSettings.ErrorIndexSettings.Name = sourceErrorIndexName; contextSettings.ErrorIndexSettings.Type = ErrorIndexType.SqlExpress; contextSettings.SqlSettings = StackHashSqlConfiguration.Default; contextSettings.SqlSettings.ConnectionString = s_ConnectionString; contextSettings.SqlSettings.InitialCatalog = sourceErrorIndexName; ScriptManager scriptManager = new ScriptManager(scriptFolder); string licenseFileName = string.Format("{0}\\License.bin", settingsFolder); LicenseManager licenseManager = new LicenseManager(licenseFileName, s_ServiceGuid); licenseManager.SetLicense(s_LicenseId); // Create a dummy controller to record the callbacks. BugTrackerManager bugTrackerManager = new BugTrackerManager(new String[0]); // Create a dummy controller to record the callbacks. ControllerContext controllerContext = new ControllerContext(contextSettings, scriptManager, new Windbg(), settingsManager, true, null, licenseManager); // Hook up to receive admin reports. controllerContext.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport); // Progress reports don't come through the controller context - they come straight through the contoller so create a dummy. Controller controller = new Controller(); Reporter reporter = new Reporter(controller); controller.AdminReports += new EventHandler <AdminReportEventArgs>(this.OnAdminReport); // ****************************************** // CREATE THE SOURCE INDEX // ****************************************** // Delete any old index first. SqlConnection.ClearAllPools(); try { controllerContext.DeleteIndex(); } catch {; } // Activate the context and the associated index - this will create the index if necessary. controllerContext.Activate(null, defaultDatabaseLocation); String[] databaseFiles = Directory.GetFiles(Path.Combine(sourceErrorIndexFolder, sourceErrorIndexName), "*.mdf"); Assert.AreEqual(defaultDatabaseLocation, databaseFiles.Length == 0); controllerContext.CreateTestIndex(testIndexData); Guid guid = new Guid(); StackHashClientData clientData = new StackHashClientData(guid, "GuidName", 1); // ****************************************** // MOVE TO DESTINATION // ****************************************** // Deactivate before the move. controllerContext.Deactivate(); StackHashSqlConfiguration sqlConfig = new StackHashSqlConfiguration(s_ConnectionString, destErrorIndexName, 1, 100, 15, 100); // Move the index. controllerContext.RunMoveIndexTask(clientData, destErrorIndexFolder, destErrorIndexName, sqlConfig); // Wait for the move task to complete. waitForMoveCompleted(60000 * 20); Assert.AreEqual(2, m_AdminReports.Count); Assert.AreEqual(null, m_AdminReports[0].Report.LastException); Assert.AreEqual(0, m_AdminReports[0].Report.ContextId); Assert.AreEqual(StackHashAdminOperation.ErrorIndexMoveStarted, m_AdminReports[0].Report.Operation); Assert.AreEqual(0, m_AdminReports[1].Report.ContextId); Assert.AreEqual(StackHashAdminOperation.ErrorIndexMoveCompleted, m_AdminReports[1].Report.Operation); Assert.AreEqual(null, m_AdminReports[1].Report.LastException); Assert.AreEqual(StackHashServiceErrorCode.NoError, m_AdminReports[1].Report.ServiceErrorCode); if ((testIndexData.NumberOfCabs > 0) && (sourceErrorIndexFolder[0] != destErrorIndexFolder[0])) { Assert.AreEqual(true, m_MoveAdminReports.Count > 0); } controllerContext.AdminReports -= new EventHandler <AdminReportEventArgs>(this.OnAdminReport); ErrorIndexSettings destIndexData = new ErrorIndexSettings() { Folder = destErrorIndexFolder, Name = destErrorIndexName, Type = ErrorIndexType.SqlExpress }; IErrorIndex index1 = getIndex(destIndexData, sqlConfig); try { index1.Activate(); // Make a single call just to ensure the database is still in tact. StackHashProductCollection products = index1.LoadProductList(); Assert.AreEqual(testIndexData.NumberOfProducts, products.Count); } finally { index1.Deactivate(); index1.Dispose(); SqlConnection.ClearAllPools(); } } finally { SqlConnection.ClearAllPools(); if (sqlCommands.DatabaseExists(destErrorIndexName)) { try { sqlCommands.DeleteDatabase(destErrorIndexName); } catch {; } } if (sqlCommands.DatabaseExists(sourceErrorIndexName)) { try { sqlCommands.DeleteDatabase(sourceErrorIndexName); } catch {; } } SqlConnection.ClearAllPools(); if (Directory.Exists(sourceErrorIndexFolder)) { PathUtils.SetFilesWritable(sourceErrorIndexFolder, true); PathUtils.DeleteDirectory(sourceErrorIndexFolder, true); } if (Directory.Exists(destErrorIndexFolder)) { PathUtils.SetFilesWritable(destErrorIndexFolder, true); PathUtils.DeleteDirectory(destErrorIndexFolder, true); } if (Directory.Exists(settingsFolder)) { PathUtils.SetFilesWritable(settingsFolder, true); PathUtils.DeleteDirectory(settingsFolder, true); } } }
public void LogInCallback() { // Empty so shouldn't report anything. StackHashBugTrackerPlugInSelectionCollection plugIns = new StackHashBugTrackerPlugInSelectionCollection(); String dllLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String[] folders = { dllLocation }; BugTrackerTrace.LogMessageHook += new EventHandler <BugTrackerTraceEventArgs>(LogPlugInEvent); try { BugTrackerManager manager = new BugTrackerManager(folders); StackHashBugTrackerPlugInSettings plugInSettings = new StackHashBugTrackerPlugInSettings(); plugInSettings.PlugInSettings = new StackHashBugTrackerPlugInCollection(); plugInSettings.PlugInSettings.Add(new StackHashBugTrackerPlugIn()); plugInSettings.PlugInSettings[0].Name = "TestPlugIn"; plugInSettings.PlugInSettings[0].Enabled = true; BugTrackerContext plugInContext = new BugTrackerContext(manager, plugInSettings); Assert.AreEqual(true, manager.NumberOfPlugIns >= 1); Assert.AreEqual(true, m_CallBackCount > 0); StackHashBugTrackerPlugInDiagnosticsCollection fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); NameValueCollection diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("0", diagnostics["ProductAddedCount"]); Assert.AreEqual("0", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("0", diagnostics["FileAddedCount"]); Assert.AreEqual("0", diagnostics["FileUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventAddedCount"]); Assert.AreEqual("0", diagnostics["EventUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("0", diagnostics["CabAddedCount"]); Assert.AreEqual("0", diagnostics["CabUpdatedCount"]); Assert.AreEqual("0", diagnostics["CabNoteAddedCount"]); BugTrackerProduct product = new BugTrackerProduct("Name", "Version", 1); BugTrackerFile file = new BugTrackerFile("FileName", "FileVersion", 2); BugTrackerEvent theEvent = new BugTrackerEvent("BugRef", "PlugInBugRef", 1, "EventTypeName", 1, new NameValueCollection()); BugTrackerCab cab = new BugTrackerCab(1, 100, false, false, new NameValueCollection(), "c:\\test.cab"); plugInContext.ProductAdded(plugIns, BugTrackerReportType.Automatic, product); plugInContext.ProductUpdated(plugIns, BugTrackerReportType.Automatic, product); plugInContext.FileAdded(plugIns, BugTrackerReportType.Automatic, product, file); plugInContext.FileUpdated(plugIns, BugTrackerReportType.Automatic, product, file); plugInContext.EventAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent); plugInContext.EventUpdated(plugIns, BugTrackerReportType.Automatic, product, file, theEvent); plugInContext.EventManualUpdateCompleted(plugIns, BugTrackerReportType.Automatic, product, file, theEvent); plugInContext.EventNoteAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, new BugTrackerNote()); plugInContext.CabAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, cab); plugInContext.CabUpdated(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, cab); plugInContext.CabNoteAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, cab, new BugTrackerNote()); fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("0", diagnostics["ProductAddedCount"]); Assert.AreEqual("0", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("0", diagnostics["FileAddedCount"]); Assert.AreEqual("0", diagnostics["FileUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventAddedCount"]); Assert.AreEqual("0", diagnostics["EventCompleteCount"]); Assert.AreEqual("0", diagnostics["EventUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("0", diagnostics["CabAddedCount"]); Assert.AreEqual("0", diagnostics["CabUpdatedCount"]); Assert.AreEqual("0", diagnostics["CabNoteAddedCount"]); } finally { BugTrackerTrace.LogMessageHook -= new EventHandler <BugTrackerTraceEventArgs>(LogPlugInEvent); } }
public void InvokeEachMethodSpecifyCorrectPlugIn() { StackHashBugTrackerPlugInSelectionCollection plugIns = new StackHashBugTrackerPlugInSelectionCollection(); plugIns.Add(new StackHashBugTrackerPlugInSelection("TestPlugIn")); String dllLocation = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location); String[] folders = { dllLocation }; BugTrackerManager manager = new BugTrackerManager(folders); StackHashBugTrackerPlugInSettings plugInSettings = new StackHashBugTrackerPlugInSettings(); plugInSettings.PlugInSettings = new StackHashBugTrackerPlugInCollection(); plugInSettings.PlugInSettings.Add(new StackHashBugTrackerPlugIn()); plugInSettings.PlugInSettings[0].Name = "TestPlugIn"; plugInSettings.PlugInSettings[0].Enabled = true; BugTrackerContext plugInContext = new BugTrackerContext(manager, plugInSettings); Assert.AreEqual(true, manager.NumberOfPlugIns >= 1); StackHashBugTrackerPlugInDiagnosticsCollection fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); NameValueCollection diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("0", diagnostics["ProductAddedCount"]); Assert.AreEqual("0", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("0", diagnostics["FileAddedCount"]); Assert.AreEqual("0", diagnostics["FileUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventAddedCount"]); Assert.AreEqual("0", diagnostics["EventUpdatedCount"]); Assert.AreEqual("0", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("0", diagnostics["CabAddedCount"]); Assert.AreEqual("0", diagnostics["CabUpdatedCount"]); Assert.AreEqual("0", diagnostics["CabNoteAddedCount"]); BugTrackerProduct product = new BugTrackerProduct("Name", "Version", 1); BugTrackerFile file = new BugTrackerFile("FileName", "FileVersion", 2); BugTrackerEvent theEvent = new BugTrackerEvent("BugRef", "PlugInBugRef", 1, "EventTypeName", 1, new NameValueCollection()); BugTrackerCab cab = new BugTrackerCab(1, 100, false, false, new NameValueCollection(), "c:\\test.cab"); plugInContext.ProductAdded(plugIns, BugTrackerReportType.Automatic, product); plugInContext.ProductUpdated(plugIns, BugTrackerReportType.Automatic, product); plugInContext.FileAdded(plugIns, BugTrackerReportType.Automatic, product, file); plugInContext.FileUpdated(plugIns, BugTrackerReportType.Automatic, product, file); plugInContext.EventAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent); plugInContext.EventUpdated(plugIns, BugTrackerReportType.Automatic, product, file, theEvent); plugInContext.EventManualUpdateCompleted(plugIns, BugTrackerReportType.Automatic, product, file, theEvent); plugInContext.EventNoteAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, new BugTrackerNote()); plugInContext.CabAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, cab); plugInContext.CabUpdated(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, cab); plugInContext.CabNoteAdded(plugIns, BugTrackerReportType.Automatic, product, file, theEvent, cab, new BugTrackerNote()); fullDiagnostics = plugInContext.GetContextDiagnostics("TestPlugIn"); Assert.AreEqual(1, fullDiagnostics.Count); diagnostics = fullDiagnostics[0].Diagnostics.ToNameValueCollection(); Assert.AreEqual("1", diagnostics["ProductAddedCount"]); Assert.AreEqual("1", diagnostics["ProductUpdatedCount"]); Assert.AreEqual("1", diagnostics["FileAddedCount"]); Assert.AreEqual("1", diagnostics["FileUpdatedCount"]); Assert.AreEqual("1", diagnostics["EventAddedCount"]); Assert.AreEqual("1", diagnostics["EventCompleteCount"]); Assert.AreEqual("1", diagnostics["EventUpdatedCount"]); Assert.AreEqual("1", diagnostics["EventNoteAddedCount"]); Assert.AreEqual("1", diagnostics["CabAddedCount"]); Assert.AreEqual("1", diagnostics["CabUpdatedCount"]); Assert.AreEqual("1", diagnostics["CabNoteAddedCount"]); }