Example #1
0
        public void RecordMetrics()
        {
            var sequence = new SymbolStoreSequence(Substitute.For <IBinaryFileUtil>());

            for (int i = 0; i < 4; ++i)
            {
                sequence.AddStore(Substitute.For <IFlatSymbolStore>());
            }
            for (int i = 0; i < 3; ++i)
            {
                sequence.AddStore(Substitute.For <IStructuredSymbolStore>());
            }
            for (int i = 0; i < 2; ++i)
            {
                sequence.AddStore(Substitute.For <IHttpSymbolStore>());
            }
            sequence.AddStore(Substitute.For <IStadiaSymbolStore>());

            mockSymbolPathParser = Substitute.For <SymbolPathParser>();
            mockSymbolPathParser.Parse(SEARCH_PATHS).Returns(sequence);
            moduleFileFinder = new ModuleFileFinder(mockSymbolPathParser);

            var data = new LoadSymbolData();

            moduleFileFinder.SetSearchPaths(SEARCH_PATHS);
            moduleFileFinder.RecordMetrics(data);

            Assert.AreEqual(4, data.FlatSymbolStoresCount);
            Assert.AreEqual(3, data.StructuredSymbolStoresCount);
            Assert.AreEqual(2, data.HttpSymbolStoresCount);
            Assert.AreEqual(1, data.StadiaSymbolStoresCount);
        }
        public void Parse_EmptyPathElements()
        {
            var store = pathParser.Parse(";;");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);

            AssertEqualStores(expected, store);
        }
        public void Parse_StadiaStore_NoDefaultCache()
        {
            var store = pathParser.Parse(STADIA_STORE);

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);

            AssertEqualStores(expected, store);
        }
Example #4
0
        public void DeepEquals_NoStores()
        {
            var sequenceA = new SymbolStoreSequence(fakeBinaryFileUtil);
            var sequenceB = new SymbolStoreSequence(fakeBinaryFileUtil);

            Assert.True(sequenceA.DeepEquals(sequenceB));
            Assert.True(sequenceB.DeepEquals(sequenceA));
        }
        public void Parse_StructuredStore()
        {
            var store = pathParser.Parse(INITIALIZED_STORE);

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);

            expected.AddStore(new StructuredSymbolStore(fakeFileSystem, INITIALIZED_STORE));
            AssertEqualStores(expected, store);
        }
        public void Parse_FlatStore()
        {
            var store = pathParser.Parse(FLAT_STORE);

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);

            expected.AddStore(new FlatSymbolStore(fakeFileSystem, fakeBinaryFileUtil, FLAT_STORE));
            AssertEqualStores(expected, store);
        }
        public void Parse_NoDefaultCache()
        {
            var store = pathParser.Parse($"cache*");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var cache    = new SymbolServer(isCache: true);

            expected.AddStore(cache);
            AssertEqualStores(expected, store);
        }
        public void Parse_NoDefaultStore()
        {
            var store = pathParser.Parse($"srv*");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
        public void Parse_EmptySymSrv()
        {
            var store = pathParser.Parse("symsrv*symsrv.dll*");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
Example #10
0
        public override void SetUp()
        {
            base.SetUp();

            storeSequence = new SymbolStoreSequence(fakeBinaryFileUtil);

            cacheA = new StructuredSymbolStore(fakeFileSystem, CACHE_A_PATH, isCache: true);
            cacheB = new StructuredSymbolStore(fakeFileSystem, CACHE_B_PATH, isCache: true);
            storeA = new StructuredSymbolStore(fakeFileSystem, STORE_A_PATH);
            storeB = new StructuredSymbolStore(fakeFileSystem, STORE_B_PATH);
        }
        public void Parse_Cache()
        {
            var store = pathParser.Parse($"cache*{CACHE_A}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var cache    = new SymbolServer(isCache: true);

            cache.AddStore(new StructuredSymbolStore(fakeFileSystem, CACHE_A));
            expected.AddStore(cache);
            AssertEqualStores(expected, store);
        }
Example #12
0
        public void DeepEquals_StoresNotEquals()
        {
            var sequenceA = new SymbolStoreSequence(fakeBinaryFileUtil);

            sequenceA.AddStore(storeA);
            var sequenceB = new SymbolStoreSequence(fakeBinaryFileUtil);

            sequenceB.AddStore(storeB);

            Assert.False(sequenceA.DeepEquals(sequenceB));
            Assert.False(sequenceB.DeepEquals(sequenceA));
        }
        public void Parse_HttpStore_Excluded()
        {
            pathParser =
                new SymbolPathParser(fakeFileSystem, fakeBinaryFileUtil, httpClient,
                                     crashReportClient, null, null, new string[] { "example.com" });

            var store = pathParser.Parse(HTTP_STORE);

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);

            AssertEqualStores(expected, store);
        }
        public void Parse_SrvWithStadiaStore()
        {
            var store = pathParser.Parse($"srv*{STORE_A}*{STADIA_STORE}");

            // Stadia store not supported in symsrv configuration.
            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_A));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
        public void Parse_SymSrv()
        {
            var store = pathParser.Parse($"symsrv*symsrv.dll*{STORE_A}*{STORE_B}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_A));
            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_B));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
        public void Parse_SrvWithHttpStore()
        {
            var store = pathParser.Parse($"srv*{STORE_A}*{HTTP_STORE}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_A));
            server.AddStore(new HttpSymbolStore(fakeFileSystem, httpClient, HTTP_STORE));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
Example #17
0
        public void GetAllStores()
        {
            storeSequence.AddStore(storeA);
            storeSequence.AddStore(cacheA);
            var subStoreSequence = new SymbolStoreSequence(fakeBinaryFileUtil);

            subStoreSequence.AddStore(storeB);
            storeSequence.AddStore(subStoreSequence);

            CollectionAssert.AreEqual(
                new[] { storeSequence, storeA, cacheA, subStoreSequence, storeB },
                storeSequence.GetAllStores());
        }
        public void Parse_UnsupportedSymSrv()
        {
            var logSpy = new LogSpy();

            logSpy.Attach();

            var store = pathParser.Parse("symsrv*unsupported.dll*");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);

            AssertEqualStores(expected, store);
            StringAssert.Contains(Strings.UnsupportedSymbolServer("unsupported.dll"),
                                  logSpy.GetOutput());
        }
        public void Parse_DownstreamHttpStore()
        {
            var store = pathParser.Parse($"srv*{STORE_A}*{HTTP_STORE}*{STORE_B}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_A));
            server.AddStore(new HttpSymbolStore(fakeFileSystem, httpClient, HTTP_STORE));
            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_B));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
            StringAssert.Contains("Warning", logSpy.GetOutput());
        }
        public void Parse_DefaultCache()
        {
            pathParser = new SymbolPathParser(fakeFileSystem, fakeBinaryFileUtil, httpClient,
                                              crashReportClient, DEFAULT_CACHE, null);

            var store = pathParser.Parse($"cache*");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var cache    = new SymbolServer(isCache: true);

            cache.AddStore(new StructuredSymbolStore(fakeFileSystem, DEFAULT_CACHE));
            expected.AddStore(cache);
            AssertEqualStores(expected, store);
        }
        public void Parse_DefaultStore()
        {
            pathParser = new SymbolPathParser(fakeFileSystem, fakeBinaryFileUtil, httpClient,
                                              crashReportClient, null, DEFAULT_STORE);

            var store = pathParser.Parse($"srv*");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var server   = new SymbolServer(isCache: false);

            server.AddStore(new StructuredSymbolStore(fakeFileSystem, DEFAULT_STORE));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
        public void Parse_StadiaStore_ExplicitCache()
        {
            var store = pathParser.Parse($"cache*{CACHE_A};{STADIA_STORE}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var cache    = new SymbolServer(isCache: true);

            cache.AddStore(new StructuredSymbolStore(fakeFileSystem, CACHE_A));
            expected.AddStore(cache);
            var server = new SymbolServer(isCache: false);

            server.AddStore(new StadiaSymbolStore(fakeFileSystem, httpClient, crashReportClient));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }
        public void Parse_CacheWithHttpStore()
        {
            pathParser = new SymbolPathParser(fakeFileSystem, fakeBinaryFileUtil, httpClient,
                                              crashReportClient, DEFAULT_CACHE, null);

            var store = pathParser.Parse($"cache*{HTTP_STORE}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var cache    = new SymbolServer(isCache: true);

            cache.AddStore(new StructuredSymbolStore(fakeFileSystem, DEFAULT_CACHE));
            cache.AddStore(new HttpSymbolStore(fakeFileSystem, httpClient, HTTP_STORE));
            expected.AddStore(cache);
            AssertEqualStores(expected, store);
            StringAssert.Contains("Warning", logSpy.GetOutput());
        }
        public void Parse_MultipleElements()
        {
            var store = pathParser.Parse(
                $"cache*{CACHE_A};{FLAT_STORE};{INITIALIZED_STORE};srv*{STORE_A}*{STORE_B}");

            var expected = new SymbolStoreSequence(fakeBinaryFileUtil);
            var cache    = new SymbolServer(isCache: true);

            cache.AddStore(new StructuredSymbolStore(fakeFileSystem, CACHE_A));
            expected.AddStore(cache);
            expected.AddStore(new FlatSymbolStore(fakeFileSystem, fakeBinaryFileUtil, FLAT_STORE));
            expected.AddStore(new StructuredSymbolStore(fakeFileSystem, INITIALIZED_STORE));
            var server = new SymbolServer(isCache: false);

            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_A));
            server.AddStore(new StructuredSymbolStore(fakeFileSystem, STORE_B));
            expected.AddStore(server);
            AssertEqualStores(expected, store);
        }