Search in sources :

Example 1 with SingletonElectionPolicy

use of org.wildfly.clustering.singleton.SingletonElectionPolicy in project wildfly by wildfly.

the class ElectionPolicyBuilder method build.

@Override
public ServiceBuilder<SingletonElectionPolicy> build(ServiceTarget target) {
    Value<SingletonElectionPolicy> value = () -> this.preferences.isEmpty() ? this.getValue() : new PreferredSingletonElectionPolicy(this.getValue(), this.preferences);
    ServiceBuilder<SingletonElectionPolicy> builder = target.addService(this.getServiceName(), new ValueService<>(value)).setInitialMode(ServiceController.Mode.ON_DEMAND);
    this.dependencies.forEach(dependency -> dependency.register(builder));
    return builder;
}
Also used : SingletonElectionPolicy(org.wildfly.clustering.singleton.SingletonElectionPolicy) PreferredSingletonElectionPolicy(org.wildfly.clustering.singleton.election.PreferredSingletonElectionPolicy) PreferredSingletonElectionPolicy(org.wildfly.clustering.singleton.election.PreferredSingletonElectionPolicy) ValueService(org.jboss.msc.service.ValueService)

Example 2 with SingletonElectionPolicy

use of org.wildfly.clustering.singleton.SingletonElectionPolicy in project wildfly by wildfly.

the class PreferredSingletonElectionPolicyTestCase method elect.

@Test
public void elect() {
    SingletonElectionPolicy policy = mock(SingletonElectionPolicy.class);
    Preference preference1 = mock(Preference.class);
    Preference preference2 = mock(Preference.class);
    Node node1 = mock(Node.class);
    Node node2 = mock(Node.class);
    Node node3 = mock(Node.class);
    Node node4 = mock(Node.class);
    when(preference1.preferred(same(node1))).thenReturn(true);
    when(preference1.preferred(same(node2))).thenReturn(false);
    when(preference1.preferred(same(node3))).thenReturn(false);
    when(preference1.preferred(same(node4))).thenReturn(false);
    when(preference2.preferred(same(node1))).thenReturn(false);
    when(preference2.preferred(same(node2))).thenReturn(true);
    when(preference2.preferred(same(node3))).thenReturn(false);
    when(preference2.preferred(same(node4))).thenReturn(false);
    assertSame(node1, new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(Arrays.asList(node1, node2, node3, node4)));
    assertSame(node1, new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(Arrays.asList(node4, node3, node2, node1)));
    assertSame(node2, new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(Arrays.asList(node2, node3, node4)));
    assertSame(node2, new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(Arrays.asList(node4, node3, node2)));
    List<Node> nodes = Arrays.asList(node3, node4);
    when(policy.elect(nodes)).thenReturn(node3);
    assertSame(node3, new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(nodes));
    when(policy.elect(nodes)).thenReturn(node4);
    assertSame(node4, new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(nodes));
    when(policy.elect(nodes)).thenReturn(null);
    assertNull(new PreferredSingletonElectionPolicy(policy, preference1, preference2).elect(nodes));
}
Also used : SingletonElectionPolicy(org.wildfly.clustering.singleton.SingletonElectionPolicy) PreferredSingletonElectionPolicy(org.wildfly.clustering.singleton.election.PreferredSingletonElectionPolicy) Preference(org.wildfly.clustering.singleton.election.Preference) Node(org.wildfly.clustering.group.Node) PreferredSingletonElectionPolicy(org.wildfly.clustering.singleton.election.PreferredSingletonElectionPolicy) Test(org.junit.Test)

Example 3 with SingletonElectionPolicy

use of org.wildfly.clustering.singleton.SingletonElectionPolicy in project wildfly by wildfly.

the class ElectionPolicyServiceConfigurator method build.

@Override
public ServiceBuilder<?> build(ServiceTarget target) {
    ServiceBuilder<?> builder = target.addService(this.getServiceName());
    Consumer<SingletonElectionPolicy> policy = builder.provides(this.getServiceName());
    for (Dependency dependency : this.dependencies) {
        dependency.register(builder);
    }
    Service service = new FunctionalService<>(policy, this, this);
    return builder.setInstance(service);
}
Also used : SingletonElectionPolicy(org.wildfly.clustering.singleton.SingletonElectionPolicy) PreferredSingletonElectionPolicy(org.wildfly.clustering.singleton.election.PreferredSingletonElectionPolicy) FunctionalService(org.wildfly.clustering.service.FunctionalService) FunctionalService(org.wildfly.clustering.service.FunctionalService) Service(org.jboss.msc.Service) SupplierDependency(org.wildfly.clustering.service.SupplierDependency) ServiceSupplierDependency(org.wildfly.clustering.service.ServiceSupplierDependency) Dependency(org.wildfly.clustering.service.Dependency)

Aggregations

SingletonElectionPolicy (org.wildfly.clustering.singleton.SingletonElectionPolicy)3 PreferredSingletonElectionPolicy (org.wildfly.clustering.singleton.election.PreferredSingletonElectionPolicy)3 Service (org.jboss.msc.Service)1 ValueService (org.jboss.msc.service.ValueService)1 Test (org.junit.Test)1 Node (org.wildfly.clustering.group.Node)1 Dependency (org.wildfly.clustering.service.Dependency)1 FunctionalService (org.wildfly.clustering.service.FunctionalService)1 ServiceSupplierDependency (org.wildfly.clustering.service.ServiceSupplierDependency)1 SupplierDependency (org.wildfly.clustering.service.SupplierDependency)1 Preference (org.wildfly.clustering.singleton.election.Preference)1