@@ -19,6 +19,7 @@ package boltdb
1919
2020import (
2121 "fmt"
22+ "os"
2223 "strconv"
2324 "testing"
2425 "time"
@@ -33,12 +34,33 @@ const (
3334 nsToken = "xxxxx"
3435)
3536
37+ func InitNamespaceData (nsStore * namespaceStore , nsCount int ) error {
38+ for i := 0 ; i < nsCount ; i ++ {
39+ err := nsStore .AddNamespace (& model.Namespace {
40+ Name : "default" + strconv .Itoa (i ),
41+ Comment : nsComment ,
42+ Token : nsToken ,
43+ Owner : nsOwner ,
44+ Valid : true ,
45+ CreateTime : time .Now (),
46+ ModifyTime : time .Now (),
47+ })
48+ if nil != err {
49+ return err
50+ }
51+ }
52+ return nil
53+ }
54+
3655func TestNamespaceStore_AddNamespace (t * testing.T ) {
56+ _ = os .RemoveAll ("./table.bolt" )
3757 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
3858 if nil != err {
3959 t .Fatal (err )
4060 }
41- defer handler .Close ()
61+ defer func () {
62+ handler .Close ()
63+ }()
4264 nsStore := & namespaceStore {handler : handler }
4365 for i := 0 ; i < nsCount ; i ++ {
4466 err = nsStore .AddNamespace (& model.Namespace {
@@ -57,12 +79,18 @@ func TestNamespaceStore_AddNamespace(t *testing.T) {
5779}
5880
5981func TestNamespaceStore_ListNamespaces (t * testing.T ) {
82+ _ = os .RemoveAll ("./table.bolt" )
6083 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
6184 if nil != err {
6285 t .Fatal (err )
6386 }
6487 defer handler .Close ()
6588 nsStore := & namespaceStore {handler : handler }
89+
90+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
91+ t .Fatal (err )
92+ }
93+
6694 namespaces , err := nsStore .ListNamespaces (nsOwner )
6795 if nil != err {
6896 t .Fatal (err )
@@ -75,13 +103,114 @@ func TestNamespaceStore_ListNamespaces(t *testing.T) {
75103 }
76104}
77105
106+ func TestNamespaceStore_GetNamespaces (t * testing.T ) {
107+ _ = os .RemoveAll ("./table.bolt" )
108+ handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
109+ if nil != err {
110+ t .Fatal (err )
111+ }
112+ defer handler .Close ()
113+ nsStore := & namespaceStore {handler : handler }
114+
115+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
116+ t .Fatal (err )
117+ }
118+
119+ ret , retCnt , err := nsStore .GetNamespaces (map [string ][]string {
120+ "" : {},
121+ }, 0 , nsCount )
122+
123+ if err != nil {
124+ t .Fatal (err )
125+ }
126+ if len (ret ) != int (retCnt ) {
127+ t .Fatal ("len(ret) need equal int(retCnt)" )
128+ }
129+
130+ // 只要有一个条件不满足,则对应的条目就不应该查出来
131+ ret , retCnt , err = nsStore .GetNamespaces (map [string ][]string {
132+ OwnerAttribute : {"springliao" },
133+ }, 0 , nsCount )
134+
135+ if err != nil {
136+ t .Fatal (err )
137+ }
138+ if len (ret ) != 0 {
139+ t .Fatal ("len(ret) must be zero" )
140+ }
141+
142+ ret , retCnt , err = nsStore .GetNamespaces (map [string ][]string {
143+ OwnerAttribute : {nsOwner },
144+ NameAttribute : {"springliao" },
145+ }, 0 , nsCount )
146+
147+ if err != nil {
148+ t .Fatal (err )
149+ }
150+ if len (ret ) != 0 {
151+ t .Fatal ("len(ret) must be zero" )
152+ }
153+
154+ ret , retCnt , err = nsStore .GetNamespaces (map [string ][]string {
155+ OwnerAttribute : {nsOwner },
156+ }, 0 , 1 )
157+
158+ if err != nil {
159+ t .Fatal (err )
160+ }
161+ if ! (len (ret ) == 1 && nsCount == int (retCnt )) {
162+ t .Fatalf ("len(ret) must be 1 and retCnt must be %d" , nsCount )
163+ }
164+
165+ ret , retCnt , err = nsStore .GetNamespaces (map [string ][]string {
166+ OwnerAttribute : {nsOwner },
167+ NameAttribute : {"default1" },
168+ }, 0 , 1 )
169+
170+ if err != nil {
171+ t .Fatal (err )
172+ }
173+ if ! (len (ret ) == 1 && retCnt == 1 ) {
174+ t .Fatalf ("len(ret) must be 1 and retCnt must be 1, acutal len(ret) %d, retCnt : %d" , len (ret ), retCnt )
175+ }
176+
177+ ret , retCnt , err = nsStore .GetNamespaces (map [string ][]string {
178+ OwnerAttribute : {nsOwner },
179+ }, 3 , 1 )
180+
181+ if err != nil {
182+ t .Fatal (err )
183+ }
184+ if ! (len (ret ) == 1 && nsCount == int (retCnt )) {
185+ t .Fatalf ("len(ret) must be 1 and retCnt must be %d" , nsCount )
186+ }
187+
188+ ret , retCnt , err = nsStore .GetNamespaces (map [string ][]string {
189+ OwnerAttribute : {nsOwner },
190+ }, 3 , 10 )
191+
192+ if err != nil {
193+ t .Fatal (err )
194+ }
195+ if ! (len (ret ) == 2 && nsCount == int (retCnt )) {
196+ t .Fatalf ("len(ret) must be 1 and retCnt must be %d" , nsCount )
197+ }
198+
199+ }
200+
78201func TestNamespaceStore_GetNamespace (t * testing.T ) {
202+ _ = os .RemoveAll ("./table.bolt" )
79203 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
80204 if nil != err {
81205 t .Fatal (err )
82206 }
83207 defer handler .Close ()
84208 nsStore := & namespaceStore {handler : handler }
209+
210+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
211+ t .Fatal (err )
212+ }
213+
85214 for i := 0 ; i < nsCount ; i ++ {
86215 name := "default" + strconv .Itoa (i )
87216 ns , err := nsStore .GetNamespace (name )
@@ -95,12 +224,18 @@ func TestNamespaceStore_GetNamespace(t *testing.T) {
95224}
96225
97226func TestNamespaceStore_UpdateNamespace (t * testing.T ) {
227+ _ = os .RemoveAll ("./table.bolt" )
98228 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
99229 if nil != err {
100230 t .Fatal (err )
101231 }
102232 defer handler .Close ()
103233 nsStore := & namespaceStore {handler : handler }
234+
235+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
236+ t .Fatal (err )
237+ }
238+
104239 for i := 0 ; i < nsCount ; i ++ {
105240 nsRaw := & model.Namespace {
106241 Name : "default" + strconv .Itoa (i ),
@@ -129,12 +264,18 @@ func TestNamespaceStore_UpdateNamespace(t *testing.T) {
129264}
130265
131266func TestNamespaceStore_UpdateNamespaceToken (t * testing.T ) {
267+ _ = os .RemoveAll ("./table.bolt" )
132268 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
133269 if nil != err {
134270 t .Fatal (err )
135271 }
136272 defer handler .Close ()
137273 nsStore := & namespaceStore {handler : handler }
274+
275+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
276+ t .Fatal (err )
277+ }
278+
138279 for i := 0 ; i < nsCount ; i ++ {
139280 name := "default" + strconv .Itoa (i )
140281 token := nsToken + strconv .Itoa (i )
@@ -160,12 +301,17 @@ func TestNamespaceStore_UpdateNamespaceToken(t *testing.T) {
160301}
161302
162303func TestNamespaceStore_GetMoreNamespaces (t * testing.T ) {
304+ _ = os .RemoveAll ("./table.bolt" )
163305 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
164306 if nil != err {
165307 t .Fatal (err )
166308 }
167309 defer handler .Close ()
168310 nsStore := & namespaceStore {handler : handler }
311+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
312+ t .Fatal (err )
313+ }
314+
169315 before := time .Now ().Add (0 - 1 * time .Minute )
170316 namespaces , err := nsStore .GetMoreNamespaces (before )
171317 if nil != err {
@@ -177,12 +323,18 @@ func TestNamespaceStore_GetMoreNamespaces(t *testing.T) {
177323}
178324
179325func TestTransaction_LockNamespace (t * testing.T ) {
326+ _ = os .RemoveAll ("./table.bolt" )
180327 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
181328 if nil != err {
182329 t .Fatal (err )
183330 }
184331 defer handler .Close ()
185332 trans := & transaction {handler : handler }
333+
334+ if err := InitNamespaceData (& namespaceStore {handler : handler }, nsCount ); err != nil {
335+ t .Fatal (err )
336+ }
337+
186338 defer trans .Commit ()
187339 for i := 0 ; i < nsCount ; i ++ {
188340 name := "default" + strconv .Itoa (i )
@@ -197,12 +349,19 @@ func TestTransaction_LockNamespace(t *testing.T) {
197349}
198350
199351func TestTransaction_DeleteNamespace (t * testing.T ) {
352+ _ = os .RemoveAll ("./table.bolt" )
200353 handler , err := NewBoltHandler (& BoltConfig {FileName : "./table.bolt" })
201354 if nil != err {
202355 t .Fatal (err )
203356 }
204357 defer handler .Close ()
205358 trans := & transaction {handler : handler }
359+
360+ nsStore := & namespaceStore {handler : handler }
361+ if err := InitNamespaceData (nsStore , nsCount ); err != nil {
362+ t .Fatal (err )
363+ }
364+
206365 for i := 0 ; i < nsCount ; i ++ {
207366 name := "default" + strconv .Itoa (i )
208367 err := trans .DeleteNamespace (name )
@@ -215,7 +374,6 @@ func TestTransaction_DeleteNamespace(t *testing.T) {
215374 if nil != err {
216375 t .Fatal (err )
217376 }
218- nsStore := & namespaceStore {handler : handler }
219377 for i := 0 ; i < nsCount ; i ++ {
220378 name := "default" + strconv .Itoa (i )
221379 ns , err := nsStore .GetNamespace (name )
0 commit comments