testcontainers-java

Форк
0
144 строки · 5.7 Кб
1
package org.testcontainers.containers;
2

3
import com.datastax.driver.core.Cluster;
4
import com.datastax.driver.core.ResultSet;
5
import com.datastax.driver.core.Row;
6
import com.datastax.driver.core.Session;
7
import lombok.extern.slf4j.Slf4j;
8
import org.junit.Test;
9
import org.testcontainers.containers.wait.CassandraQueryWaitStrategy;
10
import org.testcontainers.utility.DockerImageName;
11

12
import static org.assertj.core.api.Assertions.assertThat;
13

14
@Slf4j
15
public class CassandraContainerTest {
16

17
    private static final DockerImageName CASSANDRA_IMAGE = DockerImageName.parse("cassandra:3.11.2");
18

19
    private static final String TEST_CLUSTER_NAME_IN_CONF = "Test Cluster Integration Test";
20

21
    private static final String BASIC_QUERY = "SELECT release_version FROM system.local";
22

23
    @Test
24
    public void testSimple() {
25
        try (CassandraContainer<?> cassandraContainer = new CassandraContainer<>(CASSANDRA_IMAGE)) {
26
            cassandraContainer.start();
27
            ResultSet resultSet = performQuery(cassandraContainer, BASIC_QUERY);
28
            assertThat(resultSet.wasApplied()).as("Query was applied").isTrue();
29
            assertThat(resultSet.one().getString(0)).as("Result set has release_version").isNotNull();
30
        }
31
    }
32

33
    @Test
34
    public void testSpecificVersion() {
35
        String cassandraVersion = "3.0.15";
36
        try (
37
            CassandraContainer<?> cassandraContainer = new CassandraContainer<>(
38
                CASSANDRA_IMAGE.withTag(cassandraVersion)
39
            )
40
        ) {
41
            cassandraContainer.start();
42
            ResultSet resultSet = performQuery(cassandraContainer, BASIC_QUERY);
43
            assertThat(resultSet.wasApplied()).as("Query was applied").isTrue();
44
            assertThat(resultSet.one().getString(0)).as("Cassandra has right version").isEqualTo(cassandraVersion);
45
        }
46
    }
47

48
    @Test
49
    public void testConfigurationOverride() {
50
        try (
51
            CassandraContainer<?> cassandraContainer = new CassandraContainer<>(CASSANDRA_IMAGE)
52
                .withConfigurationOverride("cassandra-test-configuration-example")
53
        ) {
54
            cassandraContainer.start();
55
            ResultSet resultSet = performQuery(cassandraContainer, "SELECT cluster_name FROM system.local");
56
            assertThat(resultSet.wasApplied()).as("Query was applied").isTrue();
57
            assertThat(resultSet.one().getString(0))
58
                .as("Cassandra configuration is overridden")
59
                .isEqualTo(TEST_CLUSTER_NAME_IN_CONF);
60
        }
61
    }
62

63
    @Test(expected = ContainerLaunchException.class)
64
    public void testEmptyConfigurationOverride() {
65
        try (
66
            CassandraContainer<?> cassandraContainer = new CassandraContainer<>(CASSANDRA_IMAGE)
67
                .withConfigurationOverride("cassandra-empty-configuration")
68
        ) {
69
            cassandraContainer.start();
70
        }
71
    }
72

73
    @Test
74
    public void testInitScript() {
75
        try (
76
            CassandraContainer<?> cassandraContainer = new CassandraContainer<>(CASSANDRA_IMAGE)
77
                .withInitScript("initial.cql")
78
        ) {
79
            cassandraContainer.start();
80
            testInitScript(cassandraContainer);
81
        }
82
    }
83

84
    @Test
85
    public void testInitScriptWithLegacyCassandra() {
86
        try (
87
            CassandraContainer<?> cassandraContainer = new CassandraContainer<>(
88
                DockerImageName.parse("cassandra:2.2.11")
89
            )
90
                .withInitScript("initial.cql")
91
        ) {
92
            cassandraContainer.start();
93
            testInitScript(cassandraContainer);
94
        }
95
    }
96

97
    @SuppressWarnings("deprecation") // Using deprecated constructor for verification of backwards compatibility
98
    @Test
99
    public void testCassandraQueryWaitStrategy() {
100
        try (
101
            CassandraContainer<?> cassandraContainer = new CassandraContainer<>()
102
                .waitingFor(new CassandraQueryWaitStrategy())
103
        ) {
104
            cassandraContainer.start();
105
            ResultSet resultSet = performQuery(cassandraContainer, BASIC_QUERY);
106
            assertThat(resultSet.wasApplied()).as("Query was applied").isTrue();
107
        }
108
    }
109

110
    @SuppressWarnings("deprecation") // Using deprecated constructor for verification of backwards compatibility
111
    @Test
112
    public void testCassandraGetCluster() {
113
        try (CassandraContainer<?> cassandraContainer = new CassandraContainer<>()) {
114
            cassandraContainer.start();
115
            ResultSet resultSet = performQuery(cassandraContainer.getCluster(), BASIC_QUERY);
116
            assertThat(resultSet.wasApplied()).as("Query was applied").isTrue();
117
            assertThat(resultSet.one().getString(0)).as("Result set has release_version").isNotNull();
118
        }
119
    }
120

121
    private void testInitScript(CassandraContainer<?> cassandraContainer) {
122
        ResultSet resultSet = performQuery(cassandraContainer, "SELECT * FROM keySpaceTest.catalog_category");
123
        assertThat(resultSet.wasApplied()).as("Query was applied").isTrue();
124
        Row row = resultSet.one();
125
        assertThat(row.getLong(0)).as("Inserted row is in expected state").isEqualTo(1);
126
        assertThat(row.getString(1)).as("Inserted row is in expected state").isEqualTo("test_category");
127
    }
128

129
    private ResultSet performQuery(CassandraContainer<?> cassandraContainer, String cql) {
130
        Cluster explicitCluster = Cluster
131
            .builder()
132
            .addContactPoint(cassandraContainer.getHost())
133
            .withPort(cassandraContainer.getMappedPort(CassandraContainer.CQL_PORT))
134
            .build();
135
        return performQuery(explicitCluster, cql);
136
    }
137

138
    private ResultSet performQuery(Cluster cluster, String cql) {
139
        try (Cluster closeableCluster = cluster) {
140
            Session session = closeableCluster.newSession();
141
            return session.execute(cql);
142
        }
143
    }
144
}
145

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.