private Map<String,String> configure( Consumer<Map<String,String>> overrideSettingsFunction ) { Map<String,String> settings = new HashMap<>(); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).type.name(), "BOLT" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).enabled.name(), "true" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).listen_address.name(), "localhost:0" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).encryption_level.name(), OPTIONAL.name() ); configure.accept( settings ); overrideSettingsFunction.accept( settings ); return settings; }
@Override public void start() { forkJoinThreadPool = new ForkJoinPool(); config.enabledBoltConnectors().forEach( connector -> { BoltScheduler boltScheduler = new ExecutorBoltScheduler( connector.key(), executorFactory, scheduler, logService, config.get( connector.thread_pool_min_size ), config.get( connector.thread_pool_max_size ), config.get( connector.thread_pool_keep_alive ), config.get( connector.unsupported_thread_pool_queue_size ), forkJoinThreadPool ); boltScheduler.start(); boltSchedulers.put( connector.key(), boltScheduler ); } ); }
@Test public void shouldLookupBoltPortInRegisterIfConfiguredTo0() throws Exception { BoltConnector bolt = new BoltConnector( "honestJakesBoltConnector" ); ConnectorPortRegister register = new ConnectorPortRegister(); register.register( bolt.key(), new InetSocketAddress( 1337 ) ); DiscoverableURIs uris = communityDiscoverableURIs( Config.builder() .withSetting( bolt.advertised_address, "apple.com:0" ) .withSetting( bolt.enabled, "true" ) .withSetting( bolt.type, BoltConnector.ConnectorType.BOLT.name() ) .build(), register ); assertEquals( "bolt://apple.com:1337", toMap(uris).get("bolt") ); }
@Override protected void configure( GraphDatabaseBuilder builder ) { // Reduce the default page cache memory size to 8 mega-bytes for test databases. builder.setConfig( GraphDatabaseSettings.pagecache_memory, "8m" ); builder.setConfig( new BoltConnector( "bolt" ).type, BOLT.name() ); builder.setConfig( new BoltConnector( "bolt" ).enabled, "false" ); }
@Override public URI boltURI() { List<BoltConnector> connectors = server.getConfig().enabledBoltConnectors(); BoltConnector defaultConnector = null; BoltConnector firstConnector = null; for ( BoltConnector connector : connectors ) { if ( DEFAULT_BOLT_CONNECTOR_KEY.equals( connector.key() ) ) { defaultConnector = connector; } if ( firstConnector == null ) { firstConnector = connector; } } if ( defaultConnector != null ) { // bolt connector with default key is configured, return its address return connectorUri( "bolt", defaultConnector ); } if ( firstConnector != null ) { // some bolt connector is configured, return its address return connectorUri( "bolt", firstConnector ); } throw new IllegalStateException( "Bolt connector is not configured" ); }
/** * Extends config with defaults for server, i.e. auth and connector settings. */ @Nonnull public Builder withServerDefaults() { // Add server defaults HttpConnector http = new HttpConnector( "http", NONE ); HttpConnector https = new HttpConnector( "https", TLS ); BoltConnector bolt = new BoltConnector( "bolt" ); overriddenDefaults.put( GraphDatabaseSettings.auth_enabled.name(), TRUE ); overriddenDefaults.put( http.enabled.name(), TRUE ); overriddenDefaults.put( https.enabled.name(), TRUE ); overriddenDefaults.put( bolt.enabled.name(), TRUE ); return this; }
ChannelFuture channelFuture = serverBootstrap.bind( protocolInitializer.address().socketAddress() ).sync(); InetSocketAddress localAddress = (InetSocketAddress) channelFuture.channel().localAddress(); connectionRegister.register( boltConnector.key(), localAddress ); String host = protocolInitializer.address().getHostname(); int port = localAddress.getPort();
protected Consumer<Map<String,String>> getSettingsFunction() { return settings -> { settings.put( GraphDatabaseSettings.auth_enabled.name(), "false" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).enabled.name(), "TRUE" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).listen_address.name(), "localhost:0" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).type.name(), BoltConnector.ConnectorType.BOLT.name() ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).thread_pool_min_size.name(), "0" ); settings.put( new BoltConnector( DEFAULT_CONNECTOR_KEY ).thread_pool_max_size.name(), "2" ); }; }
public Builder addBoltConnectorFromConfig( String key, String scheme, Config config, Setting<URI> override, ConnectorPortRegister portRegister ) { // If an override is configured, add it with the HIGHEST precedence if ( config.isConfigured( override ) ) { add( key, config.get( override ), HIGHEST ); } config.enabledBoltConnectors().stream().findFirst().ifPresent( c -> { AdvertisedSocketAddress address = config.get( c.advertised_address ); int port = address.getPort(); if ( port == 0 ) { port = portRegister.getLocalAddress( c.key() ).getPort(); } // If advertised address is explicitly set, set the precedence to HIGH - eitherwise set it as LOWEST (default) add( key, scheme, address.getHostname(), port, config.isConfigured( c.advertised_address ) ? HIGH : LOWEST ); } ); return this; }
private static Config createConfig() { Map<String, String> configProps = new HashMap<>(); configProps.put( new BoltConnector( CONNECTOR ).enabled.name(), "TRUE" ); configProps.put( new BoltConnector( CONNECTOR ).listen_address.name(), "localhost:0" ); configProps.put( new BoltConnector( CONNECTOR ).type.name(), BoltConnector.ConnectorType.BOLT.name() ); configProps.put( new BoltConnector( CONNECTOR ).thread_pool_min_size.name(), "5" ); configProps.put( new BoltConnector( CONNECTOR ).thread_pool_max_size.name(), "10" ); return Config.fromSettings( configProps ).build(); }
return new SocketTransport( connector.key(), listenAddress, sslCtx, requireEncryption, logService.getInternalLogProvider(), throttleGroup, boltProtocolFactory, connectionTracker );
private Config mockConfig() { HashMap<String,String> settings = new HashMap<>(); settings.put( GraphDatabaseSettings.auth_enabled.name(), "false" ); settings.put( new BoltConnector( "bolt" ).type.name(), "BOLT" ); settings.put( new BoltConnector( "bolt" ).enabled.name(), "true" ); settings.put( ServerSettings.management_api_path.name(), managementUri.toString() ); settings.put( ServerSettings.rest_api_path.name(), dataUri.toString() ); Config config = Config.defaults( settings ); if ( configOverrider != null ) { configOverrider.accept( config ); } return config; }
@Override public void start() { forkJoinThreadPool = new ForkJoinPool(); config.enabledBoltConnectors().forEach( connector -> { BoltScheduler boltScheduler = new ExecutorBoltScheduler( connector.key(), executorFactory, scheduler, logService, config.get( connector.thread_pool_min_size ), config.get( connector.thread_pool_max_size ), config.get( connector.thread_pool_keep_alive ), config.get( connector.unsupported_thread_pool_queue_size ), forkJoinThreadPool ); boltScheduler.start(); boltSchedulers.put( connector.key(), boltScheduler ); } ); }
@Test void shouldBeAbleToDisableBoltConnectorWithJustOneParameter() { // given Config config = Config.defaults( new BoltConnector( "bolt" ).enabled, "false" ); // then assertThat( config.boltConnectors().size(), is( 1 ) ); assertThat( config.enabledBoltConnectors(), empty() ); }
@Override public URI boltURI() { List<BoltConnector> connectors = server.getConfig().enabledBoltConnectors(); BoltConnector defaultConnector = null; BoltConnector firstConnector = null; for ( BoltConnector connector : connectors ) { if ( DEFAULT_BOLT_CONNECTOR_KEY.equals( connector.key() ) ) { defaultConnector = connector; } if ( firstConnector == null ) { firstConnector = connector; } } if ( defaultConnector != null ) { // bolt connector with default key is configured, return its address return connectorUri( "bolt", defaultConnector ); } if ( firstConnector != null ) { // some bolt connector is configured, return its address return connectorUri( "bolt", firstConnector ); } throw new IllegalStateException( "Bolt connector is not configured" ); }
private void startServerWithBoltEnabled( String advertisedHost, int advertisedPort, String listenHost, int listenPort ) throws IOException { server = serverOnRandomPorts() .withProperty( new BoltConnector( "bolt" ).type.name(), "BOLT" ) .withProperty( new BoltConnector( "bolt" ).enabled.name(), "true" ) .withProperty( new BoltConnector( "bolt" ).encryption_level.name(), "REQUIRED" ) .withProperty( new BoltConnector( "bolt" ).advertised_address.name(), advertisedHost + ":" + advertisedPort ) .withProperty( new BoltConnector( "bolt" ).listen_address.name(), listenHost + ":" + listenPort ) .usingDataDir( tmpDir.getRoot().getAbsolutePath() ).build(); server.start(); }
ChannelFuture channelFuture = serverBootstrap.bind( protocolInitializer.address().socketAddress() ).sync(); InetSocketAddress localAddress = (InetSocketAddress) channelFuture.channel().localAddress(); connectionRegister.register( boltConnector.key(), localAddress ); String host = protocolInitializer.address().getHostname(); int port = localAddress.getPort();
private static Consumer<Config> overrideWithAdvertisedAddress( String host, int port ) { return config -> config.augment( new BoltConnector( "bolt" ).advertised_address.name(), AdvertisedSocketAddress.advertisedAddress( host, port ) ); }
public Builder addBoltConnectorFromConfig( String key, String scheme, Config config, Setting<URI> override, ConnectorPortRegister portRegister ) { // If an override is configured, add it with the HIGHEST precedence if ( config.isConfigured( override ) ) { add( key, config.get( override ), HIGHEST ); } config.enabledBoltConnectors().stream().findFirst().ifPresent( c -> { AdvertisedSocketAddress address = config.get( c.advertised_address ); int port = address.getPort(); if ( port == 0 ) { port = portRegister.getLocalAddress( c.key() ).getPort(); } // If advertised address is explicitly set, set the precedence to HIGH - eitherwise set it as LOWEST (default) add( key, scheme, address.getHostname(), port, config.isConfigured( c.advertised_address ) ? HIGH : LOWEST ); } ); return this; }
private static Consumer<Config> overrideWithListenAddress( String host, int port ) { return config -> config.augment( new BoltConnector( "bolt" ).listen_address.name(), AdvertisedSocketAddress.advertisedAddress( host, port ) ); }