wasCSharpSQLite – Blame information for rev

Subversion Repositories:
Rev:
Rev Author Line No. Line
1 office 1 using System.Diagnostics;
2 using System.IO;
3  
4 using Community.CsharpSQLite;
5 using Xunit;
6 using Community.CsharpSqlite;
7  
8 namespace Community.CsharpSQLite.UnitTests
9 {
10 public class Stress
11 {
12 public Stress()
13 {
14 var db = OpenDB(databaseName);
15 InitializeTables(db);
16 db.CloseDatabase();
17 }
18  
19 private SQLiteDatabase OpenDB(string fileName)
20 {
21 if (File.Exists(fileName))
22 File.Delete(fileName);
23  
24 var db = new SQLiteDatabase(fileName);
25  
26 for (int i = 0; i < PRAGMA_Commands.Length; i++)
27 {
28 db.ExecuteNonQuery(PRAGMA_Commands[i]);
29 }
30  
31 return db;
32 }
33  
34 private void InitializeTables(SQLiteDatabase db)
35 {
36 db.ExecuteNonQuery("BEGIN EXCLUSIVE");
37 for (int i = 0; i < CREATE_Commands.Length; i++)
38 {
39 db.ExecuteNonQuery(CREATE_Commands[i]);
40 }
41 }
42  
43 private const string databaseName = "test.db";
44  
45 private static readonly string[] CREATE_Commands =
46 {
47 "CREATE TABLE Root (intIndex INTEGER PRIMARY KEY, strIndex TEXT)",
48 "CREATE INDEX RootStrIndex ON Root (strIndex)"
49 };
50  
51 private static readonly string[] PRAGMA_Commands =
52 {
53 "PRAGMA synchronous = OFF",
54 "PRAGMA temp_store = MEMORY",
55 "PRAGMA journal_mode = OFF",
56 "PRAGMA locking_mode=EXCLUSIVE"
57 };
58  
59 private const string INSERT_Command =
60 "INSERT INTO Root VALUES (?,?)";
61  
62 [Fact]
63 public void InsertRecords()
64 {
65 var db = OpenDB(databaseName);
66  
67 db.ExecuteNonQuery("BEGIN");
68 var stmt = new SQLiteVdbe(db, INSERT_Command);
69 long key = 1999;
70 for (var i = 0; i < 1000; i++)
71 {
72 key = (3141592621L * key + 2718281829L) % 1000000007L;
73 stmt.Reset();
74 stmt.BindLong(1, key);
75 stmt.BindText(2, key.ToString());
76 stmt.ExecuteStep();
77 }
78 stmt.Close();
79 db.ExecuteNonQuery("END");
80  
81 db.CloseDatabase();
82 }
83  
84 [Fact]
85 public void Insert_1000()
86 {
87 for (var i = 0; i < 1000; i++)
88 {
89 Debug.WriteLine("Round " + i);
90 InsertRecords();
91 }
92 }
93 }
94 }