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");
}
}
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();
}
}
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);
}
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);
}
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);
}
Aggregations