public void ProcessConversations_PathFileOk_DoesNotThrowAndMatchesAllAssets() { #region Mocks MockRepository mockRepository = new MockRepository(MockBehavior.Default) { DefaultValue = DefaultValue.Empty }; Mock <IFileManager> fileManagerMock = mockRepository.Create <IFileManager>(); Mock <IUnscoredEmptyModelsService> unscoredEmptyModelsServiceMock = mockRepository.Create <IUnscoredEmptyModelsService>(); Mock <IScoreCalculatorService> scoreCalculatorServiceMock = mockRepository.Create <IScoreCalculatorService>(); var linesMock = GetLinesMock(); var conversationDataModelsMock = GetConversationDataModelsMock(); #endregion #region setup fileManagerMock.Setup(fm => fm.ReadLines(It.IsAny <string>())).Returns(linesMock); unscoredEmptyModelsServiceMock.Setup(ue => ue.GetNotScoredConversationModels(It.IsAny <string[]>(), It.IsAny <string>())).Returns(conversationDataModelsMock); scoreCalculatorServiceMock.Setup(sc => sc.RateConversations(It.IsAny <List <ConversationDataModel> >(), It.IsAny <string>(), It.IsAny <List <string> >(), It.IsAny <string>())).Returns(conversationDataModelsMock); var sut = new ConversationProcessor(fileManagerMock.Object, unscoredEmptyModelsServiceMock.Object, scoreCalculatorServiceMock.Object); #endregion #region Asserts NUnit.Framework.Assert.DoesNotThrow(() => sut.ProcessConversations()); fileManagerMock.Verify(fm => fm.ReadLines(It.IsAny <string>()), Times.Once); unscoredEmptyModelsServiceMock.Verify(ue => ue.GetNotScoredConversationModels(It.IsAny <string[]>(), It.IsAny <string>()), Times.Once); scoreCalculatorServiceMock.Verify(sc => sc.RateConversations(It.IsAny <List <ConversationDataModel> >(), It.IsAny <string>(), It.IsAny <List <string> >(), It.IsAny <string>()), Times.Once); #endregion }
public void ExportConversation(ConversationExporterConfiguration configuration) { Conversation = ConversationProcessor.ReadConversation(configuration.InputFilePath); if (configuration.FilterType == "IdFiltering") { Conversation = ConversationProcessor.FilterByID(Conversation); } else if (configuration.FilterType == "KeywordFiltering") { Conversation = ConversationProcessor.FilterByKeyword(Conversation); } Conversation = ConversationProcessor.CheckBlackListWithPath("blacklist.txt", Conversation); Conversation = ConversationProcessor.HidePhoneNumbers(Conversation); Conversation = ConversationProcessor.HideCreditCardNumbers(Conversation); ConversationWriter writer = ConversationProcessor.WriteConversation(Conversation, configuration.OutputFilePath); if (writer.Successful) { Console.WriteLine($"Conversation exported from {configuration.InputFilePath} to {configuration.OutputFilePath}"); } }
public void TestGroupConversationsInWindow() { var sw = new Stopwatch(); sw.Start(); var table = OpenTable(); Console.WriteLine($"--- LOADED --- [{sw.Elapsed}]"); var firstPacketTime = DateTimeOffset.FromUnixTimeSeconds(table.FrameKeys.First().Epoch); var lastPacketTime = DateTimeOffset.FromUnixTimeSeconds(table.FrameKeys.Last().Epoch); // create 10 windows var windowSpan = (lastPacketTime - firstPacketTime) / 10; var windows = table.Conversations.GroupByWindow(firstPacketTime.DateTime, windowSpan); var processor = ConversationProcessor.FromFunction((key, frames) => $"{key} : {frames.Count()}"); foreach (var win in windows) { Console.WriteLine($"{win.Key} - {win.Key + windowSpan}:"); var conversations = table.ProcessConversations(win, processor.ApplyToWindow(win.Key, windowSpan)); foreach (var c in conversations) { Console.WriteLine($" {c}"); } } }
private static int RunConversation(ConversationOptions options) { _log = LogFactory.Build(options.Verbose); _log.Info("Processing Conversations"); // Validate options DateTime start, end; try { start = options.StartTime ?? DateTime.UtcNow.AddMinutes(-15); end = options.EndTime ?? DateTime.UtcNow.AddMinutes(1); } catch (Exception e) { _log.Error(e.Message); return(1); } // Initialise connection var client = new FacebookClient(options.PageToken) { Version = "v2.10" }; FacebookPageDetails page; try { page = client.Get <FacebookPageDetails>("me"); _log.Info($"Connected: {page.id} ({page.name})"); } catch (FacebookOAuthException fbex) { _log.Error($"Cannot connect: {fbex.Message}"); return(1); } catch (Exception e) { _log.Error($"Something went wrong! {e.Message}"); return(1); } // Process try { var processor = new ConversationProcessor(_log, client, page, start, end, options); processor.Process(); } catch (Exception e) { _log.Error("Error during processing", e); return(1); } return(0); }