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:
parent
ed40a1598b
commit
c20b4bbb95
|
@ -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.
|
||||
|
|
|
@ -1,3 +1,3 @@
|
|||
{#include index-entry}
|
||||
{#body}<br />› 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 />› 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}
|
|
@ -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.
|
||||
|
|
|
@ -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`:
|
||||
|
||||
|
|
|
@ -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]
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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`:
|
||||
|
||||
|
|
|
@ -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`:
|
||||
|
||||
|
|
|
@ -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`:
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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" +
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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"));
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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:"));
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -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 + "/");
|
||||
|
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -0,0 +1,5 @@
|
|||
/**
|
||||
* + * Package containing the dev UI v1.
|
||||
* +
|
||||
*/
|
||||
package io.quarkus.vertx.http.deployment.devmode.console;
|
|
@ -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());
|
||||
}
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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");
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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());
|
||||
|
|
|
@ -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()) {
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
|
@ -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.
|
||||
*/
|
||||
|
|
|
@ -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}
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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">
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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("<default>")))
|
||||
.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("<default>")))
|
||||
// .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."));
|
||||
|
|
|
@ -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"));
|
||||
|
|
|
@ -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\"><default></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."));
|
||||
|
|
|
@ -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()))
|
||||
|
|
|
@ -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"));
|
||||
|
|
|
@ -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()));
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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"));
|
||||
}
|
||||
|
|
|
@ -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 + "\";"));
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue