Ejemplo n.º 1
0
        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, "");
        }
Ejemplo n.º 2
0
        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));
        }
Ejemplo n.º 3
0
        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);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        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));
        }
Ejemplo n.º 7
0
        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));
                }
            }
        }
Ejemplo n.º 8
0
        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));
        }
Ejemplo n.º 9
0
        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);
        }