示例#1
0
        public void CreateDatabaseThrowsExceptionWhenDatabaseExists()
        {
            using (Connection connection = Esent.CreateDatabase(this.database))
            {
            }

            try
            {
                Connection connection = Esent.CreateDatabase(this.database);
                Assert.Fail("Expected and EsentException");
            }
            catch (EsentException)
            {
            }
        }
示例#2
0
 public void InsertRecordWithoutTransaction()
 {
     using (Connection connection = Esent.CreateDatabase(this.database))
         using (Table table = connection.CreateTable("table"))
         {
             try
             {
                 Record record = table.NewRecord();
                 Assert.Fail("Expected an EsentException");
             }
             catch (EsentException)
             {
             }
         }
 }
示例#3
0
        public static void CreateDatabase(TestContext ignored)
        {
            directory = "retrieve_column_perf";
            database  = Path.Combine(directory, "columns.edb");
            Directory.CreateDirectory(directory);

            tablename = "table";

            using (Connection connection = Esent.CreateDatabase(database))
                using (Transaction transaction = connection.BeginTransaction())
                    using (Table table = connection.CreateTable(tablename))
                    {
                        table.CreateColumn(new ColumnDefinition("bool", ColumnType.Bool));
                        table.CreateColumn(new ColumnDefinition("byte", ColumnType.Byte));
                        table.CreateColumn(new ColumnDefinition("short", ColumnType.Int16));
                        table.CreateColumn(new ColumnDefinition("ushort", ColumnType.UInt16));
                        table.CreateColumn(new ColumnDefinition("int", ColumnType.Int32));
                        table.CreateColumn(new ColumnDefinition("uint", ColumnType.UInt32));
                        table.CreateColumn(new ColumnDefinition("long", ColumnType.Int64));
                        table.CreateColumn(new ColumnDefinition("float", ColumnType.Float));
                        table.CreateColumn(new ColumnDefinition("double", ColumnType.Double));
                        table.CreateColumn(new ColumnDefinition("datetime", ColumnType.DateTime));
                        table.CreateColumn(new ColumnDefinition("guid", ColumnType.Guid));
                        table.CreateColumn(new ColumnDefinition("text", ColumnType.Text));
                        table.CreateColumn(new ColumnDefinition("asciitext", ColumnType.AsciiText));
                        table.CreateColumn(new ColumnDefinition("binary", ColumnType.Binary));

                        table.NewRecord()
                        .SetColumn("bool", Any.Boolean)
                        .SetColumn("byte", Any.Byte)
                        .SetColumn("short", Any.Int16)
                        .SetColumn("ushort", Any.UInt16)
                        .SetColumn("int", Any.Int32)
                        .SetColumn("uint", Any.UInt32)
                        .SetColumn("long", Any.Int64)
                        .SetColumn("float", Any.Float)
                        .SetColumn("double", Any.Double)
                        .SetColumn("datetime", Any.DateTime)
                        .SetColumn("guid", Guid.NewGuid())
                        .SetColumn("text", Any.String)
                        .SetColumn("asciitext", Any.String)
                        .SetColumn("binary", Any.Bytes)
                        .Save();

                        transaction.Commit();
                    }
        }
示例#4
0
        public void TestFluentUpdateInterfaceWithRollback()
        {
            using (Connection connection = Esent.CreateDatabase(this.database))
            {
                Table table = null;
                connection.UsingLazyTransaction(() =>
                {
                    table = connection.CreateTable("mytable")
                            .CreateColumn(DefinedAs.Int32Column("autoinc").AsAutoincrement())
                            .CreateColumn(DefinedAs.Int32Column("myint"))
                            .CreateColumn(DefinedAs.TextColumn("mystring").WithMaxSize(200));
                });

                connection.UsingLazyTransaction(() =>
                                                table.NewRecord()
                                                .SetColumn("myint", 5)
                                                .SetColumn("mystring", "hello")
                                                .Save());

                try
                {
                    connection.UsingLazyTransaction(() =>
                    {
                        table.First()
                        .SetColumn("myint", 100)
                        .SetColumn("mystring", "somethingelse")
                        .Save();
                        throw new OutOfMemoryException("cancel this update");
                    });
                }
                catch (OutOfMemoryException)
                {
                    // we expected this
                }
            }

            using (Connection connection = Esent.OpenDatabase(this.database, DatabaseOpenMode.ReadOnly))
            {
                Table  table  = connection.OpenTable("mytable");
                Record record = table.First();

                Assert.AreEqual(1, record["autoinc"]);
                Assert.AreEqual(5, record["myint"]);
                Assert.AreEqual("hello", record["mystring"]);
            }
        }
示例#5
0
 static void InsertRecords()
 {
     using (Connection connection = Esent.OpenDatabase(Database))
         using (Table table = connection.OpenTable("mytable"))
         {
             connection.UsingLazyTransaction(() =>
             {
                 for (int i = 0; i < 10; ++i)
                 {
                     table.NewRecord()
                     .SetColumn("myid", i)
                     .SetColumn("mydata", "some data")
                     .Save();
                 }
             });
         }
 }
示例#6
0
        public void Setup()
        {
            this.random = new Random();
            this.data   = new byte[DataSize];
            this.random.NextBytes(this.data);

            this.connection = Esent.CreateDatabase("pixie\\esentperftest.db");

            // Create the table
            this.table = connection.CreateTable("table");
            using (var trx = connection.BeginTransaction())
            {
                table.CreateColumn(DefinedAs.Int64Column("key"));
                table.CreateColumn(DefinedAs.BinaryColumn("data"));
                trx.Commit();
            }
        }
示例#7
0
        static void DeleteRecords()
        {
            using (Connection connection = Esent.OpenDatabase(Database))
                using (Table table = connection.OpenTable("mytable"))
                {
                    IEnumerable <Record> recordsToDelete = from record in table
                                                           where (0 == ((int)record["myid"] % 2))
                                                           select record;

                    connection.UsingLazyTransaction(() =>
                    {
                        foreach (Record record in recordsToDelete)
                        {
                            record.Delete();
                        }
                    });
                }
        }
示例#8
0
        static void UpdateRecords()
        {
            using (Connection connection = Esent.OpenDatabase(Database))
                using (Table table = connection.OpenTable("mytable"))
                {
                    connection.UsingLazyTransaction(() =>
                    {
                        Record[] records = table.ToArray();

                        records[0]["mydata"] = "some other data";
                        records[1]["mydata"] = "even different data";
                        records[2]["mydata"] = "this update will be lost";

                        records[0].Save();
                        records[1].Save();
                        // records[2] isn't saved so the update will be cancelled when the transaction commits
                    });
                }
        }
示例#9
0
        public void CreateTwoConnections()
        {
            using (Connection connection = Esent.CreateDatabase(this.database))
                using (Connection anotherconnection = Esent.OpenDatabase(this.database))
                    using (Table anothertable = anotherconnection.CreateTable("table"))
                    {
                        Transaction transaction = anotherconnection.BeginTransaction();
                        anothertable.CreateColumn(new ColumnDefinition("column", ColumnType.Bool));
                        Record anotherrecord = anothertable.NewRecord();
                        anotherrecord["column"] = 1;
                        anotherrecord.Save();
                        transaction.Commit();

                        using (Table table = connection.OpenTable("table"))
                        {
                            Record record = table.First();
                            Assert.AreEqual(true, record["column"]);
                        }
                    }
        }
示例#10
0
        public void ReplaceRecordWithoutTransaction()
        {
            using (Connection connection = Esent.CreateDatabase(this.database))
                using (Table table = connection.CreateTable("table"))
                {
                    Transaction trx = connection.BeginTransaction();
                    table.CreateColumn(new ColumnDefinition("column", ColumnType.Bool));
                    Record record = table.NewRecord();
                    record.Save();
                    trx.Commit();

                    try
                    {
                        record["column"] = Any.Boolean;
                        Assert.Fail("Expected an EsentException");
                    }
                    catch (EsentException)
                    {
                    }
                }
        }
示例#11
0
 public void Setup()
 {
     this.connection  = Esent.OpenDatabase(database);
     this.transaction = this.connection.BeginTransaction();
     this.table       = this.connection.OpenTable(tablename);
 }
示例#12
0
 /// <summary>
 /// Opens an existing database and returns a connection to it.
 /// </summary>
 /// <param name="database">The database to open.</param>
 /// <returns>A connection to the database.</returns>
 public static Connection OpenDatabase(string database)
 {
     return(Esent.OpenDatabase(database, DatabaseOpenMode.ReadWrite));
 }
示例#13
0
 /// <summary>
 /// Create a new database and return a connection to it.
 /// </summary>
 /// <param name="database">The database to create.</param>
 /// <returns>A connection to the newly created database.</returns>
 public static Connection CreateDatabase(string database)
 {
     return(Esent.CreateDatabase(database, DatabaseCreationMode.None));
 }
示例#14
0
 public void Setup()
 {
     this.directory = "sql_connection_tests";
     this.database  = Path.Combine(this.directory, "sql.edb");
     this.sql       = Esent.CreateSqlConnection();
 }
示例#15
0
        ///// <summary>
        /////
        ///// </summary>
        ///// <param name="directory"></param>
        ///// <param name="path"></param>
        //public void Delete(string directory, string path)
        //{
        //    File.Delete(path);
        //    File.Delete(System.IO.Path.Combine(directory, String.Format(CultureInfo.InvariantCulture, "{0}.chk", "edb")));
        //    foreach (string file in Directory.GetFiles(directory, String.Format(CultureInfo.InvariantCulture, "{0}*.log", "edb")))
        //    {
        //        File.Delete(file);
        //    }

        //    foreach (string file in Directory.GetFiles(directory, String.Format(CultureInfo.InvariantCulture, "{0}*.jrs", "edb")))
        //    {
        //        File.Delete(file);
        //    }
        //}

        /// <summary>
        ///
        /// </summary>
        public string CreateDatabase()
        {
            try
            {
                if (File.Exists(OutputPath + @"\data.edb") == false)
                {
                    _connection = Esent.CreateDatabase(OutputPath + @"\data.edb");

                    _table = _connection.CreateTable("Data");

                    _connection.UsingLazyTransaction(() =>
                    {
                        _table.CreateColumn(new ColumnDefinition("Id", ColumnType.Int32));           // Filterable
                        _table.CreateColumn(new ColumnDefinition("Type", ColumnType.Text));          // Filterable
                        _table.CreateColumn(new ColumnDefinition("HostName", ColumnType.Text));      // Filterable
                        _table.CreateColumn(new ColumnDefinition("IpAddress", ColumnType.Text));     // Filterable
                        _table.CreateColumn(new ColumnDefinition("MacAddress", ColumnType.Text));    // Filterable
                        _table.CreateColumn(new ColumnDefinition("Service", ColumnType.Text));       // Filterable
                        _table.CreateColumn(new ColumnDefinition("Protocol", ColumnType.Text));      // Filterable
                        _table.CreateColumn(new ColumnDefinition("Port", ColumnType.Text));          // Filterable
                        _table.CreateColumn(new ColumnDefinition("Text", ColumnType.Text));          // Filterable
                        _table.CreateColumn(new ColumnDefinition("PluginId", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("PluginName", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("PluginFamily", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Severity", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Solution", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("RiskFactor", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Description", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("PluginPublicationDate", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("VulnPublicationDate", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("PatchPublicationDate", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Synopsis", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("PluginOutput", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("PluginVersion", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("SeeAlso", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("CvssVector", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("CvssBaseScore", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("CvssTemporalScore", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Cve", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Bid", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("Xref", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("State", ColumnType.Text));         // Filterable
                        _table.CreateColumn(new ColumnDefinition("Product", ColumnType.Text));       // Filterable
                        _table.CreateColumn(new ColumnDefinition("Version", ColumnType.Text));       // Filterable
                        _table.CreateColumn(new ColumnDefinition("ExtraInfo", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("ExploitabilityEase", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("ExploitAvailable", ColumnType.Text)); // Filterable
                        _table.CreateColumn(new ColumnDefinition("ExploitFrameworkCanvas", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("ExploitFrameworkMetasploit", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("ExploitFrameworkCore", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("MetasploitName", ColumnType.Text));
                        _table.CreateColumn(new ColumnDefinition("CanvasPackage", ColumnType.Text));
                    });

                    _transaction = _connection.BeginTransaction();
                }
                else
                {
                    _connection  = Esent.OpenDatabase(OutputPath + @"\data.edb");
                    _table       = _connection.OpenTable("Data");
                    _transaction = _connection.BeginTransaction();
                }

                return(string.Empty);
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }