Search in sources :

Example 26 with LoadReport

use of org.apache.pulsar.policies.data.loadbalancer.LoadReport in project incubator-pulsar by apache.

the class NamespaceServiceTest method testLoadReportDeserialize.

/**
 * <pre>
 *  It verifies that namespace service deserialize the load-report based on load-manager which active.
 *  1. write candidate1- load report using {@link LoadReport} which is used by SimpleLoadManagerImpl
 *  2. Write candidate2- load report using {@link LocalBrokerData} which is used by ModularLoadManagerImpl
 *  3. try to get Lookup Result based on active load-manager
 * </pre>
 * @throws Exception
 */
@Test
public void testLoadReportDeserialize() throws Exception {
    final String candidateBroker1 = "http://localhost:8000";
    final String candidateBroker2 = "http://localhost:3000";
    LoadReport lr = new LoadReport(null, null, candidateBroker1, null);
    LocalBrokerData ld = new LocalBrokerData(null, null, candidateBroker2, null);
    URI uri1 = new URI(candidateBroker1);
    URI uri2 = new URI(candidateBroker2);
    String path1 = String.format("%s/%s:%s", LoadManager.LOADBALANCE_BROKERS_ROOT, uri1.getHost(), uri1.getPort());
    String path2 = String.format("%s/%s:%s", LoadManager.LOADBALANCE_BROKERS_ROOT, uri2.getHost(), uri2.getPort());
    ZkUtils.createFullPathOptimistic(pulsar.getZkClient(), path1, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(lr), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
    ZkUtils.createFullPathOptimistic(pulsar.getZkClient(), path2, ObjectMapperFactory.getThreadLocal().writeValueAsBytes(ld), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.EPHEMERAL);
    LookupResult result1 = pulsar.getNamespaceService().createLookupResult(candidateBroker1).get();
    // update to new load mananger
    pulsar.getLoadManager().set(new ModularLoadManagerWrapper(new ModularLoadManagerImpl()));
    LookupResult result2 = pulsar.getNamespaceService().createLookupResult(candidateBroker2).get();
    Assert.assertEquals(result1.getLookupData().getBrokerUrl(), candidateBroker1);
    Assert.assertEquals(result2.getLookupData().getBrokerUrl(), candidateBroker2);
    System.out.println(result2);
}
Also used : LocalBrokerData(org.apache.pulsar.policies.data.loadbalancer.LocalBrokerData) LoadReport(org.apache.pulsar.policies.data.loadbalancer.LoadReport) LookupResult(org.apache.pulsar.broker.lookup.LookupResult) URI(java.net.URI) ModularLoadManagerWrapper(org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerWrapper) ModularLoadManagerImpl(org.apache.pulsar.broker.loadbalance.impl.ModularLoadManagerImpl) Test(org.testng.annotations.Test)

Aggregations

LoadReport (org.apache.pulsar.policies.data.loadbalancer.LoadReport)26 Test (org.testng.annotations.Test)12 HashMap (java.util.HashMap)11 TreeMap (java.util.TreeMap)11 SystemResourceUsage (org.apache.pulsar.policies.data.loadbalancer.SystemResourceUsage)11 Map (java.util.Map)10 KeeperException (org.apache.zookeeper.KeeperException)10 ResourceUnit (org.apache.pulsar.broker.loadbalance.ResourceUnit)7 IOException (java.io.IOException)6 Set (java.util.Set)6 NamespaceBundleStats (org.apache.pulsar.policies.data.loadbalancer.NamespaceBundleStats)6 HashSet (java.util.HashSet)5 PulsarServerException (org.apache.pulsar.broker.PulsarServerException)5 ResourceQuota (org.apache.pulsar.common.policies.data.ResourceQuota)5 ResourceUsage (org.apache.pulsar.policies.data.loadbalancer.ResourceUsage)5 Field (java.lang.reflect.Field)4 LocalBrokerData (org.apache.pulsar.policies.data.loadbalancer.LocalBrokerData)4 JsonProcessingException (com.fasterxml.jackson.core.JsonProcessingException)3 SimpleResourceUnit (org.apache.pulsar.broker.loadbalance.impl.SimpleResourceUnit)3 TopicName (org.apache.pulsar.common.naming.TopicName)3