예제 #1
0
        public void IsolationLevelChaos()
        {
            Exception exp = null;


            MonoTests.System.Data.Utils.DataBaseServer dbServer = ConnectedDataProvider.GetDbType(MonoTests.System.Data.Utils.ConnectedDataProvider.ConnectionString);

            OleDbConnection  con = new OleDbConnection(MonoTests.System.Data.Utils.ConnectedDataProvider.ConnectionString);
            OleDbTransaction txn = null;

            //supported only in SQLServer
            if (dbServer == MonoTests.System.Data.Utils.DataBaseServer.SQLServer)
            {
                try {
                    BeginCase("IsolationLevel = Chaos");
                    con.Open();
                    txn = con.BeginTransaction(IsolationLevel.Chaos);
                    Compare(txn.IsolationLevel, IsolationLevel.Chaos);
                }
                catch (Exception ex) { exp = ex; }
                finally{ EndCase(exp); exp = null; if (con.State == ConnectionState.Open)
                         {
                             con.Close();
                         }
                }
            }
        }
예제 #2
0
        public void run()
        {
            Exception exp = null;


            MonoTests.System.Data.Utils.DataBaseServer dbServer = ConnectedDataProvider.GetDbType(MonoTests.System.Data.Utils.ConnectedDataProvider.ConnectionString);

            OleDbConnection  con = new OleDbConnection(MonoTests.System.Data.Utils.ConnectedDataProvider.ConnectionString);
            OleDbTransaction txn = null;

            try
            {
                BeginCase("IsolationLevel = ReadCommitted");
                con.Open();
                txn = con.BeginTransaction();
                Compare(txn.IsolationLevel, IsolationLevel.ReadCommitted);
            }
            catch (Exception ex) { exp = ex; }
            finally{ EndCase(exp); exp = null; if (con.State == ConnectionState.Open)
                     {
                         con.Close();
                     }
            }

            //not supported in Oracle
            if (dbServer != MonoTests.System.Data.Utils.DataBaseServer.Oracle)
            {
                try
                {
                    BeginCase("IsolationLevel = ReadUncommitted");
                    con.Open();
                    txn = con.BeginTransaction(IsolationLevel.ReadUncommitted);
                    Compare(txn.IsolationLevel, IsolationLevel.ReadUncommitted);
                }
                catch (Exception ex) { exp = ex; }
                finally{ EndCase(exp); exp = null; if (con.State == ConnectionState.Open)
                         {
                             con.Close();
                         }
                }
            }

            //not supported in Oracle
            if (dbServer != MonoTests.System.Data.Utils.DataBaseServer.Oracle)
            {
                try
                {
                    BeginCase("IsolationLevel = RepeatableRead");
                    con.Open();
                    txn = con.BeginTransaction(IsolationLevel.RepeatableRead);
                    Compare(txn.IsolationLevel, IsolationLevel.RepeatableRead);
                }
                catch (Exception ex) { exp = ex; }
                finally{ EndCase(exp); exp = null; if (con.State == ConnectionState.Open)
                         {
                             con.Close();
                         }
                }
            }

            try
            {
                BeginCase("IsolationLevel = Serializable");
                con.Open();
                txn = con.BeginTransaction(IsolationLevel.Serializable);
                Compare(txn.IsolationLevel, IsolationLevel.Serializable);
                txn.Rollback();
                txn = con.BeginTransaction();
                txn.Rollback();
            }
            catch (Exception ex) { exp = ex; }
            finally{ EndCase(exp); exp = null; if (con.State == ConnectionState.Open)
                     {
                         con.Close();
                     }
            }

            // not supported in DB2,MSSQL,Oracle,sybase and guess what... Postgres.
            if (dbServer != MonoTests.System.Data.Utils.DataBaseServer.DB2 &&
                dbServer != MonoTests.System.Data.Utils.DataBaseServer.SQLServer &&
                dbServer != MonoTests.System.Data.Utils.DataBaseServer.Oracle &&
                dbServer != DataBaseServer.PostgreSQL &&
                dbServer != MonoTests.System.Data.Utils.DataBaseServer.Sybase)
            {
                try
                {
                    BeginCase("IsolationLevel = Unspecified");
                    con.Open();
                    txn = con.BeginTransaction(IsolationLevel.Unspecified);
                    Compare(txn.IsolationLevel, IsolationLevel.Unspecified);
                }
                catch (Exception ex) { exp = ex; }
                finally{ EndCase(exp); exp = null; if (con.State == ConnectionState.Open)
                         {
                             con.Close();
                         }
                }
            }
        }