6
|
1 # Copyright INRA (Institut National de la Recherche Agronomique)
|
|
2 # http://www.inra.fr
|
|
3 # http://urgi.versailles.inra.fr
|
|
4 #
|
|
5 # This software is governed by the CeCILL license under French law and
|
|
6 # abiding by the rules of distribution of free software. You can use,
|
|
7 # modify and/ or redistribute the software under the terms of the CeCILL
|
|
8 # license as circulated by CEA, CNRS and INRIA at the following URL
|
|
9 # "http://www.cecill.info".
|
|
10 #
|
|
11 # As a counterpart to the access to the source code and rights to copy,
|
|
12 # modify and redistribute granted by the license, users are provided only
|
|
13 # with a limited warranty and the software's author, the holder of the
|
|
14 # economic rights, and the successive licensors have only limited
|
|
15 # liability.
|
|
16 #
|
|
17 # In this respect, the user's attention is drawn to the risks associated
|
|
18 # with loading, using, modifying and/or developing or reproducing the
|
|
19 # software by the user in light of its specific status of free software,
|
|
20 # that may mean that it is complicated to manipulate, and that also
|
|
21 # therefore means that it is reserved for developers and experienced
|
|
22 # professionals having in-depth computer knowledge. Users are therefore
|
|
23 # encouraged to load and test the software's suitability as regards their
|
|
24 # requirements in conditions enabling the security of their systems and/or
|
|
25 # data to be ensured and, more generally, to use and operate it in the
|
|
26 # same conditions as regards security.
|
|
27 #
|
|
28 # The fact that you are presently reading this means that you have had
|
|
29 # knowledge of the CeCILL license and that you accept its terms.
|
|
30
|
|
31
|
|
32 import unittest
|
|
33 import time
|
|
34 from commons.core.sql.DbSQLite import DbSQLite
|
|
35
|
|
36 class Test_DbSQLite(unittest.TestCase):
|
|
37
|
|
38 def setUp( self ):
|
|
39 self._iDb = DbSQLite("test.db")
|
|
40 self._uniqId = "%s" % time.strftime("%Y%m%d%H%M%S")
|
|
41
|
|
42 def tearDown( self ):
|
|
43 if self._iDb.open():
|
|
44 self._iDb.close()
|
|
45 self._iDb.delete()
|
|
46 self._iDb = None
|
|
47
|
|
48 def test_open_True(self):
|
|
49 self._iDb.close()
|
|
50 self.assertTrue( self._iDb.open(1) )
|
|
51
|
|
52 def test_open_False(self):
|
|
53 self._iDb.close()
|
|
54 self._iDb.host = "/toto/toto.db"
|
|
55 self.assertFalse( self._iDb.open(1) )
|
|
56 self._iDb.host = "test.db"
|
|
57
|
|
58 def test_updateInfoTable(self):
|
|
59 tableName = "dummyTable" + self._uniqId
|
|
60 info = "Table_for_test"
|
|
61
|
|
62 self._iDb.updateInfoTable(tableName, info)
|
|
63
|
|
64 sqlCmd = 'SELECT file FROM info_tables WHERE name = "%s"' % ( tableName )
|
|
65 self._iDb.execute( sqlCmd )
|
|
66 results = self._iDb.fetchall()
|
|
67 obsResult = False
|
|
68 if (info,) in results:
|
|
69 obsResult = True
|
|
70 sqlCmd = 'DELETE FROM info_tables WHERE name = "%s"' % ( tableName )
|
|
71 self._iDb.execute( sqlCmd )
|
|
72
|
|
73 self.assertTrue( obsResult )
|
|
74
|
|
75 def test_doesTableExist_True(self):
|
|
76 tableName = "dummyTable" + self._uniqId
|
|
77 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % ( tableName )
|
|
78 self._iDb.execute( sqlCmd )
|
|
79 self.assertTrue( self._iDb.doesTableExist(tableName) )
|
|
80
|
|
81 def test_dropTable(self):
|
|
82 tableName = "dummyTable" + self._uniqId
|
|
83 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % tableName
|
|
84 self._iDb.execute( sqlCmd )
|
|
85 sqlCmd = "CREATE TABLE info_tables ( name varchar(255), file varchar(255) )"
|
|
86 self._iDb.execute( sqlCmd )
|
|
87 sqlCmd = 'INSERT INTO info_tables VALUES ("%s","")' % tableName
|
|
88 self._iDb.execute( sqlCmd )
|
|
89
|
|
90 self._iDb.dropTable(tableName)
|
|
91 self.assertFalse( self._iDb.doesTableExist(tableName) )
|
|
92
|
|
93 def test_doesTableExist_False(self):
|
|
94 tableName = "dummyTable" + self._uniqId
|
|
95 self.assertFalse( self._iDb.doesTableExist(tableName) )
|
|
96
|
|
97 def test_createJobTable_is_table_created(self):
|
|
98 self._iDb.createTable("dummyJobTable", "jobs")
|
|
99 isTableCreated = self._iDb.doesTableExist("dummyJobTable")
|
|
100 self.assertTrue(isTableCreated)
|
|
101
|
|
102 def test_createJobTable_field_list(self):
|
|
103 self._iDb.createTable("dummyJobTable", "jobs")
|
|
104 obsLFiled = self._iDb.getFieldList("dummyJobTable")
|
|
105 expLField = ["jobid", "jobname", "groupid", "command", "launcher", "queue", "status", "time", "node"]
|
|
106 self.assertEquals(expLField, obsLFiled)
|
|
107
|
|
108 def test_createTable(self):
|
|
109 tableName = "dummyJobTable" + self._uniqId
|
|
110 self._iDb.createTable(tableName, "job")
|
|
111 obsLFiled = self._iDb.getFieldList(tableName)
|
|
112 expLField = ["jobid", "jobname", "groupid", "command", "launcher", "queue", "status", "time", "node"]
|
|
113 self.assertEquals(expLField, obsLFiled)
|
|
114
|
|
115 def test_createTable_with_overwrite_Job(self):
|
|
116 tableName = "dummyJobTable" + self._uniqId
|
|
117 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % tableName
|
|
118 self._iDb.execute( sqlCmd )
|
|
119 sqlCmd = "CREATE TABLE info_tables ( name varchar(255), file varchar(255) )"
|
|
120 self._iDb.execute( sqlCmd )
|
|
121 sqlCmd = 'INSERT INTO info_tables VALUES ("%s","")' % tableName
|
|
122 self._iDb.execute( sqlCmd )
|
|
123
|
|
124 self._iDb.createTable(tableName, "job", True)
|
|
125 obsLFiled = self._iDb.getFieldList(tableName)
|
|
126 expLField = ["jobid", "jobname", "groupid", "command", "launcher", "queue", "status", "time", "node"]
|
|
127 self.assertEquals(expLField, obsLFiled)
|
|
128
|
|
129 def test_getSize_empty_table(self):
|
|
130 tableName = "dummyJobTable" + self._uniqId
|
|
131 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % ( tableName )
|
|
132 self._iDb.execute( sqlCmd )
|
|
133 expSize = 0
|
|
134 obsSize = self._iDb.getSize(tableName)
|
|
135 self.assertEquals( expSize, obsSize )
|
|
136
|
|
137 def test_getSize_one_rows(self):
|
|
138 tableName = "dummyJobTable" + self._uniqId
|
|
139 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % ( tableName )
|
|
140 self._iDb.execute( sqlCmd )
|
|
141 sqlCmd = "INSERT INTO %s (dummyColumn) VALUES ('toto')" % tableName
|
|
142 self._iDb.execute( sqlCmd )
|
|
143 expSize = 1
|
|
144 obsSize = self._iDb.getSize(tableName)
|
|
145 self.assertEquals( expSize, obsSize )
|
|
146
|
|
147 def test_isEmpty_True(self):
|
|
148 tableName = "dummyTable" + self._uniqId
|
|
149 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % ( tableName )
|
|
150 self._iDb.execute( sqlCmd )
|
|
151 self.assertTrue(self._iDb.isEmpty(tableName))
|
|
152
|
|
153 def test_isEmpty_False(self):
|
|
154 tableName = "dummyTable" + self._uniqId
|
|
155 sqlCmd = "CREATE TABLE %s ( dummyColumn varchar(255) )" % (tableName)
|
|
156 self._iDb.execute(sqlCmd)
|
|
157 sqlCmd = "INSERT INTO %s (dummyColumn) VALUES ('toto')" % tableName
|
|
158 self._iDb.execute(sqlCmd)
|
|
159 self.assertFalse(self._iDb.isEmpty(tableName))
|
|
160
|
|
161 if __name__ == "__main__":
|
|
162 unittest.main() |