Search in sources :

Example 26 with ServiceConfiguration

use of org.apache.pulsar.broker.ServiceConfiguration in project incubator-pulsar by apache.

the class BrokerBkEnsemblesTests method setup.

@BeforeMethod
void setup() throws Exception {
    try {
        // start local bookie and zookeeper
        bkEnsemble = new LocalBookkeeperEnsemble(3, ZOOKEEPER_PORT, 5001);
        bkEnsemble.start();
        // start pulsar service
        config = new ServiceConfiguration();
        config.setZookeeperServers("127.0.0.1" + ":" + ZOOKEEPER_PORT);
        config.setAdvertisedAddress("localhost");
        config.setWebServicePort(BROKER_WEBSERVICE_PORT);
        config.setClusterName("usc");
        config.setBrokerServicePort(BROKER_SERVICE_PORT);
        config.setAuthorizationEnabled(false);
        config.setAuthenticationEnabled(false);
        config.setManagedLedgerMaxEntriesPerLedger(5);
        config.setManagedLedgerMinLedgerRolloverTimeMinutes(0);
        config.setAdvertisedAddress("127.0.0.1");
        pulsar = new PulsarService(config);
        pulsar.start();
        adminUrl = new URL("http://127.0.0.1" + ":" + BROKER_WEBSERVICE_PORT);
        admin = new PulsarAdmin(adminUrl, (Authentication) null);
        admin.clusters().createCluster("usc", new ClusterData(adminUrl.toString()));
        admin.properties().createProperty("prop", new PropertyAdmin(Lists.newArrayList("appid1"), Sets.newHashSet("usc")));
    } catch (Throwable t) {
        LOG.error("Error setting up broker test", t);
        Assert.fail("Broker test setup failed");
    }
}
Also used : ClusterData(org.apache.pulsar.common.policies.data.ClusterData) ServiceConfiguration(org.apache.pulsar.broker.ServiceConfiguration) PulsarService(org.apache.pulsar.broker.PulsarService) PulsarAdmin(org.apache.pulsar.client.admin.PulsarAdmin) PropertyAdmin(org.apache.pulsar.common.policies.data.PropertyAdmin) Authentication(org.apache.pulsar.client.api.Authentication) LocalBookkeeperEnsemble(org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble) URL(java.net.URL) BeforeMethod(org.testng.annotations.BeforeMethod)

Example 27 with ServiceConfiguration

use of org.apache.pulsar.broker.ServiceConfiguration in project incubator-pulsar by apache.

the class WebServiceTest method setupEnv.

private void setupEnv(boolean enableFilter, String minApiVersion, boolean allowUnversionedClients, boolean enableTls, boolean enableAuth, boolean allowInsecure) throws Exception {
    Set<String> providers = new HashSet<>();
    providers.add("org.apache.pulsar.broker.authentication.AuthenticationProviderTls");
    Set<String> roles = new HashSet<>();
    roles.add("client");
    ServiceConfiguration config = new ServiceConfiguration();
    config.setAdvertisedAddress("localhost");
    config.setWebServicePort(BROKER_WEBSERVICE_PORT);
    config.setWebServicePortTls(BROKER_WEBSERVICE_PORT_TLS);
    config.setClientLibraryVersionCheckEnabled(enableFilter);
    config.setAuthenticationEnabled(enableAuth);
    config.setAuthenticationProviders(providers);
    config.setAuthorizationEnabled(false);
    config.setSuperUserRoles(roles);
    config.setTlsEnabled(enableTls);
    config.setTlsCertificateFilePath(TLS_SERVER_CERT_FILE_PATH);
    config.setTlsKeyFilePath(TLS_SERVER_KEY_FILE_PATH);
    config.setTlsAllowInsecureConnection(allowInsecure);
    config.setTlsTrustCertsFilePath(allowInsecure ? "" : TLS_CLIENT_CERT_FILE_PATH);
    config.setClusterName("local");
    // TLS certificate expects localhost
    config.setAdvertisedAddress("localhost");
    config.setZookeeperServers("localhost:2181");
    pulsar = spy(new PulsarService(config));
    doReturn(new MockedZooKeeperClientFactoryImpl()).when(pulsar).getZooKeeperClientFactory();
    doReturn(new MockedBookKeeperClientFactory()).when(pulsar).getBookKeeperClientFactory();
    pulsar.start();
    try {
        pulsar.getZkClient().delete("/minApiVersion", -1);
    } catch (Exception ex) {
    }
    pulsar.getZkClient().create("/minApiVersion", minApiVersion.getBytes(), null, CreateMode.PERSISTENT);
    String serviceUrl = BROKER_URL_BASE;
    ClientConfiguration clientConfig = new ClientConfiguration();
    if (enableTls && enableAuth) {
        serviceUrl = BROKER_URL_BASE_TLS;
        Map<String, String> authParams = new HashMap<>();
        authParams.put("tlsCertFile", TLS_CLIENT_CERT_FILE_PATH);
        authParams.put("tlsKeyFile", TLS_CLIENT_KEY_FILE_PATH);
        Authentication auth = new AuthenticationTls();
        auth.configure(authParams);
        clientConfig.setAuthentication(auth);
        clientConfig.setUseTls(true);
        clientConfig.setTlsAllowInsecureConnection(true);
    }
    PulsarAdmin pulsarAdmin = new PulsarAdmin(new URL(serviceUrl), clientConfig);
    try {
        pulsarAdmin.clusters().createCluster(config.getClusterName(), new ClusterData(pulsar.getWebServiceAddress()));
    } catch (ConflictException ce) {
    // This is OK.
    } finally {
        pulsarAdmin.close();
    }
}
Also used : MockedBookKeeperClientFactory(org.apache.pulsar.broker.MockedBookKeeperClientFactory) PulsarAdmin(org.apache.pulsar.client.admin.PulsarAdmin) HashMap(java.util.HashMap) ConflictException(org.apache.pulsar.client.admin.PulsarAdminException.ConflictException) ConflictException(org.apache.pulsar.client.admin.PulsarAdminException.ConflictException) URL(java.net.URL) MockedZooKeeperClientFactoryImpl(org.apache.pulsar.zookeeper.MockedZooKeeperClientFactoryImpl) AuthenticationTls(org.apache.pulsar.client.impl.auth.AuthenticationTls) ClusterData(org.apache.pulsar.common.policies.data.ClusterData) ServiceConfiguration(org.apache.pulsar.broker.ServiceConfiguration) PulsarService(org.apache.pulsar.broker.PulsarService) Authentication(org.apache.pulsar.client.api.Authentication) ClientConfiguration(org.apache.pulsar.client.api.ClientConfiguration) HashSet(java.util.HashSet)

Example 28 with ServiceConfiguration

use of org.apache.pulsar.broker.ServiceConfiguration in project incubator-pulsar by apache.

the class PulsarBrokerStarterTest method testGlobalZooKeeperConfig.

/**
 * Tests the private static <code>loadConfig</code> method of {@link PulsarBrokerStarter} class: verifies (1) if the
 * method returns a non-null {@link ServiceConfiguration} instance where all required settings are filled in and (2)
 * if the property variables inside the given property file are correctly referred to that returned object.
 */
@Test
public void testGlobalZooKeeperConfig() throws SecurityException, NoSuchMethodException, IOException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    File testConfigFile = new File("tmp." + System.currentTimeMillis() + ".properties");
    if (testConfigFile.exists()) {
        testConfigFile.delete();
    }
    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
    printWriter.println("zookeeperServers=z1.example.com,z2.example.com,z3.example.com");
    printWriter.println("globalZookeeperServers=");
    printWriter.println("brokerDeleteInactiveTopicsEnabled=false");
    printWriter.println("statusFilePath=/tmp/status.html");
    printWriter.println("managedLedgerDefaultEnsembleSize=1");
    printWriter.println("managedLedgerDefaultWriteQuorum=1");
    printWriter.println("managedLedgerDefaultAckQuorum=1");
    printWriter.println("managedLedgerMaxEntriesPerLedger=25");
    printWriter.println("managedLedgerCursorMaxEntriesPerLedger=50");
    printWriter.println("managedLedgerCursorRolloverTimeInSeconds=3000");
    printWriter.println("backlogQuotaDefaultLimitGB=18");
    printWriter.println("clusterName=usc");
    printWriter.println("brokerClientAuthenticationPlugin=test.xyz.client.auth.plugin");
    printWriter.println("brokerClientAuthenticationParameters=role:my-role");
    printWriter.println("superUserRoles=appid1,appid2");
    printWriter.println("pulsar.broker.enableClientVersionCheck=true");
    printWriter.println("pulsar.broker.allowUnversionedClients=true");
    printWriter.println("clientLibraryVersionCheckEnabled=true");
    printWriter.println("clientLibraryVersionCheckAllowUnversioned=true");
    printWriter.println("replicationConnectionsPerBroker=12");
    printWriter.close();
    testConfigFile.deleteOnExit();
    Method targetMethod = PulsarBrokerStarter.class.getDeclaredMethod("loadConfig", String.class);
    targetMethod.setAccessible(true);
    Object returnValue = targetMethod.invoke(PulsarBrokerStarter.class, testConfigFile.getAbsolutePath());
    Assert.assertTrue(ServiceConfiguration.class.isInstance(returnValue));
    ServiceConfiguration serviceConfig = (ServiceConfiguration) returnValue;
    Assert.assertEquals(serviceConfig.getZookeeperServers(), "z1.example.com,z2.example.com,z3.example.com");
    Assert.assertEquals(serviceConfig.getGlobalZookeeperServers(), "z1.example.com,z2.example.com,z3.example.com");
    Assert.assertFalse(serviceConfig.isBrokerDeleteInactiveTopicsEnabled());
    Assert.assertEquals(serviceConfig.getStatusFilePath(), "/tmp/status.html");
    Assert.assertEquals(serviceConfig.getBacklogQuotaDefaultLimitGB(), 18);
    Assert.assertEquals(serviceConfig.getClusterName(), "usc");
    Assert.assertEquals(serviceConfig.getBrokerClientAuthenticationPlugin(), "test.xyz.client.auth.plugin");
    Assert.assertEquals(serviceConfig.getBrokerClientAuthenticationParameters(), "role:my-role");
    Assert.assertEquals(serviceConfig.getSuperUserRoles(), Sets.newHashSet("appid1", "appid2"));
    Assert.assertEquals(serviceConfig.getManagedLedgerCursorRolloverTimeInSeconds(), 3000);
    Assert.assertEquals(serviceConfig.getManagedLedgerMaxEntriesPerLedger(), 25);
    Assert.assertEquals(serviceConfig.getManagedLedgerCursorMaxEntriesPerLedger(), 50);
    Assert.assertTrue(serviceConfig.isClientLibraryVersionCheckEnabled());
    Assert.assertEquals(serviceConfig.getReplicationConnectionsPerBroker(), 12);
}
Also used : ServiceConfiguration(org.apache.pulsar.broker.ServiceConfiguration) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) Method(java.lang.reflect.Method) File(java.io.File) PrintWriter(java.io.PrintWriter) Test(org.testng.annotations.Test)

Example 29 with ServiceConfiguration

use of org.apache.pulsar.broker.ServiceConfiguration in project incubator-pulsar by apache.

the class PulsarBrokerStarterTest method testLoadConfig.

/**
 * Tests the private static <code>loadConfig</code> method of {@link PulsarBrokerStarter} class: verifies (1) if the
 * method returns a non-null {@link ServiceConfiguration} instance where all required settings are filled in and (2)
 * if the property variables inside the given property file are correctly referred to that returned object.
 */
@Test
public void testLoadConfig() throws SecurityException, NoSuchMethodException, IOException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    File testConfigFile = createValidBrokerConfigFile();
    Method targetMethod = PulsarBrokerStarter.class.getDeclaredMethod("loadConfig", String.class);
    targetMethod.setAccessible(true);
    Object returnValue = targetMethod.invoke(PulsarBrokerStarter.class, testConfigFile.getAbsolutePath());
    Assert.assertTrue(ServiceConfiguration.class.isInstance(returnValue));
    ServiceConfiguration serviceConfig = (ServiceConfiguration) returnValue;
    Assert.assertEquals(serviceConfig.getZookeeperServers(), "z1.example.com,z2.example.com,z3.example.com");
    Assert.assertEquals(serviceConfig.getGlobalZookeeperServers(), "gz1.example.com,gz2.example.com,gz3.example.com/foo");
    Assert.assertFalse(serviceConfig.isBrokerDeleteInactiveTopicsEnabled());
    Assert.assertEquals(serviceConfig.getStatusFilePath(), "/tmp/status.html");
    Assert.assertEquals(serviceConfig.getBacklogQuotaDefaultLimitGB(), 18);
    Assert.assertEquals(serviceConfig.getClusterName(), "usc");
    Assert.assertEquals(serviceConfig.getBrokerClientAuthenticationPlugin(), "test.xyz.client.auth.plugin");
    Assert.assertEquals(serviceConfig.getBrokerClientAuthenticationParameters(), "role:my-role");
    Assert.assertEquals(serviceConfig.getSuperUserRoles(), Sets.newHashSet("appid1", "appid2"));
    Assert.assertEquals(serviceConfig.getManagedLedgerCursorRolloverTimeInSeconds(), 3000);
    Assert.assertEquals(serviceConfig.getManagedLedgerMaxEntriesPerLedger(), 25);
    Assert.assertEquals(serviceConfig.getManagedLedgerCursorMaxEntriesPerLedger(), 50);
    Assert.assertTrue(serviceConfig.isClientLibraryVersionCheckEnabled());
    Assert.assertEquals(serviceConfig.getManagedLedgerMinLedgerRolloverTimeMinutes(), 34);
    Assert.assertEquals(serviceConfig.isBacklogQuotaCheckEnabled(), true);
    Assert.assertEquals(serviceConfig.getManagedLedgerDefaultMarkDeleteRateLimit(), 5.0);
    Assert.assertEquals(serviceConfig.getReplicationProducerQueueSize(), 50);
    Assert.assertEquals(serviceConfig.isReplicationMetricsEnabled(), false);
    Assert.assertEquals(serviceConfig.isBookkeeperClientHealthCheckEnabled(), true);
    Assert.assertEquals(serviceConfig.getBookkeeperClientHealthCheckErrorThresholdPerInterval(), 5);
    Assert.assertEquals(serviceConfig.isBookkeeperClientRackawarePolicyEnabled(), true);
    Assert.assertEquals(serviceConfig.getBookkeeperClientIsolationGroups(), "group1,group2");
    Assert.assertEquals(serviceConfig.getBookkeeperClientSpeculativeReadTimeoutInMillis(), 3000);
    Assert.assertEquals(serviceConfig.getBookkeeperClientTimeoutInSeconds(), 12345);
}
Also used : ServiceConfiguration(org.apache.pulsar.broker.ServiceConfiguration) Method(java.lang.reflect.Method) File(java.io.File) Test(org.testng.annotations.Test)

Example 30 with ServiceConfiguration

use of org.apache.pulsar.broker.ServiceConfiguration in project incubator-pulsar by apache.

the class PulsarBrokerStarterTest method testLoadBalancerConfig.

/**
 * Tests the private static <code>loadConfig</code> method of {@link PulsarBrokerStarter} class: verifies (1) if the
 * method returns a non-null {@link ServiceConfiguration} instance where all required settings are filled in and (2)
 * if the property variables inside the given property file are correctly referred to that returned object.
 */
@Test
public void testLoadBalancerConfig() throws SecurityException, NoSuchMethodException, IOException, IllegalArgumentException, IllegalAccessException, InvocationTargetException {
    File testConfigFile = new File("tmp." + System.currentTimeMillis() + ".properties");
    if (testConfigFile.exists()) {
        testConfigFile.delete();
    }
    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(new FileOutputStream(testConfigFile)));
    printWriter.println("zookeeperServers=z1.example.com,z2.example.com,z3.example.com");
    printWriter.println("statusFilePath=/usr/share/pulsar_broker/status.html");
    printWriter.println("clusterName=test");
    printWriter.println("managedLedgerDefaultEnsembleSize=1");
    printWriter.println("managedLedgerDefaultWriteQuorum=1");
    printWriter.println("managedLedgerDefaultAckQuorum=1");
    printWriter.println("loadBalancerEnabled=false");
    printWriter.println("loadBalancerHostUsageCheckIntervalMinutes=4");
    printWriter.println("loadBalancerReportUpdateThresholdPercentage=15");
    printWriter.println("loadBalancerReportUpdateMaxIntervalMinutes=20");
    printWriter.println("loadBalancerBrokerOverloadedThresholdPercentage=80");
    printWriter.println("loadBalancerBrokerUnderloadedThresholdPercentage=40");
    printWriter.println("loadBalancerSheddingIntervalMinutes=8");
    printWriter.println("loadBalancerSheddingGracePeriodMinutes=29");
    printWriter.close();
    testConfigFile.deleteOnExit();
    Method targetMethod = PulsarBrokerStarter.class.getDeclaredMethod("loadConfig", String.class);
    targetMethod.setAccessible(true);
    Object returnValue = targetMethod.invoke(PulsarBrokerStarter.class, testConfigFile.getAbsolutePath());
    Assert.assertTrue(ServiceConfiguration.class.isInstance(returnValue));
    ServiceConfiguration serviceConfig = (ServiceConfiguration) returnValue;
    Assert.assertEquals(serviceConfig.isLoadBalancerEnabled(), false);
    Assert.assertEquals(serviceConfig.getLoadBalancerHostUsageCheckIntervalMinutes(), 4);
    Assert.assertEquals(serviceConfig.getLoadBalancerReportUpdateThresholdPercentage(), 15);
    Assert.assertEquals(serviceConfig.getLoadBalancerReportUpdateMaxIntervalMinutes(), 20);
    Assert.assertEquals(serviceConfig.getLoadBalancerBrokerOverloadedThresholdPercentage(), 80);
    Assert.assertEquals(serviceConfig.getLoadBalancerBrokerUnderloadedThresholdPercentage(), 40);
    Assert.assertEquals(serviceConfig.getLoadBalancerSheddingIntervalMinutes(), 8);
    Assert.assertEquals(serviceConfig.getLoadBalancerSheddingGracePeriodMinutes(), 29);
}
Also used : ServiceConfiguration(org.apache.pulsar.broker.ServiceConfiguration) FileOutputStream(java.io.FileOutputStream) OutputStreamWriter(java.io.OutputStreamWriter) Method(java.lang.reflect.Method) File(java.io.File) PrintWriter(java.io.PrintWriter) Test(org.testng.annotations.Test)

Aggregations

ServiceConfiguration (org.apache.pulsar.broker.ServiceConfiguration)58 Test (org.testng.annotations.Test)28 PulsarService (org.apache.pulsar.broker.PulsarService)24 BeforeMethod (org.testng.annotations.BeforeMethod)14 URL (java.net.URL)11 ClusterData (org.apache.pulsar.common.policies.data.ClusterData)10 Field (java.lang.reflect.Field)9 PulsarAdmin (org.apache.pulsar.client.admin.PulsarAdmin)9 TopicName (org.apache.pulsar.common.naming.TopicName)9 LoadManager (org.apache.pulsar.broker.loadbalance.LoadManager)8 Authentication (org.apache.pulsar.client.api.Authentication)8 NamespaceBundle (org.apache.pulsar.common.naming.NamespaceBundle)8 Policies (org.apache.pulsar.common.policies.data.Policies)8 LocalBookkeeperEnsemble (org.apache.pulsar.zookeeper.LocalBookkeeperEnsemble)8 InputStream (java.io.InputStream)7 URI (java.net.URI)7 NamespaceService (org.apache.pulsar.broker.namespace.NamespaceService)7 IOException (java.io.IOException)6 ManagedLedgerFactory (org.apache.bookkeeper.mledger.ManagedLedgerFactory)6 Map (java.util.Map)5