public void startLocalServer() {
        synchronized (serverInstances) {
            if (serverInstances.get(port) != null) {
                throw new IllegalStateException(
                        "Another server has already been started at port " + port);
            }
            serverInstances.put(port, this);
        }

        try {
            String downloadURL =
                    "https://repo1.maven.org/maven2/com/netflix/conductor/conductor-server/"
                            + conductorVersion
                            + "/conductor-server-"
                            + conductorVersion
                            + "-boot.jar";

            String repositoryURL =
                    Optional.ofNullable(System.getProperty("repositoryURL")).orElse(downloadURL);

            LOGGER.info(
                    "Running conductor with version {} from repo url {}",
                    conductorVersion,
                    repositoryURL);

            Runtime.getRuntime().addShutdownHook(new Thread(this::shutdown));
            installAndStartServer(repositoryURL, port);
            healthCheckExecutor.scheduleAtFixedRate(
                    () -> {
                        try {
                            if (serverProcessLatch.getCount() > 0) {
                                boolean isRunning = healthCheck.isServerRunning();
                                if (isRunning) {
                                    serverProcessLatch.countDown();
                                }
                            }
                        } catch (Exception e) {
                            LOGGER.warn(
                                    "Caught an exception while polling for server running status {}",
                                    e.getMessage());
                        }
                    },
                    100,
                    100,
                    TimeUnit.MILLISECONDS);
            Uninterruptibles.awaitUninterruptibly(serverProcessLatch, 1, TimeUnit.MINUTES);

            if (serverProcessLatch.getCount() > 0) {
                throw new RuntimeException("Server not healthy");
            }
            healthCheckExecutor.shutdownNow();

        } catch (IOException e) {
            throw new Error(e);
        }
    }
Starts the local server. Downloads the latest conductor build from the maven repo If you want
to start the server from a specific download location, set `repositoryURL` system property
with the link to the actual downloadable server boot jar file.

<p><b>System Properties that can be set</b> conductorVersion: when specified, uses this
version of conductor to run tests (and downloads from maven repo) repositoryURL: full url
where the server boot jar can be downloaded from. This can be a public repo or internal
repository, allowing full control over the location and version of the conductor server
java-sdk/src/main/java/com/netflix/conductor/sdk/testing/LocalServerRunner.java