23
23
import java .util .ArrayList ;
24
24
import java .util .List ;
25
25
26
+ import org .apache .seata .common .ConfigurationKeys ;
26
27
import org .apache .seata .common .util .IOUtil ;
28
+ import org .apache .seata .config .ConfigurationFactory ;
27
29
import org .apache .seata .core .store .LockDO ;
28
30
import org .apache .seata .server .storage .db .lock .LockStoreDataBaseDAO ;
29
31
import org .apache .commons .dbcp2 .BasicDataSource ;
@@ -52,9 +54,9 @@ public static void start(ApplicationContext context){
52
54
dataSource .setUsername ("sa" );
53
55
dataSource .setPassword ("" );
54
56
57
+ ConfigurationFactory .getInstance ().putConfig (ConfigurationKeys .STORE_DB_TYPE , "h2" );
58
+ ConfigurationFactory .getInstance ().putConfig (ConfigurationKeys .LOCK_DB_TABLE , "lock_table" );
55
59
dataBaseLockStoreDAO = new LockStoreDataBaseDAO (dataSource );
56
- dataBaseLockStoreDAO .setDbType ("h2" );
57
- dataBaseLockStoreDAO .setLockTable ("lock_table" );
58
60
59
61
prepareTable (dataSource );
60
62
}
@@ -88,7 +90,7 @@ public void test_acquireLocks() throws SQLException {
88
90
lock .setXid ("abc-123:123" );
89
91
lock .setTransactionId (123L );
90
92
lock .setBranchId ((long ) i );
91
- lock .setRowKey ("abc -" +i );
93
+ lock .setRowKey ("test_acquireLocks -" +i );
92
94
lock .setPk (String .valueOf (i ));
93
95
lock .setTableName ("t" );
94
96
lockDOs .add (lock );
@@ -97,7 +99,8 @@ public void test_acquireLocks() throws SQLException {
97
99
boolean ret = dataBaseLockStoreDAO .acquireLock (lockDOs );
98
100
Assertions .assertTrue (ret );
99
101
100
- String sql = "select * from lock_table where xid = 'abc-123:123' and table_name = 't' and row_key in ('abc-0','abc-1','abc-2')" ;
102
+ String sql = "select * from lock_table where xid = 'abc-123:123' and table_name = 't' " +
103
+ "and row_key in ('test_acquireLocks-0','test_acquireLocks-1','test_acquireLocks-2')" ;
101
104
Connection conn = null ;
102
105
ResultSet rs = null ;
103
106
try {
@@ -126,7 +129,7 @@ public void test_re_acquireLocks() throws SQLException {
126
129
lock .setXid ("abc-123:123" );
127
130
lock .setTransactionId (123L );
128
131
lock .setBranchId ((long ) i );
129
- lock .setRowKey ("abc -" +i );
132
+ lock .setRowKey ("test_re_acquireLocks -" +i );
130
133
lock .setPk (String .valueOf (i ));
131
134
lock .setTableName ("t" );
132
135
lockDOs .add (lock );
@@ -135,7 +138,8 @@ public void test_re_acquireLocks() throws SQLException {
135
138
boolean ret = dataBaseLockStoreDAO .acquireLock (lockDOs );
136
139
Assertions .assertTrue (ret );
137
140
138
- String sql = "select * from lock_table where xid = 'abc-123:123' and table_name = 't' and row_key in ('abc-0','abc-1','abc-2')" ;
141
+ String sql = "select * from lock_table where xid = 'abc-123:123' and table_name = 't' " +
142
+ "and row_key in ('test_re_acquireLocks-0','test_re_acquireLocks-1','test_re_acquireLocks-2')" ;
139
143
Connection conn = null ;
140
144
ResultSet rs = null ;
141
145
try {
@@ -166,7 +170,7 @@ public void tes_unLocks() throws SQLException {
166
170
lock .setXid ("abc-456:123" );
167
171
lock .setTransactionId (123L );
168
172
lock .setBranchId ((long ) i );
169
- lock .setRowKey ("abc -" +i );
173
+ lock .setRowKey ("tes_unLocks -" +i );
170
174
lock .setPk (String .valueOf (i ));
171
175
lock .setTableName ("t" );
172
176
lockDOs .add (lock );
@@ -175,7 +179,8 @@ public void tes_unLocks() throws SQLException {
175
179
boolean ret = dataBaseLockStoreDAO .acquireLock (lockDOs );
176
180
Assertions .assertTrue (ret );
177
181
178
- String sql = "select * from lock_table where xid = 'abc-456:123' and table_name = 't' and row_key in ('abc-0','abc-1','abc-2')" ;
182
+ String sql = "select * from lock_table where xid = 'abc-456:123' and table_name = 't' " +
183
+ "and row_key in ('tes_unLocks-0','tes_unLocks-1','tes_unLocks-2')" ;
179
184
Connection conn = null ;
180
185
ResultSet rs = null ;
181
186
try {
@@ -214,7 +219,7 @@ public void test_isLockable_can(){
214
219
lock .setXid ("abc-678:123" );
215
220
lock .setTransactionId (123L );
216
221
lock .setBranchId ((long ) i );
217
- lock .setRowKey ("abc -" +i );
222
+ lock .setRowKey ("test_isLockable_can -" +i );
218
223
lock .setPk (String .valueOf (i ));
219
224
lock .setTableName ("t" );
220
225
lockDOs .add (lock );
@@ -236,7 +241,7 @@ public void test_isLockable_cannot() throws SQLException {
236
241
lock .setXid ("abc-123:222" );
237
242
lock .setTransactionId (222L );
238
243
lock .setBranchId ((long ) i );
239
- lock .setRowKey ("abc -" +i );
244
+ lock .setRowKey ("test_isLockable_cannot -" +i );
240
245
lock .setPk (String .valueOf (i ));
241
246
lock .setTableName ("t" );
242
247
lockDOs .add (lock );
@@ -245,7 +250,8 @@ public void test_isLockable_cannot() throws SQLException {
245
250
boolean ret = dataBaseLockStoreDAO .acquireLock (lockDOs );
246
251
Assertions .assertTrue (ret );
247
252
248
- String sql = "select * from lock_table where xid = 'abc-123:222' and table_name = 't' and row_key in ('abc-0','abc-1','abc-2')" ;
253
+ String sql = "select * from lock_table where xid = 'abc-123:222' and table_name = 't' " +
254
+ "and row_key in ('test_isLockable_cannot-0','test_isLockable_cannot-1','test_isLockable_cannot-2')" ;
249
255
Connection conn = null ;
250
256
ResultSet rs = null ;
251
257
try {
@@ -267,7 +273,7 @@ public void test_isLockable_cannot() throws SQLException {
267
273
lock .setXid ("abc-123:333" );
268
274
lock .setTransactionId (333L );
269
275
lock .setBranchId ((long ) i );
270
- lock .setRowKey ("abc -" +i );
276
+ lock .setRowKey ("test_isLockable_cannot -" +i );
271
277
lock .setPk (String .valueOf (i ));
272
278
lock .setTableName ("t" );
273
279
lockDOs_2 .add (lock );
@@ -278,6 +284,58 @@ public void test_isLockable_cannot() throws SQLException {
278
284
279
285
}
280
286
287
+ @ Test
288
+ public void test_isLockable_cannot1 () throws SQLException {
289
+ List <LockDO > lockDOs = new ArrayList <>();
290
+ for (int i = 0 ; i < 3 ; i ++) {
291
+ LockDO lock = new LockDO ();
292
+ lock .setResourceId ("abc" );
293
+ lock .setXid ("abc-123:222" );
294
+ lock .setTransactionId (222L );
295
+ lock .setBranchId (1L );
296
+ lock .setRowKey ("test_isLockable_cannot1-" +i );
297
+ lock .setPk (String .valueOf (i ));
298
+ lock .setTableName ("t" );
299
+ lockDOs .add (lock );
300
+ }
301
+
302
+ boolean ret = dataBaseLockStoreDAO .acquireLock (lockDOs , true , true );
303
+ Assertions .assertTrue (ret );
304
+
305
+ String sql = "select * from lock_table where xid = 'abc-123:222' and table_name = 't' " +
306
+ "and row_key in ('test_isLockable_cannot1-0','test_isLockable_cannot1-1','test_isLockable_cannot1-2')" ;
307
+ Connection conn = null ;
308
+ ResultSet rs = null ;
309
+ try {
310
+ conn = dataSource .getConnection ();
311
+ rs = conn .createStatement ().executeQuery (sql );
312
+ if (rs .next ()) {
313
+ Assertions .assertTrue (true );
314
+ } else {
315
+ Assertions .fail ();
316
+ }
317
+ } finally {
318
+ IOUtil .close (rs , conn );
319
+ }
320
+
321
+ List <LockDO > lockDOs_2 = new ArrayList <>();
322
+ for (int i = 0 ; i < 3 ; i ++) {
323
+ LockDO lock = new LockDO ();
324
+ lock .setResourceId ("abc" );
325
+ lock .setXid ("abc-123:333" );
326
+ lock .setTransactionId (333L );
327
+ lock .setBranchId (2L );
328
+ lock .setRowKey ("test_isLockable_cannot1-" +i );
329
+ lock .setPk (String .valueOf (i ));
330
+ lock .setTableName ("t" );
331
+ lockDOs_2 .add (lock );
332
+ }
333
+
334
+ boolean ret2 = dataBaseLockStoreDAO .acquireLock (lockDOs_2 , true , true );
335
+ Assertions .assertFalse (ret2 );
336
+
337
+ }
338
+
281
339
@ AfterAll
282
340
public static void clearStoreDB (){
283
341
FileUtils .deleteRecursive ("db_store" , true );
0 commit comments