Search in sources :

Example 6 with RELAY2

use of org.jgroups.protocols.relay.RELAY2 in project JGroups by belaban.

the class Relay2Test method testAddRelay2ToAnAlreadyConnectedChannel.

/**
 * Test that RELAY2 can be added to an already connected channel.
 */
public void testAddRelay2ToAnAlreadyConnectedChannel() throws Exception {
    // Create and connect a channel.
    a = new JChannel();
    a.connect(SFO_CLUSTER);
    System.out.println("Channel " + a.getName() + " is connected. View: " + a.getView());
    // Add RELAY2 protocol to the already connected channel.
    RELAY2 relayToInject = createRELAY2(SFO);
    // Util.setField(Util.getField(relayToInject.getClass(), "local_addr"), relayToInject, a.getAddress());
    a.getProtocolStack().insertProtocolAtTop(relayToInject);
    relayToInject.down(new Event(Event.SET_LOCAL_ADDRESS, a.getAddress()));
    relayToInject.setProtocolStack(a.getProtocolStack());
    relayToInject.configure();
    relayToInject.handleView(a.getView());
    // Check for RELAY2 presence
    RELAY2 ar = a.getProtocolStack().findProtocol(RELAY2.class);
    assert ar != null;
    waitUntilRoute(SFO, true, 10000, 500, a);
    assert !ar.printRoutes().equals("n/a (not site master)") : "This member should be site master";
    Route route = getRoute(a, SFO);
    System.out.println("Route at sfo to sfo: " + route);
    assert route != null;
}
Also used : RELAY2(org.jgroups.protocols.relay.RELAY2) Route(org.jgroups.protocols.relay.Route)

Example 7 with RELAY2

use of org.jgroups.protocols.relay.RELAY2 in project JGroups by belaban.

the class SizeTest method testRelay2Header.

public static void testRelay2Header() throws Exception {
    Address dest = new SiteMaster("sfo");
    RELAY2.Relay2Header hdr = new RELAY2.Relay2Header(RELAY2.Relay2Header.DATA, dest, null);
    _testSize(hdr);
    Address sender = new SiteUUID(UUID.randomUUID(), "dummy", "sfo");
    hdr = new RELAY2.Relay2Header(RELAY2.Relay2Header.DATA, dest, sender);
    _testSize(hdr);
}
Also used : IpAddress(org.jgroups.stack.IpAddress) SiteMaster(org.jgroups.protocols.relay.SiteMaster) SiteUUID(org.jgroups.protocols.relay.SiteUUID) RELAY2(org.jgroups.protocols.relay.RELAY2)

Example 8 with RELAY2

use of org.jgroups.protocols.relay.RELAY2 in project JGroups by belaban.

the class Relay2RpcDispatcherTest method testNotificationAndRpcRelay2Transit.

/**
 * Tests that notifications are routed to all sites.
 */
public void testNotificationAndRpcRelay2Transit() throws Exception {
    a.connect(LON_CLUSTER);
    b.connect(LON_CLUSTER);
    rpca.start();
    rpcb.start();
    Util.waitUntilAllChannelsHaveSameView(30000, 1000, a, b);
    x.connect(SFO_CLUSTER);
    y.connect(SFO_CLUSTER);
    rpcx.start();
    rpcy.start();
    Util.waitUntilAllChannelsHaveSameView(30000, 1000, x, y);
    assert a.getView().size() == 2;
    assert x.getView().size() == 2;
    RELAY2 ar = a.getProtocolStack().findProtocol(RELAY2.class);
    RELAY2 xr = x.getProtocolStack().findProtocol(RELAY2.class);
    assert ar != null && xr != null;
    JChannel a_bridge = null, x_bridge = null;
    for (int i = 0; i < 20; i++) {
        a_bridge = ar.getBridge(SFO);
        x_bridge = xr.getBridge(LON);
        if (a_bridge != null && x_bridge != null && a_bridge.getView().size() == 2 && x_bridge.getView().size() == 2)
            break;
        Util.sleep(500);
    }
    assert a_bridge != null && x_bridge != null;
    System.out.println("A's bridge channel: " + a_bridge.getView());
    System.out.println("X's bridge channel: " + x_bridge.getView());
    assert a_bridge.getView().size() == 2 : "bridge view is " + a_bridge.getView();
    assert x_bridge.getView().size() == 2 : "bridge view is " + x_bridge.getView();
    Route route = getRoute(x, LON);
    System.out.println("Route at sfo to lon: " + route);
    assert route != null;
    System.out.println("B: sending message 0 to the site master of SFO");
    Address sm_sfo = new SiteMaster(SFO);
    MethodCall call = new MethodCall(ServerObject.class.getMethod("foo"));
    System.out.println("B: call foo method on A");
    Object rsp = rpcb.callRemoteMethod(a.getAddress(), call, new RequestOptions(ResponseMode.GET_ALL, 5000));
    System.out.println("RSP is: " + rsp);
    System.out.println("B: call foo method on SFO master site");
    rsp = rpcb.callRemoteMethod(sm_sfo, call, new RequestOptions(ResponseMode.GET_ALL, 15000));
    System.out.println("RSP is: " + rsp);
    System.out.println("B: call foo method on all members in site LON");
    RspList<Integer> rsps = rpcb.callRemoteMethods(null, call, new RequestOptions(ResponseMode.GET_ALL, 5000));
    System.out.println("RSPs are: \n" + rsps);
    assert rsps.size() == 2;
    assert rsps.containsKey(a.getAddress()) && rsps.containsKey(b.getAddress());
    View bridge_view = xr.getBridgeView(BRIDGE_CLUSTER);
    System.out.println("bridge_view = " + bridge_view);
    route = getRoute(x, LON);
    System.out.println("Route at sfo to lon: " + route);
    assert route != null;
}
Also used : RequestOptions(org.jgroups.blocks.RequestOptions) MethodCall(org.jgroups.blocks.MethodCall) SiteMaster(org.jgroups.protocols.relay.SiteMaster) RELAY2(org.jgroups.protocols.relay.RELAY2) Route(org.jgroups.protocols.relay.Route)

Example 9 with RELAY2

use of org.jgroups.protocols.relay.RELAY2 in project JGroups by belaban.

the class Relay2Test method waitUntilRoute.

protected void waitUntilRoute(String site_name, boolean present, long timeout, long interval, JChannel ch) throws Exception {
    RELAY2 relay = ch.getProtocolStack().findProtocol(RELAY2.class);
    if (relay == null)
        throw new IllegalArgumentException("Protocol RELAY2 not found");
    Route route = null;
    long deadline = System.currentTimeMillis() + timeout;
    while (System.currentTimeMillis() < deadline) {
        route = relay.getRoute(site_name);
        if ((route != null && present) || (route == null && !present))
            break;
        Util.sleep(interval);
    }
    assert (route != null && present) || (route == null && !present);
}
Also used : RELAY2(org.jgroups.protocols.relay.RELAY2) Route(org.jgroups.protocols.relay.Route)

Example 10 with RELAY2

use of org.jgroups.protocols.relay.RELAY2 in project JGroups by belaban.

the class Relay2Test method waitForBridgeView.

protected void waitForBridgeView(int expected_size, long timeout, long interval, JChannel... channels) {
    long deadline = System.currentTimeMillis() + timeout;
    while (System.currentTimeMillis() < deadline) {
        boolean views_correct = true;
        for (JChannel ch : channels) {
            RELAY2 relay = ch.getProtocolStack().findProtocol(RELAY2.class);
            View bridge_view = relay.getBridgeView(BRIDGE_CLUSTER);
            if (bridge_view == null || bridge_view.size() != expected_size) {
                views_correct = false;
                break;
            }
        }
        if (views_correct)
            break;
        Util.sleep(interval);
    }
    System.out.println("Bridge views:\n");
    for (JChannel ch : channels) {
        RELAY2 relay = ch.getProtocolStack().findProtocol(RELAY2.class);
        View bridge_view = relay.getBridgeView(BRIDGE_CLUSTER);
        System.out.println(ch.getAddress() + ": " + bridge_view);
    }
    for (JChannel ch : channels) {
        RELAY2 relay = ch.getProtocolStack().findProtocol(RELAY2.class);
        View bridge_view = relay.getBridgeView(BRIDGE_CLUSTER);
        assert bridge_view != null && bridge_view.size() == expected_size : ch.getAddress() + ": bridge view=" + bridge_view + ", expected=" + expected_size;
    }
}
Also used : RELAY2(org.jgroups.protocols.relay.RELAY2)

Aggregations

RELAY2 (org.jgroups.protocols.relay.RELAY2)10 Route (org.jgroups.protocols.relay.Route)4 SiteMaster (org.jgroups.protocols.relay.SiteMaster)2 RelayConfig (org.jgroups.protocols.relay.config.RelayConfig)2 Locale (java.util.Locale)1 PathAddress (org.jboss.as.controller.PathAddress)1 OverrideDescriptionProvider (org.jboss.as.controller.descriptions.OverrideDescriptionProvider)1 StandardResourceDescriptionResolver (org.jboss.as.controller.descriptions.StandardResourceDescriptionResolver)1 ManagementResourceRegistration (org.jboss.as.controller.registry.ManagementResourceRegistration)1 PlaceholderResource (org.jboss.as.controller.registry.PlaceholderResource)1 Resource (org.jboss.as.controller.registry.Resource)1 ModelNode (org.jboss.dmr.ModelNode)1 MethodCall (org.jgroups.blocks.MethodCall)1 RequestOptions (org.jgroups.blocks.RequestOptions)1 GMS (org.jgroups.protocols.pbcast.GMS)1 SiteUUID (org.jgroups.protocols.relay.SiteUUID)1 IpAddress (org.jgroups.stack.IpAddress)1