public void StreamDataSourceSearch()
        {
            Helper.PrintMem();

            var dest = Path.Combine(AppContext.BaseDirectory, "ip.dat");

            if (!File.Exists(dest))
            {
                var filename = Path.Combine(AppContext.BaseDirectory, "ip.txt");

                using (var fs = File.Create(dest))
                {
                    IpSearcherFactory.Generate(Helper.GetIPList(filename).ToArray(), fs);
                }
            }

            var dataSource = new StreamDataSource(dest);

            var searcher = IpSearcherFactory.GetSearcher(dataSource);

            //预热
            searcher.Search(IpLocationHelper.IPv4ToInteger("14.123.238.167"));

            uint ip = IpLocationHelper.IPv4ToInteger("116.19.114.15");

            Helper.Time("单条查询", () =>
            {
                searcher.Search(ip);
            });

            int count = 20000;

            Helper.Time("批量查询", () =>
            {
                searcher.Search(ip);
            }, count);

            Helper.TimeWithParallel("并发查询", () =>
            {
                searcher.Search(ip);
            }, count);

            Helper.TimeWithThread("多线程查询", () =>
            {
                searcher.Search(ip);
            }, 4, count);
        }
示例#2
0
        public void Check_ALL_Match()
        {
            var filename = Path.Combine(AppContext.BaseDirectory, "ip.txt");
            var dest     = Path.Combine(AppContext.BaseDirectory, "ip2.dat");
            var data     = Helper.GetIPList(filename).ToArray();

            using (var fs = File.Create(dest))
            {
                IpSearcherFactory.Generate(Helper.GetIPList(filename).ToArray(), fs);
            }

            var dataSource = new MemoryDataSource(dest);

            var searcher = IpSearcherFactory.GetSearcher(dataSource);

            IpLocation result;

            foreach (var info in data)
            {
                result = searcher.Search(info.MinIP);

                if (info.Country != result.Country)
                {
                    var a = 123;
                }

                Assert.Equal(info.Country, result.Country ?? string.Empty);
                //Assert.Equal(info.Province, result.Province ?? string.Empty);
                //Assert.Equal(info.City, result.City ?? string.Empty);

                //if (info.Isp == "内网IP")
                //{
                //    Assert.Equal("保留地址", result.Isp ?? string.Empty);
                //}
                //else
                //{
                //    Assert.Equal(info.Isp, result.Isp ?? string.Empty);
                //}
            }

            dataSource.Dispose();
        }
示例#3
0
        public void Writer_And_Reader()
        {
            var filename = Path.Combine(AppContext.BaseDirectory, "ip.txt");
            var dest     = Path.Combine(AppContext.BaseDirectory, "ip.dat");

            using (var fs = File.Create(dest))
            {
                IpSearcherFactory.Generate(Helper.GetIPList(filename).ToArray(), fs);
            }

            var dataSource = new StreamDataSource(dest);

            var searcher = IpSearcherFactory.GetSearcher(dataSource);

            var result = searcher.Search(IpLocationHelper.IPv4ToInteger("14.123.238.167"));

            Assert.NotNull(result);
            Assert.Equal("广东省", result.Province);

            dataSource.Dispose();
        }