예제 #1
0
 public ModuleParser(ISourceCodeProvider codePaneSourceCodeProvider, ISourceCodeProvider attributesSourceCodeProvider, IStringParser parser, IModuleRewriterFactory moduleRewriterFactory)
 {
     _moduleRewriterFactory        = moduleRewriterFactory;
     _codePaneSourceCodeProvider   = codePaneSourceCodeProvider;
     _attributesSourceCodeProvider = attributesSourceCodeProvider;
     _parser = parser;
 }
예제 #2
0
 public FunctionMapStore(ISourceCodeProvider sourceCodeProvider, Func <string, SourceMap> sourceMapGetter)
 {
     _functionMapGenerator = new FunctionMapGenerator();
     _functionMapCache     = new KeyValueCache <string, IReadOnlyList <FunctionMapEntry> >(sourceCodeUrl => _functionMapGenerator.GenerateFunctionMap(
                                                                                               sourceCodeProvider.GetSourceCode(sourceCodeUrl),
                                                                                               sourceMapGetter(sourceCodeUrl)));
 }
예제 #3
0
 public ModuleParser(ISourceCodeProvider codePaneSourceCodeProvider, ISourceCodeProvider attributesSourceCodeProvider, IStringParser parser, IAnnotationFactory annotationFactory)
 {
     _codePaneSourceCodeProvider   = codePaneSourceCodeProvider;
     _attributesSourceCodeProvider = attributesSourceCodeProvider;
     _parser            = parser;
     _annotationFactory = annotationFactory;
 }
        private StackTraceDeminifier GetStackTraceDeminifierWithDependencies()
        {
            ISourceMapProvider sourceMapProvider = MockRepository.GenerateStrictMock <ISourceMapProvider>();

            sourceMapProvider.Stub(x => x.GetSourceMapContentsForCallstackUrl("http://localhost:11323/crashcauser.min.js")).Return(UnitTestUtils.StreamReaderFromString(SourceMapString));

            ISourceCodeProvider sourceCodeProvider = MockRepository.GenerateStrictMock <ISourceCodeProvider>();

            sourceCodeProvider.Stub(x => x.GetSourceCode("http://localhost:11323/crashcauser.min.js")).Return(UnitTestUtils.StreamReaderFromString(GeneratedCodeString));

            return(StackTraceDeminfierFactory.GetMapOnlyStackTraceDeminfier(sourceMapProvider));
        }
예제 #5
0
        private static void ValidateArguments(ISourceMapProvider sourceMapProvider, ISourceCodeProvider generatedCodeProvider)
        {
            if (sourceMapProvider == null)
            {
                throw new ArgumentNullException(nameof(sourceMapProvider));
            }

            if (generatedCodeProvider == null)
            {
                throw new ArgumentNullException(nameof(generatedCodeProvider));
            }
        }
        public IEnumerable <ConsumerResult <TResultPayload> > Generate <TResultPayload>(ISourceCodeProvider dataProvider, IConsumer <TResultPayload> consumer)
        {
            if (dataProvider == null)
            {
                throw new ArgumentNullException("dataProvider");
            }

            if (consumer == null)
            {
                throw new ArgumentNullException("consumer");
            }

            var linkOptions = new DataflowLinkOptions {
                PropagateCompletion = true
            };
            var processingTaskRestriction = new ExecutionDataflowBlockOptions {
                MaxDegreeOfParallelism = _testsGeneratorRestrictions.MaxProcessingTasksCount
            };
            var outputTaskRestriction = new ExecutionDataflowBlockOptions {
                MaxDegreeOfParallelism = _testsGeneratorRestrictions.MaxWritingTasksCount
            };

            var producerBuffer       = new TransformBlock <string, TestClassInMemoryInfo>(new Func <string, TestClassInMemoryInfo>(Produce), processingTaskRestriction);
            var generatedTestsBuffer = new TransformBlock <TestClassInMemoryInfo, ConsumerResult <TResultPayload> >(
                new Func <TestClassInMemoryInfo, ConsumerResult <TResultPayload> >(consumer.Consume), outputTaskRestriction);

            producerBuffer.LinkTo(generatedTestsBuffer, linkOptions);
            _additionalProducerBuffer.LinkTo(generatedTestsBuffer, linkOptions);

            var consumerResults = Task.Run(async delegate {
                List <ConsumerResult <TResultPayload> > consumerResultsBuffer = new List <ConsumerResult <TResultPayload> >();

                while (await generatedTestsBuffer.OutputAvailableAsync())
                {
                    consumerResultsBuffer.Add(generatedTestsBuffer.Receive());
                }

                return(consumerResultsBuffer);
            });

            Parallel.ForEach(dataProvider.Provide(), async dataInMemory => {
                await producerBuffer.SendAsync(dataInMemory);
            });

            producerBuffer.Complete();
            consumerResults.Wait();

            return(consumerResults.Result);
        }
예제 #7
0
 public ModuleParser(ISourceCodeProvider codePaneSourceCodeProvider, ISourceCodeProvider attributesSourceCodeProvider, IStringParser parser)
 {
     _codePaneSourceCodeProvider   = codePaneSourceCodeProvider;
     _attributesSourceCodeProvider = attributesSourceCodeProvider;
     _parser = parser;
 }
 /// <summary>
 /// Creates a StackTraceDeminifier that only deminifies the method names. StackTrace deminifiers created with this method will use significantly less memory during runtime than the
 /// </summary>
 /// <param name="sourceMapProvider">Consumers of the API should implement this interface, which provides the source map for a given JavaScript file. Throws ArgumentNullException if the parameter is set to null.</param>
 /// <param name="generatedCodeProvider">Consumers of the API should implement this interface, which provides the contents of a JavaScript file. Throws ArgumentNullException if the parameter is set to null.</param>
 public static StackTraceDeminifier GetMethodNameOnlyStackTraceDeminfier(ISourceMapProvider sourceMapProvider, ISourceCodeProvider generatedCodeProvider)
 {
     return(GetMethodNameOnlyStackTraceDeminfier(sourceMapProvider, generatedCodeProvider, new StackTraceParser()));
 }
        /// <summary>
        /// Creates a StackTraceDeminifier with full capabilities. StackTrace deminifiers created with this method will keep source maps cached, and thus use significantly more memory during runtime than the ones generated with GetMethodNameOnlyStackTraceDeminfier.
        /// </summary>
        /// <param name="sourceMapProvider">Consumers of the API should implement this interface, which provides the source map for a given JavaScript file. Throws ArgumentNullException if the parameter is set to null.</param>
        /// <param name="generatedCodeProvider">Consumers of the API should implement this interface, which provides the contents of a JavaScript file. Throws ArgumentNullException if the parameter is set to null.</param>
        /// <param name="stackTraceParser">Consumers of the API should implement this interface, which provides a parser for the stacktrace. Throws ArgumentNullException if the parameter is set to null.</param>
        public static StackTraceDeminifier GetStackTraceDeminfier(ISourceMapProvider sourceMapProvider, ISourceCodeProvider generatedCodeProvider, IStackTraceParser stackTraceParser)
        {
            ValidateArguments(sourceMapProvider, generatedCodeProvider, stackTraceParser);

            ISourceMapStore       sourceMapStore       = new SourceMapStore(sourceMapProvider);
            IStackFrameDeminifier stackFrameDeminifier = new StackFrameDeminifier(sourceMapStore,
                                                                                  new FunctionMapStore(generatedCodeProvider, sourceMapStore.GetSourceMapForUrl), new FunctionMapConsumer());

            return(new StackTraceDeminifier(stackFrameDeminifier, stackTraceParser));
        }
        /// <summary>
        /// Creates a StackTraceDeminifier that only deminifies the method names. StackTrace deminifiers created with this method will use significantly less memory during runtime than the
        /// </summary>
        /// <param name="sourceMapProvider">Consumers of the API should implement this interface, which provides the source map for a given JavaScript file. Throws ArgumentNullException if the parameter is set to null.</param>
        /// <param name="generatedCodeProvider">Consumers of the API should implement this interface, which provides the contents of a JavaScript file. Throws ArgumentNullException if the parameter is set to null.</param>
        /// <param name="stackTraceParser">Consumers of the API should implement this interface, which provides a parser for the stacktrace. Throws ArgumentNullException if the parameter is set to null.</param>
        public static StackTraceDeminifier GetMethodNameOnlyStackTraceDeminfier(ISourceMapProvider sourceMapProvider, ISourceCodeProvider generatedCodeProvider, IStackTraceParser stackTraceParser)
        {
            ValidateArguments(sourceMapProvider, generatedCodeProvider, stackTraceParser);

            SourceMapParser       sourceMapParser      = new SourceMapParser();
            IStackFrameDeminifier stackFrameDeminifier = new MethodNameStackFrameDeminifier(new FunctionMapStore(generatedCodeProvider, (url) => sourceMapParser.ParseSourceMap(sourceMapProvider.GetSourceMapContentsForCallstackUrl(url))), new FunctionMapConsumer());

            return(new StackTraceDeminifier(stackFrameDeminifier, stackTraceParser));
        }
예제 #11
0
 public SequencePointExtrator(ISourceCodeProvider sourceCodeProvider)
 {
     this.sourceCodeProvider = sourceCodeProvider;
 }
 public SequencePointExtrator(ISourceCodeProvider sourceCodeProvider)
 {
     this.sourceCodeProvider = sourceCodeProvider;
 }