private async Task TestLoadSignalSimple(Type signalType, string expectedTitle = "test test test") { ISmartSignalLoader loader = new SmartSignalLoader(this.tracerMock.Object); SmartSignalManifest manifest = new SmartSignalManifest("3", "simple", "description", Version.Parse("1.0"), signalType.Assembly.GetName().Name, signalType.FullName, new List <ResourceType>() { ResourceType.Subscription }, new List <int> { 60 }); SmartSignalPackage package = new SmartSignalPackage(manifest, this.assemblies["3"]); ISmartSignal signal = loader.LoadSignal(package); Assert.IsNotNull(signal, "Signal is NULL"); var resource = new ResourceIdentifier(ResourceType.VirtualMachine, "someSubscription", "someGroup", "someVM"); var analysisRequest = new AnalysisRequest( new List <ResourceIdentifier> { resource }, DateTime.UtcNow.AddDays(-1), TimeSpan.FromDays(1), new Mock <IAnalysisServicesFactory>().Object); SmartSignalResult signalResult = await signal.AnalyzeResourcesAsync(analysisRequest, this.tracerMock.Object, default(CancellationToken)); Assert.AreEqual(1, signalResult.ResultItems.Count, "Incorrect number of result items returned"); Assert.AreEqual(expectedTitle, signalResult.ResultItems.Single().Title, "Result item title is wrong"); Assert.AreEqual(resource, signalResult.ResultItems.Single().ResourceIdentifier, "Result item resource identifier is wrong"); }
/// <summary> /// Raises the <see cref="E:System.Windows.Application.Startup" /> event. /// </summary> /// <param name="e">A <see cref="T:System.Windows.StartupEventArgs" /> that contains the event data.</param> protected override void OnStartup(StartupEventArgs e) { ITracer stringTracer = new StringTracer(string.Empty); ITracer consoleTracer = new ConsoleTracer(string.Empty); var signalLoader = new SmartSignalLoader(consoleTracer); // *Temporary*: if package file path wasn't accepted, raise file selection window to allow package file selection. // This option should be removed before launching version for customers (bug for tracking: 1177247) string signalPackagePath = e.Args.Length != 1 ? this.GetSignalPackagePath() : Diagnostics.EnsureStringNotNullOrWhiteSpace(() => e.Args[0]); SmartSignalPackage signalPackage; using (var fileStream = new FileStream(signalPackagePath, FileMode.Open)) { signalPackage = SmartSignalPackage.CreateFromStream(fileStream, consoleTracer); } SmartSignalManifest signalManifest = signalPackage.Manifest; ISmartSignal signal = signalLoader.LoadSignal(signalPackage); // Authenticate the user to Active Directory var authenticationServices = new AuthenticationServices(); authenticationServices.AuthenticateUser(); ICredentialsFactory credentialsFactory = new ActiveDirectoryCredentialsFactory(authenticationServices); IAzureResourceManagerClient azureResourceManagerClient = new AzureResourceManagerClient(credentialsFactory, consoleTracer); // Create analysis service factory var queryRunInroProvider = new QueryRunInfoProvider(azureResourceManagerClient); var httpClientWrapper = new HttpClientWrapper(); IAnalysisServicesFactory analysisServicesFactory = new AnalysisServicesFactory(consoleTracer, httpClientWrapper, credentialsFactory, azureResourceManagerClient, queryRunInroProvider); var signalRunner = new SmartSignalRunner(signal, analysisServicesFactory, queryRunInroProvider, signalManifest, stringTracer); // Create a Unity container with all the required models and view models registrations Container = new UnityContainer(); Container .RegisterInstance(stringTracer) .RegisterInstance(new SignalsResultsRepository()) .RegisterInstance(authenticationServices) .RegisterInstance(azureResourceManagerClient) .RegisterInstance(signal) .RegisterInstance(signalManifest) .RegisterInstance(analysisServicesFactory) .RegisterInstance(signalRunner); }
private async Task TestLoadSignalFromDll(string signalId, string expectedTitle) { ISmartSignalLoader loader = new SmartSignalLoader(this.tracerMock.Object); SmartSignalPackage package = new SmartSignalPackage(this.manifests[signalId], this.assemblies[signalId]); ISmartSignal signal = loader.LoadSignal(package); Assert.IsNotNull(signal, "Signal is NULL"); var resource = new ResourceIdentifier(ResourceType.VirtualMachine, "someSubscription", "someGroup", "someVM"); var analysisRequest = new AnalysisRequest( new List <ResourceIdentifier> { resource }, DateTime.UtcNow.AddDays(-1), TimeSpan.FromDays(1), new Mock <IAnalysisServicesFactory>().Object); SmartSignalResult signalResult = await signal.AnalyzeResourcesAsync(analysisRequest, this.tracerMock.Object, default(CancellationToken)); Assert.AreEqual(1, signalResult.ResultItems.Count, "Incorrect number of result items returned"); Assert.AreEqual(expectedTitle, signalResult.ResultItems.Single().Title, "Result item title is wrong"); Assert.AreEqual(resource, signalResult.ResultItems.Single().ResourceIdentifier, "Result item resource identifier is wrong"); }