|
17 | 17 |
|
18 | 18 | package org.apache.kyuubi.server
|
19 | 19 |
|
20 |
| -import java.util.Locale |
| 20 | +import org.apache.kyuubi.RestFrontendTestHelper |
21 | 21 |
|
22 |
| -import scala.io.Source |
| 22 | +class KyuubiRestFrontendServiceSuite extends RestFrontendTestHelper { |
23 | 23 |
|
24 |
| -import org.scalatest.time.SpanSugar._ |
25 |
| - |
26 |
| -import org.apache.kyuubi.{KyuubiFunSuite, RestFrontendTestHelper} |
27 |
| -import org.apache.kyuubi.config.KyuubiConf |
28 |
| -import org.apache.kyuubi.service.NoopRestFrontendServer |
29 |
| -import org.apache.kyuubi.service.ServiceState._ |
30 |
| - |
31 |
| -class KyuubiRestFrontendServiceSuite extends KyuubiFunSuite with RestFrontendTestHelper { |
32 |
| - |
33 |
| - test("kyuubi REST frontend service basic") { |
34 |
| - val server = new NoopRestFrontendServer() |
35 |
| - server.stop() |
36 |
| - val conf = KyuubiConf() |
37 |
| - assert(server.getServices.isEmpty) |
38 |
| - assert(server.getServiceState === LATENT) |
39 |
| - val e = intercept[IllegalStateException](server.frontendServices.head.connectionUrl) |
40 |
| - assert(e.getMessage startsWith "Illegal Service State: LATENT") |
41 |
| - assert(server.getConf === null) |
| 24 | + test("kyuubi REST frontend service http basic") { |
| 25 | + val resp = webTarget.path("/api/v1/ping").request().get() |
| 26 | + assert(resp.readEntity(classOf[String]) === "pong") |
| 27 | + } |
42 | 28 |
|
43 |
| - server.initialize(conf) |
44 |
| - assert(server.getServiceState === INITIALIZED) |
45 |
| - val frontendService = server.frontendServices.head |
46 |
| - assert(frontendService.getServiceState == INITIALIZED) |
47 |
| - assert(server.frontendServices.head.connectionUrl.split(":").length === 2) |
48 |
| - assert(server.getConf === conf) |
49 |
| - assert(server.getStartTime === 0) |
50 |
| - server.stop() |
| 29 | + test("error and exception response") { |
| 30 | + var response = webTarget.path("api/v1/pong").request().get() |
| 31 | + assert(404 == response.getStatus) |
| 32 | + assert(response.getStatusInfo.getReasonPhrase.equalsIgnoreCase("not found")) |
51 | 33 |
|
52 |
| - server.start() |
53 |
| - assert(server.getServiceState === STARTED) |
54 |
| - assert(frontendService.getServiceState == STARTED) |
55 |
| - assert(server.getStartTime !== 0) |
| 34 | + response = webTarget.path("api/v1/ping").request().post(null) |
| 35 | + assert(405 == response.getStatus) |
| 36 | + assert(response.getStatusInfo.getReasonPhrase.equalsIgnoreCase("method not allowed")) |
56 | 37 |
|
57 |
| - server.stop() |
58 |
| - assert(server.getServiceState === STOPPED) |
59 |
| - assert(frontendService.getServiceState == STOPPED) |
60 |
| - server.stop() |
| 38 | + response = webTarget.path("api/v1/exception").request().get() |
| 39 | + assert(500 == response.getStatus) |
| 40 | + assert(response.getStatusInfo.getReasonPhrase.equalsIgnoreCase("server error")) |
61 | 41 | }
|
62 | 42 |
|
63 |
| - test("kyuubi REST frontend service http basic") { |
64 |
| - withKyuubiRestServer { (_, host, port, _) => |
65 |
| - eventually(timeout(10.seconds), interval(50.milliseconds)) { |
66 |
| - val html = { |
67 |
| - // noinspection HttpUrlsUsage |
68 |
| - val s = Source.fromURL(s"http://$host:$port/api/v1/ping") |
69 |
| - val str = s.mkString |
70 |
| - s.close() |
71 |
| - str |
72 |
| - } |
73 |
| - assert(html.toLowerCase(Locale.ROOT).equals("pong")) |
74 |
| - } |
75 |
| - } |
| 43 | + test("swagger ui") { |
| 44 | + val resp = webTarget.path("/api/v1/swagger-ui").request().get() |
| 45 | + assert(resp.getStatus === 200) |
76 | 46 | }
|
77 | 47 |
|
78 |
| - test("test error and exception response") { |
79 |
| - withKyuubiRestServer { (_, _, _, webTarget) => |
80 |
| - // send a not exists request |
81 |
| - var response = webTarget.path("api/v1/pong").request().get() |
82 |
| - assert(404 == response.getStatus) |
83 |
| - assert(response.getStatusInfo.getReasonPhrase.equalsIgnoreCase("not found")) |
84 |
| - |
85 |
| - // send a exists request but wrong http method |
86 |
| - response = webTarget.path("api/v1/ping").request().post(null) |
87 |
| - assert(405 == response.getStatus) |
88 |
| - assert(response.getStatusInfo.getReasonPhrase.equalsIgnoreCase("method not allowed")) |
89 |
| - |
90 |
| - // send a request but throws a exception on the server side |
91 |
| - response = webTarget.path("api/v1/exception").request().get() |
92 |
| - assert(500 == response.getStatus) |
93 |
| - assert(response.getStatusInfo.getReasonPhrase.equalsIgnoreCase("server error")) |
94 |
| - } |
| 48 | + test("swagger ui json data") { |
| 49 | + val resp = webTarget.path("/openapi.json").request().get() |
| 50 | + assert(resp.getStatus === 200) |
95 | 51 | }
|
96 | 52 | }
|
0 commit comments