示例#1
0
        private HostServices()
        {
            _serviceProvider  = new ServiceProvider();
            _symbolService    = new SymbolService(this);
            _commandProcessor = new CommandProcessor(RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? ">!ext" : null);
            _commandProcessor.AddCommands(new Assembly[] { typeof(HostServices).Assembly });
            _commandProcessor.AddCommands(new Assembly[] { typeof(ClrMDHelper).Assembly });

            _serviceProvider.AddService <IHost>(this);
            _serviceProvider.AddService <ICommandService>(_commandProcessor);
            _serviceProvider.AddService <ISymbolService>(_symbolService);

            _hostWrapper = new HostWrapper(this);
            _hostWrapper.AddServiceWrapper(IID_IHostServices, this);
            _hostWrapper.AddServiceWrapper(SymbolServiceWrapper.IID_ISymbolService, () => new SymbolServiceWrapper(this));

            VTableBuilder builder = AddInterface(IID_IHostServices, validate: false);

            builder.AddMethod(new GetHostDelegate(GetHost));
            builder.AddMethod(new RegisterDebuggerServicesDelegate(RegisterDebuggerServices));
            builder.AddMethod(new CreateTargetDelegate(CreateTarget));
            builder.AddMethod(new UpdateTargetDelegate(UpdateTarget));
            builder.AddMethod(new FlushTargetDelegate(FlushTarget));
            builder.AddMethod(new DestroyTargetDelegate(DestroyTarget));
            builder.AddMethod(new DispatchCommandDelegate(DispatchCommand));
            builder.AddMethod(new DispatchCommandDelegate(DisplayHelp));
            builder.AddMethod(new UninitializeDelegate(Uninitialize));
            IHostServices = builder.Complete();

            AddRef();
        }
示例#2
0
        public void GetAllStocksName()
        {
            SymbolService stinfo = new SymbolService();
            List <string> result = stinfo.GetAllSymbolsName();

            Assert.IsFalse(result.Count == 0);
        }
示例#3
0
        public Analyzer()
        {
            LoggingCommand.Initialize();

            _serviceProvider = new ServiceProvider();
            _consoleProvider = new ConsoleService();
            _commandService  = new CommandService();
            _symbolService   = new SymbolService(this);
            _contextService  = new ContextService(this);

            _serviceProvider.AddService <IHost>(this);
            _serviceProvider.AddService <IConsoleService>(_consoleProvider);
            _serviceProvider.AddService <ICommandService>(_commandService);
            _serviceProvider.AddService <ISymbolService>(_symbolService);
            _serviceProvider.AddService <IContextService>(_contextService);
            _serviceProvider.AddServiceFactory <SOSLibrary>(() => SOSLibrary.Create(this));

            _contextService.ServiceProvider.AddServiceFactory <ClrMDHelper>(() => {
                ClrRuntime clrRuntime = _contextService.Services.GetService <ClrRuntime>();
                return(clrRuntime != null ? new ClrMDHelper(clrRuntime) : null);
            });

            _commandService.AddCommands(new Assembly[] { typeof(Analyzer).Assembly });
            _commandService.AddCommands(new Assembly[] { typeof(ClrMDHelper).Assembly });
            _commandService.AddCommands(new Assembly[] { typeof(SOSHost).Assembly });
            _commandService.AddCommands(typeof(HelpCommand), (services) => new HelpCommand(_commandService, services));
            _commandService.AddCommands(typeof(ExitCommand), (services) => new ExitCommand(_consoleProvider.Stop));
        }
示例#4
0
        public static string FormatSymbolStores(this SymbolService symbolService)
        {
            StringBuilder sb = new StringBuilder();

            symbolService.ForEachSymbolStore <Microsoft.SymbolStore.SymbolStores.SymbolStore>((symbolStore) => sb.AppendLine(symbolStore.ToString()));
            return(sb.ToString().Replace(Environment.NewLine, " ").TrimEnd());
        }
        public async Task ScriptIsProfitableOrNot()
        {
            //Get All Candles according to
            MAStrategy mAStrategy         = new MAStrategy();
            var        symbolService      = new SymbolService();
            var        userSessionService = new UserSessionService();
            var        symbol             = await symbolService.GetAsync(21108);

            var userSession = await userSessionService.GetCurrentSession();

            PositionTestModel positionTestModel = null;

            if (userSession != null)
            {
                var zeropdhaService = new ZerodhaBroker(new UserSessionModel()
                {
                    AccessToken = userSession.AccessToken,
                    ApiKey      = userSession.ApiKey,
                    AppSecret   = userSession.AppSecret,
                    PublicToken = userSession.PublicToken,
                    UserId      = userSession.UserId
                });
                var candles = zeropdhaService.GetData(
                    symbol, mAStrategy._HistoricalDataTimeframe,
                    DateTime.Now.AddDays(-7),
                    DateTime.Now.AddDays(-2), false);
                positionTestModel = GetProfitOfDay(symbol, candles);
            }
            Assert.IsTrue(positionTestModel.Profit > 1, "Symbol is Not Profitable");
        }
示例#6
0
        private string DownloadModule(string moduleName, uint timeStamp, uint sizeOfImage)
        {
            Assert.True(timeStamp != 0 && sizeOfImage != 0);
            SymbolStoreKey key = PEFileKeyGenerator.GetKey(moduleName, timeStamp, sizeOfImage);

            Assert.NotNull(key);
            string downloadedPath = SymbolService.DownloadFile(key);

            Assert.NotNull(downloadedPath);
            return(downloadedPath);
        }
示例#7
0
        public TestDump(TestConfiguration config)
            : base(config)
        {
            _serviceProvider = new ServiceProvider();
            _contextService  = new ContextService(this);
            _symbolService   = new SymbolService(this);
            _serviceProvider.AddService <IContextService>(_contextService);
            _serviceProvider.AddService <ISymbolService>(_symbolService);

            // Automatically enable symbol server support
            _symbolService.AddSymbolServer(msdl: true, symweb: false, timeoutInMinutes: 6, retryCount: 5);
            _symbolService.AddCachePath(_symbolService.DefaultSymbolCache);
        }
示例#8
0
 public override void Invoke()
 {
     if (Reset)
     {
         Target.Flush();
         WriteLine("Internal cached state reset");
     }
     else
     {
         Write(Target.ToString());
         Write(SymbolService.ToString());
     }
 }
示例#9
0
 public override void Invoke()
 {
     if (MicrosoftSymbolServer && InternalSymbolServer)
     {
         throw new DiagnosticsException("Cannot have both -ms and -mi options");
     }
     if ((MicrosoftSymbolServer || InternalSymbolServer) && !string.IsNullOrEmpty(SymbolServerUrl))
     {
         throw new DiagnosticsException("Cannot have -ms or -mi option and a symbol server path");
     }
     if (Disable)
     {
         SymbolService.DisableSymbolStore();
     }
     if (Reset)
     {
         SymbolService.Reset();
     }
     if (MicrosoftSymbolServer || InternalSymbolServer || !string.IsNullOrEmpty(SymbolServerUrl))
     {
         if (string.IsNullOrEmpty(Cache))
         {
             Cache = SymbolService.DefaultSymbolCache;
         }
         SymbolService.AddSymbolServer(MicrosoftSymbolServer, InternalSymbolServer, SymbolServerUrl, AccessToken, Timeout, RetryCount);
     }
     if (!string.IsNullOrEmpty(Cache))
     {
         SymbolService.AddCachePath(Cache);
     }
     if (!string.IsNullOrEmpty(Directory))
     {
         SymbolService.AddDirectoryPath(Directory);
     }
     if (LoadSymbols)
     {
         foreach (IModule module in ModuleService.EnumerateModules())
         {
             if (!module.IsManaged)
             {
                 Write($"Downloading symbol file for {module.FileName}");
                 string downloadedModulePath = module.LoadSymbols();
                 WriteLine(" {0}", downloadedModulePath != null ? "SUCCEEDED" : "FAILED");
             }
         }
     }
     else
     {
         Write(SymbolService.ToString());
     }
 }
示例#10
0
        public Analyzer()
        {
            _serviceProvider  = new ServiceProvider();
            _consoleProvider  = new ConsoleProvider();
            _commandProcessor = new CommandProcessor();
            _symbolService    = new SymbolService(this);

            _serviceProvider.AddService <IHost>(this);
            _serviceProvider.AddService <IConsoleService>(_consoleProvider);
            _serviceProvider.AddService <ICommandService>(_commandProcessor);
            _serviceProvider.AddService <ISymbolService>(_symbolService);

            _commandProcessor.AddCommands(new Assembly[] { typeof(Analyzer).Assembly });
            _commandProcessor.AddCommands(typeof(HelpCommand), (services) => new HelpCommand(_commandProcessor, services));
            _commandProcessor.AddCommands(typeof(ExitCommand), (services) => new ExitCommand(_consoleProvider.Stop));
        }
示例#11
0
        private string DownloadModule(string moduleName, byte[] buildId)
        {
            Assert.True(buildId.Length > 0);
            SymbolStoreKey key = null;
            OSPlatform     platform;

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                // This is the cross-DAC case when OpenVirtualProcess calls on a Linux/MacOS dump. Should never
                // get here for a Windows dump or for live sessions (RegisterForRuntimeStartup, etc).
                platform = _targetOS;
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
            {
                platform = OSPlatform.Linux;
            }
            else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
            {
                platform = OSPlatform.OSX;
            }
            else
            {
                throw new NotSupportedException($"OS not supported {RuntimeInformation.OSDescription}");
            }
            if (platform == OSPlatform.Linux)
            {
                key = ELFFileKeyGenerator.GetKeys(KeyTypeFlags.IdentityKey, moduleName, buildId, symbolFile: false, symbolFileName: null).SingleOrDefault();
            }
            else if (platform == OSPlatform.OSX)
            {
                key = MachOFileKeyGenerator.GetKeys(KeyTypeFlags.IdentityKey, moduleName, buildId, symbolFile: false, symbolFileName: null).SingleOrDefault();
            }
            Assert.NotNull(key);
            string downloadedPath = SymbolService.DownloadFile(key);

            Assert.NotNull(downloadedPath);
            return(downloadedPath);
        }
示例#12
0
        public void SymbolPathTests()
        {
            var symbolService = new SymbolService(this);

            Assert.False(symbolService.ParseSymbolPath("srv"));
            Assert.False(symbolService.ParseSymbolPath("cache"));
            Assert.False(symbolService.ParseSymbolPath("symsrv"));

            string defaultServer    = $"Server: {SymbolService.MsdlSymbolServer}";
            string defaultPath      = $"Cache: {symbolService.DefaultSymbolCache} {defaultServer}";
            string localSymbolCache = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "c:\\localsymbolcache" : "/home/foo/localsymbolcache";

            Assert.True(symbolService.ParseSymbolPath("srv*"));
            Assert.Equal(defaultServer, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath("srv**"));
            Assert.Equal(defaultPath, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath("symsrv*symsrv.dll*"));
            Assert.Equal(defaultServer, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath("cache*;srv*"));
            Assert.Equal(defaultPath, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath("srv*https://msdl.microsoft.com/download/symbols/"));
            Assert.Equal(defaultServer, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath($"srv**{SymbolService.MsdlSymbolServer}"));
            Assert.Equal(defaultPath, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath($"srv*{localSymbolCache}*{SymbolService.SymwebSymbolServer}"));
            string testpath1 = $"Cache: {localSymbolCache} Server: {SymbolService.SymwebSymbolServer}";

            Assert.Equal(testpath1, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath($"cache*{localSymbolCache};srv*"));
            string testpath2 = $"Cache: {localSymbolCache} Server: {SymbolService.MsdlSymbolServer}";

            Assert.Equal(testpath2, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            Assert.True(symbolService.ParseSymbolPath($"srv**{localSymbolCache}*http://msdl.microsoft.com/download/symbols/"));
            Assert.Equal($"Cache: {symbolService.DefaultSymbolCache} Cache: {localSymbolCache} Server: http://msdl.microsoft.com/download/symbols/", symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
            {
                Assert.True(symbolService.ParseSymbolPath($"symsrv*symsrv.dll*{localSymbolCache}*\\\\server\\share"));
                Assert.Equal($"Cache: {localSymbolCache} Cache: \\\\server\\share", symbolService.FormatSymbolStores());
                symbolService.DisableSymbolStore();

                Assert.True(symbolService.ParseSymbolPath("symsrv*symsrv.dll*d:\\data\\SYM\\symcache*\\\\aw0eus0symcache.file.core.windows.net\\Symbols*http://localhost/remote200/30e07e1454924e55901d7f693f7eddf1/0/x64/4542784547/remote"));
                Assert.Equal("Cache: d:\\data\\SYM\\symcache Cache: \\\\aw0eus0symcache.file.core.windows.net\\Symbols Server: http://localhost/remote200/30e07e1454924e55901d7f693f7eddf1/0/x64/4542784547/remote/", symbolService.FormatSymbolStores());
                symbolService.DisableSymbolStore();
            }

            string symbolDirectory = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "c:\\symbols\\" : "/home/foo/symbols/";

            Assert.True(symbolService.ParseSymbolPath(symbolDirectory));
            Assert.Equal($"Directory: {symbolDirectory}", symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();

            string symbolDirectory2 = RuntimeInformation.IsOSPlatform(OSPlatform.Windows) ? "c:\\foo\\bar" : "/home/foo/bar";

            Assert.True(symbolService.ParseSymbolPath($"{symbolDirectory};{symbolDirectory2};srv*"));
            Assert.Equal($"Directory: {symbolDirectory} Directory: {symbolDirectory2} " + defaultServer, symbolService.FormatSymbolStores());
            symbolService.DisableSymbolStore();
        }
 public SymbolController()
 {
     _symbolService = new SymbolService();
 }