public static StoredProcedureTest AddCustomParameterToBoth(this StoredProcedureTest test, string parameterName, string value)
        {
            test.UnoptimisedStoredProcedureParameters.Add(new TestParameter(parameterName, value, TestParameterDataType.Custom));
            test.OptimisedStoredProcedureParameters.Add(new TestParameter(parameterName, value, TestParameterDataType.Custom));

            return(test);
        }
Esempio n. 2
0
 public void BuildSqlQueryText(StoredProcedureTest test)
 {
     if (!hasBeenBuilt)
     {
         Build(test);
     }
 }
        public static StoredProcedureTest AddBoolParameterToBoth(this StoredProcedureTest test, string parameterName, bool value)
        {
            test.UnoptimisedStoredProcedureParameters.Add(new TestParameter(parameterName, value.ToString(), TestParameterDataType.Bool));
            test.OptimisedStoredProcedureParameters.Add(new TestParameter(parameterName, value.ToString(), TestParameterDataType.Bool));

            return(test);
        }
        public static StoredProcedureTest DefaultTest()
        {
            StoredProcedureTest storedProcedureTest = new StoredProcedureTest();

            storedProcedureTest.DatabaseName = StoredProcedureTesterTestsConsts.DatabaseName;
            storedProcedureTest.UnoptimisedStoredProcedureName = $"[StoredProcedureTester].{StoredProcedureTesterTestsConsts.TestUnoptimisedStoredProcedureName}";
            storedProcedureTest.OptimisedStoredProcedureName   = $"[StoredProcedureTester].{StoredProcedureTesterTestsConsts.TestOptimisedStoredProcedureName}";

            return(storedProcedureTest);
        }
Esempio n. 5
0
        public async Task <TestSummary> Run(StoredProcedureTest currentTest, bool isRetry)
        {
            if (!isRetry)
            {
                _sqlBuilder.ResetSql();
            }
            _sqlBuilder.BuildSqlQueryText(currentTest);
            TestSummary testSummary = await _sqlRunner.RunSqlAsync(currentTest);

            return(testSummary);
        }
Esempio n. 6
0
        private static async Task <TestSummary> RunStoredProcedureTester(StoredProcedureTest storedProcedureTest = null)
        {
            if (storedProcedureTest == null)
            {
                storedProcedureTest = StoredProcedureTestFactory.DefaultTest();
            }

            SqlTestRunner sqlTestRunner = new SqlTestRunner(new NullLogHelper());
            TestSummary   testSummary   = await sqlTestRunner.Run(storedProcedureTest);

            return(testSummary);
        }
Esempio n. 7
0
 private void SetupDefaults()
 {
     currentTest = new StoredProcedureTest();
     logHelper   = new LogHelper();
     logHelper.GetLogs().ListChanged += LogsOnListChanged;
     logHelper.Log("Ready");
     lbUnoptimisedParameters.MouseDoubleClick += LbUnoptimisedParametersOnMouseDoubleClick;
     lbOptimisedParameters.MouseDoubleClick   += LbOptimisedParametersOnMouseDoubleClick;
     cbType.SelectedIndexChanged += CbTypeOnSelectedIndexChanged;
     this.KeyPreview              = true;
     dtpValue.Hide();
     chkBoxValue.Hide();
     btnGenerateGuid.Hide();
     HideResults();
 }
Esempio n. 8
0
        public async Task TestTwoDuplicateStoredProceduresThatUseCustomParameter()
        {
            try
            {
                var storedProcedureHelper = CreateStoredProcedureHelper();
                await storedProcedureHelper.CreateDuplicateStoredProceduresThatUseCustomParameterAsync();

                StoredProcedureTest storedProcedureTest = StoredProcedureTestFactory.DefaultTest()
                                                          .AddCustomParameterToBoth("TestCustom", "Custom");

                var testSummary = await RunStoredProcedureTester(storedProcedureTest);

                CheckResult(testSummary, ResultEnum.AllPass).ShouldBeTrue();
            }
            finally
            {
                await Cleanup();
            }
        }
Esempio n. 9
0
        private void FillVariables(StoredProcedureTest test)
        {
            stringBuilder.Replace("{UnoptimisedStoredProcedureName}", $"{test.DatabaseName}.{test.UnoptimisedStoredProcedureName}");
            stringBuilder.Replace("{OptimisedStoredProcedureName}", $"{test.DatabaseName}.{test.OptimisedStoredProcedureName}");

            StringBuilder unOptimisedParameters = new StringBuilder();

            for (int i = 0; i < test.UnoptimisedStoredProcedureParameters.Count; i++)
            {
                TestParameter testParameter = test.UnoptimisedStoredProcedureParameters[i];

                if (i == 0)
                {
                    unOptimisedParameters.AppendLine($"+N' {testParameter.GetSqlString()}'");
                }
                else
                {
                    unOptimisedParameters.AppendLine($"+N', {testParameter.GetSqlString()}'");
                }
            }

            StringBuilder optimisedParameters = new StringBuilder();

            for (int i = 0; i < test.OptimisedStoredProcedureParameters.Count; i++)
            {
                TestParameter testParameter = test.OptimisedStoredProcedureParameters[i];

                if (i == 0)
                {
                    optimisedParameters.AppendLine($"+N' {testParameter.GetSqlString()}'");
                }
                else
                {
                    optimisedParameters.AppendLine($"+N', {testParameter.GetSqlString()}'");
                }
            }

            stringBuilder.Replace("{UsingUnoptimisedParameters}", unOptimisedParameters.ToString());
            stringBuilder.Replace("{UsingOptimisedParameters}", optimisedParameters.ToString());

            test.SetGeneratedSql(stringBuilder.ToString());
        }
Esempio n. 10
0
        public async Task <TestSummary> RunSqlAsync(StoredProcedureTest test)
        {
            try
            {
                string connectionString = $"SERVER=(local);DATABASE={test.DatabaseName};Integrated Security=true";

                foreach (string startupScript in StoredProcedureTesterConsts.StartupScripts)
                {
                    using (SqlConnection connection = new SqlConnection(connectionString))
                    {
                        SqlCommand command = new SqlCommand(startupScript, connection);
                        await connection.OpenAsync();

                        SqlDataReader reader = await command.ExecuteReaderAsync();
                    }
                }

                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    SqlCommand command = new SqlCommand(test.GeneratedSql, connection);
                    //command.Parameters.AddWithValue("@tPatSName", "Your-Parm-Value");
                    await connection.OpenAsync();

                    SqlDataReader reader = command.ExecuteReader();
                    try
                    {
                        TestSummary testSummary = new TestSummary(test);
                        while (await reader.ReadAsync())
                        {
                            testSummary.FirstTestResult = new TestResult((bool)reader["First Test Result"],
                                                                         reader["First Test Message"] == DBNull.Value
                                    ? string.Empty
                                    : (string)reader["First Test Message"]);
                            testSummary.SecondTestResult = new TestResult((bool)reader["Second Test Result"],
                                                                          reader["Second Test Message"] == DBNull.Value
                                    ? string.Empty
                                    : (string)reader["Second Test Message"]);
                            testSummary.ThirdTestResult = new TestResult((bool)reader["Third Test Result"],
                                                                         reader["Third Test Message"] == DBNull.Value
                                    ? string.Empty
                                    : (string)reader["Third Test Message"]);
                            testSummary.FourthTestResult = new TestResult((bool)reader["Fourth Test Result"],
                                                                          reader["Fourth Test Message"] == DBNull.Value
                                    ? string.Empty
                                    : (string)reader["Fourth Test Message"]);
                            testSummary.OverallResult            = (bool)reader["Overall Result"];
                            testSummary.UnoptimisedDateTimeStart = (DateTime)reader["Unoptimised Start"];
                            testSummary.UnoptimisedDateTimeEnd   = (DateTime)reader["Unoptimised End"];
                            testSummary.OptimisedDateTimeStart   = (DateTime)reader["Optimised Start"];
                            testSummary.OptimisedDateTimeEnd     = (DateTime)reader["Optimised End"];

                            //Save to excel
                            SaveToFile(testSummary);

                            _logHelper.Log("Ran SQL");
                            if (testSummary.OverallResult)
                            {
                                _logHelper.Log("Test PASSED");
                            }
                            else
                            {
                                _logHelper.Log("Test FAILED");
                            }
                        }

                        return(testSummary);
                    }
                    catch (Exception ex)
                    {
                        _logHelper.Log(ex.Message);
                        throw;
                    }
                    finally
                    {
                        // Always call Close when done reading.
                        reader.Close();
                    }
                }
            }
            catch (Exception ex)
            {
                _logHelper.Log(ex.Message);
                throw;
            }
        }
Esempio n. 11
0
 public void Build(StoredProcedureTest test)
 {
     FillVariables(test);
     _logHelper.Log("Built SQL");
     hasBeenBuilt = true;
 }
Esempio n. 12
0
 public async Task <TestSummary> Run(StoredProcedureTest currentTest)
 {
     return(await Run(currentTest, false));
 }