@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); }
@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"); }
@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); }
@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)); } }
@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"); }