Beispiel #1
0
 public void CreateInstanceInitTerm()
 {
     string dir = SetupHelper.CreateRandomDirectory();
     using (var instance = new Instance("theinstance"))
     {
         instance.Parameters.LogFileDirectory = dir;
         instance.Parameters.SystemDirectory = dir;
         instance.Parameters.TempDirectory = dir;
         instance.Parameters.NoInformationEvent = true;
         instance.Init();
         instance.Term();
         Directory.Delete(dir, true);    // only works if the instance is terminated
     }
 }
Beispiel #2
0
 public void CreateInstanceInitTerm()
 {
     string dir = SetupHelper.CreateRandomDirectory();
     using (var instance = new Instance("initterm"))
     {
         instance.Parameters.LogFileDirectory = dir;
         instance.Parameters.SystemDirectory = dir;
         instance.Parameters.TempDirectory = dir;
         instance.Parameters.LogFileSize = 256; // 256Kb
         instance.Parameters.NoInformationEvent = true;
         instance.Init();
         instance.Term();
         Cleanup.DeleteDirectoryWithRetry(dir);    // only works if the instance is terminated
     }
 }
Beispiel #3
0
        protected void ExecuteInDatabase(Action<Session, JET_DBID> action)
        {
            var instance = new Instance(databasePath);
            try
            {
                instance.Parameters.CircularLog = true;
                instance.Parameters.CreatePathIfNotExist = true;
                instance.Parameters.TempDirectory = Path.Combine(Path.GetDirectoryName(databasePath), "temp");
                instance.Parameters.SystemDirectory = Path.Combine(Path.GetDirectoryName(databasePath), "system");
                instance.Parameters.LogFileDirectory = Path.Combine(Path.GetDirectoryName(databasePath), "logs");
                instance.Init();

                using (var session = new Session(instance))
                {
                    Api.JetAttachDatabase(session, databasePath, AttachDatabaseGrbit.None);
                    try
                    {
                        using (var tx = new Transaction(session))
                        {

                            JET_DBID dbid;
                            Api.JetOpenDatabase(session, databasePath, "", out dbid, OpenDatabaseGrbit.None);
                            try
                            {
                                action(session, dbid);
                                tx.Commit(CommitTransactionGrbit.None);
                            }
                            finally
                            {
                                Api.JetCloseDatabase(session, dbid, CloseDatabaseGrbit.None);
                            }
                        }
                    }
                    finally
                    {
                        Api.JetDetachDatabase(session, databasePath);
                    }
                }
            }
            finally
            {
                instance.Term();
            }
        }
Beispiel #4
0
 public void TermThrowsExceptionWhenInstanceIsDisposed()
 {
     var instance = new Instance("theinstance");
     instance.Dispose();
     instance.Term();
 }
Beispiel #5
0
 public void JetInstanceThrowsExceptionWhenInstanceIsClosed()
 {
     var instance = new Instance("theinstance");
     instance.Parameters.NoInformationEvent = true;
     instance.Parameters.Recovery = false;
     instance.Parameters.MaxTemporaryTables = 0;
     instance.Init();
     instance.Term();
     JET_INSTANCE x = instance.JetInstance;
 }
Beispiel #6
0
 /// <summary>
 /// Init and term an instance. This is used to make sure the instance
 /// is always cleaned up when the thread is terminated. If the cleanup
 /// is missed the next instance create will fail.
 /// </summary>
 /// <param name="instanceName">
 /// The name of the instance to create.
 /// </param>
 private static void InstanceInitTermThread(string instanceName)
 {
     try
     {
         while (true)
         {
             using (var instance = new Instance(instanceName))
             {
                 SetupHelper.SetLightweightConfiguration(instance);
                 instance.Init();
                 instance.Term();
             }
         }
     }
     catch (ThreadAbortException)
     {
         // Actually letting the thread abort will fail the test, exit
         // gracefully instead.
         Thread.ResetAbort();
     }
     catch (EsentErrorException ex)
     {
         Console.WriteLine("Got exception {0}", ex);
         Assert.Fail("Got exception {0}", ex);
     }
 }
Beispiel #7
0
 public void JetInstanceThrowsExceptionWhenInstanceIsClosed()
 {
     var instance = new Instance("closed");
     SetupHelper.SetLightweightConfiguration(instance);
     instance.Init();
     instance.Term();
     JET_INSTANCE x = instance.JetInstance;
 }
Beispiel #8
0
 /// <summary>
 /// Create a new instance and a connection on that instance.
 /// A new InstanceInfo is added to the instance dictionary.
 /// </summary>
 /// <param name="database">The database to connect to.</param>
 /// <param name="mode">The mode to connect to the database in.</param>
 /// <returns>A new Connection to the database.</returns>
 private Connection CreateNewInstanceAndConnection(string database, DatabaseOpenMode mode)
 {
     var instanceName = this.GetNewInstanceName();
     var instance = new Instance(instanceName);
     this.Tracer.TraceInfo("created instance '{0}'", instanceName);
     try
     {
         SetParametersAndInitializeInstance(database, instance);
         this.instances[database] = new InstanceInfo(instance, database);
         return this.CreateNewConnection(database, mode);
     }
     catch (Exception)
     {
         // Creating the new instance failed. Terminate ESE and remove the 
         // instance information.
         instance.Term();
         this.instances.Remove(database);
         throw;
     }
 }