示例#1
0
        public async Task <IList <TItem> > ListAsync <TItem>(IEnumerable <QueryData> queries, CancellationToken cancellationToken = default)
        {
            if (queries == null)
            {
                throw new ArgumentNullException(nameof(queries));
            }

            if (this.Options.Schemas == null)
            {
                throw new InvalidOperationException("No schema builder found.");
            }

            ResultAdapter <TItem> adapter = new ResultAdapter <TItem>(this.Options.Schemas);

            await using AsyncSession connection = new AsyncSession(this.Options);

            foreach (QueryData queryData in queries.NotNull())
            {
                Query builder = new Query(queryData);

                if (string.IsNullOrWhiteSpace(queryData.QueryText))
                {
                    continue;
                }

                await foreach (DbDataReader dataReader in connection.ExecuteAsync(builder, cancellationToken).ConfigureAwait(false))
                {
                    await adapter.AddResultAsync(dataReader, cancellationToken).ConfigureAwait(false);
                }
            }

            return(adapter.ToList());
        }
示例#2
0
        public IList <TItem> List <TItem>(IEnumerable <QueryData> queries)
        {
            if (queries == null)
            {
                throw new ArgumentNullException(nameof(queries));
            }

            if (this.Options.Schemas == null)
            {
                throw new InvalidOperationException("No schema store found.");
            }

            ResultAdapter <TItem> adapter = new ResultAdapter <TItem>(this.Options.Schemas);

            using SyncSession connection = new SyncSession(this.Options);

            foreach (QueryData queryData in queries.NotNull())
            {
                Query builder = new Query(queryData);

                if (string.IsNullOrWhiteSpace(queryData.QueryText))
                {
                    continue;
                }

                foreach (IDataReader dataReader in connection.Execute(builder))
                {
                    adapter.AddResult(dataReader);
                }
            }

            return(adapter.ToList());
        }
示例#3
0
        public HttpResponseMessage Get(string metric, int size, int frequence)
        {
            string        device        = Request.GetQueryNameValuePairs().Where(x => x.Key == "device").FirstOrDefault().Value;
            ResultAdapter resultAdapter = new ResultAdapter();

            resultAdapter.device = device;
            resultAdapter.generateTable(metric, size, frequence);

            var json     = JsonConvert.SerializeObject(resultAdapter);
            var response = this.Request.CreateResponse(HttpStatusCode.OK);

            response.Content = new StringContent(json, Encoding.UTF8, "application/json");
            return(response);
        }
示例#4
0
        private string GetCombinedFailureMessage(ResultAdapter result, string tearDownFailure, string tearDownStackTrace)
        {
            var message = new StringBuilder()
                          .Append("The test failed and then failed to cleanup. Test failure is: ")
                          .AppendLine(result.Message)
                          .Append("Tear-down failure is: ")
                          .AppendLine(tearDownFailure)
                          .AppendLine("Test failure stack trace is: ")
                          .AppendLine(result.StackTrace);

            if (!string.IsNullOrEmpty(tearDownStackTrace))
            {
                message.AppendLine("Tear-down failure stack trace is:")
                .Append(tearDownStackTrace);
            }

            return(message.ToString());
        }
示例#5
0
        public async Task <IList <TItem> > ListAsync <TItem>(IEnumerable <QueryData> queries, CancellationToken cancellationToken = default)
        {
            if (queries == null)
            {
                throw new ArgumentNullException(nameof(queries));
            }

            if (this.Options.Schemas == null)
            {
                throw new InvalidOperationException("No schema builder found.");
            }

            ResultAdapter <TItem> adapter = new ResultAdapter <TItem>(this.Options.Schemas);

#if NETSTANDARD2_1
            await
#endif
            using AdoConnection connection = new AdoConnection(this.Options);

            foreach (QueryData queryData in queries.NotNull())
            {
                AdoHelper helper = new AdoHelper(queryData);

                if (string.IsNullOrWhiteSpace(queryData.QueryText))
                {
                    continue;
                }

#if NETSTANDARD2_0
                await connection.ExecuteAsync(helper, async (r) =>
                {
                    await adapter.AddResultAsync(r, cancellationToken).ConfigureAwait(false);
                }, cancellationToken).ConfigureAwait(false);
#elif NETSTANDARD2_1
                await foreach (DbDataReader dataReader in connection.ExecuteAsync(helper, cancellationToken))
                {
                    await adapter.AddResultAsync(dataReader, cancellationToken);
                }
#endif
            }

            return(adapter.ToList());
        }
        /// <summary>
        /// TestCase results
        /// </summary>
        /// <param name="testStatus"></param>
        public void TestCaseResults(TestContext testContext)
        {
            TestStatus    testStatus    = testContext.Result.Outcome.Status;
            ResultAdapter resultAdapter = testContext.Result;

            object[]      endTestCaseParameterArray;
            List <string> testResults = new List <string>();
            TestResult    testResult  = TestResult.Inconclusive;

            Type                 myClass = Assembly.GetCallingAssembly().GetType(className);
            MethodInfo           EndOfTestCaseExecution = myClass.GetMethod("EndOfTestCaseExecution");
            TestBaseClassService myObj = (TestBaseClassService)Activator.CreateInstance(myClass);

            try
            {
                if (testStatus == TestStatus.Passed)
                {
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testcase details after pass
                    ContextLogger.LogAfterTestCasePass(moduleName, className, testCaseName, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, true };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Passed;
                }

                else if (testStatus == TestStatus.Failed)
                {
                    //Logging if test case fails
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testCase details after fails
                    ContextLogger.LogAfterTestCaseFails(moduleName, className, testCaseName, testDataService.TestData, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Failed;
                    testResults.Add(resultAdapter.Message);
                    testResults.Add(resultAdapter.StackTrace);
                }
                else if (testStatus == TestStatus.Skipped)
                {
                    //Logging if test case fails
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testCase details after fails
                    ContextLogger.LogAfterTestCaseSkipped(moduleName, className, testCaseName, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Skipped;
                    testResults.Add(resultAdapter.Message);
                }
                else if (testStatus == TestStatus.Inconclusive)
                {
                    if (Initialize.DisplayExecutionTimeInLogger)
                    {
                        watch.Stop();
                        timeElapsed = watch.ElapsedMilliseconds.ToString();
                    }

                    //Logging testCase details after fails
                    ContextLogger.LogAfterTestCaseInConclusive(moduleName, className, testCaseName, timeElapsed, testStatus.ToString());
                    endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                    EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                    testResult = TestResult.Inconclusive;
                }
            }
            catch (IgnoreException ex)
            {
                //Logging testCase details after fails
                ContextLogger.LogAfterTestCaseSkipped(moduleName, className, testCaseName, timeElapsed, "Skipped" + ex.Message);
                endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                testResult = TestResult.Skipped;
            }
            catch (Exception ex)
            {
                ContextLogger.LogIfException(moduleName, className, testCaseName, ex.Message);
                endTestCaseParameterArray = new object[] { moduleName, className, testCaseName, false };
                EndOfTestCaseExecution.Invoke(myObj, endTestCaseParameterArray);
                testResult = TestResult.Failed;
                if (testResults.Count == 0)
                {
                    testResults.Add("Test is executed with:" + testResult.ToString() + "status");
                }

                testResultService.InsertTestResults(testCaseName, testResult, testResults.ToArray());
            }
            finally
            {
                if (testResults.Count == 0)
                {
                    testResults.Add("Test is executed with:" + testResult.ToString() + "status");
                }

                testResultService.InsertTestResults(testCaseName, testResult, testResults.ToArray());
            }
        }
示例#7
0
 public Result(ResultAdapter result, TestStatus status = TestStatus.None)
 {
     Status       = status == TestStatus.None ? result.Outcome.Status.ToString() : status.ToString();
     StackTrace   = result.StackTrace;
     ErrorMessage = result.Message;
 }
示例#8
0
        public void AfterTest()
        {
            string zaleniumTestStatusCookieValue = string.Empty;

            try
            {
                ResultAdapter result      = CurrentContext.Result;
                List <object> testResults = result.CheckForTestStatusInjection();
                testStatus = (TestStatus)testResults[0];

                switch (testStatus)
                {
                case TestStatus.Failed:
                    string injMsg     = (string)testResults[1];
                    string stacktrace = result.StackTrace.HasValue()
                            ? (injMsg = injMsg.HasValue()
                                ? ""
                                : $"{injMsg}<br> ")
                            : $"<pre>{result.StackTrace}</pre>";
                    string screenshotName = BaseUtil.CaptureScreenshot();

                    if (reporter == ReporterType.Klov)
                    {
                        /*Use when Klov Reporter bug is fixed
                         * //Upload screenshot to MongoDB server
                         * var screenshotPath = $"\\\\10.1.1.207\\errorscreenshots\\{screenshotName}";
                         * testInstance.Fail($"Test Failed: <br> {stacktrace}").AddScreenCaptureFromPath(screenshotPath, screenshotName);
                         */

                        //Workaround due to bug in Klov Reporter
                        var screenshotRemotePath  = $"http://{GridVmIP}/errorscreenshots/{screenshotName}";
                        var detailsWithScreenshot = $"Test Failed:<br> {stacktrace}<br> <img data-featherlight=\"{screenshotRemotePath}\" class=\"step-img\" src=\"{screenshotRemotePath}\" data-src=\"{screenshotRemotePath}\" width=\"200\">";
                        testInstance.Fail(MarkupHelper.CreateLabel(detailsWithScreenshot, ExtentColor.Red));
                    }
                    else
                    {
                        //Attach screenshot to log
                        var screenshotPath = $"errorscreenshots/{screenshotName}";
                        testInstance.Fail($"Test Failed: <br> {stacktrace}", MediaEntityBuilder.CreateScreenCaptureFromPath(screenshotPath, screenshotName).Build());
                    }

                    zaleniumTestStatusCookieValue = "false";
                    break;

                case TestStatus.Passed:
                    testInstance.Pass(MarkupHelper.CreateLabel("Test Passed", ExtentColor.Green));
                    zaleniumTestStatusCookieValue = "true";
                    break;

                case TestStatus.Skipped:
                    testInstance.Skip(MarkupHelper.CreateLabel("Test Skipped", ExtentColor.Yellow));
                    break;

                default:
                    testInstance.Debug(MarkupHelper.CreateLabel("Inconclusive Test Result", ExtentColor.Orange));
                    break;
                }

                TestStopwatch.Stop();

                if (hiptest)
                {
                    var resultDesc   = new KeyValuePair <TestStatus, string>(testStatus, testDescription);
                    var tcResultPair = new KeyValuePair <int, KeyValuePair <TestStatus, string> >(int.Parse(testCaseNumber), resultDesc);
                    hipTestResults.Add(tcResultPair);
                }
            }
            catch (Exception e)
            {
                log.Error($"Exception occured for Failed TC in AfterTest method {e.Message}");
            }
            finally
            {
                try
                {
                    if (driver != null)
                    {
                        Report.Info($"TOTAL TEST TIME: {TestStopwatch.Elapsed.ToString()}");
                        reportInstance.Flush();

                        if (cookie != null)
                        {
                            AddCookieToCurrentPage("zaleniumTestPassed", zaleniumTestStatusCookieValue);
                        }

                        if (!driver.Title.Equals("Home Page"))
                        {
                            driver.FindElement(By.XPath("//a[text()=' Log out']")).Click();
                        }

                        DismissDriverInstance(driver);
                    }
                }
                catch (UnableToSetCookieException e)
                {
                    log.Debug(e.Message);
                }
                catch (NoSuchElementException e)
                {
                    log.Debug(e.Message);
                }
                catch (Exception e)
                {
                    log.Error($"{e.Message}\n{e.StackTrace}");
                }
            }
        }