private static Map getConfigurationProfilePresets()

in wrapper/src/main/java/software/amazon/jdbc/profile/DriverConfigurationProfiles.java [79:694]


  private static Map<String, ConfigurationProfile> getConfigurationProfilePresets() {
    Map<String, ConfigurationProfile> presets = new ConcurrentHashMap<>();

    presets.put(ConfigurationProfilePresetCodes.A0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.A0,
            Collections.emptyList(), // empty list is important here! it shouldn't be a null.
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.A1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.A1,
            Collections.emptyList(), // empty list is important here! it shouldn't be a null.
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "30000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "30000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "30000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.A2,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.A2,
            Collections.emptyList(), // empty list is important here! it shouldn't be a null.
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "3000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "3000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "3000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.B,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.B,
            Collections.emptyList(), // empty list is important here! it shouldn't be a null.
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "true"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.C0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.C0,
            Collections.singletonList(HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "60000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "5",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "15000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.C1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.C1,
            Collections.singletonList(HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "30000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "3",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "3000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.D0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.D0,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                ReadWriteSplittingPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.D1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.D1,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                ReadWriteSplittingPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "30000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "30000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "30000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.E,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.E,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                ReadWriteSplittingPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "true"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.F0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.F0,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                ReadWriteSplittingPluginFactory.class,
                FailoverConnectionPluginFactory.class,
                HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "60000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "5",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "15000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.F1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.F1,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                ReadWriteSplittingPluginFactory.class,
                FailoverConnectionPluginFactory.class,
                HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "30000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "3",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "3000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.G0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.G0,
            Arrays.asList(
                AuroraConnectionTrackerPluginFactory.class,
                AuroraStaleDnsPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.G1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.G1,
            Arrays.asList(
                AuroraConnectionTrackerPluginFactory.class,
                AuroraStaleDnsPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "30000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "30000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "30000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.H,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.H,
            Arrays.asList(
                AuroraConnectionTrackerPluginFactory.class,
                AuroraStaleDnsPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "true"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.I0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.I0,
            Arrays.asList(
                AuroraConnectionTrackerPluginFactory.class,
                AuroraStaleDnsPluginFactory.class,
                FailoverConnectionPluginFactory.class,
                HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "60000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "5",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "15000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    presets.put(ConfigurationProfilePresetCodes.I1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.I1,
            Arrays.asList(
                AuroraConnectionTrackerPluginFactory.class,
                AuroraStaleDnsPluginFactory.class,
                FailoverConnectionPluginFactory.class,
                HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "30000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "3",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "3000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            (Dialect) null,
            null,
            null,
            null,
            null));

    // Spring Framework / Spring Boot optimized presets

    presets.put(ConfigurationProfilePresetCodes.SF_D0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.SF_D0,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.SF_D1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.SF_D1,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "30000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "30000",
                PropertyDefinition.LOGIN_TIMEOUT.name, "30000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.SF_E,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.SF_E,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                FailoverConnectionPluginFactory.class),
            getProperties(
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "true"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.SF_F0,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.SF_F0,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                FailoverConnectionPluginFactory.class,
                HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "60000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "5",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "15000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    presets.put(ConfigurationProfilePresetCodes.SF_F1,
        new ConfigurationProfile(
            ConfigurationProfilePresetCodes.SF_F1,
            Arrays.asList(
                AuroraInitialConnectionStrategyPluginFactory.class,
                AuroraConnectionTrackerPluginFactory.class,
                FailoverConnectionPluginFactory.class,
                HostMonitoringConnectionPluginFactory.class),
            getProperties(
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_TIME.name, "30000",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_COUNT.name, "3",
                HostMonitoringConnectionPlugin.FAILURE_DETECTION_INTERVAL.name, "5000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.CONNECT_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.SOCKET_TIMEOUT.name, "3000",
                MONITORING_CONNECTION_PREFIX + PropertyDefinition.LOGIN_TIMEOUT.name, "3000",
                PropertyDefinition.CONNECT_TIMEOUT.name, "10000",
                PropertyDefinition.SOCKET_TIMEOUT.name, "0",
                PropertyDefinition.LOGIN_TIMEOUT.name, "10000",
                PropertyDefinition.TCP_KEEP_ALIVE.name, "false"),
            null,
            null,
            null,
            () -> new HikariPooledConnectionProvider(
                (HostSpec hostSpec, Properties originalProps) -> {
                  final HikariConfig config = new HikariConfig();
                  config.setMaximumPoolSize(30);
                  // holds few extra connections in case of sudden traffic peak
                  config.setMinimumIdle(2);
                  // close idle connection in 15min; helps to get back to normal pool size after load peak
                  config.setIdleTimeout(TimeUnit.MINUTES.toMillis(15));
                  // verify pool configuration and creates no connections during initialization phase
                  config.setInitializationFailTimeout(-1);
                  config.setConnectionTimeout(TimeUnit.SECONDS.toMillis(10));
                  // validate idle connections at least every 3 min
                  config.setKeepaliveTime(TimeUnit.MINUTES.toMillis(3));
                  // allows to quickly validate connection in the pool and move on to another connection if needed
                  config.setValidationTimeout(TimeUnit.SECONDS.toMillis(1));
                  config.setMaxLifetime(TimeUnit.DAYS.toMillis(1));
                  return config;
                },
                null
            ),
            null));

    return presets;
  }