コード例 #1
0
  @Test
  @InSequence(2)
  @Ignore
  public void testTransactionCommit() throws Throwable {
    userTx.begin();
    HazelcastConnection c = getConnection();
    try {
      TransactionalMap<String, String> m = c.getTransactionalMap("testTransactionCommit");

      m.put("key", "value");

      doSql();

      assertEquals("value", m.get("key"));
    } finally {
      c.close();
    }
    userTx.commit();
    HazelcastConnection con2 = getConnection();

    try {
      assertEquals("value", con2.getMap("testTransactionCommit").get("key"));
      validateSQLdata(true);
    } finally {
      con2.close();
    }
  }
コード例 #2
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testPutWithTTL() {
    final String mapName = randomString();
    final int ttlSeconds = 1;
    final String key = "key";
    final String value = "Value";
    final IMap map = client.getMap(mapName);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap<Object, Object> txnMap = context.getMap(mapName);

    txnMap.put(key, value, ttlSeconds, TimeUnit.SECONDS);
    Object resultFromClientWhileTxnInProgress = map.get(key);

    context.commitTransaction();

    assertNull(resultFromClientWhileTxnInProgress);
    assertEquals(value, map.get(key));

    // waite for ttl to expire
    sleepSeconds(ttlSeconds + 1);

    assertNull(map.get(key));
  }
コード例 #3
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapReplaceKeyValue() throws Exception {
    final String mapName = randomString();
    final String key1 = "key1";
    final String oldValue1 = "old1";
    final String newValue1 = "new1";
    final String key2 = "key2";
    final String oldValue2 = "old2";

    IMap map = client.getMap(mapName);
    map.put(key1, oldValue1);
    map.put(key2, oldValue2);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);

    txMap.replace(key1, oldValue1, newValue1);
    txMap.replace(key2, "NOT_OLD_VALUE", "NEW_VALUE_CANT_BE_THIS");

    context.commitTransaction();

    assertEquals(newValue1, map.get(key1));
    assertEquals(oldValue2, map.get(key2));
  }
コード例 #4
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test(expected = NullPointerException.class)
  public void testKeyValuesPredicateNull() throws Exception {
    final String mapName = randomString();

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap<Object, Object> txMap = context.getMap(mapName);

    txMap.values(null);
  }
コード例 #5
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapIsEmpty() throws Exception {
    final String mapName = randomString();
    IMap map = client.getMap(mapName);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);
    assertTrue(txMap.isEmpty());
    context.commitTransaction();
  }
コード例 #6
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testUnlockAfterRollback() {
    final String mapName = randomString();
    final String key = "key";

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap<Object, Object> map = context.getMap(mapName);
    map.put(key, "value");
    context.rollbackTransaction();

    assertFalse(client.getMap(mapName).isLocked(key));
  }
コード例 #7
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testKeysetAndValuesWithPredicates() throws Exception {
    final String mapName = randomString();
    IMap map = client.getMap(mapName);

    final SampleObjects.Employee emp1 = new SampleObjects.Employee("abc-123-xvz", 34, true, 10D);
    final SampleObjects.Employee emp2 = new SampleObjects.Employee("abc-123-xvz", 20, true, 10D);

    map.put(emp1, emp1);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);

    assertNull(txMap.put(emp2, emp2));
    assertEquals(2, txMap.size());
    assertEquals(2, txMap.keySet().size());
    assertEquals(0, txMap.keySet(new SqlPredicate("age = 10")).size());
    assertEquals(0, txMap.values(new SqlPredicate("age = 10")).size());
    assertEquals(2, txMap.keySet(new SqlPredicate("age >= 10")).size());
    assertEquals(2, txMap.values(new SqlPredicate("age >= 10")).size());

    context.commitTransaction();

    assertEquals(2, map.size());
    assertEquals(2, map.values().size());
  }
コード例 #8
0
ファイル: ResilientUTS.java プロジェクト: x10-lang/apgas
 void transfer(int thief, UTS loot) {
   final UTS bag = this.bag.trim();
   final int me = this.me;
   final int wave = ResilientUTS.this.wave;
   hz.executeTransaction(
       (TransactionalTaskContext context) -> {
         final TransactionalMap<Integer, UTS> map = context.getMap("map" + wave);
         map.set(me, bag);
         final UTS old = map.getForUpdate(thief);
         loot.count = old == null ? 0 : old.count;
         map.set(thief, loot);
         return null;
       });
 }
コード例 #9
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTxnMapPut_BeforeCommit() throws Exception {
    final String mapName = randomString();
    final String key = "key";
    final String value = "Value";
    final IMap map = client.getMap(mapName);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap<Object, Object> txnMap = context.getMap(mapName);

    assertNull(txnMap.put(key, value));

    context.commitTransaction();
  }
コード例 #10
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testPutAndRoleBack() throws Exception {
    final String mapName = randomString();
    final String key = "key";
    final String value = "value";
    final IMap map = client.getMap(mapName);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap<Object, Object> mapTxn = context.getMap(mapName);
    mapTxn.put(key, value);
    context.rollbackTransaction();

    assertNull(map.get(key));
  }
コード例 #11
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapContainsKey() throws Exception {
    final String mapName = randomString();
    IMap map = client.getMap(mapName);
    map.put("key1", "value1");

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);
    txMap.put("key2", "value2");
    assertTrue(txMap.containsKey("key1"));
    assertTrue(txMap.containsKey("key2"));
    assertFalse(txMap.containsKey("key3"));

    context.commitTransaction();
  }
コード例 #12
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapDelete() throws Exception {
    final String mapName = randomString();
    final String key = "key1";
    final String value = "old1";

    IMap map = client.getMap(mapName);
    map.put(key, value);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);

    txMap.delete(key);

    context.commitTransaction();

    assertNull(map.get(key));
  }
コード例 #13
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapPutIfAbsent() throws Exception {
    final String mapName = randomString();
    IMap map = client.getMap(mapName);
    final String keyValue1 = "keyValue1";
    final String keyValue2 = "keyValue2";
    map.put(keyValue1, keyValue1);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);

    txMap.putIfAbsent(keyValue1, "NOT_THIS");
    txMap.putIfAbsent(keyValue2, keyValue2);

    context.commitTransaction();

    assertEquals(keyValue1, map.get(keyValue1));
    assertEquals(keyValue2, map.get(keyValue2));
  }
コード例 #14
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testKeySetValues() throws Exception {
    final String mapName = randomString();
    IMap map = client.getMap(mapName);
    map.put("key1", "value1");

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap<Object, Object> txMap = context.getMap(mapName);

    assertNull(txMap.put("key2", "value2"));
    assertEquals(2, txMap.size());
    assertEquals(2, txMap.keySet().size());
    assertEquals(2, txMap.values().size());

    context.commitTransaction();

    assertEquals(2, map.size());
    assertEquals(2, map.keySet().size());
    assertEquals(2, map.values().size());
  }
コード例 #15
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapReplace() throws Exception {
    final String mapName = randomString();
    IMap map = client.getMap(mapName);
    final String key1 = "key1";
    final String key2 = "key2";
    final String replaceValue = "replaceValue";
    map.put(key1, "OLD_VALUE");

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);

    txMap.replace(key1, replaceValue);
    txMap.replace(key2, "NOT_POSSIBLE");

    context.commitTransaction();

    assertEquals(replaceValue, map.get(key1));
    assertNull(map.get(key2));
  }
コード例 #16
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testTnxMapRemoveKeyValue() throws Exception {
    final String mapName = randomString();
    final String key1 = "key1";
    final String oldValue1 = "old1";
    final String key2 = "key2";
    final String oldValue2 = "old2";

    IMap map = client.getMap(mapName);
    map.put(key1, oldValue1);
    map.put(key2, oldValue2);

    final TransactionContext context = client.newTransactionContext();
    context.beginTransaction();
    final TransactionalMap txMap = context.getMap(mapName);

    txMap.remove(key1, oldValue1);
    txMap.remove(key2, "NO_REMOVE_AS_NOT_VALUE");

    context.commitTransaction();

    assertNull(map.get(key1));
    assertEquals(oldValue2, map.get(key2));
  }
  /** {@inheritDoc} */
  @Override
  public boolean test(Map<Object, Object> ctx) throws Exception {
    int key = nextRandom(args.range());

    TransactionOptions txOpts = new TransactionOptions().setTransactionType(LOCAL);

    TransactionContext tCtx = hazelcast().newTransactionContext(txOpts);

    tCtx.beginTransaction();

    TransactionalMap<Object, Object> txMap = tCtx.getMap("map");

    try {
      txMap.put(key, new SampleValue(key));

      tCtx.commitTransaction();
    } catch (Exception e) {
      e.printStackTrace(cfg.error());

      tCtx.rollbackTransaction();
    }

    return true;
  }
コード例 #18
0
ファイル: ClientTxnMapTest.java プロジェクト: talip/hazelcast
  @Test
  public void testDeadLockFromClientInstance() throws InterruptedException {
    final String mapName = randomString();
    final String key = "key";
    final AtomicBoolean running = new AtomicBoolean(true);
    Thread t =
        new Thread() {
          public void run() {
            while (running.get()) {
              client.getMap(mapName).get(key);
            }
          }
        };
    t.start();

    CBAuthorisation cb = new CBAuthorisation();
    cb.setAmount(15000);

    try {
      TransactionContext context = client.newTransactionContext();
      context.beginTransaction();

      TransactionalMap mapTransaction = context.getMap(mapName);
      // init data
      mapTransaction.put(key, cb);
      // start test deadlock, 3 set and concurrent, get deadlock

      cb.setAmount(12000);
      mapTransaction.set(key, cb);

      cb.setAmount(10000);
      mapTransaction.set(key, cb);

      cb.setAmount(900);
      mapTransaction.set(key, cb);

      cb.setAmount(800);
      mapTransaction.set(key, cb);

      cb.setAmount(700);
      mapTransaction.set(key, cb);

      context.commitTransaction();

    } catch (TransactionException e) {
      e.printStackTrace();
      fail();
    }
    running.set(false);
    t.join();
  }