@Test public void getNextNodeNoFiltering() throws Exception { Node node1 = new Node(new InetSocketAddress("127.0.0.1", 8181)); Node node2 = new Node(new InetSocketAddress("127.0.0.2", 8182)); Node node3 = new Node(new InetSocketAddress("127.0.0.3", 8183)); Strategy lb = new FilteredRoundRobinLoadBalancer( new Filter() { @Override public boolean contains(String serviceName, String hostname, String item) { return true; } }); ImmutableList<Node> pool = ImmutableList.of(node1, node2, node3); assertEquals(node1, lb.getNextNode(pool, ImmutableMap.of(node1.token(), node1))); assertEquals(node2, lb.getNextNode(pool, ImmutableMap.of(node2.token(), node2))); assertEquals(node3, lb.getNextNode(pool, ImmutableMap.of(node3.token(), node3))); // test restarting from idx 0 to make sure no overflow assertEquals(node1, lb.getNextNode(pool, ImmutableMap.of(node1.token(), node1))); assertEquals(node2, lb.getNextNode(pool, ImmutableMap.of(node2.token(), node2))); assertEquals(node3, lb.getNextNode(pool, ImmutableMap.of(node3.token(), node3))); }
@Test public void getNextNodeWithFiltering() throws Exception { Node node1 = new Node( new InetSocketAddress("127.0.0.1", 8181), ImmutableList.copyOf(new String[] {"msmaster1int"}), 0, "paymentserv"); Node node2 = new Node( new InetSocketAddress("127.0.0.2", 8182), ImmutableList.copyOf(new String[] {"msmaster2int"}), 0, "paymentserv"); Node node3 = new Node( new InetSocketAddress("127.0.0.3", 8183), ImmutableList.copyOf(new String[] {"msmaster1int"}), 0, "paymentserv"); Strategy lb = new FilteredRoundRobinLoadBalancer( new Filter() { @Override public boolean contains(String serviceName, String hostname, String item) { return "msmaster1int".equals(item); } }); ImmutableList<Node> pool = ImmutableList.of(node1, node2, node3); assertEquals(node1, lb.getNextNode(pool, ImmutableMap.of(node1.token(), node1))); assertEquals(node3, lb.getNextNode(pool, ImmutableMap.of(node3.token(), node3))); assertEquals(node1, lb.getNextNode(pool, ImmutableMap.of(node1.token(), node1))); assertEquals(node3, lb.getNextNode(pool, ImmutableMap.of(node3.token(), node3))); }