31
31
import com .couchbase .client .test .IgnoreWhen ;
32
32
import com .couchbase .client .test .Util ;
33
33
import org .junit .jupiter .api .AfterAll ;
34
+ import org .junit .jupiter .api .AfterEach ;
34
35
import org .junit .jupiter .api .BeforeAll ;
35
36
import org .junit .jupiter .api .Test ;
36
37
37
38
import java .time .Duration ;
39
+ import java .util .HashSet ;
38
40
import java .util .Map ;
41
+ import java .util .Set ;
39
42
import java .util .UUID ;
40
43
44
+ import static com .couchbase .client .java .manager .bucket .BucketType .MEMCACHED ;
45
+ import static com .couchbase .client .java .manager .bucket .EvictionPolicyType .FULL ;
46
+ import static com .couchbase .client .java .manager .bucket .EvictionPolicyType .NO_EVICTION ;
47
+ import static com .couchbase .client .java .manager .bucket .EvictionPolicyType .NOT_RECENTLY_USED ;
48
+ import static com .couchbase .client .java .manager .bucket .EvictionPolicyType .VALUE_ONLY ;
41
49
import static com .couchbase .client .test .Util .waitUntilCondition ;
42
50
import static org .junit .jupiter .api .Assertions .assertEquals ;
43
51
import static org .junit .jupiter .api .Assertions .assertFalse ;
@@ -53,6 +61,7 @@ class BucketManagerIntegrationTest extends JavaIntegrationTest {
53
61
private static Cluster cluster ;
54
62
private static ClusterEnvironment environment ;
55
63
private static BucketManager buckets ;
64
+ private final Set <String > bucketsToDrop = new HashSet <>();
56
65
57
66
@ BeforeAll
58
67
static void setup () {
@@ -63,6 +72,21 @@ static void setup() {
63
72
bucket .waitUntilReady (Duration .ofSeconds (5 ));
64
73
}
65
74
75
+ @ AfterEach
76
+ void dropBuckets () {
77
+ try {
78
+ for (String bucketName : bucketsToDrop ) {
79
+ try {
80
+ buckets .dropBucket (bucketName );
81
+ } catch (BucketNotFoundException e ) {
82
+ // that's fine, the test probably dropped the bucket already
83
+ }
84
+ }
85
+ } finally {
86
+ bucketsToDrop .clear ();
87
+ }
88
+ }
89
+
66
90
@ AfterAll
67
91
static void tearDown () {
68
92
cluster .disconnect ();
@@ -74,8 +98,7 @@ private void waitUntilHealthy(String bucket) {
74
98
try {
75
99
BucketSettings bkt = buckets .getBucket (bucket );
76
100
return bkt .healthy ();
77
- }
78
- catch (BucketNotFoundException err ) {
101
+ } catch (BucketNotFoundException err ) {
79
102
return false ;
80
103
}
81
104
});
@@ -86,8 +109,7 @@ private void waitUntilDropped(String bucket) {
86
109
try {
87
110
buckets .getBucket (bucket );
88
111
return false ;
89
- }
90
- catch (BucketNotFoundException err ) {
112
+ } catch (BucketNotFoundException err ) {
91
113
return true ;
92
114
}
93
115
});
@@ -118,11 +140,57 @@ void getAllBuckets() {
118
140
}
119
141
}
120
142
143
+ @ Test
144
+ void createEphemeralBucketWithDefaultEvictionPolicy () {
145
+ String name = UUID .randomUUID ().toString ();
146
+ createBucket (BucketSettings .create (name ).bucketType (BucketType .EPHEMERAL ));
147
+ BucketSettings settings = buckets .getBucket (name );
148
+ assertEquals (NO_EVICTION , settings .evictionPolicy ());
149
+ }
150
+
151
+ @ Test
152
+ void createEphemeralBucketWithNruEvictionPolicy () {
153
+ String name = UUID .randomUUID ().toString ();
154
+ createBucket (BucketSettings .create (name )
155
+ .bucketType (BucketType .EPHEMERAL )
156
+ .evictionPolicy (NOT_RECENTLY_USED ));
157
+
158
+ BucketSettings settings = buckets .getBucket (name );
159
+ assertEquals (NOT_RECENTLY_USED , settings .evictionPolicy ());
160
+ }
161
+
162
+ @ Test
163
+ void createCouchbaseBucketWithDefaultEvictionPolicy () {
164
+ String name = UUID .randomUUID ().toString ();
165
+ createBucket (BucketSettings .create (name )
166
+ .bucketType (BucketType .COUCHBASE ));
167
+ BucketSettings settings = buckets .getBucket (name );
168
+ assertEquals (VALUE_ONLY , settings .evictionPolicy ());
169
+ }
170
+
171
+ @ Test
172
+ void createCouchbaseBucketWithFullEvictionPolicy () {
173
+ String name = UUID .randomUUID ().toString ();
174
+ createBucket (BucketSettings .create (name )
175
+ .bucketType (BucketType .COUCHBASE )
176
+ .evictionPolicy (FULL ));
177
+ BucketSettings settings = buckets .getBucket (name );
178
+ assertEquals (FULL , settings .evictionPolicy ());
179
+ }
180
+
181
+ @ Test
182
+ void createMemcachedBucket () {
183
+ String name = UUID .randomUUID ().toString ();
184
+ createBucket (BucketSettings .create (name ).bucketType (MEMCACHED ));
185
+ BucketSettings settings = buckets .getBucket (name );
186
+ assertEquals (MEMCACHED , settings .bucketType ());
187
+ }
188
+
121
189
@ Test
122
190
void createAndDropBucket () {
123
191
String name = UUID .randomUUID ().toString ();
124
192
125
- buckets . createBucket (BucketSettings .create (name ));
193
+ createBucket (BucketSettings .create (name ));
126
194
waitUntilHealthy (name );
127
195
assertTrue (buckets .getAllBuckets ().containsKey (name ));
128
196
@@ -136,7 +204,7 @@ void flushBucket() {
136
204
Bucket bucket = cluster .bucket (config ().bucketname ());
137
205
Collection collection = bucket .defaultCollection ();
138
206
139
- String id = UUID .randomUUID ().toString ();
207
+ String id = UUID .randomUUID ().toString ();
140
208
collection .upsert (id , "value" );
141
209
assertTrue (collection .exists (id ).exists ());
142
210
@@ -146,21 +214,15 @@ void flushBucket() {
146
214
147
215
@ Test
148
216
void failIfBucketFlushDisabled () {
149
- String bucketName = UUID .randomUUID ().toString ();
150
- buckets .createBucket (BucketSettings .create (bucketName ).flushEnabled (false ));
151
- waitUntilCondition (() -> buckets .getAllBuckets ().containsKey (bucketName ));
217
+ String bucketName = UUID .randomUUID ().toString ();
218
+ createBucket (BucketSettings .create (bucketName ).flushEnabled (false ));
152
219
assertThrows (BucketNotFlushableException .class , () -> buckets .flushBucket (bucketName ));
153
220
}
154
221
155
222
@ Test
156
223
void createShouldFailWhenPresent () {
157
- assertThrows (
158
- BucketExistsException .class ,
159
- () -> {
160
- buckets .createBucket (BucketSettings .create (config ().bucketname ()));
161
- waitUntilHealthy (config ().bucketname ());
162
- }
163
- );
224
+ assertThrows (BucketExistsException .class , () ->
225
+ buckets .createBucket (BucketSettings .create (config ().bucketname ())));
164
226
}
165
227
166
228
@ Test
@@ -188,15 +250,11 @@ void updateShouldFailIfNotPresent() {
188
250
void createWithMoreThanOneReplica () {
189
251
String name = UUID .randomUUID ().toString ();
190
252
191
- buckets . createBucket (BucketSettings .create (name ).numReplicas (3 ));
253
+ createBucket (BucketSettings .create (name ).numReplicas (3 ));
192
254
waitUntilHealthy (name );
193
255
194
256
BucketSettings bucket = buckets .getBucket (name );
195
257
assertEquals (3 , bucket .numReplicas ());
196
-
197
- buckets .dropBucket (name );
198
- waitUntilDropped (name );
199
- assertFalse (buckets .getAllBuckets ().containsKey (name ));
200
258
}
201
259
202
260
/**
@@ -207,4 +265,9 @@ private void assertCreatedBucket(final BucketSettings settings) {
207
265
assertTrue (settings .ramQuotaMB () > 0 );
208
266
}
209
267
268
+ private void createBucket (BucketSettings settings ) {
269
+ buckets .createBucket (settings );
270
+ bucketsToDrop .add (settings .name ());
271
+ waitUntilHealthy (settings .name ());
272
+ }
210
273
}
0 commit comments