public ServiceImpersonator(String serviceName) throws Exception { this(serviceName, new ServiceProperties()); }
public TestInjectionModule(String serviceName, ServiceProperties props) { this.serviceProperties = props; serviceProperties.setServiceName(serviceName); if (props.getProperty("registry") == null) { serviceProperties.addProperty("registry", "consul"); } if (props.getProperty("registryServer") == null) { serviceProperties.addProperty("registryServer", "localhost:8500"); } if (props.getProperty("kafkaServer") == null) { serviceProperties.addProperty("kafkaServer", "localhost:9092"); } }
@Inject public ConfigurationManager(ServiceProperties props) { this.serviceProps = props; this.callbackListeners = Multimaps.synchronizedMultimap(ArrayListMultimap.create()); this.lastProperties = new HashMap<>(props.getAllProperties()); }
@Inject public HealthCheckManager(MetricBuilderFactory metricBuilderFactory, RegistrationManager registrationManager, ServiceProperties serviceProps, HttpClient httpClient) { this.metricBuilderFactory = metricBuilderFactory; this.registrationManager = registrationManager; this.serviceProps = serviceProps; this.serviceId = serviceProps.getServiceInstanceId(); this.httpClient = httpClient; pollTime = serviceProps.getIntegerProperty(HEALTH_CHECK_POLL_INTERVAL, DEFAULT_HEALTH_CHECK_POLL_INTERVAL); }
void builtPublisher(KafkaPublisher publisher) { kafkaPublishers.add(publisher); publisher.initialize(serviceProperties.getKafkaServer(), serviceProperties.getServiceName(), serviceProperties.getKafkaPassword()); }
@Before public void setup() { props = new ServiceProperties(); props.addProperty("prop1", "val1"); props.addProperty("prop2", "val2"); cm = new ConfigurationManager(props); }
private ServiceUnderTestImpl(String serviceName, boolean useEventHandler, String kafkaTopic) { ServiceProperties serviceProperties = new ServiceProperties(); serviceProperties.initialize(new String[0]); TestInjectionModule baseModule = new ServiceUnderTestModule(serviceName, serviceProperties); Injector injector = Guice.createInjector(baseModule, new ServiceRegistryModule(serviceProperties), new TracingModule(serviceProperties)); ServiceDiscoveryProvider provider = injector.getInstance(ServiceDiscoveryProvider.class); loadBalancerFactory = injector.getInstance(LoadBalancerFactory.class); loadBalancerFactory.initialize(provider); loadBalancer = loadBalancerFactory.getLoadBalancer(serviceName); loadBalancer.waitForServiceInstance(); RpcClientFactory rpcClientFactory = injector.getInstance(RpcClientFactory.class); RpcMethodScanner rpcMethodScanner = new RpcMethodScanner(rpcClientFactory); serviceMethods = rpcMethodScanner.getMethodHandlers(serviceName); httpCommandProxy = injector.getInstance(HttpCommandProxy.class); httpCommandProxy.setServiceName(serviceName); if (useEventHandler) { eventHandler = injector.getInstance(ServiceTestEventHandler.class); eventHandler.initialize(kafkaTopic); } }
@Test public void propertiesNotSet() { props.addProperty("kafkaServer", "test.org:52"); assertThat(props.getKafkaServer()).isEqualTo("test.org:52"); assertThat(props.getProperty("blahblah")).isNull(); }
public static boolean shouldDisableRpcInstanceRetry(ServiceProperties serviceProps) { String value = serviceProps.getProperty(DISABLE_RPC_INSTANCE_RETRY); if (StringUtils.isNotEmpty(value) && Boolean.valueOf(value)) { return true; } else { return false; } }
@Test public void integerValueInvalid() { props.addProperty("foo", "bar"); assertThat(props.getIntegerProperty("foo", 42)).isEqualTo(42); }
protected void migrateDatabase() { try { flyway.setTable(FLYWAY_SCHEMA_TABLE_NAME); String url = "jdbc:" + serviceProps.getDatabaseServer(); flyway.setDataSource(url, serviceProps.getDatabaseUsername(), serviceProps.getDatabasePassword()); //Use repair to fix the state if a migration failed and you corrected it. if (serviceProps.getProperty("repairDatabase") != null) { flyway.repair(); } flyway.setValidateOnMigrate(false); flyway.migrate(); } catch (Exception e) { String message = "Error migrating database schema: " + e.getMessage() + " Restart service with options '-repairDatabase true' after the problem" + " has been corrected to resume migration."; logger.error(message); healthCheck.updateStatus(new HealthCheck("migration_failure", HealthCheck.Status.FAIL, message)); try { flywayFailedSemaphore.acquire(); //sleep forever } catch (InterruptedException e1) { } } }
public static int getMinJettyThreads(ServiceProperties serviceProps) { return serviceProps.getIntegerProperty(MIN_JETTY_THREADS, DEFAULT_MIN_JETTY_THREADS); }
public ServiceImpersonator(String serviceName, ServiceProperties props) throws Exception { //ServiceImpersonator needs its own injection stack so that each mock service // and the service under test get their own ecosystem this.serviceName = serviceName; TestInjectionModule testInjectionModule = new ServiceImpersonatorModule(serviceName, props); serviceProperties = testInjectionModule.getServiceProperties(); serviceProperties.setServiceName(serviceName); //has to be before getting regMgr serviceProperties.setServiceInstanceId(UUID.randomUUID().toString()); serviceProperties.addProperty("registry", "consul"); injector = Guice.createInjector(testInjectionModule, new ServiceRegistryModule(serviceProperties), new TracingModule(serviceProperties)); ServiceDiscoveryProvider provider = injector.getInstance(ServiceDiscoveryProvider.class); LoadBalancerFactory lbFactory = injector.getInstance(LoadBalancerFactory.class); lbFactory.initialize(provider); registrationManager = injector.getInstance(RegistrationManager.class); healthCheckManager = injector.getInstance(HealthCheckManager.class); rpcMethodScanner = new RpcMethodScanner(injector.getInstance(RpcClientFactory.class)); methodHandlers = injector.getInstance(MethodHandlerDictionary.class); messageHandler = injector.getInstance(MessageHandler.class); factory = injector.getInstance(KafkaPublisherFactory.class); initialize(); }
public ServiceImpersonatorModule(String serviceName, ServiceProperties props) { super(serviceName, props); serverSocket = buildServerSocket(); serviceProperties.initialize(new String[0]); serviceProperties.setServicePort(serverSocket.getLocalPort()); }
public void initProperties(String[] args) { serviceProperties.initialize(args); }
public synchronized void processValues(Map<String, String> updatedValues) { updatedValues.keySet().stream() .forEach(key -> { String newValue = updatedValues.get(key); //process only new or updated values if (! StringUtils.equals(newValue, lastProperties.get(key))) { lastProperties.put(key, newValue); notifyListeners(key, newValue); //(allows command-line overrides) serviceProps.addProperty(key, newValue); } }); dataReceived.set(true); startupLatch.countDown(); }
@Test public void testInitialize() { String args[] = { "-servicePort", "42000", "-logLevel", "DEBUG", "-foo", "bar" }; props.initialize(args); String requiredPasses[] = { "foo" }; props.ensureProperties(requiredPasses); }
while (! success) { try { String url = "jdbc:" + serviceProps.getDatabaseServer(); logger.debug("Attempting connection to {}", url); if (url.contains("mysql:")) { Connection conn = DriverManager.getConnection(url, serviceProps.getDatabaseUsername(), serviceProps.getDatabasePassword()); logger.debug("Connected to schema {}", conn.getSchema()); conn.close();
private Properties defaultKafkaConfig() { String kafkaBootstrapServers = serviceProperties.getKafkaServer(); Properties kafkaConfig = new Properties(); kafkaConfig.put("bootstrap.servers", kafkaBootstrapServers); // The heartbeat is send in the background by the client library itself kafkaConfig.put("heartbeat.interval.ms", "10000"); kafkaConfig.put("session.timeout.ms", "30000"); // Require explicit commit handling. kafkaConfig.put("enable.auto.commit", "false"); // If this is a new group, start reading the topic from the beginning. kafkaConfig.put("auto.offset.reset", "earliest"); // This is the actual timeout for the consumer loop thread calling poll() before Kafka rebalances the group. kafkaConfig.put("max.poll.interval.ms", 10000); return kafkaConfig; }
public void ensureProperties(String[] requiredProps) { boolean fail = ! areAllPropertiesSet(requiredProps); if (fail) { throw new IllegalStateException("EnsureProperties failed"); } }