@@ -914,6 +914,8 @@ public void testWatch() throws Exception {
914
914
TestKeyValueWatcher gtMetaWatcher = new TestKeyValueWatcher ("gtMetaWatcher" , true , META_ONLY );
915
915
TestKeyValueWatcher multipleFullWatcher = new TestKeyValueWatcher ("multipleFullWatcher" , true );
916
916
TestKeyValueWatcher multipleMetaWatcher = new TestKeyValueWatcher ("multipleMetaWatcher" , true , META_ONLY );
917
+ TestKeyValueWatcher multipleFullWatcher2 = new TestKeyValueWatcher ("multipleFullWatcher2" , true );
918
+ TestKeyValueWatcher multipleMetaWatcher2 = new TestKeyValueWatcher ("multipleMetaWatcher2" , true , META_ONLY );
917
919
TestKeyValueWatcher key1AfterWatcher = new TestKeyValueWatcher ("key1AfterWatcher" , false , META_ONLY );
918
920
TestKeyValueWatcher key1AfterIgDelWatcher = new TestKeyValueWatcher ("key1AfterIgDelWatcher" , false , META_ONLY , IGNORE_DELETE );
919
921
TestKeyValueWatcher key1AfterStartNewWatcher = new TestKeyValueWatcher ("key1AfterStartNewWatcher" , false , META_ONLY , UPDATES_ONLY );
@@ -926,7 +928,7 @@ public void testWatch() throws Exception {
926
928
927
929
List <String > allKeys = Arrays .asList (TEST_WATCH_KEY_1 , TEST_WATCH_KEY_2 , TEST_WATCH_KEY_NULL );
928
930
929
- runInJsServer (nc -> {
931
+ jsServer . run (nc -> {
930
932
_testWatch (nc , key1FullWatcher , key1AllExpecteds , -1 , kv -> kv .watch (TEST_WATCH_KEY_1 , key1FullWatcher , key1FullWatcher .watchOptions ));
931
933
_testWatch (nc , key1MetaWatcher , key1AllExpecteds , -1 , kv -> kv .watch (TEST_WATCH_KEY_1 , key1MetaWatcher , key1MetaWatcher .watchOptions ));
932
934
_testWatch (nc , key1StartNewWatcher , key1AllExpecteds , -1 , kv -> kv .watch (TEST_WATCH_KEY_1 , key1StartNewWatcher , key1StartNewWatcher .watchOptions ));
@@ -943,6 +945,8 @@ public void testWatch() throws Exception {
943
945
_testWatch (nc , gtMetaWatcher , allExpecteds , -1 , kv -> kv .watch ("key.>" , gtMetaWatcher , gtMetaWatcher .watchOptions ));
944
946
_testWatch (nc , multipleFullWatcher , allExpecteds , -1 , kv -> kv .watch (allKeys , multipleFullWatcher , multipleFullWatcher .watchOptions ));
945
947
_testWatch (nc , multipleMetaWatcher , allExpecteds , -1 , kv -> kv .watch (allKeys , multipleMetaWatcher , multipleMetaWatcher .watchOptions ));
948
+ _testWatch (nc , multipleFullWatcher2 , allExpecteds , -1 , kv -> kv .watch (String .join ("," , allKeys ), multipleFullWatcher2 , multipleFullWatcher .watchOptions ));
949
+ _testWatch (nc , multipleMetaWatcher2 , allExpecteds , -1 , kv -> kv .watch (String .join ("," , allKeys ), multipleMetaWatcher2 , multipleMetaWatcher .watchOptions ));
946
950
_testWatch (nc , key1AfterWatcher , purgeOnlyExpecteds , -1 , kv -> kv .watch (TEST_WATCH_KEY_1 , key1AfterWatcher , key1AfterWatcher .watchOptions ));
947
951
_testWatch (nc , key1AfterIgDelWatcher , noExpecteds , -1 , kv -> kv .watch (TEST_WATCH_KEY_1 , key1AfterIgDelWatcher , key1AfterIgDelWatcher .watchOptions ));
948
952
_testWatch (nc , key1AfterStartNewWatcher , noExpecteds , -1 , kv -> kv .watch (TEST_WATCH_KEY_1 , key1AfterStartNewWatcher , key1AfterStartNewWatcher .watchOptions ));
@@ -958,7 +962,7 @@ public void testWatch() throws Exception {
958
962
private void _testWatch (Connection nc , TestKeyValueWatcher watcher , Object [] expectedKves , long fromRevision , TestWatchSubSupplier supplier ) throws Exception {
959
963
KeyValueManagement kvm = nc .keyValueManagement ();
960
964
961
- String bucket = watcher .name + "Bucket" ;
965
+ String bucket = variant () + watcher .name + "Bucket" ;
962
966
kvm .create (KeyValueConfiguration .builder ()
963
967
.name (bucket )
964
968
.maxHistoryPerKey (10 )
@@ -1022,7 +1026,6 @@ private void validateWatcher(Object[] expectedKves, TestKeyValueWatcher watcher)
1022
1026
long lastRevision = -1 ;
1023
1027
1024
1028
for (KeyValueEntry kve : watcher .entries ) {
1025
-
1026
1029
assertTrue (kve .getCreated ().isAfter (lastCreated ) || kve .getCreated ().isEqual (lastCreated ));
1027
1030
lastCreated = kve .getCreated ();
1028
1031
@@ -1056,12 +1059,8 @@ else if (expected instanceof String) {
1056
1059
}
1057
1060
}
1058
1061
1059
- static final String BUCKET_CREATED_BY_USER_A = "bucketA" ;
1060
- static final String BUCKET_CREATED_BY_USER_I = "bucketI" ;
1061
-
1062
1062
@ Test
1063
1063
public void testWithAccount () throws Exception {
1064
-
1065
1064
try (NatsTestServer ts = new NatsTestServer ("src/test/resources/kv_account.conf" , false )) {
1066
1065
Options acctA = new Options .Builder ().server (ts .getURI ()).userInfo ("a" , "a" ).build ();
1067
1066
Options acctI = new Options .Builder ().server (ts .getURI ()).userInfo ("i" , "i" ).inboxPrefix ("ForI" ).build ();
@@ -1083,35 +1082,37 @@ public void testWithAccount() throws Exception {
1083
1082
KeyValueManagement kvmUserIBcktA = connUserI .keyValueManagement (jsOpt_UserI_BucketA_WithPrefix );
1084
1083
KeyValueManagement kvmUserIBcktI = connUserI .keyValueManagement (jsOpt_UserI_BucketI_WithPrefix );
1085
1084
1085
+ String bucketA = bucket ();
1086
1086
KeyValueConfiguration kvcA = KeyValueConfiguration .builder ()
1087
- .name (BUCKET_CREATED_BY_USER_A ).storageType (StorageType .Memory ).maxHistoryPerKey (64 ).build ();
1087
+ .name (bucketA ).storageType (StorageType .Memory ).maxHistoryPerKey (64 ).build ();
1088
1088
1089
+ String bucketI = bucket ();
1089
1090
KeyValueConfiguration kvcI = KeyValueConfiguration .builder ()
1090
- .name (BUCKET_CREATED_BY_USER_I ).storageType (StorageType .Memory ).maxHistoryPerKey (64 ).build ();
1091
+ .name (bucketI ).storageType (StorageType .Memory ).maxHistoryPerKey (64 ).build ();
1091
1092
1092
1093
// testing KVM API
1093
- assertEquals (BUCKET_CREATED_BY_USER_A , kvmUserA .create (kvcA ).getBucketName ());
1094
- assertEquals (BUCKET_CREATED_BY_USER_I , kvmUserIBcktI .create (kvcI ).getBucketName ());
1094
+ assertEquals (bucketA , kvmUserA .create (kvcA ).getBucketName ());
1095
+ assertEquals (bucketI , kvmUserIBcktI .create (kvcI ).getBucketName ());
1095
1096
1096
- assertKvAccountBucketNames (kvmUserA .getBucketNames ());
1097
- assertKvAccountBucketNames (kvmUserIBcktI .getBucketNames ());
1097
+ assertKvAccountBucketNames (kvmUserA .getBucketNames (), bucketA , bucketI );
1098
+ assertKvAccountBucketNames (kvmUserIBcktI .getBucketNames (), bucketA , bucketI );
1098
1099
1099
- assertEquals (BUCKET_CREATED_BY_USER_A , kvmUserA .getStatus (BUCKET_CREATED_BY_USER_A ).getBucketName ());
1100
- assertEquals (BUCKET_CREATED_BY_USER_A , kvmUserIBcktA .getStatus (BUCKET_CREATED_BY_USER_A ).getBucketName ());
1101
- assertEquals (BUCKET_CREATED_BY_USER_I , kvmUserA .getStatus (BUCKET_CREATED_BY_USER_I ).getBucketName ());
1102
- assertEquals (BUCKET_CREATED_BY_USER_I , kvmUserIBcktI .getStatus (BUCKET_CREATED_BY_USER_I ).getBucketName ());
1100
+ assertEquals (bucketA , kvmUserA .getStatus (bucketA ).getBucketName ());
1101
+ assertEquals (bucketA , kvmUserIBcktA .getStatus (bucketA ).getBucketName ());
1102
+ assertEquals (bucketI , kvmUserA .getStatus (bucketI ).getBucketName ());
1103
+ assertEquals (bucketI , kvmUserIBcktI .getStatus (bucketI ).getBucketName ());
1103
1104
1104
1105
// some more prep
1105
- KeyValue kv_connA_bucketA = connUserA .keyValue (BUCKET_CREATED_BY_USER_A );
1106
- KeyValue kv_connA_bucketI = connUserA .keyValue (BUCKET_CREATED_BY_USER_I );
1107
- KeyValue kv_connI_bucketA = connUserI .keyValue (BUCKET_CREATED_BY_USER_A , jsOpt_UserI_BucketA_WithPrefix );
1108
- KeyValue kv_connI_bucketI = connUserI .keyValue (BUCKET_CREATED_BY_USER_I , jsOpt_UserI_BucketI_WithPrefix );
1106
+ KeyValue kv_connA_bucketA = connUserA .keyValue (bucketA );
1107
+ KeyValue kv_connA_bucketI = connUserA .keyValue (bucketI );
1108
+ KeyValue kv_connI_bucketA = connUserI .keyValue (bucketA , jsOpt_UserI_BucketA_WithPrefix );
1109
+ KeyValue kv_connI_bucketI = connUserI .keyValue (bucketI , jsOpt_UserI_BucketI_WithPrefix );
1109
1110
1110
1111
// check the names
1111
- assertEquals (BUCKET_CREATED_BY_USER_A , kv_connA_bucketA .getBucketName ());
1112
- assertEquals (BUCKET_CREATED_BY_USER_A , kv_connI_bucketA .getBucketName ());
1113
- assertEquals (BUCKET_CREATED_BY_USER_I , kv_connA_bucketI .getBucketName ());
1114
- assertEquals (BUCKET_CREATED_BY_USER_I , kv_connI_bucketI .getBucketName ());
1112
+ assertEquals (bucketA , kv_connA_bucketA .getBucketName ());
1113
+ assertEquals (bucketA , kv_connI_bucketA .getBucketName ());
1114
+ assertEquals (bucketI , kv_connA_bucketI .getBucketName ());
1115
+ assertEquals (bucketI , kv_connI_bucketI .getBucketName ());
1115
1116
1116
1117
TestKeyValueWatcher watcher_connA_BucketA = new TestKeyValueWatcher ("watcher_connA_BucketA" , true );
1117
1118
TestKeyValueWatcher watcher_connA_BucketI = new TestKeyValueWatcher ("watcher_connA_BucketI" , true );
@@ -1154,10 +1155,10 @@ public void testWithAccount() throws Exception {
1154
1155
}
1155
1156
}
1156
1157
1157
- private void assertKvAccountBucketNames (List <String > bnames ) {
1158
+ private void assertKvAccountBucketNames (List <String > bnames , String bucketA , String bucketI ) {
1158
1159
assertEquals (2 , bnames .size ());
1159
- assertTrue (bnames .contains (BUCKET_CREATED_BY_USER_A ));
1160
- assertTrue (bnames .contains (BUCKET_CREATED_BY_USER_I ));
1160
+ assertTrue (bnames .contains (bucketA ));
1161
+ assertTrue (bnames .contains (bucketI ));
1161
1162
}
1162
1163
1163
1164
private void assertKvAccountKeys (List <String > keys , String key1 , String key2 ) {
@@ -1457,39 +1458,42 @@ public void testKeyValueMirrorCrossDomains() throws Exception {
1457
1458
KeyValueManagement leafKvm = leaf .keyValueManagement ();
1458
1459
1459
1460
// Create main KV on HUB
1461
+ String hubBucket = variant ();
1460
1462
KeyValueStatus hubStatus = hubKvm .create (KeyValueConfiguration .builder ()
1461
- .name ("TEST" )
1463
+ .name (hubBucket )
1462
1464
.storageType (StorageType .Memory )
1463
1465
.build ());
1464
1466
1465
- KeyValue hubKv = hub .keyValue ("TEST" );
1467
+ KeyValue hubKv = hub .keyValue (hubBucket );
1466
1468
hubKv .put ("key1" , "aaa0" );
1467
1469
hubKv .put ("key2" , "bb0" );
1468
1470
hubKv .put ("key3" , "c0" );
1469
1471
hubKv .delete ("key3" );
1470
1472
1473
+ String leafBucket = variant ();
1474
+ String leafStream = "KV_" + leafBucket ;
1471
1475
leafKvm .create (KeyValueConfiguration .builder ()
1472
- .name ("MIRROR" )
1476
+ .name (leafBucket )
1473
1477
.mirror (Mirror .builder ()
1474
- .sourceName ("TEST" )
1478
+ .sourceName (hubBucket )
1475
1479
.domain (null ) // just for coverage!
1476
- .domain ("HUB" ) // it will take this since it comes last
1480
+ .domain (HUB_DOMAIN ) // it will take this since it comes last
1477
1481
.build ())
1478
1482
.build ());
1479
1483
1480
1484
sleep (200 ); // make sure things get a chance to propagate
1481
- StreamInfo si = leaf .jetStreamManagement ().getStreamInfo ("KV_MIRROR" );
1485
+ StreamInfo si = leaf .jetStreamManagement ().getStreamInfo (leafStream );
1482
1486
if (hub .getServerInfo ().isSameOrNewerThanVersion ("2.9" )) {
1483
1487
assertTrue (si .getConfiguration ().getMirrorDirect ());
1484
1488
}
1485
1489
assertEquals (3 , si .getStreamState ().getMsgCount ());
1486
1490
1487
- KeyValue leafKv = leaf .keyValue ("MIRROR" );
1491
+ KeyValue leafKv = leaf .keyValue (leafBucket );
1488
1492
_testMirror (hubKv , leafKv , 1 );
1489
1493
1490
1494
// Bind through leafnode connection but to origin KV.
1491
1495
KeyValue hubViaLeafKv =
1492
- leaf .keyValue ("TEST" , KeyValueOptions .builder ().jsDomain ("HUB" ).build ());
1496
+ leaf .keyValue (hubBucket , KeyValueOptions .builder ().jsDomain (HUB_DOMAIN ).build ());
1493
1497
_testMirror (hubKv , hubViaLeafKv , 2 );
1494
1498
});
1495
1499
}
0 commit comments