@Override
  public Router getRouter() {
    IdConverterFactory idConverterFactory = null;
    if (routerConfig.idConverterFactory != null) {
      try {
        IdSigningService idSigningService =
            Utils.<IdSigningServiceFactory>getObj(routerConfig.idSigningServiceFactory, verifiableProperties,
                clusterMap.getMetricRegistry()).getIdSigningService();
        NamedBlobDb namedBlobDb = Utils.isNullOrEmpty(routerConfig.namedBlobDbFactory) ? null
            : Utils.<NamedBlobDbFactory>getObj(routerConfig.namedBlobDbFactory, verifiableProperties,
                clusterMap.getMetricRegistry(), accountService).getNamedBlobDb();
        idConverterFactory =
            Utils.getObj(routerConfig.idConverterFactory, verifiableProperties, clusterMap.getMetricRegistry(),
                idSigningService, namedBlobDb);
      } catch (Exception e) {
        logger.error("Failed to create idConverterFactory");
      }
    }
    latestInstance = new InMemoryRouter(verifiableProperties, notificationSystem, clusterMap, idConverterFactory);
    return latestInstance;
  }
{@link InMemoryRouter} specific implementation of {@link RouterFactory}.
<p/>
Sets up all the supporting cast required for the operation of {@link InMemoryRouter} and returns a new instance on
{@link #getRouter()}.
ambry-test-utils/src/main/java/com/github/ambry/router/InMemoryRouterFactory.java