Skip to content

Commit cb34989

Browse files
authored
Add Trino container implementation under org.testcontainers.trino (#11092)
1 parent 7607502 commit cb34989

File tree

4 files changed

+114
-5
lines changed

4 files changed

+114
-5
lines changed

docs/modules/databases/trino.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Testcontainers module for [Trino](https://hub.docker.com/r/trinodb/trino)
77
You can start a Trino container instance from any Java application by using:
88

99
<!--codeinclude-->
10-
[Container creation](../../../modules/trino/src/test/java/org/testcontainers/containers/TrinoContainerTest.java) inside_block:container
10+
[Container creation](../../../modules/trino/src/test/java/org/testcontainers/trino/TrinoContainerTest.java) inside_block:container
1111
<!--/codeinclude-->
1212

1313
See [Database containers](./index.md) for documentation and usage that is common to all database container types.

modules/trino/src/main/java/org/testcontainers/containers/TrinoContainer.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,10 @@
1515
* Supported image: {@code trinodb/trino}
1616
* <p>
1717
* Exposed ports: 8080
18+
*
19+
* @deprecated use {@link org.testcontainers.trino.TrinoContainer} instead.
1820
*/
21+
@Deprecated
1922
public class TrinoContainer extends JdbcDatabaseContainer<TrinoContainer> {
2023

2124
static final String NAME = "trino";
Lines changed: 108 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,108 @@
1+
package org.testcontainers.trino;
2+
3+
import com.google.common.base.Strings;
4+
import org.jetbrains.annotations.NotNull;
5+
import org.jetbrains.annotations.VisibleForTesting;
6+
import org.testcontainers.containers.JdbcDatabaseContainer;
7+
import org.testcontainers.utility.DockerImageName;
8+
9+
import java.sql.Connection;
10+
import java.sql.SQLException;
11+
import java.util.Set;
12+
13+
/**
14+
* Testcontainers implementation for TrinoDB.
15+
* <p>
16+
* Supported image: {@code trinodb/trino}
17+
* <p>
18+
* Exposed ports: 8080
19+
*/
20+
public class TrinoContainer extends JdbcDatabaseContainer<TrinoContainer> {
21+
22+
static final String NAME = "trino";
23+
24+
private static final DockerImageName DEFAULT_IMAGE_NAME = DockerImageName.parse("trinodb/trino");
25+
26+
static final String IMAGE = "trinodb/trino";
27+
28+
@VisibleForTesting
29+
static final String DEFAULT_TAG = "352";
30+
31+
private static final int TRINO_PORT = 8080;
32+
33+
private String username = "test";
34+
35+
private String catalog = null;
36+
37+
public TrinoContainer(final String dockerImageName) {
38+
this(DockerImageName.parse(dockerImageName));
39+
}
40+
41+
public TrinoContainer(final DockerImageName dockerImageName) {
42+
super(dockerImageName);
43+
dockerImageName.assertCompatibleWith(DEFAULT_IMAGE_NAME);
44+
addExposedPort(TRINO_PORT);
45+
}
46+
47+
/**
48+
* @return the ports on which to check if the container is ready
49+
* @deprecated use {@link #getLivenessCheckPortNumbers()} instead
50+
*/
51+
@NotNull
52+
@Override
53+
@Deprecated
54+
protected Set<Integer> getLivenessCheckPorts() {
55+
return super.getLivenessCheckPorts();
56+
}
57+
58+
@Override
59+
public String getDriverClassName() {
60+
return "io.trino.jdbc.TrinoDriver";
61+
}
62+
63+
@Override
64+
public String getJdbcUrl() {
65+
return String.format(
66+
"jdbc:trino://%s:%s/%s",
67+
getHost(),
68+
getMappedPort(TRINO_PORT),
69+
Strings.nullToEmpty(catalog)
70+
);
71+
}
72+
73+
@Override
74+
public String getUsername() {
75+
return username;
76+
}
77+
78+
@Override
79+
public String getPassword() {
80+
return "";
81+
}
82+
83+
@Override
84+
public String getDatabaseName() {
85+
return catalog;
86+
}
87+
88+
@Override
89+
public String getTestQueryString() {
90+
return "SELECT count(*) FROM tpch.tiny.nation";
91+
}
92+
93+
@Override
94+
public TrinoContainer withUsername(final String username) {
95+
this.username = username;
96+
return this;
97+
}
98+
99+
@Override
100+
public TrinoContainer withDatabaseName(String dbName) {
101+
this.catalog = dbName;
102+
return this;
103+
}
104+
105+
public Connection createConnection() throws SQLException, NoDriverFoundException {
106+
return createConnection("");
107+
}
108+
}

modules/trino/src/test/java/org/testcontainers/containers/TrinoContainerTest.java renamed to modules/trino/src/test/java/org/testcontainers/trino/TrinoContainerTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.testcontainers.containers;
1+
package org.testcontainers.trino;
22

33
import org.junit.jupiter.api.Test;
44
import org.testcontainers.TrinoTestImages;
@@ -24,9 +24,7 @@ void testSimple() throws Exception {
2424
ResultSet resultSet = statement.executeQuery("SELECT DISTINCT node_version FROM system.runtime.nodes")
2525
) {
2626
assertThat(resultSet.next()).as("results").isTrue();
27-
assertThat(resultSet.getString("node_version"))
28-
.as("Trino version")
29-
.isEqualTo(TrinoContainer.DEFAULT_TAG);
27+
assertThat(resultSet.getString("node_version")).as("Trino version").isEqualTo("352");
3028
assertContainerHasCorrectExposedAndLivenessCheckPorts(trino);
3129
}
3230
}

0 commit comments

Comments
 (0)