Repository: quarkusio/quarkus
Issue: Setting both test-port and test-ssl-port to 0 yields the same random port for both

## Describe the bug
Setting these config properties to 0 yields the same random port for both.
This also happens in Quarkus 1.13.7 but in 2.0 this can result in the following exception after a few tests have run, e.g.:
```
2021-06-09 23:41:37,675 INFO  [org.apa.htt.imp.cli.DefaultHttpClient] (main) I/O exception (org.apache.http.NoHttpResponseException) caught when processing request to {}->http://localhost:40695: The target server failed to respond
2021-06-09 23:41:37,675 INFO  [org.apa.htt.imp.cli.DefaultHttpClient] (main) Retrying request to {}->http://localhost:40695
[...]
org.apache.http.NoHttpResponseException: localhost:40695 failed to respond
```

### Expected behavior
Should be listening on different ports, one for insecure http and one for TLS.

### Actual behavior
E.g.:
```
Listening on: http://localhost:40695 and https://localhost:40695
```
and with Quarkus 2 it can lead to the error I posted above (after some tests).


## To Reproduce

https://github.com/famod/quarkus-issue-18154

I don't think I'll be able to reproduce that error, though! (special execution order of project-specific tests)

Steps to reproduce the behavior:
1. clone https://github.com/famod/quarkus-issue-18154
2. mvn verify
3. observe something like: ```INFO  [io.quarkus] (main) Quarkus 1.13.7.Final on JVM started in 1.019s. Listening on: http://localhost:44237 and https://localhost:44237```

### Configuration
```yaml
  http:
    insecure-requests: enabled
    test-port: 0
    test-ssl-port: 0
    ssl:
      certificate:
        # base path for %test is / (the path to the project)
        file: ./src/main/local-certs/wildcard.crt
        key-file: ./src/main/local-certs/wildcard.key
```

## Environment (please complete the following information):

### Output of `uname -a` or `ver`
Linux W4DEUMSY9003463 5.4.72-microsoft-standard-WSL2 #1 SMP Wed Oct 28 23:40:43 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
(Ubuntu 20.04.2 LTS via WSL2)

Same happens in our Jenkins build (host VM is on CentOS 7 and build runs in Alpine based docker container).

### Output of `java -version`
OpenJDK 64-Bit Server VM AdoptOpenJDK-11.0.11+9 (build 11.0.11+9, mixed mode)

### GraalVM version (if different from Java)
-

### Quarkus version or git rev
2.0.0.Final

### Build tool (ie. output of `mvnw --version` or `gradlew --version`)
Apache Maven 3.8.1

## Additional context
https://quarkusio.zulipchat.com/#narrow/stream/187030-users/topic/.5B2.2E0.2E0.2ECR3.2B.5D.20.22The.20target.20server.20failed.20to.20respond.22


Changed files:
extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java

diff --git a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
index 609ec34135b..909aee45961 100644
--- a/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
+++ b/extensions/vertx-http/runtime/src/main/java/io/quarkus/vertx/http/runtime/VertxHttpRecorder.java
@@ -713,7 +713,8 @@ private static HttpServerOptions createSslOptions(HttpBuildTimeConfig buildTimeC
         serverOptions.setSni(sslConfig.sni);
         serverOptions.setHost(httpConfiguration.host);
         int sslPort = httpConfiguration.determineSslPort(launchMode);
-        serverOptions.setPort(sslPort == 0 ? -1 : sslPort);
+        // -2 instead of -1 (see http) to have vert.x assign two different random ports if both http and https shall be random
+        serverOptions.setPort(sslPort == 0 ? -2 : sslPort);
         serverOptions.setClientAuth(buildTimeConfig.tlsClientAuth);
         serverOptions.setReusePort(httpConfiguration.soReusePort);
         serverOptions.setTcpQuickAck(httpConfiguration.tcpQuickAck);