Search in sources :

Example 16 with TestObjectWithAllTypes

use of org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes in project ignite-3 by apache.

the class KeyValueViewOperationsTest method removeExact.

@Test
public void removeExact() {
    final TestKeyObject key = TestKeyObject.randomObject(rnd);
    final TestKeyObject key2 = TestKeyObject.randomObject(rnd);
    final TestObjectWithAllTypes obj = TestObjectWithAllTypes.randomObject(rnd);
    final TestObjectWithAllTypes obj2 = TestObjectWithAllTypes.randomObject(rnd);
    KeyValueView<TestKeyObject, TestObjectWithAllTypes> tbl = kvView();
    // Put KV pair.
    tbl.put(null, key, obj);
    assertEquals(obj, tbl.get(null, key));
    // Fails to delete KV pair with unexpected value.
    assertFalse(tbl.remove(null, key, obj2));
    assertEquals(obj, tbl.get(null, key));
    // Delete KV pair with expected value.
    assertTrue(tbl.remove(null, key, obj));
    assertNull(tbl.get(null, key));
    // Once again.
    assertFalse(tbl.remove(null, key, obj));
    assertNull(tbl.get(null, key));
    // Try to remove non-existed key.
    assertFalse(tbl.remove(null, key, obj));
    assertNull(tbl.get(null, key));
    // Put KV pair.
    tbl.put(null, key, obj2);
    assertEquals(obj2, tbl.get(null, key));
    // Check null value ignored.
    assertThrows(Throwable.class, () -> tbl.remove(null, key, null));
    assertEquals(obj2, tbl.get(null, key));
    // Delete KV pair with expected value.
    assertTrue(tbl.remove(null, key, obj2));
    assertNull(tbl.get(null, key));
    assertFalse(tbl.remove(null, key2, obj2));
    assertNull(tbl.get(null, key2));
}
Also used : TestObjectWithAllTypes(org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes) Test(org.junit.jupiter.api.Test)

Example 17 with TestObjectWithAllTypes

use of org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes in project ignite-3 by apache.

the class KeyValueViewOperationsTest method replace.

@Test
public void replace() {
    final TestKeyObject key = TestKeyObject.randomObject(rnd);
    final TestKeyObject key2 = TestKeyObject.randomObject(rnd);
    final TestObjectWithAllTypes obj = TestObjectWithAllTypes.randomObject(rnd);
    final TestObjectWithAllTypes obj2 = TestObjectWithAllTypes.randomObject(rnd);
    final TestObjectWithAllTypes obj3 = TestObjectWithAllTypes.randomObject(rnd);
    KeyValueView<TestKeyObject, TestObjectWithAllTypes> tbl = kvView();
    // Ignore replace operation for non-existed KV pair.
    assertFalse(tbl.replace(null, key, obj));
    assertNull(tbl.get(null, key));
    tbl.put(null, key, obj);
    // Replace existed KV pair.
    assertTrue(tbl.replace(null, key, obj2));
    assertEquals(obj2, tbl.get(null, key));
    // Try remove existed KV pair.
    assertThrows(Throwable.class, () -> tbl.replace(null, key, null));
    assertNotNull(tbl.get(null, key));
    tbl.remove(null, key);
    // Ignore replace operation for non-existed KV pair.
    assertFalse(tbl.replace(null, key, obj3));
    assertNull(tbl.get(null, key));
    tbl.put(null, key, obj3);
    assertEquals(obj3, tbl.get(null, key));
    // Trye remove non-existed KV pair.
    assertThrows(Throwable.class, () -> tbl.replace(null, key2, null));
    assertNull(tbl.get(null, key2));
}
Also used : TestObjectWithAllTypes(org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes) Test(org.junit.jupiter.api.Test)

Example 18 with TestObjectWithAllTypes

use of org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes in project ignite-3 by apache.

the class KeyValueViewOperationsTest method putIfAbsent.

@Test
public void putIfAbsent() {
    final TestKeyObject key = TestKeyObject.randomObject(rnd);
    final TestObjectWithAllTypes obj = TestObjectWithAllTypes.randomObject(rnd);
    final TestObjectWithAllTypes obj2 = TestObjectWithAllTypes.randomObject(rnd);
    KeyValueView<TestKeyObject, TestObjectWithAllTypes> tbl = kvView();
    assertNull(tbl.get(null, key));
    // Insert new KV pair.
    assertTrue(tbl.putIfAbsent(null, key, obj));
    assertEquals(obj, tbl.get(null, key));
    // Update KV pair.
    assertFalse(tbl.putIfAbsent(null, key, obj2));
    assertEquals(obj, tbl.get(null, key));
}
Also used : TestObjectWithAllTypes(org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes) Test(org.junit.jupiter.api.Test)

Example 19 with TestObjectWithAllTypes

use of org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes in project ignite-3 by apache.

the class KeyValueViewOperationsTest method replaceExact.

@Test
public void replaceExact() {
    final TestKeyObject key = TestKeyObject.randomObject(rnd);
    final TestKeyObject key2 = TestKeyObject.randomObject(rnd);
    final TestObjectWithAllTypes obj = TestObjectWithAllTypes.randomObject(rnd);
    final TestObjectWithAllTypes obj2 = TestObjectWithAllTypes.randomObject(rnd);
    KeyValueView<TestKeyObject, TestObjectWithAllTypes> tbl = kvView();
    // Insert KV pair.
    assertThrows(Throwable.class, () -> tbl.replace(null, key, null, obj));
    tbl.put(null, key, obj);
    assertEquals(obj, tbl.get(null, key));
    assertNull(tbl.get(null, key2));
    // Ignore replace operation for non-existed KV pair.
    assertFalse(tbl.replace(null, key2, obj, obj2));
    assertNull(tbl.get(null, key2));
    // Replace existed KV pair.
    assertTrue(tbl.replace(null, key, obj, obj2));
    assertEquals(obj2, tbl.get(null, key));
    // try remove existed KV pair.
    assertThrows(Throwable.class, () -> tbl.replace(null, key, obj2, null));
    assertNotNull(tbl.get(null, key));
}
Also used : TestObjectWithAllTypes(org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes) Test(org.junit.jupiter.api.Test)

Example 20 with TestObjectWithAllTypes

use of org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes in project ignite-3 by apache.

the class KeyValueViewOperationsTest method kvView.

/**
 * Creates key-value view.
 */
private KeyValueViewImpl<TestKeyObject, TestObjectWithAllTypes> kvView() {
    ClusterService clusterService = Mockito.mock(ClusterService.class, RETURNS_DEEP_STUBS);
    Mockito.when(clusterService.topologyService().localMember().address()).thenReturn(DummyInternalTableImpl.ADDR);
    TxManager txManager = new TxManagerImpl(clusterService, new HeapLockManager());
    MessagingService messagingService = MessagingServiceTestUtils.mockMessagingService(txManager);
    Mockito.when(clusterService.messagingService()).thenReturn(messagingService);
    DummyInternalTableImpl table = new DummyInternalTableImpl(new VersionedRowStore(new ConcurrentHashMapPartitionStorage(), txManager), txManager);
    Mapper<TestKeyObject> keyMapper = Mapper.of(TestKeyObject.class);
    Mapper<TestObjectWithAllTypes> valMapper = Mapper.of(TestObjectWithAllTypes.class);
    Column[] valCols = { new Column("primitiveByteCol".toUpperCase(), INT8, false), new Column("primitiveShortCol".toUpperCase(), INT16, false), new Column("primitiveIntCol".toUpperCase(), INT32, false), new Column("primitiveLongCol".toUpperCase(), INT64, false), new Column("primitiveFloatCol".toUpperCase(), FLOAT, false), new Column("primitiveDoubleCol".toUpperCase(), DOUBLE, false), new Column("byteCol".toUpperCase(), INT8, true), new Column("shortCol".toUpperCase(), INT16, true), new Column("intCol".toUpperCase(), INT32, true), new Column("longCol".toUpperCase(), INT64, true), new Column("nullLongCol".toUpperCase(), INT64, true), new Column("floatCol".toUpperCase(), FLOAT, true), new Column("doubleCol".toUpperCase(), DOUBLE, true), new Column("dateCol".toUpperCase(), DATE, true), new Column("timeCol".toUpperCase(), time(), true), new Column("dateTimeCol".toUpperCase(), datetime(), true), new Column("timestampCol".toUpperCase(), timestamp(), true), new Column("uuidCol".toUpperCase(), NativeTypes.UUID, true), new Column("bitmaskCol".toUpperCase(), NativeTypes.bitmaskOf(42), true), new Column("stringCol".toUpperCase(), STRING, true), new Column("nullBytesCol".toUpperCase(), BYTES, true), new Column("bytesCol".toUpperCase(), BYTES, true), new Column("numberCol".toUpperCase(), NativeTypes.numberOf(12), true), new Column("decimalCol".toUpperCase(), NativeTypes.decimalOf(19, 3), true) };
    SchemaDescriptor schema = new SchemaDescriptor(1, new Column[] { new Column("id".toUpperCase(), NativeTypes.INT64, false) }, valCols);
    // Validate all types are tested.
    Set<NativeTypeSpec> testedTypes = Arrays.stream(valCols).map(c -> c.type().spec()).collect(Collectors.toSet());
    Set<NativeTypeSpec> missedTypes = Arrays.stream(NativeTypeSpec.values()).filter(t -> !testedTypes.contains(t)).collect(Collectors.toSet());
    assertEquals(Collections.emptySet(), missedTypes);
    return new KeyValueViewImpl<>(table, new DummySchemaManagerImpl(schema), keyMapper, valMapper);
}
Also used : VersionedRowStore(org.apache.ignite.internal.table.distributed.storage.VersionedRowStore) DATE(org.apache.ignite.internal.schema.NativeTypes.DATE) Assertions.assertThrows(org.junit.jupiter.api.Assertions.assertThrows) ConcurrentHashMapPartitionStorage(org.apache.ignite.internal.storage.basic.ConcurrentHashMapPartitionStorage) Assertions.assertNotNull(org.junit.jupiter.api.Assertions.assertNotNull) Arrays(java.util.Arrays) Assertions.assertNull(org.junit.jupiter.api.Assertions.assertNull) Random(java.util.Random) VersionedRowStore(org.apache.ignite.internal.table.distributed.storage.VersionedRowStore) DOUBLE(org.apache.ignite.internal.schema.NativeTypes.DOUBLE) HeapLockManager(org.apache.ignite.internal.tx.impl.HeapLockManager) INT64(org.apache.ignite.internal.schema.NativeTypes.INT64) KeyValueView(org.apache.ignite.table.KeyValueView) Assertions.assertFalse(org.junit.jupiter.api.Assertions.assertFalse) Map(java.util.Map) INT8(org.apache.ignite.internal.schema.NativeTypes.INT8) Mapper(org.apache.ignite.table.mapper.Mapper) Assertions.assertEquals(org.junit.jupiter.api.Assertions.assertEquals) MessagingService(org.apache.ignite.network.MessagingService) FLOAT(org.apache.ignite.internal.schema.NativeTypes.FLOAT) RETURNS_DEEP_STUBS(org.mockito.Answers.RETURNS_DEEP_STUBS) TestObjectWithAllTypes(org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes) NativeTypes.datetime(org.apache.ignite.internal.schema.NativeTypes.datetime) SchemaDescriptor(org.apache.ignite.internal.schema.SchemaDescriptor) DummySchemaManagerImpl(org.apache.ignite.internal.table.impl.DummySchemaManagerImpl) NativeTypes.timestamp(org.apache.ignite.internal.schema.NativeTypes.timestamp) Set(java.util.Set) TxManagerImpl(org.apache.ignite.internal.tx.impl.TxManagerImpl) Collectors(java.util.stream.Collectors) NativeTypeSpec(org.apache.ignite.internal.schema.NativeTypeSpec) DummyInternalTableImpl(org.apache.ignite.internal.table.impl.DummyInternalTableImpl) TxManager(org.apache.ignite.internal.tx.TxManager) Objects(java.util.Objects) Test(org.junit.jupiter.api.Test) Mockito(org.mockito.Mockito) BYTES(org.apache.ignite.internal.schema.NativeTypes.BYTES) List(java.util.List) NativeTypes(org.apache.ignite.internal.schema.NativeTypes) STRING(org.apache.ignite.internal.schema.NativeTypes.STRING) Column(org.apache.ignite.internal.schema.Column) Assertions.assertTrue(org.junit.jupiter.api.Assertions.assertTrue) NativeTypes.time(org.apache.ignite.internal.schema.NativeTypes.time) ClusterService(org.apache.ignite.network.ClusterService) INT16(org.apache.ignite.internal.schema.NativeTypes.INT16) INT32(org.apache.ignite.internal.schema.NativeTypes.INT32) Collections(java.util.Collections) SchemaDescriptor(org.apache.ignite.internal.schema.SchemaDescriptor) NativeTypeSpec(org.apache.ignite.internal.schema.NativeTypeSpec) ConcurrentHashMapPartitionStorage(org.apache.ignite.internal.storage.basic.ConcurrentHashMapPartitionStorage) TxManager(org.apache.ignite.internal.tx.TxManager) DummySchemaManagerImpl(org.apache.ignite.internal.table.impl.DummySchemaManagerImpl) MessagingService(org.apache.ignite.network.MessagingService) HeapLockManager(org.apache.ignite.internal.tx.impl.HeapLockManager) ClusterService(org.apache.ignite.network.ClusterService) TestObjectWithAllTypes(org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes) Column(org.apache.ignite.internal.schema.Column) TxManagerImpl(org.apache.ignite.internal.tx.impl.TxManagerImpl) DummyInternalTableImpl(org.apache.ignite.internal.table.impl.DummyInternalTableImpl)

Aggregations

TestObjectWithAllTypes (org.apache.ignite.internal.schema.testobjects.TestObjectWithAllTypes)30 Test (org.junit.jupiter.api.Test)20 SchemaDescriptor (org.apache.ignite.internal.schema.SchemaDescriptor)10 Column (org.apache.ignite.internal.schema.Column)9 ParameterizedTest (org.junit.jupiter.params.ParameterizedTest)8 MethodSource (org.junit.jupiter.params.provider.MethodSource)8 Row (org.apache.ignite.internal.schema.row.Row)5 BinaryRow (org.apache.ignite.internal.schema.BinaryRow)4 Arrays (java.util.Arrays)2 Collections (java.util.Collections)2 List (java.util.List)2 Random (java.util.Random)2 Set (java.util.Set)2 Collectors (java.util.stream.Collectors)2 NativeTypeSpec (org.apache.ignite.internal.schema.NativeTypeSpec)2 NativeTypes (org.apache.ignite.internal.schema.NativeTypes)2 BYTES (org.apache.ignite.internal.schema.NativeTypes.BYTES)2 DATE (org.apache.ignite.internal.schema.NativeTypes.DATE)2 DOUBLE (org.apache.ignite.internal.schema.NativeTypes.DOUBLE)2 FLOAT (org.apache.ignite.internal.schema.NativeTypes.FLOAT)2