Dev UI Toggle

The old dev ui is now accessible from /q/dev-v1.
The new one is now accessible from /q/dev-ui or /q/dev (redirection to /q/dev-ui).
This commit is contained in:
Clement Escoffier 2023-03-27 10:39:28 +02:00
parent ed40a1598b
commit c20b4bbb95
No known key found for this signature in database
GPG Key ID: EA86F7B50E3B1E89
61 changed files with 153 additions and 116 deletions

View File

@ -153,7 +153,7 @@ You can also configure the `jvm.args` system property directly inside the `quark
When trying to debug startup performance, it is convenient to log build steps execution time.
This can be achieved by adding the following system property: `-Dquarkus.debug.print-startup-times=true` in dev mode or when launching the JAR.
There is also a nice visualization of build steps available in the Dev UI located here: http://localhost:8080/q/dev/io.quarkus.quarkus-vertx-http/build-steps.
There is also a nice visualization of build steps available in the Dev UI located here: http://localhost:8080/q/dev/build-steps.
If you want to have the same visualization of build steps processing when building your application, you can use the `quarkus.debug.dump-build-metrics=true` property.
For example using `mvn package -Dquarkus.debug.dump-build-metrics=true`, will generate a `build-metrics.json` in your `target` repository that you can process via the quarkus-build-report application available here https://github.com/mkouba/quarkus-build-report.

View File

@ -1,3 +1,3 @@
{#include index-entry}
{#body}<br />&rsaquo; It can be tested in the <a href="/q/dev/io.quarkus.quarkus-grpc/services">Dev UI</a> (available in dev mode only).
{#body}<br />&rsaquo; It can be tested in the <a href="/q/dev-v1/io.quarkus.quarkus-grpc/services">Dev UI</a> (available in dev mode only).
{/include}

View File

@ -35,7 +35,7 @@ This mightily important feature needs no introduction and has already been menti
=== Dev UI
Quarkus provides a very useful xref:dev-ui.adoc[UI] accessible from the browser at `/q/dev`. This UI allows a developer to see the state of the application, but
Quarkus provides a very useful xref:dev-ui.adoc[UI] accessible from the browser at `/q/dev-ui`. This UI allows a developer to see the state of the application, but
also provides access to various actions that can change that state (depending on the extensions that are present).
Examples of such operations are:
@ -45,6 +45,13 @@ Examples of such operations are:
* Running scheduled operations
* Building a container
[TIP]
====
A new Dev UI has been implemented in Quarkus 3.x.
Not all the features are available yet.
You can still access the previous version of the Dev UI using: http://localhost:8080/q/dev-v1/.
====
=== Error pages
In an effort to make development errors very easy to diagnose, Quarkus provides various detailed error pages when running in dev mode.

View File

@ -6,12 +6,19 @@ https://github.com/quarkusio/quarkus/tree/main/docs/src/main/asciidoc
= Dev UI
include::_attributes.adoc[]
:categories: writing-extensions
:summary: Learn how to get your extension contribute features to the Dev UI.
:summary: Learn how to get your extension contribute features to the Dev UI (v1).
[IMPORTANT]
.Dev UI v1
====
This guide covers the Dev UI v1, which has been replaced in Quarkus 3.
You can still access the Dev UI v1 using http://localhost/q/dev-v1/
====
This guide covers the Quarkus Dev UI for xref:building-my-first-extension.adoc[extension authors].
Quarkus now ships with a new experimental Dev UI, which is available in dev mode (when you start
quarkus with `mvn quarkus:dev`) at http://localhost:8080/q/dev[/q/dev] by default. It will show you something like
Quarkus ships with a new experimental Dev UI, which is available in dev mode (when you start
quarkus with `mvn quarkus:dev`) at http://localhost:8080/q/dev-v1[/q/dev-v1] by default. It will show you something like
this:
image::dev-ui-overview.png[alt=Dev UI overview,role="center",width=90%]
@ -191,7 +198,7 @@ xref:building-my-first-extension.adoc#description-of-a-quarkus-extension[`deploy
Full-page templates for extensions live under a pre-defined `{devRootAppend}/{groupId}.{artifactId}/` directory
that is referenced using the `urlbase` template parameter. Using configuration defaults, that would resolve to
`/q/dev/io.quarkus.quarkus-cache/`, as an example.
`/q/dev-v1/io.quarkus.quarkus-cache/`, as an example.
Use the `{urlbase}` template parameter to reference this folder in `embedded.html`:

View File

@ -337,7 +337,7 @@ public class HelloServiceTest implements Greeter {
== Trying out your services manually
In the dev mode, you can try out your gRPC services in the Quarkus Dev UI.
Just go to http://localhost:8080/q/dev and click on _Services_ under the gRPC tile.
Just go to http://localhost:8080/q/dev-v1 and click on _Services_ under the gRPC tile.
Please note that your application needs to expose the "normal" HTTP port for the Dev UI to be accessible. If your application does not expose any HTTP endpoints, you can create a dedicated profile with a dependency on `quarkus-vertx-http`:
[source,xml]

View File

@ -100,7 +100,7 @@ Users are instead encouraged to use the Jakarta REST standard `jakarta.ws.rs.Bea
Although RESTEasy Reactive provides the same spec compliant behavior as RESTEasy Classic does, it does not include the same exact provider implementations at runtime.
The most common case where the difference in providers might result in different behavior, is the included `jakarta.ws.rs.ext.ExceptionMapper` implementations. To see what classes are included in the application, launch the application in dev mode and navigate to http://localhost:8080/q/dev/io.quarkus.quarkus-resteasy-reactive/exception-mappers.
The most common case where the difference in providers might result in different behavior, is the included `jakarta.ws.rs.ext.ExceptionMapper` implementations. To see what classes are included in the application, launch the application in dev mode and navigate to http://localhost:8080/q/dev-ui/io.quarkus.quarkus-resteasy-reactive/exception-mappers.
==== Service Loading

View File

@ -232,7 +232,7 @@ include::{includes}/devtools/dev.adoc[]
xref:security-openid-connect-dev-services.adoc[Dev Services for Keycloak] will launch a Keycloak container and import a `quarkus-realm.json`.
Open a xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev[/q/dev] and click on a `Provider: Keycloak` link in an `OpenID Connect` `Dev UI` card.
Open a xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev-v1[/q/dev-v1] and click on a `Provider: Keycloak` link in an `OpenID Connect` `Dev UI` card.
You will be asked to log in into a `Single Page Application` provided by `OpenID Connect Dev UI`:

View File

@ -216,7 +216,7 @@ include::{includes}/devtools/dev.adoc[]
xref:security-openid-connect-dev-services.adoc[Dev Services for Keycloak] will launch a Keycloak container and import a `quarkus-realm.json`.
Open a xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev[/q/dev] and click on a `Provider: Keycloak` link in an `OpenID Connect` `Dev UI` card.
Open a xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev-v1[/q/dev-v1] and click on a `Provider: Keycloak` link in an `OpenID Connect` `Dev UI` card.
You will be asked to log in into a `Single Page Application` provided by `OpenID Connect Dev UI`:

View File

@ -361,7 +361,7 @@ include::{includes}/devtools/dev.adoc[]
xref:security-openid-connect-dev-services.adoc[Dev Services for Keycloak] will launch a Keycloak container and import a `quarkus-realm.json`.
Open a xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev[/q/dev] and click on a `Provider: Keycloak` link in an `OpenID Connect` `Dev UI` card.
Open a xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev-v1[/q/dev-v1] and click on a `Provider: Keycloak` link in an `OpenID Connect` `Dev UI` card.
You will be asked to log in into a `Single Page Application` provided by `OpenID Connect Dev UI`:

View File

@ -16,7 +16,7 @@ It also describes Dev UI for all OpenID Connect providers which have already bee
Quarkus introduces an experimental `Dev Services For Keycloak` feature which is enabled by default when the `quarkus-oidc` extension is started in dev mode and when the integration tests are running in test mode, but only when no `quarkus.oidc.auth-server-url` property is configured.
It starts a Keycloak container for both the dev and/or test modes and initializes them by registering the existing Keycloak realm or creating a new realm with the client and users for you to start developing your Quarkus application secured by Keycloak immediately. It will restart the container when the `application.properties` or the realm file changes have been detected.
Additionally, xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev[/q/dev] complements this feature with a Dev UI page which helps to acquire the tokens from Keycloak and test your Quarkus application.
Additionally, xref:dev-ui.adoc[Dev UI] available at http://localhost:8080/q/dev-v1[/q/dev-v1] complements this feature with a Dev UI page which helps to acquire the tokens from Keycloak and test your Quarkus application.
If `quarkus.oidc.auth-server-url` is already set then a generic OpenID Connect Dev Console which can be used with all OpenID Connect providers will be activated, please see <<dev-ui-all-oidc-providers,Dev UI for all OpenID Connect Providers>> for more information.
@ -53,7 +53,7 @@ include::{includes}/devtools/dev.adoc[]
Note that you can disable sharing the containers with `quarkus.keycloak.devservices.shared=false`.
Now open the main link:http://localhost:8080/q/dev[Dev UI page], and you will see the `OpenID Connect Card` linking to a Keycloak page:
Now open the main link:http://localhost:8080/q/dev-v1[Dev UI (v1) page], and you will see the `OpenID Connect Card` linking to a Keycloak page:
image::dev-ui-oidc-keycloak-card.png[alt=Dev UI OpenID Connect Card,role="center"]
@ -128,7 +128,7 @@ You may need to register a redirect URI for the authorization code flow initiate
If Keycloak does enforce it then you will see an authentication error informing you that the `redirect_uri` value is wrong.
In this case select the `Keycloak Admin` option in the right top corner, login as `admin:admin`, select the test realm and the client which Dev UI for Keycloak is configured with and add `http://localhost:8080/q/dev/io.quarkus.quarkus-oidc/provider` to `Valid Redirect URIs`. If you used `-Dquarkus.http.port` when starting Quarkus then change `8080` to the value of `quarkus.http.port`.
In this case select the `Keycloak Admin` option in the right top corner, login as `admin:admin`, select the test realm and the client which Dev UI for Keycloak is configured with and add `http://localhost:8080/q/dev-v1/io.quarkus.quarkus-oidc/provider` to `Valid Redirect URIs`. If you used `-Dquarkus.http.port` when starting Quarkus then change `8080` to the value of `quarkus.http.port`
If the container is shared between multiple applications running on different ports then you will need to register `redirect_uri` values for each of these applications.
@ -297,13 +297,13 @@ And you will see the following message:
...
----
If the provider metadata discovery has been successful then, after you open the main link:http://localhost:8080/q/dev[Dev UI page], you will see the `OpenID Connect Card` page linking to `Dev Console`:
If the provider metadata discovery has been successful then, after you open the main link:http://localhost:8080/q/dev-v1[Dev UI page], you will see the `OpenID Connect Card` page linking to `Dev Console`:
image::dev-ui-oidc-devconsole-card.png[alt=Generic Dev UI OpenID Connect Card,role="center"]
Follow the link, and you will be able to log in to your provider, get the tokens and test the application. The experience will be the same as described in the <<keycloak-authorization-code-grant,Authorization Code Grant for Keycloak>> section, where `Dev Services for Keycloak` container has been started, especially if you work with Keycloak.
You will most likely need to configure your OpenId Connect provider to support redirecting back to the `Dev Console`. Add `http://localhost:8080/q/dev/io.quarkus.quarkus-oidc/provider` as one of the supported redirect and logout URLs.
You will most likely need to configure your OpenId Connect provider to support redirecting back to the `Dev Console`. Add `http://localhost:8080/q/dev-v1/io.quarkus.quarkus-oidc/provider` as one of the supported redirect and logout URLs. one of the supported redirect and logout URLs.
If you work with other providers then a Dev UI experience described in the <<keycloak-authorization-code-grant,Authorization Code Grant for Keycloak>> section might differ slightly. For example, an access token may not be in a JWT format, so it won't be possible to show its internal content, though all providers should return an ID Token as JWT.
@ -401,7 +401,7 @@ Please follow the xref:dev-ui.adoc[Dev UI] tutorial as well as check the `extens
== Non Application Root Path Considerations
This document refers to the `http://localhost:8080/q/dev` Dev UI URL in several places where `q` is a default non application root path. If you customize `quarkus.http.root-path` and/or `quarkus.http.non-application-root-path` properties then replace `q` accordingly, please see https://quarkus.io/blog/path-resolution-in-quarkus/[Path Resolution in Quarkus] for more information.
This document refers to the `http://localhost:8080/q/dev-v1` Dev UI URL in several places where `q` is a default non application root path. If you customize `quarkus.http.root-path` and/or `quarkus.http.non-application-root-path` properties then replace `q` accordingly, please see https://quarkus.io/blog/path-resolution-in-quarkus/[Path Resolution in Quarkus] for more information.
== References

View File

@ -36,7 +36,7 @@ public class FlywayDevModeCreateFromHibernateTest {
RestAssured.get("fruit").then().statusCode(200)
.body("[0].name", CoreMatchers.is("Orange"));
RestAssured.given().redirects().follow(false).formParam("datasource", "<default>")
.post("/q/dev/io.quarkus.quarkus-flyway/create-initial-migration").then().statusCode(303);
.post("/q/dev-v1/io.quarkus.quarkus-flyway/create-initial-migration").then().statusCode(303);
config.modifySourceFile(Fruit.class, s -> s.replace("Fruit {", "Fruit {\n" +
" \n" +

View File

@ -37,7 +37,7 @@ public class DevConsoleUnaryMethodTest {
List<String> incomingMessages = new CopyOnWriteArrayList<>();
HttpClient client = vertx.createHttpClient();
client.webSocket(8080, "localhost", "/q/dev/io.quarkus.quarkus-grpc/grpc-test", result -> {
client.webSocket(8080, "localhost", "/q/dev-v1/io.quarkus.quarkus-grpc/grpc-test", result -> {
if (result.failed()) {
log.error("failure making a web socket connection", result.cause());
return;

View File

@ -22,7 +22,7 @@ public class HibernateSchemaRecreateDevConsoleTestCase {
RestAssured.when().get("/my-entity/add").then().body(is("MyEntity:added"));
RestAssured.when().get("/my-entity/count").then().body(is("3"));
RestAssured.with()
.redirects().follow(false).formParam("name", "<default>").post("q/dev/io.quarkus.quarkus-datasource/reset")
.redirects().follow(false).formParam("name", "<default>").post("q/dev-v1/io.quarkus.quarkus-datasource/reset")
.then()
.statusCode(303);
RestAssured.when().get("/my-entity/count").then().body(is("2"));

View File

@ -79,8 +79,8 @@ public class HttpDevModeConfigTest {
when().get("/hello/three").then().statusCode(200);
when().get("/q/dev").then().statusCode(404);
when().get("/q/metrics").then().statusCode(404);
when().get("/dev/resources/images/favicon.ico").then().statusCode(200);
when().get("/dev/resources/css/tests.css").then().statusCode(200);
when().get("/dev-v1/resources/images/favicon.ico").then().statusCode(200);
when().get("/dev-v1/resources/css/tests.css").then().statusCode(200);
when().get("/metrics").then().statusCode(200)
.body(containsString("/goodbye/{message}"))
.body(containsString("/dev"));
@ -97,9 +97,9 @@ public class HttpDevModeConfigTest {
"quarkus.http.non-application-root-path=/bob\nquarkus.http.root-path=/bob"));
when().get("/bob/hello/three").then().statusCode(200);
when().get("/bob/dev").then().statusCode(200);
when().get("/bob/dev/resources/images/favicon.ico").then().statusCode(200);
when().get("/bob/dev/resources/css/tests.css").then().statusCode(200);
when().get("/bob/dev-v1").then().statusCode(200);
when().get("/bob/dev-v1/resources/images/favicon.ico").then().statusCode(200);
when().get("/bob/dev-v1/resources/css/tests.css").then().statusCode(200);
when().get("/bob/metrics").then().statusCode(200)
.body(containsString("/hello/{message}")) // http root prefix is removed in output
.body(containsString("/bob/dev"));
@ -115,8 +115,8 @@ public class HttpDevModeConfigTest {
"quarkus.http.non-application-root-path=/george"));
when().get("/bob/hello/three").then().statusCode(200);
when().get("/george/dev").then().statusCode(200);
when().get("/george/dev/resources/images/favicon.ico").then().statusCode(200);
when().get("/george/dev-v1").then().statusCode(200);
when().get("/george/dev-v1/resources/images/favicon.ico").then().statusCode(200);
when().get("/george/metrics").then().statusCode(200)
.body(containsString("/hello/{message}")); // no longer matches pattern
when().get("/bob/test/requests").then().statusCode(200)
@ -131,8 +131,8 @@ public class HttpDevModeConfigTest {
"quarkus.http.non-application-root-path=george"));
when().get("/bob/hello/three").then().statusCode(200);
when().get("/bob/george/dev").then().statusCode(200);
when().get("/bob/george/dev/resources/images/favicon.ico").then().statusCode(200);
when().get("/bob/george/dev-v1").then().statusCode(200);
when().get("/bob/george/dev-v1/resources/images/favicon.ico").then().statusCode(200);
when().get("/bob/george/metrics").then().statusCode(200)
.body(containsString("/hello/{message}")); // no longer matches pattern, http root removed
when().get("/bob/test/requests").then().statusCode(200)

View File

@ -20,7 +20,7 @@ public class DevConsolePreviewTest {
@Test
public void testLoopPreview() {
RestAssured.with().formParam("template-select", "loop.txt").formParam("template-data", "{\"total\": [1 ,2 ,3]}")
.post("q/dev/io.quarkus.quarkus-qute/preview")
.post("q/dev-v1/io.quarkus.quarkus-qute/preview")
.then()
.statusCode(200)
.body(Matchers.equalTo("1:2:3:"));

View File

@ -25,7 +25,7 @@ public class DevConsoleRunScheduledTaskBodyHandlerTest {
.body(Matchers.equalTo("true"));
RestAssured.with().formParam("name", "io.quarkus.scheduler.test.devconsole.NeverRunTask#run")
.redirects().follow(false)
.post("q/dev/io.quarkus.quarkus-scheduler/schedules")
.post("q/dev-v1/io.quarkus.quarkus-scheduler/schedules")
.then()
.statusCode(303);
RestAssured.with()

View File

@ -22,7 +22,7 @@ public class DevConsoleRunScheduledTaskTest {
.body(Matchers.equalTo("true"));
RestAssured.with().formParam("name", "io.quarkus.scheduler.test.devconsole.NeverRunTask#run")
.redirects().follow(false)
.post("q/dev/io.quarkus.quarkus-scheduler/schedules")
.post("q/dev-v1/io.quarkus.quarkus-scheduler/schedules")
.then()
.statusCode(303);
RestAssured.with()

View File

@ -195,6 +195,11 @@ public class DevUIProcessor {
.handler(recorder.mvnpmHandler(mvnpmBuildItem.getMvnpmJars()))
.build());
// Redirect /q/dev -> /q/dev-ui
routeProducer.produce(RouteBuildItem.builder()
.route("/q/dev")
.handler(recorder.redirect())
.build());
}
/**

View File

@ -62,7 +62,7 @@ public class DevConsole implements Handler<RoutingContext> {
this.globalData.put("frameworkRootPath", frameworkRootPath);
// This includes the dev segment, but does not include a trailing slash (for append)
this.devRootAppend = frameworkRootPath + "dev";
this.devRootAppend = frameworkRootPath + "dev-v1";
this.globalData.put("devRootAppend", devRootAppend);
this.globalData.put("quarkusVersion", Version.getVersion());
@ -107,7 +107,7 @@ public class DevConsole implements Handler<RoutingContext> {
@Override
public void handle(RoutingContext ctx) {
initLazyState();
// Redirect /q/dev to /q/dev/
// Redirect /q/dev-v1 to /q/dev-v1/
if (ctx.normalizedPath().length() == devRootAppend.length()) {
ctx.response().setStatusCode(302);
ctx.response().headers().set(HttpHeaders.LOCATION, devRootAppend + "/");

View File

@ -273,7 +273,7 @@ public class DevConsoleProcessor {
.handler(new DevConsole(engine, httpRootPath, frameworkRootPath));
mainRouter = Router.router(devConsoleVertx);
mainRouter.errorHandler(500, errorHandler);
mainRouter.route(nonApplicationRootPathBuildItem.resolvePath("dev*")).subRouter(router);
mainRouter.route(nonApplicationRootPathBuildItem.resolvePath("dev-v1*")).subRouter(router);
}
@BuildStep(onlyIf = IsDevelopment.class)
@ -427,7 +427,7 @@ public class DevConsoleProcessor {
continue;
}
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev/" + webjarBuildItem.getRouteRoot() + "/*")
.route("dev-v1/" + webjarBuildItem.getRouteRoot() + "/*")
.handler(recorder.fileSystemStaticHandler(result.getWebRootConfigurations(), shutdownContext))
.build());
}
@ -461,14 +461,14 @@ public class DevConsoleProcessor {
}
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev/resources/*")
.route("dev-v1/resources/*")
.handler(recorder.fileSystemStaticHandler(
result.getWebRootConfigurations(), shutdownContext))
.build());
// Add the log stream
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev/logstream")
.route("dev-v1/logstream")
.handler(logStreamRecorder.websocketHandler(historyHandlerBuildItem.value))
.build());
@ -479,13 +479,13 @@ public class DevConsoleProcessor {
if (!i.isDeploymentSide()) {
if (devUIConfig.cors.enabled) {
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev/*")
.route("dev-v1/*")
.handler(new DevConsoleCORSFilter())
.build());
}
NonApplicationRootPathBuildItem.Builder builder = nonApplicationRootPathBuildItem.routeBuilder()
.routeFunction(
"dev/" + groupAndArtifact.getKey() + "." + groupAndArtifact.getValue() + "/" + i.getPath(),
"dev-v1/" + groupAndArtifact.getKey() + "." + groupAndArtifact.getValue() + "/" + i.getPath(),
new RuntimeDevConsoleRoute(i.getMethod(),
i.isBodyHandlerRequired() ? bodyHandlerBuildItem.getHandler() : null));
if (i.isBlockingHandler()) {
@ -499,12 +499,12 @@ public class DevConsoleProcessor {
DevConsoleManager.registerHandler(new DevConsoleHttpHandler());
//must be last so the above routes have precedence
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev/*")
.route("dev-v1/*")
.handler(new DevConsoleFilter())
.build());
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev")
.displayOnNotFoundPage("Dev UI")
.route("dev-v1")
.displayOnNotFoundPage("Dev UI (v1)")
.handler(new RedirectHandler())
.build());
}

View File

@ -0,0 +1,5 @@
/**
* + * Package containing the dev UI v1.
* +
*/
package io.quarkus.vertx.http.deployment.devmode.console;

View File

@ -57,7 +57,7 @@ public class TestsProcessor {
if (TestSupport.instance().isPresent()) {
// Add continuous testing
routeBuildItemBuildProducer.produce(nonApplicationRootPathBuildItem.routeBuilder()
.route("dev/test")
.route("dev-v1/test")
.handler(recorder.continuousTestHandler(shutdownContextBuildItem))
.build());
}

View File

@ -4,12 +4,12 @@ var myself = $('script[src*=logstream]');
var frameworkRootPath = myself.attr('data-frameworkRootPath');
if (typeof frameworkRootPath === "undefined" ) {
var pathname = window.location.pathname;
var frameworkRootPath = pathname.substr(0, pathname.indexOf('/dev/'));
var frameworkRootPath = pathname.substr(0, pathname.indexOf('/dev-v1/'));
}
// Get the streaming path
var streamingPath = myself.attr('data-streamingPath');
if (typeof streamingPath === "undefined" ) {
var streamingPath = "/dev/logstream";
var streamingPath = "/dev-v1/logstream";
}
var zoom = 0.90;

View File

@ -1,10 +1,10 @@
var testsPathname = window.location.pathname;
var testsFrameworkRootPath = testsPathname.substr(0, testsPathname.indexOf('/dev/'));
var testsFrameworkRootPath = testsPathname.substr(0, testsPathname.indexOf('/dev-v1/'));
// Get the streaming path
var testsStreamingPath = "/dev/test";
var testsStreamingPath = "/dev-v1/test";
var testsWebSocket;
var testBackendUrl = window.location.protocol + "//" + window.location.host + testsFrameworkRootPath + "/dev/io.quarkus.quarkus-vertx-http/tests/";
var testBackendUrl = window.location.protocol + "//" + window.location.host + testsFrameworkRootPath + "/dev-v1/io.quarkus.quarkus-vertx-http/tests/";
var testsInProgress = false;
var testsIsRunning = false;
var hasFailingTests = false;

View File

@ -51,7 +51,7 @@
{/style}
{#script}
var testPageUrl = window.location.protocol + "//" + window.location.host + testsPathname.substr(0, testsPathname.indexOf('/dev/')) + "/dev/io.quarkus.quarkus-vertx-http/tests";
var testPageUrl = window.location.protocol + "//" + window.location.host + testsPathname.substr(0, testsPathname.indexOf('/dev-v1/')) + "/dev-v1/io.quarkus.quarkus-vertx-http/tests";
document.addEventListener('messageReceived', function (e) {
$.get(testPageUrl, function(response){
var testsResultsSection = $(response).find("#testsResultsSection");

View File

@ -29,7 +29,7 @@ public class DevConsoleConfigEditorBodyHandlerTest {
.formParam("value", "/foo")
.formParam("action", "updateProperty")
.redirects().follow(false)
.post("q/dev/io.quarkus.quarkus-vertx-http/config")
.post("q/dev-v1/io.quarkus.quarkus-vertx-http/config")
.then()
.statusCode(303);
RestAssured.with()

View File

@ -22,7 +22,7 @@ public class DevConsoleConfigEditorTest {
.formParam("value", "/foo")
.formParam("action", "updateProperty")
.redirects().follow(false)
.post("q/dev/io.quarkus.quarkus-vertx-http/config")
.post("q/dev-v1/io.quarkus.quarkus-vertx-http/config")
.then()
.statusCode(303);
RestAssured.with()
@ -46,7 +46,7 @@ public class DevConsoleConfigEditorTest {
.formParam("value", "")
.formParam("action", "updateProperty")
.redirects().follow(false)
.post("q/dev/io.quarkus.quarkus-vertx-http/config")
.post("q/dev-v1/io.quarkus.quarkus-vertx-http/config")
.then()
.statusCode(303);
RestAssured.with()

View File

@ -25,7 +25,7 @@ public class DevConsoleConfigMisinterpretedDoubleUnderscoreTest {
@Test
public void testNoFailure() {
RestAssured.get("q/dev/io.quarkus.quarkus-vertx-http/config")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config")
.then()
.statusCode(200).body(Matchers.containsString("Config Editor"));
}

View File

@ -24,7 +24,7 @@ public class DevConsoleCorsTest {
.header("Origin", origin)
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", methods)
@ -39,7 +39,7 @@ public class DevConsoleCorsTest {
.header("Origin", origin)
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", methods)
@ -54,7 +54,7 @@ public class DevConsoleCorsTest {
.header("Origin", origin)
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", methods)
@ -69,7 +69,7 @@ public class DevConsoleCorsTest {
.header("Origin", origin)
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", methods)
@ -83,7 +83,7 @@ public class DevConsoleCorsTest {
.header("Origin", "https://quarkus.io/http://localhost")
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(403)
.header("Access-Control-Allow-Origin", nullValue())
.header("Access-Control-Allow-Methods", nullValue())
@ -97,7 +97,7 @@ public class DevConsoleCorsTest {
.header("Origin", "http://localhost:8080/devui")
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(403)
.header("Access-Control-Allow-Origin", nullValue())
.body(emptyOrNullString());
@ -110,7 +110,7 @@ public class DevConsoleCorsTest {
.header("Origin", "http://127.0.0.1:8080/devui")
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(403)
.header("Access-Control-Allow-Origin", nullValue())
.body(emptyOrNullString());
@ -123,7 +123,7 @@ public class DevConsoleCorsTest {
.header("Origin", "http://localhost")
.header("Access-Control-Request-Method", methods)
.when()
.options("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.options("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(403)
.header("Access-Control-Allow-Origin", nullValue())
.body(emptyOrNullString());
@ -135,7 +135,7 @@ public class DevConsoleCorsTest {
RestAssured.given()
.header("Origin", origin)
.when()
.get("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", nullValue())
@ -148,7 +148,7 @@ public class DevConsoleCorsTest {
RestAssured.given()
.header("Origin", origin)
.when()
.get("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", nullValue())
@ -161,7 +161,7 @@ public class DevConsoleCorsTest {
RestAssured.given()
.header("Origin", origin)
.when()
.get("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", nullValue())
@ -174,7 +174,7 @@ public class DevConsoleCorsTest {
RestAssured.given()
.header("Origin", origin)
.when()
.get("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(200)
.header("Access-Control-Allow-Origin", origin)
.header("Access-Control-Allow-Methods", nullValue())
@ -186,7 +186,7 @@ public class DevConsoleCorsTest {
RestAssured.given()
.header("Origin", "https://quarkus.io/http://localhost")
.when()
.get("q/dev/io.quarkus.quarkus-vertx-http/config").then()
.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config").then()
.statusCode(403)
.header("Access-Control-Allow-Origin", nullValue())
.body(emptyOrNullString());

View File

@ -48,7 +48,7 @@ public class TestRunnerSmokeTestCase {
Assertions.assertEquals(1L, ts.getTotalTestsPassed());
Assertions.assertEquals(0L, ts.getTotalTestsSkipped());
SuiteResult suiteResult = RestAssured.get("q/dev/io.quarkus.quarkus-vertx-http/tests/result")
SuiteResult suiteResult = RestAssured.get("q/dev-v1/io.quarkus.quarkus-vertx-http/tests/result")
.as(SuiteResult.class);
Assertions.assertEquals(2, suiteResult.getResults().size());
for (ClassResult cr : suiteResult.getResults().values()) {

View File

@ -44,7 +44,7 @@ public class TestBrokenOnlyTestCase {
Assertions.assertEquals(0L, ts.getTestsSkipped());
//start broken only mode
RestAssured.post("q/dev/io.quarkus.quarkus-vertx-http/tests/toggle-broken-only");
RestAssured.post("q/dev-v1/io.quarkus.quarkus-vertx-http/tests/toggle-broken-only");
test.modifyTestSourceFile(SimpleET.class, new Function<String, String>() {
@Override

View File

@ -43,7 +43,7 @@ public class TestParameterizedTestCase {
Assertions.assertEquals(4L, ts.getTestsPassed());
Assertions.assertEquals(0L, ts.getTestsSkipped());
RestAssured.post("q/dev/io.quarkus.quarkus-vertx-http/tests/runfailed");
RestAssured.post("q/dev-v1/io.quarkus.quarkus-vertx-http/tests/runfailed");
ts = utils.waitForNextCompletion();

View File

@ -14,7 +14,7 @@ import io.vertx.ext.web.RoutingContext;
/**
* A route for handling requests in the dev console.
* <p>
* Routes are registered under /q/dev/{groupId}.{artifactId}/
* Routes are registered under /q/dev-v1/{groupId}.{artifactId}/
* <p>
* The route is registered:
* <ul>

View File

@ -20,7 +20,7 @@ public class Page {
private final String componentLink; // This is a link to the component, excluding namespace
private final Map<String, String> metadata; // Key value Metadata
private final boolean embed; // if the component is embeded in the page. true in all cases except maybe external pages
private final boolean embed; // if the component is embedded in the page. true in all cases except maybe external pages
private final boolean internalComponent; // True if this component is provided by dev-ui (usually provided by the extension)
private String namespace = null; // The namespace can be the extension path or, if internal, qwc

View File

@ -65,6 +65,16 @@ public class DevUIRecorder {
return new MvnpmHandler(mvnpmJarFiles);
}
public Handler<RoutingContext> redirect() {
return new Handler<RoutingContext>() {
@Override
public void handle(RoutingContext rc) {
// 308 because we also want to redirect other HTTP Methods (and not only GET).
rc.response().putHeader("Location", "/q/dev-ui").setStatusCode(308).end();
}
};
}
private static final class DeleteDirectoryRunnable implements Runnable {
private final Path directory;

View File

@ -20,7 +20,7 @@ import io.vertx.ext.web.RoutingContext;
/**
* This is a Handler running in the regular runtime Vert.x instance
* and what it does is to take the Vert.x request coming from client (under /q/dev/)
* and what it does is to take the Vert.x request coming from client (under /q/dev-v1/)
* and create the DevConsoleRequest that ends up being sent to the Netty Virtual Channel
* which is eventually piped into the Netty event loop that powers the Dev Vert.x instance.
*/

View File

@ -255,6 +255,7 @@
<p>App configuration: <code>src/main/resources/{config.file-name}</code></p>
<p>Static assets: <code>src/main/resources/META-INF/resources/</code></p>
<p>Code: <code>{language.dir.code}</code></p>
<p>Dev UI V1: <a href="/q/dev-v1/">/q/dev-v1</a></p>
<p>Generated starter code:</p>
<ul class="provided-code">
{merged-content}

View File

@ -255,6 +255,7 @@
<p>App configuration: <code>src/main/resources/application.properties</code></p>
<p>Static assets: <code>src/main/resources/META-INF/resources/</code></p>
<p>Code: <code>src/main/java</code></p>
<p>Dev UI V1: <a href="/q/dev-v1/">/q/dev-v1</a></p>
<p>Generated starter code:</p>
<ul class="provided-code">
<li class="provided-code">

View File

@ -255,6 +255,7 @@
<p>App configuration: <code>src/main/resources/application.properties</code></p>
<p>Static assets: <code>src/main/resources/META-INF/resources/</code></p>
<p>Code: <code>src/main/java</code></p>
<p>Dev UI V1: <a href="/q/dev-v1/">/q/dev-v1</a></p>
<p>Generated starter code:</p>
<ul class="provided-code">
<li class="provided-code">

View File

@ -27,25 +27,25 @@ public class DevConsoleArcSmokeTest {
@Test
public void testPages() {
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/beans")
.get("q/dev-v1/io.quarkus.quarkus-arc/beans")
.then()
.statusCode(200).body(Matchers.containsString("io.quarkus.test.devconsole.DevConsoleArcSmokeTest$Foo"));
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/observers")
.get("q/dev-v1/io.quarkus.quarkus-arc/observers")
.then()
.statusCode(200)
.body(Matchers.containsString(
"<span class=\"class-candidate\">io.quarkus.test.devconsole.DevConsoleArcSmokeTest$Foo</span>#onStr"));
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/events")
.get("q/dev-v1/io.quarkus.quarkus-arc/events")
.then()
.statusCode(200).body(Matchers.containsString("io.quarkus.runtime.StartupEvent"));
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/invocations")
.get("q/dev-v1/io.quarkus.quarkus-arc/invocations")
.then()
.statusCode(200);
RestAssured
.get("q/dev/io.quarkus.quarkus-arc/removed-beans")
.get("q/dev-v1/io.quarkus.quarkus-arc/removed-beans")
.then()
.statusCode(200).body(Matchers.containsString("org.jboss.logging.Logger"));
}

View File

@ -22,7 +22,7 @@ public class DevConsoleCacheSmokeTest {
@Test
public void testCaches() {
RestAssured.get("q/dev/io.quarkus.quarkus-cache/caches")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-cache/caches")
.then()
.statusCode(200).body(Matchers.containsString("myCache"));
}

View File

@ -19,7 +19,7 @@ public class DevConsoleConfigSmokeTest {
@Test
public void testConfigEditor() {
RestAssured.get("q/dev/io.quarkus.quarkus-vertx-http/config")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-vertx-http/config")
.then()
.statusCode(200).body(Matchers.containsString("Config Editor"));

View File

@ -19,7 +19,7 @@ public class DevConsoleContainerImageSmokeTest {
@Test
public void testCaches() {
RestAssured.get("q/dev/io.quarkus.quarkus-container-image/build")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-container-image/build")
.then()
.statusCode(200).body(Matchers.containsString("Build Type"));
}

View File

@ -20,12 +20,12 @@ public class DevConsoleDevServicesSmokeTest {
@Test
public void testDevConsoleNotBroken() {
RestAssured.with()
.get("q/dev")
.get("q/dev-v1")
.then()
.statusCode(200).body(Matchers.containsString("Dev Services"));
RestAssured.with()
.get("q/dev/io.quarkus.quarkus-vertx-http/dev-services")
.get("q/dev-v1/io.quarkus.quarkus-vertx-http/dev-services")
.then()
.statusCode(200).body(Matchers.containsString("Dev Services"));

View File

@ -26,7 +26,7 @@ public class DevConsoleGrpcSmokeTest {
@Test
public void testServices() {
RestAssured.get("q/dev/io.quarkus.quarkus-grpc/services")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-grpc/services")
.then()
.statusCode(200).body(Matchers.containsString("helloworld.Greeter"));
}

View File

@ -35,19 +35,19 @@ public class DevConsoleHibernateOrmActiveFalseAndNamedPuActiveTrueTest {
@Test
public void testLegacyPages() {
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/persistence-units")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/persistence-units")
.then()
.statusCode(200)
.body(Matchers.not(Matchers.containsString("&lt;default&gt;")))
.body(Matchers.containsString("Persistence Unit <i class=\"badge badge-info\">namedpu</i>"));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/managed-entities")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/managed-entities")
.then()
.statusCode(200)
.body(Matchers.not(Matchers.containsString(MyEntity.class.getName())))
.body(Matchers.containsString(MyNamedPuEntity.class.getName()));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/named-queries")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/named-queries")
.then()
.statusCode(200)
.body(Matchers.containsString("No named queries were found."));
@ -57,19 +57,19 @@ public class DevConsoleHibernateOrmActiveFalseAndNamedPuActiveTrueTest {
public void testPages() {
// TODO #31970 restore tests of the page's content as we used to do for the old Dev UI
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/persistence-units")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/persistence-units")
.then()
.statusCode(200);
// .body(Matchers.not(Matchers.containsString("&lt;default&gt;")))
// .body(Matchers.containsString("namedpu"));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/managed-entities")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/managed-entities")
.then()
.statusCode(200);
// .body(Matchers.not(Matchers.containsString(MyEntity.class.getName())))
// .body(Matchers.containsString(MyNamedPuEntity.class.getName()));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/named-queries")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/named-queries")
.then()
.statusCode(200);
// .body(Matchers.containsString("No named queries were found."));

View File

@ -26,17 +26,17 @@ public class DevConsoleHibernateOrmActiveFalseTest {
@Test
public void testLegacyPages() {
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/persistence-units")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/persistence-units")
.then()
.statusCode(200)
.body(Matchers.containsString("No persistence units found"));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/managed-entities")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/managed-entities")
.then()
.statusCode(200)
.body(Matchers.containsString("No persistence units were found"));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/named-queries")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/named-queries")
.then()
.statusCode(200)
.body(Matchers.containsString("No persistence units were found"));

View File

@ -24,17 +24,17 @@ public class DevConsoleHibernateOrmSmokeTest {
@Test
public void testLegacyPages() {
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/persistence-units")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/persistence-units")
.then()
.statusCode(200)
.body(Matchers.containsString("Persistence Unit <i class=\"badge badge-info\">&lt;default&gt;</i>"));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/managed-entities")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/managed-entities")
.then()
.statusCode(200)
.body(Matchers.containsString("io.quarkus.test.devconsole.MyEntity"));
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-orm/named-queries")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-orm/named-queries")
.then()
.statusCode(200)
.body(Matchers.containsString("No named queries were found."));

View File

@ -41,7 +41,7 @@ public class DevConsoleHibernateSearchActiveFalseAndNamedPuActiveTrueTest {
@Test
public void testLegacyPages() {
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-search-orm-elasticsearch/entity-types")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-search-orm-elasticsearch/entity-types")
.then()
.statusCode(200)
.body(Matchers.containsString(MyNamedPuIndexedEntity.class.getName()))

View File

@ -27,7 +27,7 @@ public class DevConsoleHibernateSearchActiveFalseTest {
@Test
public void testLegacyPages() {
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-search-orm-elasticsearch/entity-types")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-search-orm-elasticsearch/entity-types")
.then()
.statusCode(200)
.body(Matchers.containsString("No indexed entities were found"));

View File

@ -28,7 +28,7 @@ public class DevConsoleHibernateSearchSmokeTest {
@Test
public void testLegacyPages() {
RestAssured.get("q/dev/io.quarkus.quarkus-hibernate-search-orm-elasticsearch/entity-types")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-hibernate-search-orm-elasticsearch/entity-types")
.then()
.statusCode(200)
.body(Matchers.containsString(MyIndexedEntity.class.getName()));

View File

@ -21,7 +21,7 @@ public class DevConsoleKafkaSmokeTest {
@Test
public void testServices() {
RestAssured.get("testing/q/dev/io.quarkus.quarkus-kafka-client/kafka-dev-ui")
RestAssured.get("testing/q/dev-v1/io.quarkus.quarkus-kafka-client/kafka-dev-ui")
.then()
.statusCode(200).body(Matchers.containsString("Kafka Dev UI"));
}

View File

@ -21,7 +21,7 @@ public class DevConsoleOidcNoDiscoverySmokeTest {
@Test
public void testOidcProviderTemplate() {
RestAssured.get("q/dev/io.quarkus.quarkus-oidc/provider")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-oidc/provider")
.then()
.statusCode(200).body(Matchers.containsString("OpenId Connect Dev Console"));
}

View File

@ -19,7 +19,7 @@ public class DevConsoleOidcSmokeTest {
@Test
public void testOidcProviderTemplate() {
RestAssured.get("q/dev/io.quarkus.quarkus-oidc/provider")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-oidc/provider")
.then()
.statusCode(200).body(Matchers.containsString("OpenId Connect Dev Console"));
}

View File

@ -22,10 +22,10 @@ public class DevConsoleQuteSmokeTest {
@Test
public void testTemplates() {
RestAssured.get("q/dev/io.quarkus.quarkus-qute/templates")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-qute/templates")
.then()
.statusCode(200).body(Matchers.containsString("hello.txt"));
RestAssured.get("q/dev/io.quarkus.quarkus-qute/preview")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-qute/preview")
.then()
.statusCode(200).body(Matchers.containsString("Test JSON data"));
}

View File

@ -25,7 +25,7 @@ public class DevConsoleReactiveMessagingSmokeTest {
@Test
public void testProcessor() {
RestAssured.get("q/dev/io.quarkus.quarkus-smallrye-reactive-messaging/channels")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-smallrye-reactive-messaging/channels")
.then()
.statusCode(200).body(Matchers.containsString("io.quarkus.test.devconsole.MyProcessor#process"));
}

View File

@ -19,10 +19,10 @@ public class DevConsoleResteastyReactiveSmokeTest {
@Test
public void testTemplates() {
RestAssured.get("q/dev/io.quarkus.quarkus-resteasy-reactive/endpoints")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-resteasy-reactive/endpoints")
.then()
.statusCode(200).body(Matchers.containsString("GET /me/message"));
RestAssured.get("q/dev/io.quarkus.quarkus-resteasy-reactive/scores")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-resteasy-reactive/scores")
.then()
.statusCode(200).body(Matchers.containsString("GET /me/message"));
}

View File

@ -22,10 +22,10 @@ public class DevConsoleSchedulerSmokeTest {
@Test
public void testScheduler() {
RestAssured.get("q/dev")
RestAssured.get("q/dev-v1")
.then()
.statusCode(200).body(Matchers.containsString("Scheduled Methods"));
RestAssured.get("q/dev/io.quarkus.quarkus-scheduler/schedules")
RestAssured.get("q/dev-v1/io.quarkus.quarkus-scheduler/schedules")
.then()
.statusCode(200).body(Matchers.containsString("Scheduler is running"));
}

View File

@ -355,11 +355,11 @@ public class DevMojoIT extends LaunchMojoTestBase {
@Test
public void testThatInstrumentationBasedReloadWorks() throws MavenInvocationException, IOException {
testDir = initProject("projects/classic-inst", "projects/project-intrumentation-reload");
testDir = initProject("projects/classic-inst", "projects/project-instrumentation-reload");
runAndCheck();
// Enable instrumentation based reload to begin with
RestAssured.post("/q/dev/io.quarkus.quarkus-vertx-http/tests/toggle-instrumentation").then().statusCode(200);
RestAssured.post("/q/dev-v1/io.quarkus.quarkus-vertx-http/tests/toggle-instrumentation").then().statusCode(200);
//if there is an instrumentation based reload this will stay the same
String firstUuid = DevModeTestUtils.getHttpResponse("/app/uuid");
@ -392,7 +392,7 @@ public class DevMojoIT extends LaunchMojoTestBase {
//now disable instrumentation based restart, and try again
//change it back to hello
RestAssured.post("/q/dev/io.quarkus.quarkus-vertx-http/tests/toggle-instrumentation").then().statusCode(200);
RestAssured.post("/q/dev-v1/io.quarkus.quarkus-vertx-http/tests/toggle-instrumentation").then().statusCode(200);
source = new File(testDir, "src/main/java/org/acme/HelloResource.java");
filter(source, Collections.singletonMap("return \"" + uuid + "\";", "return \"hello\";"));
@ -407,7 +407,7 @@ public class DevMojoIT extends LaunchMojoTestBase {
//now re-enable
//and repeat
RestAssured.post("/q/dev/io.quarkus.quarkus-vertx-http/tests/toggle-instrumentation").then().statusCode(200);
RestAssured.post("/q/dev-v1/io.quarkus.quarkus-vertx-http/tests/toggle-instrumentation").then().statusCode(200);
source = new File(testDir, "src/main/java/org/acme/HelloResource.java");
filter(source, Collections.singletonMap("return \"hello\";", "return \"" + uuid + "\";"));

View File

@ -56,7 +56,7 @@ public class RemoteDevMojoIT extends RunAndCheckWithAgentMojoTestBase {
.atMost(1, TimeUnit.MINUTES).until(() -> DevModeTestUtils.getHttpResponse("/app/hello").contains("carambar"));
//also verify that the dev ui console is disabled
DevModeTestUtils.getHttpResponse("/q/dev", 404, 10, TimeUnit.SECONDS);
DevModeTestUtils.getHttpResponse("/q/dev-v1", 404, 10, TimeUnit.SECONDS);
}
@Test

View File

@ -23,7 +23,7 @@ public class ContinuousTestingMavenTestUtils {
static {
try {
DEFAULT = new URL("http://localhost:8080/q/dev/io.quarkus.quarkus-vertx-http/tests/status");
DEFAULT = new URL("http://localhost:8080/q/dev-v1/io.quarkus.quarkus-vertx-http/tests/status");
} catch (MalformedURLException e) {
throw new RuntimeException(e);
}