public void TestRegistraEvento() { Stazione stazione = new Stazione { Nome = "BolognaA1", Locazione = "Bologna", IndirizzoDiRete = IPAddress.Parse("10.56.77.233"), Porta = 5555, ImprontaChiavePubblica = "aksjdada8s7d8a6da78sdEEeewrR" }; Assert.IsTrue(gestioneStazioniController.Registra(stazione)); EventoSismico evento = new EventoSismico { Messaggio = "Magnitudo superata", Priorita = Priorita.Fatal, Stazione = stazione, Tag = "Magnitudo", Timestamp = 1234 }; Assert.IsTrue(storicoController.RegistraEvento(evento)); // Verifico che sia stato salvato correttamente IEventoSismico evnt = storicoController.ListaEventi()[0]; Assert.AreEqual(evento, evnt); Assert.AreEqual(evnt.Stazione, stazione); }
public override void Analizza(int[] buffer) { // Trovo il tempo attuale long tempoAttuale = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; // Trova il massimo elemento int max = -1; for (int i = 0; i < buffer.Length; i++) { if (buffer[i] > max) { max = buffer[i]; } } if (max > SogliaPicco && (tempoAttuale - TempoUltimoPicco) > TempoDistanzaMinimo) { codaPicchi.Enqueue(tempoAttuale); TempoUltimoPicco = tempoAttuale; } // Conto i picchi e dimensiono la coda if (codaPicchi.Count > 0 && (tempoAttuale - codaPicchi.Peek()) > TempoAnalisi) { codaPicchi.Dequeue(); } int valoreFrequenza = codaPicchi.Count; // Verifico se il massimo supera una soglia int indiceSoglia = -1; for (int i = 0; i < Soglie.Length; i++) { if (valoreFrequenza > Soglie[i]) { indiceSoglia = i; } } // Se la supera, creo un evento if (indiceSoglia >= 0) { EventoSismico evento = new EventoSismico { Messaggio = "Frequenza ha superato: " + valoreFrequenza, Priorita = (Priorita)indiceSoglia, Stazione = Stazione, Tag = "Frequenta", Timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds() }; GestoreEventi.NotificaEventoAsync(evento); } // Notifica il risultato RicevitoriRisultato?.Invoke(valoreFrequenza); }
public void TestEventId() { EventoSismico e = createMockEvent(); Assert.AreEqual(e.Id, -1); e.Id = 12345; Assert.AreEqual(e.Id, 12345); }
public void TestLeggiEventiConFiltra() { Stazione stazione = new Stazione { Nome = "BolognaA1", Locazione = "Bologna", IndirizzoDiRete = IPAddress.Parse("10.56.77.233"), Porta = 5555, ImprontaChiavePubblica = "aksjdada8s7d8a6da78sdEEeewrR" }; Assert.IsTrue(gestioneStazioniController.Registra(stazione)); EventoSismico evento = new EventoSismico { Messaggio = "Magnitudo superata", Priorita = Priorita.Fatal, Stazione = stazione, Tag = "Magnitudo", Timestamp = 1234 }; Assert.IsTrue(storicoController.RegistraEvento(evento)); EventoSismico evento2 = new EventoSismico { Messaggio = "Frequenza superata", Priorita = Priorita.Info, Stazione = stazione, Tag = "Frequenza", Timestamp = 1235 }; Assert.IsTrue(storicoController.RegistraEvento(evento2)); Assert.AreEqual(storicoController.ListaEventi(new List <IFiltroEvento> { new FiltroCerca("quenza") }).Count, 1); Assert.AreEqual(storicoController.ListaEventi(new List <IFiltroEvento> { new FiltroCerca("superata") }).Count, 2); Assert.AreEqual(storicoController.ListaEventi(new List <IFiltroEvento> { new FiltroCerca("superata"), new FiltroPriorita(Priorita.Fatal) }).Count, 1); Assert.AreEqual(storicoController.ListaEventi(new List <IFiltroEvento> { new FiltroIntervalloDiTempo(10, 1300) }).Count, 2); Assert.AreEqual(storicoController.ListaEventi(new List <IFiltroEvento> { new FiltroTag("Magnitudo") }).Count, 1); }
public override void Analizza(int[] buffer) { long tempoAttuale = DateTime.Now.Ticks / TimeSpan.TicksPerMillisecond; // Trova il massimo elemento int max = -1; for (int i = 0; i < buffer.Length; i++) { if (buffer[i] > max) { max = buffer[i]; } } // Converto in magnitudo double valoreMagnitudine = Math.Abs(max - 500) / 50f; // Verifico se il massimo supera una soglia int indiceSoglia = -1; for (int i = 0; i < Soglie.Length; i++) { if (valoreMagnitudine > Soglie[i]) { indiceSoglia = i; } } // Se la supera, creo un evento if (indiceSoglia >= 0 && (tempoAttuale - _tempoUltimoAvviso) > DistanzaMinimaTraAvvisi) { EventoSismico evento = new EventoSismico { Messaggio = "Magnitudo ha superato: " + valoreMagnitudine, Priorita = (Priorita)indiceSoglia, Stazione = Stazione, Tag = "Magnitudo", Timestamp = DateTimeOffset.UtcNow.ToUnixTimeSeconds() }; GestoreEventi.NotificaEventoAsync(evento); _tempoUltimoAvviso = tempoAttuale; } // Notifica il risultato RicevitoriRisultato?.Invoke(valoreMagnitudine); }
public void TestListaEventi() { Stazione stazione = new Stazione { Nome = "BolognaA1", Locazione = "Bologna", IndirizzoDiRete = IPAddress.Parse("10.56.77.233"), Porta = 5555, ImprontaChiavePubblica = "aksjdada8s7d8a6da78sdEEeewrR" }; Assert.IsTrue(gestioneStazioniController.Registra(stazione)); EventoSismico evento = new EventoSismico { Messaggio = "Magnitudo superata", Priorita = Priorita.Fatal, Stazione = stazione, Tag = "Magnitudo", Timestamp = 1234 }; Assert.IsTrue(storicoController.RegistraEvento(evento)); EventoSismico evento2 = new EventoSismico { Messaggio = "Frequenza superata", Priorita = Priorita.Info, Stazione = stazione, Tag = "Frequenza", Timestamp = 1235 }; Assert.IsTrue(storicoController.RegistraEvento(evento2)); IList <IEventoSismico> eventi = storicoController.ListaEventi(); Assert.AreEqual(eventi[0], evento); Assert.AreEqual(eventi[1], evento2); }
public void TestEventManager() { EventoSismico e = EventoSismicoTest.createMockEvent(); // Create a mock EventoSismico Repository Mock <IStoricoController> eventRepository = new Mock <IStoricoController>(); GestoreEventi gestoreEventi = new GestoreEventi(eventRepository.Object); // Register two event receivers and make sure they are all called bool firstReceived = false; bool secondReceived = false; gestoreEventi.RicevitoriEventoSismico += (evnt) => { // Make sure the received Assert.AreEqual(e, evnt); firstReceived = true; }; gestoreEventi.RicevitoriEventoSismico += (evnt) => { // Make sure the received Assert.AreEqual(e, evnt); secondReceived = true; }; // Register the event gestoreEventi.NotificaEvento(e); Assert.IsTrue(firstReceived); Assert.IsTrue(secondReceived); // Check if the event controller has been called eventRepository.Verify(x => x.RegistraEvento(e), Times.Once()); }
static void Main() { // Inizializzo il sensore ISensore sensore = new MockSensore(); //ISensore sensore = new SensoreSeriale("COM10", 74880); //sensore.RicevitoriDatiSensore += dati => Console.WriteLine(String.Join(",", dati)); // Creo il thread del sensore e lo avvio Thread threadSensore = new Thread(() => sensore.CicloPrincipale()); threadSensore.Name = "Thread Sensore"; threadSensore.Start(); IGestioneStazioniController stazioniController = new GestioneStazioniController(PERCORSO_DATABASE); Stazione stazione = new Stazione { Nome = "BolognaA1", Locazione = "Bologna", IndirizzoDiRete = IPAddress.Parse("127.0.0.1"), Porta = 8001, ImprontaChiavePubblica = "E2C9153221FE658AFDCEBE095EE5D2392AF8C4AE" }; /* * // Inizializzo il gestore delle stazioni * * IGestioneStazioniController stazioniController = new GestioneStazioniController(PERCORSO_DATABASE); * stazioniController.Registra(stazione); * * stazione.Nome = "ReggioEmiliaA1"; * stazione.Locazione = "Reggio Emilia"; * stazione.IndirizzoDiRete = IPAddress.Parse("10.1.45.230"); * stazione.Porta = 5555; * * stazioniController.Registra(stazione);*/ // Inizializzo il gestore utenti IGestioneUtentiController gestioneUtentiController = new GestioneUtentiController(PERCORSO_DATABASE); AutenticazioneController autenticazioneController = new AutenticazioneController(gestioneUtentiController); // Aggiungo l'utente tizio Utente utente = new UtenteNormale { Nome = "tizio", Cognome = "caio", Email = "*****@*****.**", LoginRemoto = true, Username = "******" }; utente.ImpostaPasswordDaOriginale("password"); if (gestioneUtentiController.ValidaCredenziali("tizio", "password") == null) { gestioneUtentiController.Registra(utente); } EventoSismico evento = new EventoSismico { Messaggio = "Frequenza", Priorita = Priorita.Fatal, Stazione = stazione, Tag = "Frequenza", Timestamp = 1234 }; IStoricoController storicoController = new StoricoController(PERCORSO_DATABASE); storicoController.RegistraEvento(evento); GestoreEventi gestoreEventi = new GestoreEventi(storicoController); gestoreEventi.RicevitoriEventoSismico += sismico => Console.WriteLine(sismico); // Avvio il server della stazione ServerStazione server = new ServerStazione(sensore, gestioneUtentiController, Sismio.CertificatoResource.certificato, "passwordsismio"); server.IndirizzoServer = "127.0.0.1"; // TODO: cambiare con il proprio locale ( tipo 192.168.1.105 ) server.Avvia(); CreatoreConnessioni creatore = new CreatoreConnessioni(stazioniController); SorgenteFactory factory = new SorgenteFactory(creatore, sensore, gestoreEventi); Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Form loginForm = new Login(autenticazioneController, gestioneUtentiController, stazioniController, storicoController, factory, gestoreEventi); Application.Run(loginForm); }