diff --git a/atomix/.gitignore b/atomix/.gitignore new file mode 100644 index 0000000000..ea8c4bf7f3 --- /dev/null +++ b/atomix/.gitignore @@ -0,0 +1 @@ +/target diff --git a/atomix/pom.xml b/atomix/pom.xml new file mode 100644 index 0000000000..ec54f896d1 --- /dev/null +++ b/atomix/pom.xml @@ -0,0 +1,41 @@ + + 4.0.0 + com.atomix.io + atomix + 0.0.1-SNAPSHOT + + + + io.atomix + atomix-all + 1.0.0-rc9 + + + junit + junit + 4.9 + test + + + log4j + log4j + 1.2.17 + + + + src + + + maven-compiler-plugin + 3.7.0 + + 1.8 + 1.8 + + + + + + + diff --git a/atomix/src/main/java/com/atomix/example/BootstrapingCluster.java b/atomix/src/main/java/com/atomix/example/BootstrapingCluster.java new file mode 100644 index 0000000000..7fce4cae5f --- /dev/null +++ b/atomix/src/main/java/com/atomix/example/BootstrapingCluster.java @@ -0,0 +1,30 @@ +package com.atomix.example; + +import java.io.File; +import java.util.concurrent.CompletableFuture; + +import io.atomix.AtomixReplica; +import io.atomix.catalyst.transport.Address; +import io.atomix.catalyst.transport.netty.NettyTransport; +import io.atomix.copycat.server.storage.Storage; +import io.atomix.copycat.server.storage.StorageLevel; + +public class BootstrapingCluster { + + public static void main(String[] args) { + // TODO Auto-generated method stub + + Storage storage = Storage.builder() + .withDirectory(new File("log")) + .withStorageLevel(StorageLevel.DISK) + .build(); + AtomixReplica replica = AtomixReplica.builder(new Address("localhost", 8700)) + .withStorage(storage) + .withTransport(new NettyTransport()) + .build(); + + CompletableFuture completableFuture = replica.bootstrap(); + completableFuture.join(); + + } +} diff --git a/atomix/src/main/java/com/atomix/example/ClientExample.java b/atomix/src/main/java/com/atomix/example/ClientExample.java new file mode 100644 index 0000000000..1cfaed76a5 --- /dev/null +++ b/atomix/src/main/java/com/atomix/example/ClientExample.java @@ -0,0 +1,32 @@ +package com.atomix.example; + +import java.util.Arrays; +import java.util.List; + +import io.atomix.AtomixClient; +import io.atomix.catalyst.transport.Address; +import io.atomix.catalyst.transport.netty.NettyTransport; +import io.atomix.collections.DistributedMap; + +public class ClientExample { + + public static void main(String args[]) throws InterruptedException { + AtomixClient client = AtomixClient.builder() + .withTransport(new NettyTransport()) + .build(); + + List
cluster = Arrays.asList(new Address("localhost", 8700), new Address("localhsot", 8701)); + client.connect(cluster) + .thenRun(() -> System.out.println("Client Connected")); + + Thread.sleep(5000); + + DistributedMap map = client.getMap("map") + .join(); + + String value = (String) map.get("bar") + .join(); + System.out.println("Value: " + value); + + } +} \ No newline at end of file diff --git a/atomix/src/main/java/com/atomix/example/OtherNodes.java b/atomix/src/main/java/com/atomix/example/OtherNodes.java new file mode 100644 index 0000000000..ae4c3eef2f --- /dev/null +++ b/atomix/src/main/java/com/atomix/example/OtherNodes.java @@ -0,0 +1,73 @@ +package com.atomix.example; + +import java.io.File; + +import java.util.Arrays; +import java.util.List; + +import io.atomix.AtomixReplica; +import io.atomix.catalyst.transport.Address; +import io.atomix.catalyst.transport.netty.NettyTransport; +import io.atomix.collections.DistributedMap; +import io.atomix.concurrent.DistributedLock; +import io.atomix.copycat.server.storage.Storage; +import io.atomix.copycat.server.storage.StorageLevel; + +public class OtherNodes { + + public static void main(String[] args) throws InterruptedException { + // TODO Auto-generated method stub + + List
cluster = Arrays.asList(new Address("localhost", 8700), new Address("localhost", 8701), new Address("localhost", 8702)); + + Storage storage = Storage.builder() + .withDirectory(new File("log")) + .withStorageLevel(StorageLevel.DISK) + .build(); + + AtomixReplica replica2 = AtomixReplica.builder(new Address("localhost", 8701)) + .withStorage(storage) + .withTransport(new NettyTransport()) + .build(); + + WorkerThread WT1 = new WorkerThread(replica2, cluster); + WT1.run(); + + AtomixReplica replica3 = AtomixReplica.builder(new Address("localhost", 8702)) + .withStorage(storage) + .withTransport(new NettyTransport()) + .build(); + + WorkerThread WT2 = new WorkerThread(replica3, cluster); + WT2.run(); + + Thread.sleep(6000); + + DistributedLock lock = replica2.getLock("my-lock") + .join(); + lock.lock() + .thenRun(() -> System.out.println("Acquired a lock")); + + DistributedMap map = replica2.getMap("map") + .join(); + + // Put a value in the map and call the completion callback on response + map.put("bar", "Hello world!") + .thenRun(() -> System.out.println("Value is set in Distributed Map")); + } + + private static class WorkerThread extends Thread { + AtomixReplica replica; + List
cluster; + + public WorkerThread(AtomixReplica replica, List
cluster) { + this.replica = replica; + this.cluster = cluster; + } + + public void run() { + replica.join(cluster) + .join(); + } + } +} \ No newline at end of file diff --git a/atomix/src/test/java/com/atomix/exampletest/ClientExampleTest.java b/atomix/src/test/java/com/atomix/exampletest/ClientExampleTest.java new file mode 100644 index 0000000000..7a378c486d --- /dev/null +++ b/atomix/src/test/java/com/atomix/exampletest/ClientExampleTest.java @@ -0,0 +1,38 @@ +package com.atomix.exampletest; + +import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertSame; +import io.atomix.AtomixClient; +import io.atomix.catalyst.transport.Address; +import io.atomix.catalyst.transport.netty.NettyTransport; +import io.atomix.collections.DistributedMap; + +import java.util.Arrays; +import java.util.List; + +import org.junit.Test; + +public class ClientExampleTest { + + @Test + public void ExampleTest() throws InterruptedException { + AtomixClient client = AtomixClient.builder() + .withTransport(new NettyTransport()) + .build(); + + List
cluster = Arrays.asList(new Address("localhost", 8700), new Address("localhsot", 8701)); + client.connect(cluster) + .thenRun(() -> System.out.println("Client Connected")); + + Thread.sleep(5000); + + DistributedMap map = client.getMap("map") + .join(); + + String value = (String) map.get("bar") + .join(); + + assertEquals("Hello world!", value); + } + +}