@Test
  @SuppressWarnings("unchecked")
  public void multipleWritesConsistencyTestConcurrent() throws Exception {
    getDefaultRuntime().connect();

    Map<String, String> testMap =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("test"), TreeMap.class);
    testMap.clear();
    int num_threads = 5;
    int num_records = 1_000;

    scheduleConcurrently(
        num_threads,
        threadNumber -> {
          int base = threadNumber * num_records;
          for (int i = base; i < base + num_records; i++) {
            assertThat(testMap.put(Integer.toString(i), Integer.toString(i))).isEqualTo(null);
          }
        });
    executeScheduled(num_threads, 50, TimeUnit.SECONDS);

    Map<String, String> testMap2 =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("test"), TreeMap.class);

    scheduleConcurrently(
        num_threads,
        threadNumber -> {
          int base = threadNumber * num_records;
          for (int i = base; i < base + num_records; i++) {
            assertThat(testMap2.get(Integer.toString(i))).isEqualTo(Integer.toString(i));
          }
        });
    executeScheduled(num_threads, 50, TimeUnit.SECONDS);
  }
Beispiel #2
0
 @Test
 @SuppressWarnings("unchecked")
 public void canContainNullObjects() throws Exception {
   Map<String, String> testMap =
       getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("a"), SMRMap.class);
   testMap.clear();
   testMap.put("z", null);
   assertThat(testMap.get("z")).isEqualTo(null);
   Map<String, String> testMap2 =
       getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("a"), SMRMap.class);
   assertThat(testMap2.get("z")).isEqualTo(null);
 }
  @Test
  @SuppressWarnings("unchecked")
  public void canReadWriteToSingle() throws Exception {
    getDefaultRuntime();

    Map<String, String> testMap =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("test"), TreeMap.class);
    testMap.clear();
    assertThat(testMap.put("a", "a")).isNull();
    assertThat(testMap.put("a", "b")).isEqualTo("a");
    assertThat(testMap.get("a")).isEqualTo("b");

    Map<String, String> testMap2 =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("test"), TreeMap.class);
    assertThat(testMap2.get("a")).isEqualTo("b");
  }
Beispiel #4
0
 @Test
 @SuppressWarnings("unchecked")
 public void modificationDuringTransactionCausesAbort() throws Exception {
   Map<String, String> testMap =
       getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("A"), SMRMap.class);
   assertThat(testMap.put("a", "z"));
   getRuntime().getObjectsView().TXBegin();
   assertThat(testMap.put("a", "a")).isEqualTo("z");
   assertThat(testMap.put("a", "b")).isEqualTo("a");
   assertThat(testMap.get("a")).isEqualTo("b");
   CompletableFuture cf =
       CompletableFuture.runAsync(
           () -> {
             Map<String, String> testMap2 =
                 getRuntime()
                     .getObjectsView()
                     .open(
                         UUID.nameUUIDFromBytes("A".getBytes()),
                         SMRMap.class,
                         null,
                         EnumSet.of(ObjectOpenOptions.NO_CACHE),
                         SerializerType.JSON);
             testMap2.put("a", "f");
           });
   cf.join();
   assertThatThrownBy(() -> getRuntime().getObjectsView().TXEnd())
       .isInstanceOf(TransactionAbortedException.class);
 }
Beispiel #5
0
  @Test
  @SuppressWarnings("unchecked")
  public void unusedMutatorAccessor() throws Exception {
    Map<String, String> testMap =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("A"), SMRMap.class);

    testMap.put("a", "z");
  }
  @Test
  @SuppressWarnings("unchecked")
  public void multipleWritesConsistencyTest() throws Exception {
    getDefaultRuntime().connect();

    Map<String, String> testMap =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("test"), TreeMap.class);
    testMap.clear();

    for (int i = 0; i < 10_000; i++) {
      assertThat(testMap.put(Integer.toString(i), Integer.toString(i))).isNull();
    }

    Map<String, String> testMap2 =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("test"), TreeMap.class);
    for (int i = 0; i < 10_000; i++) {
      assertThat(testMap2.get(Integer.toString(i))).isEqualTo(Integer.toString(i));
    }
  }
Beispiel #7
0
  @Test
  @SuppressWarnings("unchecked")
  public void canContainOtherCorfuObjects() throws Exception {
    Map<String, String> testMap =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("a"), SMRMap.class);
    testMap.clear();
    testMap.put("z", "e");
    Map<String, Map<String, String>> testMap2 =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("b"), SMRMap.class);
    testMap2.put("a", testMap);

    assertThat(testMap2.get("a").get("z")).isEqualTo("e");

    testMap2.get("a").put("y", "f");

    assertThat(testMap.get("y")).isEqualTo("f");

    Map<String, String> testMap3 =
        getRuntime().getObjectsView().open(CorfuRuntime.getStreamID("a"), SMRMap.class);

    assertThat(testMap3.get("y")).isEqualTo("f");
  }