public void TestReplaceInvalidCoords() { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "GET /a1 HTTP/1.1\r\nHeader1: a1"; string firstResponse = "HTTP 200 OK\r\n<r>2</r><tag><r>3</r>"; tvf.AddRequestResponse(firstRequest, firstResponse); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.Full, true, @"a1|a=2|<r>\d</r>")); searcher.Search(tvf, criteriaSet, result); (tvf as TrafficViewerFile).Clear(false); Assert.AreEqual(0, tvf.RequestCount); string secondRequest = "GET /a2 HTTP/1.1\r\nHeader1: a2"; string secondResponse = "HTTP 200 OK\r\n<r>1</r>"; tvf.AddRequestResponse(secondRequest, secondResponse); Assert.AreEqual(1, tvf.RequestCount); //this should not cause an exception tvf.Replace(result, ""); }
public void TestLineSearchInRequestNoRegex() { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "GET /a1 HTTP/1.1\r\nHeader1: a1"; string secondRequest = "GET /a2 HTTP/1.1\r\nHeader1: a2"; tvf.AddRequestResponse(firstRequest, "HTTP 200 OK"); tvf.AddRequestResponse(secondRequest, "HTTP 200 OK"); Assert.AreEqual(2, tvf.RequestCount); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.Request, false, "a1")); searcher.Search(tvf, criteriaSet, result); Assert.AreEqual(2, result.Count); Assert.AreEqual(0, result[0].RequestId); Assert.AreEqual(0, result[1].RequestId); Assert.AreEqual(1, result[0].MatchCoordinatesList.Count); Assert.AreEqual(1, result[1].MatchCoordinatesList.Count); Assert.AreEqual("a1", firstRequest.Substring(result[0].MatchCoordinatesList[0].MatchPosition, result[0].MatchCoordinatesList[0].MatchLength)); Assert.AreEqual("a1", firstRequest.Substring(result[1].MatchCoordinatesList[0].MatchPosition, result[1].MatchCoordinatesList[0].MatchLength)); }
private static void ReplaceTest(string replacement) { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "GET /a1 HTTP/1.1\r\nHeader1: a1"; string secondRequest = "GET /a2 HTTP/1.1\r\nHeader1: a2"; string firstResponse = "HTTP 200 OK\r\n<r>1</r>"; string secondResponse = "HTTP 200 OK\r\n<r>2</r><tag><r>3</r>"; tvf.AddRequestResponse(firstRequest, firstResponse); tvf.AddRequestResponse(secondRequest, secondResponse); Assert.AreEqual(2, tvf.RequestCount); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.Full, true, @"a1|a=2|<r>\d</r>")); searcher.Search(tvf, criteriaSet, result); tvf.Replace(result, replacement); firstRequest = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(0)); secondRequest = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(1)); firstResponse = Constants.DefaultEncoding.GetString(tvf.LoadResponseData(0)); secondResponse = Constants.DefaultEncoding.GetString(tvf.LoadResponseData(1)); Assert.AreEqual("GET /" + replacement + " HTTP/1.1\r\nHeader1: " + replacement, firstRequest); Assert.AreEqual("HTTP 200 OK\r\n" + replacement + "<tag>" + replacement, secondResponse); }
public void TestRequestLineAfterReplace() { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "GET http://site.com/a1 HTTP/1.1\r\nHeader1: a1"; tvf.AddRequestResponse(firstRequest, String.Empty); TVRequestInfo reqInfo = tvf.GetRequestInfo(0); Assert.AreEqual("GET http://site.com/a1 HTTP/1.1", reqInfo.RequestLine); Assert.AreEqual(1, tvf.RequestCount); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.RequestLine, true, "a1|a=2|<r>2</r>")); searcher.Search(tvf, criteriaSet, result); tvf.Replace(result, "replacement"); firstRequest = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(0)); Assert.AreEqual("GET http://site.com/replacement HTTP/1.1\r\nHeader1: a1", firstRequest); Assert.AreEqual("GET http://site.com/replacement HTTP/1.1", reqInfo.RequestLine); }
public void TestLineSearchMultipleMatchesPerLineRegex() { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "POST /a1/a1 HTTP/1.1\r\nHeader1: a1\r\n\r\na=1"; string firstResponse = "HTTP 200 OK\r\n<r>1</r>"; tvf.AddRequestResponse(firstRequest, firstResponse); Assert.AreEqual(1, tvf.RequestCount); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.RequestLine, true, @"a\d")); searcher.Search(tvf, criteriaSet, result); Assert.AreEqual(1, result.Count); Assert.AreEqual(2, result[0].MatchCoordinatesList.Count); }
public void TestLineSearchInResponseRegex() { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "POST /a1 HTTP/1.1\r\nHeader1: a1\r\n\r\na=1"; string secondRequest = "POST /a2 HTTP/1.1\r\nHeader1: a2\r\n\r\na=2"; string firstResponse = "HTTP 200 OK\r\n<r>1</r>"; string secondResponse = "HTTP 200 OK\r\n<r>2</r>"; tvf.AddRequestResponse(firstRequest, firstResponse); tvf.AddRequestResponse(secondRequest, secondResponse); Assert.AreEqual(2, tvf.RequestCount); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.Response, true, @"<r>\d+</r>|a1")); searcher.Search(tvf, criteriaSet, result); Assert.AreEqual(2, result.Count); Assert.AreEqual(0, result[0].RequestId); Assert.AreEqual(SearchContext.Response, result[0].Context); Assert.AreEqual(1, result[0].MatchCoordinatesList.Count); Assert.AreEqual("<r>2</r>", secondResponse.Substring(result[1].MatchCoordinatesList[0].MatchPosition, result[1].MatchCoordinatesList[0].MatchLength)); }
private void StartSearch() { if (_boxSearchText.Text != String.Empty) { _matches = new LineMatches(); _buttonSearch.Enabled = false; _progressBar.Visible = true; this.Text = _boxSearchText.Text; //configure the search SearchContext context = (SearchContext)_dropType.SelectedIndex; TrafficViewerOptions.Instance.LastSearchType = _dropType.SelectedIndex; _searcher = new LineSearcher(); //clear the search caches SearchResultCache.Instance.Clear(); SearchSubsetsCache.Instance.Clear(); _criteriaSet = new SearchCriteriaSet(); _criteriaSet.DescriptionFilter = _boxDescriptionFilter.Text; string[] searchLines = _boxSearchText.Text.Split(new char[2] { '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries); _criteriaSet.Add(new TrafficViewerSDK.Search.SearchCriteria(context, _checkIsRegex.Checked, searchLines)); _last = 0; _list.Items.Clear(); //run the background worker _searchWorker.RunWorkerAsync(); //start the load timer _requestTimerStop = false; _timer.Start(); //invoke the event if (SearchExecuted != null) { SearchExecuted.Invoke(new SearchExecutedEventArgs(_boxSearchText.Text, _checkIsRegex.Checked)); } } }
public void TestLineSearchFullRegex() { TrafficViewer.Instance.NewTvf(); ITrafficDataAccessor tvf = TrafficViewer.Instance.TrafficViewerFile; string firstRequest = "POST /a1 HTTP/1.1\r\nHeader1: a1\r\n\r\na=1"; string secondRequest = "POST /a2 HTTP/1.1\r\nHeader1: a2\r\n\r\na=2"; string firstResponse = "HTTP 200 OK\r\n<r>1</r>"; string secondResponse = "HTTP 200 OK\r\n<r>2</r>"; tvf.AddRequestResponse(firstRequest, firstResponse); string testValue = Constants.DefaultEncoding.GetString(tvf.LoadRequestData(0)); Assert.AreEqual(firstRequest, testValue, "Incorrect first request"); testValue = Constants.DefaultEncoding.GetString(tvf.LoadResponseData(0)); Assert.AreEqual(firstResponse, testValue, "Incorrect first response"); tvf.AddRequestResponse(secondRequest, secondResponse); Assert.AreEqual(2, tvf.RequestCount, "Correct number of requests not added"); LineSearcher searcher = new LineSearcher(); LineMatches result = new LineMatches(); SearchCriteriaSet criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(SearchContext.Full, true, "a=1|<r>2</r>")); searcher.Search(tvf, criteriaSet, result); Assert.AreEqual(2, result.Count); Assert.AreEqual(0, result[0].RequestId); Assert.AreEqual(1, result[1].RequestId); Assert.AreEqual(SearchContext.Request, result[0].Context); Assert.AreEqual(SearchContext.Response, result[1].Context); Assert.AreEqual("a=1", firstRequest.Substring(result[0].MatchCoordinatesList[0].MatchPosition, result[0].MatchCoordinatesList[0].MatchLength)); Assert.AreEqual("<r>2</r>", secondResponse.Substring(result[1].MatchCoordinatesList[0].MatchPosition, result[1].MatchCoordinatesList[0].MatchLength)); }
private LineMatches SearchParameterValue(string paramValue) { SearchContext context = SearchContext.Response; var searcher = new LineSearcher(); //clear the search caches SearchResultCache.Instance.Clear(); SearchSubsetsCache.Instance.Clear(); var criteriaSet = new SearchCriteriaSet(); criteriaSet.Add(new SearchCriteria(context, true, "Content-Type: (text|application)")); criteriaSet.Add(new SearchCriteria(context, false, paramValue)); LineMatches results = new LineMatches(); searcher.Search(TrafficDataStore, criteriaSet, results); return(results); }