protected void setRouterWithIdConverterFactory(Properties props, MockServerLayout serverLayout,
      NotificationSystem notificationSystem, IdConverterFactory idConverterFactory) throws Exception {
    VerifiableProperties verifiableProperties = new VerifiableProperties((props));
    routerConfig = new RouterConfig(verifiableProperties);
    routerMetrics = new NonBlockingRouterMetrics(mockClusterMap, routerConfig);
    RepairRequestsDbFactory factory = null;
    if (routerConfig.routerRepairRequestsDbFactory != null) {
      factory = Utils.getObj(routerConfig.routerRepairRequestsDbFactory, verifiableProperties,
          routerMetrics.getMetricRegistry(), localDcName, mockTime);
    }
    router = new NonBlockingRouter(routerConfig, factory, routerMetrics,
        new MockNetworkClientFactory(verifiableProperties, mockSelectorState, MAX_PORTS_PLAIN_TEXT, MAX_PORTS_SSL,
            CHECKOUT_TIMEOUT_MS, serverLayout, mockTime), notificationSystem, mockClusterMap, kms, cryptoService,
        cryptoJobHandler, accountService, mockTime, MockClusterMap.DEFAULT_PARTITION_CLASS, null, idConverterFactory);
  }
Initialize and set the router with the given {@link Properties} and {@link MockServerLayout}
@param props the {@link Properties}
@param serverLayout the {@link MockServerLayout}.
@param notificationSystem the {@link NotificationSystem} to use.
ambry-router/src/test/java/com/github/ambry/router/NonBlockingRouterTestBase.java