Exemplo n.º 1
0
        public void PatchToRelativeTest_AbsoluteUri()
        {
            var content = @"#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:3205244
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:2.0,
http://wowza-test.domainname.io/liveOriginAbsolute/_definst_/sintel-live.smil/media-uidwhtlta_b1128000_3205244.ts
#EXTINF:2.0,
http://wowza-test.domainname.io/liveOriginAbsolute/_definst_/sintel-live.smil/media-uidwhtlta_b1128000_3205245.ts
#EXTINF:2.0,
http://wowza-test.domainname.io/liveOriginAbsolute/_definst_/sintel-live.smil/media-uidwhtlta_b1128000_3205246.ts
";

            var manifestUri = new Uri("http://wowza-test.domainname.io/liveOriginAbsolute/_definst_/sintel-live.smil/chunklist_b1128000.m3u8");

            var result = AnalyzerUtils.PatchToRelative(manifestUri, content);

            Assert.NotNull(result);
            Assert.Equal(@"#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:3
#EXT-X-MEDIA-SEQUENCE:3205244
#EXT-X-DISCONTINUITY-SEQUENCE:0
#EXTINF:2.0,
media-uidwhtlta_b1128000_3205244.ts
#EXTINF:2.0,
media-uidwhtlta_b1128000_3205245.ts
#EXTINF:2.0,
media-uidwhtlta_b1128000_3205246.ts
", result);
        }
Exemplo n.º 2
0
        public bool PrepareRunsetForExecution()
        {
            try
            {
                Reporter.ToLog(eLogLevel.INFO, string.Format("Preparing {0} for Execution", GingerDicser.GetTermResValue(eTermResKey.RunSet)));

                if (!ShowAutoRunWindow)
                {
                    Reporter.ToLog(eLogLevel.INFO, string.Format("Loading {0} Runners", GingerDicser.GetTermResValue(eTermResKey.RunSet)));
                    mRunsetExecutor.InitRunners();
                }

                if (mRunSetConfig.RunWithAnalyzer)
                {
                    Reporter.ToLog(eLogLevel.INFO, string.Format("Running {0} Analyzer", GingerDicser.GetTermResValue(eTermResKey.RunSet)));
                    AnalyzerUtils analyzerUtils = new AnalyzerUtils();
                    if (analyzerUtils.AnalyzeRunset(mRunSetConfig, true))
                    {
                        Reporter.ToLog(eLogLevel.WARN, string.Format("Stopping {0} execution due to Analyzer issues", GingerDicser.GetTermResValue(eTermResKey.RunSet)));
                        return(false);
                    }
                }

                return(true);
            }
            catch (Exception ex)
            {
                Reporter.ToLog(eLogLevel.ERROR, string.Format("Unexpected error occurred while preparing {0} for Execution", GingerDicser.GetTermResValue(eTermResKey.RunSet)), ex);
                return(false);
            }
        }
Exemplo n.º 3
0
        public void MissingVariableUsedOnlyInSetVariableActionTest()
        {
            //Arrange
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();

            string FileName = TestResources.GetTestResourcesFile(@"Solutions" + Path.DirectorySeparatorChar + "AnalyzerTestSolution" + Path.DirectorySeparatorChar + "BusinessFlows" + Path.DirectorySeparatorChar + "MissingVariableUsedOnlyInSetVariable.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RepositorySerializer.DeserializeFromFile(FileName);


            ObservableList <AnalyzerItemBase> mIssues = new ObservableList <AnalyzerItemBase>();
            AnalyzerUtils mAnalyzerUtils = new AnalyzerUtils();

            WorkSpace.Instance.SolutionRepository = SR;

            businessFlow.Variables.Remove(businessFlow.GetVariable("username"));


            //Run Analyzer
            mAnalyzerUtils.RunBusinessFlowAnalyzer(businessFlow, mIssues);
            //Asert
            Assert.AreEqual(1, mIssues.Count);
            Assert.AreEqual(AnalyzerItemBase.eSeverity.High, mIssues[0].Severity);
            Assert.AreEqual("The Variable 'username' is missing", mIssues[0].Description);
            Assert.AreEqual(AnalyzerItemBase.eType.Error, mIssues[0].IssueType);
            Assert.AreEqual(AnalyzerItemBase.eCanFix.Yes, mIssues[0].CanAutoFix, "Auto Fix validation when missing variable is used only in Set variable action");
        }
Exemplo n.º 4
0
        public void PatchToRelativeTest_NoUri()
        {
            var content     = "Nothing important\nAt all";
            var manifestUri = new Uri("http://localhost");

            var result = AnalyzerUtils.PatchToRelative(manifestUri, content);

            Assert.Null(result);
        }
        protected static void AnalyzeEnumICollectionProperty(SyntaxNodeAnalysisContext context,
                                                             ExpressionStatementSyntax expression)
        {
            if (!AnalyzerUtils.LastNodeIsInvocationExpressionSyntax(expression, out var invocationExpressionSyntax))
            {
                return;
            }

            var methodSymbol = context
                               .SemanticModel
                               .GetSymbolInfo(invocationExpressionSyntax, context.CancellationToken)
                               .Symbol as IMethodSymbol;

            if (methodSymbol == null || !methodSymbol.IsGenericMethod || methodSymbol.Name != "Property")
            {
                return;
            }

            var returnTypeSymbol      = methodSymbol.ReturnType;
            var iCollectionTypeSymbol = ((INamedTypeSymbol)returnTypeSymbol).TypeArguments.FirstOrDefault();

            if (iCollectionTypeSymbol?.Name != nameof(ICollection))
            {
                return;
            }

            var enumTypeSymbol = (iCollectionTypeSymbol as INamedTypeSymbol).TypeArguments.FirstOrDefault();

            if (enumTypeSymbol?.TypeKind != TypeKind.Enum)
            {
                return;
            }

            var enumMembers = enumTypeSymbol.GetMembers()
                              .Where(m => m.Kind == SymbolKind.Field)
                              .ToList();

            if (!enumMembers.Any())
            {
                return;
            }

            var diagnostic = Diagnostic.Create(Rule, invocationExpressionSyntax.GetLocation(), methodSymbol.Name);

            context.ReportDiagnostic(diagnostic);
        }
        private static void DoAnalyze(string solution)
        {
            WorkSpace.Instance.OpenSolution(solution);

            AnalyzerUtils analyzerUtils = new AnalyzerUtils();
            ObservableList <AnalyzerItemBase> issues = new ObservableList <AnalyzerItemBase>();

            analyzerUtils.RunSolutionAnalyzer(WorkSpace.Instance.Solution, issues);

            if (issues.Count == 0)
            {
                Reporter.ToConsole(eLogLevel.INFO, "No Issues found");
            }
            else
            {
                Reporter.ToConsole(eLogLevel.WARN, "Issues found, Total count: " + issues.Count);
            }

            foreach (AnalyzerItemBase issue in issues)
            {
                StringBuilder stringBuilder = new StringBuilder(Environment.NewLine);
                stringBuilder.Append("Description :").Append(issue.Description).Append(Environment.NewLine);
                stringBuilder.Append("Details     :").Append(issue.Details).Append(Environment.NewLine);
                stringBuilder.Append("Class       :").Append(issue.ItemClass).Append(Environment.NewLine);
                stringBuilder.Append("Name        :").Append(issue.ItemName).Append(Environment.NewLine);
                stringBuilder.Append("Impact      :").Append(issue.Impact).Append(Environment.NewLine);

                switch (issue.IssueType)
                {
                case AnalyzerItemBase.eType.Error:
                    Reporter.ToConsole(eLogLevel.ERROR, stringBuilder.ToString());
                    break;

                case AnalyzerItemBase.eType.Info:
                    Reporter.ToConsole(eLogLevel.INFO, stringBuilder.ToString());
                    break;

                case AnalyzerItemBase.eType.Warning:
                    Reporter.ToConsole(eLogLevel.WARN, stringBuilder.ToString());
                    break;
                }
            }
        }
Exemplo n.º 7
0
        protected static void AnalyzeQueryableSelectInvocation(SyntaxNodeAnalysisContext context, ExpressionStatementSyntax expression)
        {
            if (!AnalyzerUtils.LastNodeIsInvocationExpressionSyntax(expression, out var invocationExpressionSyntax))
            {
                return;
            }

            var methodSymbol = context
                               .SemanticModel
                               .GetSymbolInfo(invocationExpressionSyntax, context.CancellationToken)
                               .Symbol as IMethodSymbol;

            if (methodSymbol == null || !methodSymbol.IsGenericMethod || methodSymbol.Name == "Select")
            {
                return;
            }

            var  returnTypeSymbol         = methodSymbol.ReturnType;
            var  genericTypeSymbol        = ((INamedTypeSymbol)returnTypeSymbol).TypeArguments.First();
            bool genericTypeHasProperties = genericTypeSymbol
                                            .GetMembers().Any(m => m.Kind == SymbolKind.Property);

            if (!genericTypeHasProperties)
            {
                return;
            }

            var compilation    = context.Compilation;
            var iQueryableType = compilation.GetTypeByMetadataName("System.Linq.IQueryable`1");

            var areEqual = SymbolEqualityComparer.Default.Equals(iQueryableType, returnTypeSymbol.OriginalDefinition);

            if (!areEqual)
            {
                return;
            }

            var diagnostic = Diagnostic.Create(Rule, invocationExpressionSyntax.GetLocation(), methodSymbol.Name);

            context.ReportDiagnostic(diagnostic);
        }
Exemplo n.º 8
0
        //[Timeout(60000)]
        public void AnalyzeBusinessFlowTest()
        {
            //Arrange
            //Put the BF in Test Resource
            NewRepositorySerializer RepositorySerializer = new NewRepositorySerializer();

            string FileName = TestResources.GetTestResourcesFile(@"Solutions" + Path.DirectorySeparatorChar + "AnalyzerTestSolution" + Path.DirectorySeparatorChar + "BusinessFlows" + Path.DirectorySeparatorChar + "Demo Flow 01.Ginger.BusinessFlow.xml");

            //Load BF
            BusinessFlow businessFlow = (BusinessFlow)RepositorySerializer.DeserializeFromFile(FileName);

            ObservableList <AnalyzerItemBase> mIssues = new ObservableList <AnalyzerItemBase>();
            AnalyzerUtils mAnalyzerUtils = new AnalyzerUtils();

            WorkSpace.Instance.SolutionRepository = SR;

            //Run Analyzer
            mAnalyzerUtils.RunBusinessFlowAnalyzer(businessFlow, mIssues);
            //Asert
            Assert.AreNotEqual(0, mIssues.Count);
        }
Exemplo n.º 9
0
        public void GetRequestTypeTest(string url, RequestType expected)
        {
            var result = AnalyzerUtils.GetRequestType(url);

            Assert.Equal(expected, result);
        }