]> git.8kb.co.uk Git - postgresql/dblt/commitdiff
Alter to allow running against either PostgreSQL or SQL Server
authorglyn <glyn@8kb.co.uk>
Tue, 28 Feb 2017 11:04:47 +0000 (11:04 +0000)
committerglyn <glyn@8kb.co.uk>
Tue, 28 Feb 2017 11:04:47 +0000 (11:04 +0000)
dblt/src/dblt/App.config
dblt/src/dblt/Program.cs

index f26b36065be0662279bcee6fe37764e0f141aee7..fad8263dffde62da318f03e767eed9e94f3f1895 100644 (file)
@@ -2,6 +2,7 @@
 <configuration>\r
   <appSettings>\r
     <add key="ServerDescription" value="pgsql vm" />\r
 <configuration>\r
   <appSettings>\r
     <add key="ServerDescription" value="pgsql vm" />\r
+    <add key="Mode" value="pgsql" />\r
     <add key="PgConnectionString" value="Server=192.168.0.100;Port=5432;User Id=myuser;Password=mypassword;Database=mydatabase;Timeout=600;Pooling=false" />\r
     <add key="ConnectionRetry" value="false" />\r
     <add key="ConnectionPerIteration" value="true" />\r
     <add key="PgConnectionString" value="Server=192.168.0.100;Port=5432;User Id=myuser;Password=mypassword;Database=mydatabase;Timeout=600;Pooling=false" />\r
     <add key="ConnectionRetry" value="false" />\r
     <add key="ConnectionPerIteration" value="true" />\r
@@ -18,7 +19,7 @@
     <add key="ClientSettingsProvider.ServiceUri" value="" />\r
   </appSettings>\r
   <startup>\r
     <add key="ClientSettingsProvider.ServiceUri" value="" />\r
   </appSettings>\r
   <startup>\r
-    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.0" />\r
+    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.1" />\r
   </startup>\r
   <system.web>\r
     <membership defaultProvider="ClientAuthenticationMembershipProvider">\r
   </startup>\r
   <system.web>\r
     <membership defaultProvider="ClientAuthenticationMembershipProvider">\r
index 6158ec716cfea6b1cc3f0aff9ae50bd18bbe0eff..0cac2302549e9e4b97588af200ccb6b8522e65e5 100644 (file)
@@ -8,6 +8,7 @@ using System.Text;
 using System.IO;\r
 using System.Threading;\r
 using System.Data;\r
 using System.IO;\r
 using System.Threading;\r
 using System.Data;\r
+using System.Data.SqlClient;\r
 using Npgsql;\r
 using System.Configuration;\r
 using System.Diagnostics;\r
 using Npgsql;\r
 using System.Configuration;\r
 using System.Diagnostics;\r
@@ -17,6 +18,7 @@ namespace dblt
     class dblt\r
     {\r
         public static string sServerDescription = (string)ConfigurationManager.AppSettings["ServerDescription"];\r
     class dblt\r
     {\r
         public static string sServerDescription = (string)ConfigurationManager.AppSettings["ServerDescription"];\r
+        public static string sMode = (string)ConfigurationManager.AppSettings["Mode"];\r
         public static int iClients = Convert.ToInt32(ConfigurationManager.AppSettings["Clients"]);\r
         public static int iClientsScale = Convert.ToInt32(ConfigurationManager.AppSettings["ClientsScale"]);\r
         public static int iClientsMax = Convert.ToInt32(ConfigurationManager.AppSettings["ClientsMax"]);\r
         public static int iClients = Convert.ToInt32(ConfigurationManager.AppSettings["Clients"]);\r
         public static int iClientsScale = Convert.ToInt32(ConfigurationManager.AppSettings["ClientsScale"]);\r
         public static int iClientsMax = Convert.ToInt32(ConfigurationManager.AppSettings["ClientsMax"]);\r
@@ -27,18 +29,17 @@ namespace dblt
         public static bool bVerboseScreen = Convert.ToBoolean(ConfigurationManager.AppSettings["VerboseScreen"]);\r
         public static bool bOnFailureRetry = Convert.ToBoolean(ConfigurationManager.AppSettings["ConnectionRetry"]);\r
         public static bool bConnPerIteration = Convert.ToBoolean(ConfigurationManager.AppSettings["ConnectionPerIteration"]);\r
         public static bool bVerboseScreen = Convert.ToBoolean(ConfigurationManager.AppSettings["VerboseScreen"]);\r
         public static bool bOnFailureRetry = Convert.ToBoolean(ConfigurationManager.AppSettings["ConnectionRetry"]);\r
         public static bool bConnPerIteration = Convert.ToBoolean(ConfigurationManager.AppSettings["ConnectionPerIteration"]);\r
-        public static string sConn = (string)ConfigurationManager.AppSettings["PgConnectionString"];\r
+        public static string sConn = (string)ConfigurationManager.AppSettings["ConnectionString"];\r
         public static string sTransactionsFile = (string)ConfigurationManager.AppSettings["TransactionsFile"];\r
         public static int iSleepTime = Convert.ToInt32(ConfigurationManager.AppSettings["SleepTime"]);\r
         public static string sTransactionsFile = (string)ConfigurationManager.AppSettings["TransactionsFile"];\r
         public static int iSleepTime = Convert.ToInt32(ConfigurationManager.AppSettings["SleepTime"]);\r
-        \r
+        private static List<string> lsValidModes = new List<string> { "pgsql", "mssql" };\r
+\r
         public static Object oTransCounterLock = new Object();\r
         public static Object oIterationCounterLock = new Object();\r
         public static Object oTransDurationLock = new Object();\r
         public static Object oLogLock = new Object();\r
 \r
         public static Object oTransCounterLock = new Object();\r
         public static Object oIterationCounterLock = new Object();\r
         public static Object oTransDurationLock = new Object();\r
         public static Object oLogLock = new Object();\r
 \r
-        //public static DataSet dsTransactions = readTransactionsFile(sTransactionsFile);\r
         public static XmlDocument xmlTransactions = readTransactionsFile(sTransactionsFile);\r
         public static XmlDocument xmlTransactions = readTransactionsFile(sTransactionsFile);\r
-        \r
 \r
         private static PerformanceCounter oCpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");\r
         private static PerformanceCounter oSysCpuCounter = new PerformanceCounter("Processor", "% Privileged Time", "_Total");\r
 \r
         private static PerformanceCounter oCpuCounter = new PerformanceCounter("Processor", "% Processor Time", "_Total");\r
         private static PerformanceCounter oSysCpuCounter = new PerformanceCounter("Processor", "% Privileged Time", "_Total");\r
@@ -46,7 +47,6 @@ namespace dblt
 \r
         public static string timeStamp = "dd/MM/yyyy HH:mm";\r
         public static string[] aLogArray = new string[10000000];\r
 \r
         public static string timeStamp = "dd/MM/yyyy HH:mm";\r
         public static string[] aLogArray = new string[10000000];\r
-        //public static double[] aTransactionTimeArray = new double[iClientsMax * iIterations * dsTransactions.Tables[0].Columns.Count];\r
         public static double[] aTransactionTimeArray = new double[iClientsMax * iIterations * xmlTransactions.SelectNodes("//transaction").Count];        \r
         \r
         public static int iLogIndex, iRunningAtMax, iRunningAtMin, iMaxRunning, iCompletedIterations, iCompletedTransactions;\r
         public static double[] aTransactionTimeArray = new double[iClientsMax * iIterations * xmlTransactions.SelectNodes("//transaction").Count];        \r
         \r
         public static int iLogIndex, iRunningAtMax, iRunningAtMin, iMaxRunning, iCompletedIterations, iCompletedTransactions;\r
@@ -57,6 +57,11 @@ namespace dblt
         \r
         static void Main(string[] args)\r
         {\r
         \r
         static void Main(string[] args)\r
         {\r
+            if (!lsValidModes.Contains(sMode))\r
+            {\r
+                Console.WriteLine("Invalid operating mode '{0}': Supported modes are 'mssql' or 'pgsql'", sMode);\r
+                Environment.Exit(1);\r
+            }\r
             if (iClients != 0)\r
             {\r
                 MainWorker(iClients);\r
             if (iClients != 0)\r
             {\r
                 MainWorker(iClients);\r
@@ -271,11 +276,19 @@ namespace dblt
                 string sSql = "";\r
                 int iRandomStmt = 0;\r
                 int iRandomTran = 0;\r
                 string sSql = "";\r
                 int iRandomStmt = 0;\r
                 int iRandomTran = 0;\r
+                SqlConnection msconn = null;\r
                 NpgsqlConnection conn = null;\r
                 if (!bConnPerIteration)\r
                 {\r
                 NpgsqlConnection conn = null;\r
                 if (!bConnPerIteration)\r
                 {\r
-                    conn = new NpgsqlConnection(sConn);\r
-                    conn.Open();\r
+                    if (sMode == "pgsql") {\r
+                        conn = new NpgsqlConnection(sConn);\r
+                        conn.Open();\r
+                    }\r
+                    else if (sMode == "mssql")\r
+                    {\r
+                        msconn = new SqlConnection(sConn);\r
+                        msconn.Open();\r
+                    }\r
                 }\r
 \r
                 for (int i = 0; i < iIterations; i++)\r
                 }\r
 \r
                 for (int i = 0; i < iIterations; i++)\r
@@ -285,11 +298,18 @@ namespace dblt
                             DateTime startTime = DateTime.Now;\r
                             if (bConnPerIteration)\r
                             {\r
                             DateTime startTime = DateTime.Now;\r
                             if (bConnPerIteration)\r
                             {\r
-                                conn = new NpgsqlConnection(sConn);\r
-                                conn.Open();\r
+                                if (sMode == "pgsql")\r
+                                {\r
+                                    conn = new NpgsqlConnection(sConn);\r
+                                    conn.Open();\r
+                                }\r
+                                else if (sMode == "mssql")\r
+                                {\r
+                                    msconn = new SqlConnection(sConn);\r
+                                    msconn.Open();\r
+                                }\r
                             }\r
 \r
                             }\r
 \r
-                            //foreach (DataRow transaction in dsTransactions.Tables[0].Rows)\r
                             iTransOn = 0;\r
                             foreach (XmlNode node in xmlTransactions.SelectNodes("//transaction"))\r
                             {\r
                             iTransOn = 0;\r
                             foreach (XmlNode node in xmlTransactions.SelectNodes("//transaction"))\r
                             {\r
@@ -300,9 +320,20 @@ namespace dblt
                                     iRandomTran = random.Next(0, 2);\r
                                 }\r
 \r
                                     iRandomTran = random.Next(0, 2);\r
                                 }\r
 \r
-                                if (iRandomTran == 0)\r
-                                {\r
-                                    NpgsqlTransaction tran = conn.BeginTransaction();\r
+                            if (iRandomTran == 0)\r
+                            {\r
+                                    NpgsqlTransaction tran = null;\r
+                                    SqlTransaction mstran = null;\r
+\r
+                                    if (sMode == "pgsql")\r
+                                    {\r
+                                        tran = conn.BeginTransaction();\r
+                                    }\r
+                                    else if (sMode == "mssql")\r
+                                    {\r
+                                         mstran = msconn.BeginTransaction();\r
+                                    }\r
+\r
                                     DateTime beginTime = DateTime.Now;\r
 \r
                                     lock (oTransCounterLock)\r
                                     DateTime beginTime = DateTime.Now;\r
 \r
                                     lock (oTransCounterLock)\r
@@ -310,7 +341,6 @@ namespace dblt
                                         iRunningTransactions++;\r
                                     }\r
 \r
                                         iRunningTransactions++;\r
                                     }\r
 \r
-                                    //foreach (DataColumn column in dsTransactions.Tables[0].Columns)\r
                                     iSqlOn = 0;\r
                                     foreach (XmlNode subnode in node.SelectNodes("//sql"))\r
                                     {\r
                                     iSqlOn = 0;\r
                                     foreach (XmlNode subnode in node.SelectNodes("//sql"))\r
                                     {\r
@@ -324,14 +354,32 @@ namespace dblt
                                         if (iRandomStmt == 0)\r
                                         {\r
                                             sSql = subnode.InnerText;\r
                                         if (iRandomStmt == 0)\r
                                         {\r
                                             sSql = subnode.InnerText;\r
-                                            //NpgsqlCommand command = new NpgsqlCommand(transaction[column].ToString().Replace("#client_id#", iThread.ToString()), conn, tran);\r
-                                            NpgsqlCommand command = new NpgsqlCommand(sSql.Replace("#client_id#", iThread.ToString()), conn, tran);\r
-                                            NpgsqlDataReader dr = command.ExecuteReader();\r
 \r
 \r
-                                            iCompletedQueries++;\r
-                                            while (dr.Read())\r
+                                            if (sMode == "pgsql")\r
                                             {\r
                                             {\r
-                                                //Just pull the data back into our dataset (but we don't care about it)\r
+                                                NpgsqlCommand command = new NpgsqlCommand(sSql.Replace("#client_id#", iThread.ToString()), conn, tran);\r
+                                                NpgsqlDataReader dr = command.ExecuteReader();\r
+\r
+                                                iCompletedQueries++;\r
+                                                while (dr.Read())\r
+                                                {\r
+                                                    //Just pull the data back into our dataset (but we don't care about it)\r
+                                                }\r
+\r
+                                                dr.Close();\r
+                                            }\r
+                                            else if (sMode == "mssql")\r
+                                            {\r
+                                                SqlCommand command = new SqlCommand(sSql.Replace("#client_id#", iThread.ToString()), msconn, mstran);\r
+                                                SqlDataReader dr = command.ExecuteReader();\r
+\r
+                                                iCompletedQueries++;\r
+                                                while (dr.Read())\r
+                                                {\r
+                                                    //Just pull the data back into our dataset (but we don't care about it)\r
+                                                }\r
+\r
+                                                dr.Close();\r
                                             }\r
 \r
                                             if (iLogLevel > 1)\r
                                             }\r
 \r
                                             if (iLogLevel > 1)\r
@@ -348,7 +396,16 @@ namespace dblt
                                         }\r
                                     }\r
 \r
                                         }\r
                                     }\r
 \r
-                                    tran.Commit();\r
+\r
+                                    if (sMode == "pgsql")\r
+                                    {\r
+                                        tran.Commit();\r
+                                    }\r
+                                    else if (sMode == "mssql")\r
+                                    {\r
+                                        mstran.Commit();\r
+                                    }\r
+\r
                                     DateTime commitTime = DateTime.Now;\r
                                     TimeSpan transactionDuration = commitTime - beginTime;\r
 \r
                                     DateTime commitTime = DateTime.Now;\r
                                     TimeSpan transactionDuration = commitTime - beginTime;\r
 \r
@@ -400,7 +457,14 @@ namespace dblt
 \r
                             if (bConnPerIteration)\r
                             {\r
 \r
                             if (bConnPerIteration)\r
                             {\r
-                                conn.Close();\r
+                                if (sMode == "pgsql")\r
+                                {\r
+                                    conn.Close();\r
+                                }\r
+                                else if (sMode == "mssql")\r
+                                {\r
+                                    msconn.Close();\r
+                                }\r
                             }\r
                             \r
                             DateTime stopTime = DateTime.Now;\r
                             }\r
                             \r
                             DateTime stopTime = DateTime.Now;\r
@@ -516,23 +580,20 @@ namespace dblt
             }\r
         }\r
 \r
             }\r
         }\r
 \r
-        //public static DataSet readTransactionsFile(string sTransactionsFile)\r
         public static XmlDocument readTransactionsFile(string sTransactionsFile)\r
         {\r
             DataSet ds = new DataSet();\r
             XmlDocument transfile = new XmlDocument();\r
             try\r
             {\r
         public static XmlDocument readTransactionsFile(string sTransactionsFile)\r
         {\r
             DataSet ds = new DataSet();\r
             XmlDocument transfile = new XmlDocument();\r
             try\r
             {\r
-                //GA ds.ReadXml(sTransactionsFile, XmlReadMode.InferSchema);\r
                 transfile.Load(sTransactionsFile);\r
             }\r
             catch (Exception e)\r
             {\r
                 Info("Error reading transaction file " + e.ToString(), iLogLevel, bVerboseScreen);\r
             }\r
                 transfile.Load(sTransactionsFile);\r
             }\r
             catch (Exception e)\r
             {\r
                 Info("Error reading transaction file " + e.ToString(), iLogLevel, bVerboseScreen);\r
             }\r
-            //return ds;\r
             return transfile;\r
         }\r
     }\r
        \r
             return transfile;\r
         }\r
     }\r
        \r
-}
\ No newline at end of file
+}\r