github.com/insionng/yougam@v0.0.0-20170714101924-2bc18d833463/libraries/pingcap/tidb/meta/meta_test.go (about) 1 // Copyright 2015 PingCAP, Inc. 2 // 3 // Licensed under the Apache License, Version 2.0 (the "License"); 4 // you may not use this file except in compliance with the License. 5 // You may obtain a copy of the License at 6 // 7 // http://www.apache.org/licenses/LICENSE-2.0 8 // 9 // Unless required by applicable law or agreed to in writing, software 10 // distributed under the License is distributed on an "AS IS" BASIS, 11 // See the License for the specific language governing permissions and 12 // limitations under the License. 13 14 package meta_test 15 16 import ( 17 "testing" 18 19 . "github.com/insionng/yougam/libraries/pingcap/check" 20 "github.com/insionng/yougam/libraries/pingcap/tidb/meta" 21 "github.com/insionng/yougam/libraries/pingcap/tidb/model" 22 "github.com/insionng/yougam/libraries/pingcap/tidb/store/localstore" 23 "github.com/insionng/yougam/libraries/pingcap/tidb/store/localstore/goleveldb" 24 "github.com/insionng/yougam/libraries/pingcap/tidb/util/testleak" 25 ) 26 27 func TestT(t *testing.T) { 28 TestingT(t) 29 } 30 31 var _ = Suite(&testSuite{}) 32 33 type testSuite struct { 34 } 35 36 func (s *testSuite) TestMeta(c *C) { 37 defer testleak.AfterTest(c)() 38 driver := localstore.Driver{Driver: goleveldb.MemoryDriver{}} 39 store, err := driver.Open("memory") 40 c.Assert(err, IsNil) 41 defer store.Close() 42 43 txn, err := store.Begin() 44 c.Assert(err, IsNil) 45 46 defer txn.Rollback() 47 48 t := meta.NewMeta(txn) 49 50 n, err := t.GenGlobalID() 51 c.Assert(err, IsNil) 52 c.Assert(n, Equals, int64(1)) 53 54 n, err = t.GetGlobalID() 55 c.Assert(err, IsNil) 56 c.Assert(n, Equals, int64(1)) 57 58 n, err = t.GetSchemaVersion() 59 c.Assert(err, IsNil) 60 c.Assert(n, Equals, int64(0)) 61 62 n, err = t.GenSchemaVersion() 63 c.Assert(err, IsNil) 64 c.Assert(n, Equals, int64(1)) 65 66 n, err = t.GetSchemaVersion() 67 c.Assert(err, IsNil) 68 c.Assert(n, Equals, int64(1)) 69 70 dbInfo := &model.DBInfo{ 71 ID: 1, 72 Name: model.NewCIStr("a"), 73 } 74 err = t.CreateDatabase(dbInfo) 75 c.Assert(err, IsNil) 76 77 err = t.CreateDatabase(dbInfo) 78 c.Assert(err, NotNil) 79 80 v, err := t.GetDatabase(1) 81 c.Assert(err, IsNil) 82 c.Assert(v, DeepEquals, dbInfo) 83 84 dbInfo.Name = model.NewCIStr("aa") 85 err = t.UpdateDatabase(dbInfo) 86 c.Assert(err, IsNil) 87 88 v, err = t.GetDatabase(1) 89 c.Assert(err, IsNil) 90 c.Assert(v, DeepEquals, dbInfo) 91 92 dbs, err := t.ListDatabases() 93 c.Assert(err, IsNil) 94 c.Assert(dbs, DeepEquals, []*model.DBInfo{dbInfo}) 95 96 tbInfo := &model.TableInfo{ 97 ID: 1, 98 Name: model.NewCIStr("t"), 99 } 100 err = t.CreateTable(1, tbInfo) 101 c.Assert(err, IsNil) 102 103 n, err = t.GenAutoTableID(1, 1, 10) 104 c.Assert(err, IsNil) 105 c.Assert(n, Equals, int64(10)) 106 107 n, err = t.GetAutoTableID(1, 1) 108 c.Assert(err, IsNil) 109 c.Assert(n, Equals, int64(10)) 110 111 err = t.CreateTable(1, tbInfo) 112 c.Assert(err, NotNil) 113 114 tbInfo.Name = model.NewCIStr("tt") 115 err = t.UpdateTable(1, tbInfo) 116 c.Assert(err, IsNil) 117 118 table, err := t.GetTable(1, 1) 119 c.Assert(err, IsNil) 120 c.Assert(table, DeepEquals, tbInfo) 121 122 table, err = t.GetTable(1, 2) 123 c.Assert(err, IsNil) 124 c.Assert(table, IsNil) 125 126 tbInfo2 := &model.TableInfo{ 127 ID: 2, 128 Name: model.NewCIStr("bb"), 129 } 130 err = t.CreateTable(1, tbInfo2) 131 c.Assert(err, IsNil) 132 133 tables, err := t.ListTables(1) 134 c.Assert(err, IsNil) 135 c.Assert(tables, DeepEquals, []*model.TableInfo{tbInfo, tbInfo2}) 136 137 err = t.DropTable(1, 2) 138 c.Assert(err, IsNil) 139 140 tables, err = t.ListTables(1) 141 c.Assert(err, IsNil) 142 c.Assert(tables, DeepEquals, []*model.TableInfo{tbInfo}) 143 144 err = t.DropDatabase(1) 145 c.Assert(err, IsNil) 146 147 dbs, err = t.ListDatabases() 148 c.Assert(err, IsNil) 149 c.Assert(dbs, HasLen, 0) 150 151 bootstrapped, err := t.IsBootstrapped() 152 c.Assert(err, IsNil) 153 c.Assert(bootstrapped, IsFalse) 154 155 err = t.FinishBootstrap() 156 c.Assert(err, IsNil) 157 158 bootstrapped, err = t.IsBootstrapped() 159 c.Assert(err, IsNil) 160 c.Assert(bootstrapped, IsTrue) 161 162 err = txn.Commit() 163 c.Assert(err, IsNil) 164 } 165 166 func (s *testSuite) TestDDL(c *C) { 167 defer testleak.AfterTest(c)() 168 driver := localstore.Driver{Driver: goleveldb.MemoryDriver{}} 169 store, err := driver.Open("memory") 170 c.Assert(err, IsNil) 171 defer store.Close() 172 173 txn, err := store.Begin() 174 c.Assert(err, IsNil) 175 176 defer txn.Rollback() 177 178 t := meta.NewMeta(txn) 179 180 owner := &model.Owner{OwnerID: "1"} 181 err = t.SetDDLJobOwner(owner) 182 c.Assert(err, IsNil) 183 ov, err := t.GetDDLJobOwner() 184 c.Assert(err, IsNil) 185 c.Assert(owner, DeepEquals, ov) 186 187 job := &model.Job{ID: 1} 188 err = t.EnQueueDDLJob(job) 189 c.Assert(err, IsNil) 190 n, err := t.DDLJobQueueLen() 191 c.Assert(err, IsNil) 192 c.Assert(n, Equals, int64(1)) 193 194 v, err := t.GetDDLJob(0) 195 c.Assert(err, IsNil) 196 c.Assert(v, DeepEquals, job) 197 v, err = t.GetDDLJob(1) 198 c.Assert(err, IsNil) 199 c.Assert(v, IsNil) 200 job.ID = 2 201 err = t.UpdateDDLJob(0, job) 202 c.Assert(err, IsNil) 203 204 err = t.UpdateDDLReorgHandle(job, 1) 205 c.Assert(err, IsNil) 206 207 h, err := t.GetDDLReorgHandle(job) 208 c.Assert(err, IsNil) 209 c.Assert(h, Equals, int64(1)) 210 211 err = t.RemoveDDLReorgHandle(job) 212 c.Assert(err, IsNil) 213 214 v, err = t.DeQueueDDLJob() 215 c.Assert(err, IsNil) 216 c.Assert(v, DeepEquals, job) 217 218 err = t.AddHistoryDDLJob(job) 219 c.Assert(err, IsNil) 220 v, err = t.GetHistoryDDLJob(2) 221 c.Assert(err, IsNil) 222 c.Assert(v, DeepEquals, job) 223 224 // DDL background job test 225 err = t.SetBgJobOwner(owner) 226 c.Assert(err, IsNil) 227 ov, err = t.GetBgJobOwner() 228 c.Assert(err, IsNil) 229 c.Assert(owner, DeepEquals, ov) 230 231 bgJob := &model.Job{ID: 1} 232 err = t.EnQueueBgJob(bgJob) 233 c.Assert(err, IsNil) 234 n, err = t.BgJobQueueLen() 235 c.Assert(err, IsNil) 236 c.Assert(n, Equals, int64(1)) 237 238 v, err = t.GetBgJob(0) 239 c.Assert(err, IsNil) 240 c.Assert(v, DeepEquals, bgJob) 241 v, err = t.GetBgJob(1) 242 c.Assert(err, IsNil) 243 c.Assert(v, IsNil) 244 bgJob.ID = 2 245 err = t.UpdateBgJob(0, bgJob) 246 c.Assert(err, IsNil) 247 248 v, err = t.DeQueueBgJob() 249 c.Assert(err, IsNil) 250 c.Assert(v, DeepEquals, bgJob) 251 252 err = t.AddHistoryBgJob(bgJob) 253 c.Assert(err, IsNil) 254 v, err = t.GetHistoryBgJob(2) 255 c.Assert(err, IsNil) 256 c.Assert(v, DeepEquals, bgJob) 257 258 err = txn.Commit() 259 c.Assert(err, IsNil) 260 }