|
23 | 23 | import io.trino.testing.QueryRunner; |
24 | 24 | import io.trino.tpch.TpchTable; |
25 | 25 | import org.intellij.lang.annotations.Language; |
| 26 | +import org.testcontainers.containers.Container; |
26 | 27 | import org.testcontainers.containers.GenericContainer; |
27 | 28 | import org.testcontainers.containers.Network; |
28 | 29 | import org.testcontainers.containers.PostgreSQLContainer; |
29 | 30 | import org.testcontainers.utility.DockerImageName; |
30 | 31 | import org.testcontainers.utility.MountableFile; |
31 | 32 |
|
32 | 33 | import java.io.File; |
| 34 | +import java.io.IOException; |
33 | 35 | import java.net.URI; |
34 | 36 | import java.nio.file.Files; |
35 | 37 | import java.nio.file.Path; |
|
38 | 40 | import java.sql.DriverManager; |
39 | 41 | import java.sql.SQLException; |
40 | 42 | import java.sql.Statement; |
| 43 | +import java.util.Arrays; |
41 | 44 |
|
| 45 | +import static com.google.common.base.Preconditions.checkState; |
42 | 46 | import static com.google.common.base.Verify.verify; |
43 | 47 | import static io.airlift.http.client.StaticBodyGenerator.createStaticBodyGenerator; |
44 | 48 | import static io.airlift.http.client.StringResponseHandler.createStringResponseHandler; |
@@ -114,34 +118,28 @@ public String uri() |
114 | 118 |
|
115 | 119 | private void createCatalog() |
116 | 120 | { |
117 | | - @Language("JSON") |
118 | | - String body = "{\"name\": \"" + catalogName + "\"}"; |
119 | | - Request request = Request.Builder.preparePost() |
120 | | - .setUri(URI.create(uri() + "/catalogs")) |
121 | | - .setHeader("Content-Type", "application/json") |
122 | | - .setBodyGenerator(createStaticBodyGenerator(body, UTF_8)) |
123 | | - .build(); |
124 | | - execute(request); |
| 121 | + execInContainer("bin/uc", "catalog", "create", "--name", catalogName); |
125 | 122 | } |
126 | 123 |
|
127 | 124 | public void createSchema(String schemaName) |
128 | 125 | { |
129 | | - @Language("JSON") |
130 | | - String body = "{\"name\": \"" + schemaName + "\", \"catalog_name\": \"" + catalogName + "\"}"; |
131 | | - Request request = Request.Builder.preparePost() |
132 | | - .setUri(URI.create(uri() + "/schemas")) |
133 | | - .setHeader("Content-Type", "application/json") |
134 | | - .setBodyGenerator(createStaticBodyGenerator(body, UTF_8)) |
135 | | - .build(); |
136 | | - execute(request); |
| 126 | + execInContainer("bin/uc", "schema", "create", "--catalog", catalogName, "--name", schemaName); |
137 | 127 | } |
138 | 128 |
|
139 | 129 | public void dropSchema(String schema) |
140 | 130 | { |
141 | | - Request request = Request.Builder.prepareDelete() |
142 | | - .setUri(URI.create(uri() + "/schemas/%s.%s?catalog_name=%s".formatted(catalogName, schema, schema))) |
143 | | - .build(); |
144 | | - execute(request); |
| 131 | + execInContainer("bin/uc", "schema", "delete", "--full_name", "%s.%s".formatted(catalogName, schema)); |
| 132 | + } |
| 133 | + |
| 134 | + private void execInContainer(String... command) |
| 135 | + { |
| 136 | + try { |
| 137 | + Container.ExecResult result = unityCatalog.execInContainer(command); |
| 138 | + checkState(result.getExitCode() == 0, "Command %s failed: %s", Arrays.toString(command), result.getStdout()); |
| 139 | + } |
| 140 | + catch (IOException | InterruptedException e) { |
| 141 | + throw new RuntimeException(e); |
| 142 | + } |
145 | 143 | } |
146 | 144 |
|
147 | 145 | public void copyTpchTables(Iterable<TpchTable<?>> tpchTables) |
|
0 commit comments