Skip to content

Commit

Permalink
[CONJ-997] correcting use of galeraAllowedState
Browse files Browse the repository at this point in the history
test addition
  • Loading branch information
rusher committed Aug 16, 2022
1 parent 6331734 commit 5c697f4
Show file tree
Hide file tree
Showing 4 changed files with 57 additions and 12 deletions.
6 changes: 4 additions & 2 deletions .travis.yml
Expand Up @@ -43,7 +43,7 @@ stages:
jobs:
allow_failures:
- env: srv=build
- env: srv=xpand TEST_DB_OTHER="initSql=SET NAMES UTF8"
- env: srv=xpand TEST_DB_OTHER="&initSql=SET NAMES UTF8"
include:
- stage: Minimal
env: srv=mariadb v=10.6 packet=8
Expand All @@ -59,7 +59,7 @@ jobs:
name: "ES 10.5"
- env: srv=maxscale
name: "Maxscale"
- env: srv=xpand TEST_DB_OTHER="initSql=SET NAMES UTF8"
- env: srv=xpand TEST_DB_OTHER="&initSql=SET NAMES UTF8"
name: "Xpand"
- env: srv=skysql
name: "SkySQL"
Expand Down Expand Up @@ -88,6 +88,8 @@ jobs:
name: "CS 10.6 - packet 8M"
- env: srv=mariadb v=10.6 local=1 BENCH=1
name: "Benchmarks"
- env: srv=galera v=10.8
name: "Galera 10.8"
- env: srv=mysql v=5.7
name: "MySQL 5.7"
- env: srv=mysql v=8.0
Expand Down
19 changes: 13 additions & 6 deletions src/main/java/org/mariadb/jdbc/client/impl/StandardClient.java
Expand Up @@ -358,11 +358,15 @@ private void postConnectionQueries() throws SQLException {
if (hostAddress != null
&& Boolean.TRUE.equals(hostAddress.primary)
&& !galeraAllowedStates.isEmpty()) {
ResultSet rs = (ResultSet) res.get(2);
rs.next();
if (!galeraAllowedStates.contains(rs.getString(2))) {
ResultSet rs = (ResultSet) res.get(0);
if (rs.next()) {
if (!galeraAllowedStates.contains(rs.getString(2))) {
throw exceptionFactory.create(
String.format("fail to validate Galera state (State is %s)", rs.getString(2)));
}
} else {
throw exceptionFactory.create(
String.format("fail to validate Galera state (State is %s)", rs.getString(2)));
"fail to validate Galera state (unknown 'wsrep_local_state' state)");
}
res.remove(0);
}
Expand All @@ -374,7 +378,9 @@ private void postConnectionQueries() throws SQLException {
throw exceptionFactory.create(
String.format(
"Setting configured timezone '%s' fail on server.\nLook at https://mariadb.com/kb/en/mysql_tzinfo_to_sql/ to load tz data on server, or set timezone=disable to disable setting client timezone.",
conf.timezone()), "HY000", sqlException);
conf.timezone()),
"HY000",
sqlException);
}
throw exceptionFactory.create("Initialization command fail", "08000", sqlException);
}
Expand Down Expand Up @@ -428,7 +434,8 @@ public String createSessionVariableQuery(String serverTz) {
if (clientZoneId.getRules().isFixedOffset()) {
ZoneOffset zoneOffset = clientZoneId.getRules().getOffset(Instant.now());
if (zoneOffset.getTotalSeconds() == 0) {
// specific for UTC timezone, server permitting only SYSTEM/UTC offset or named time zone
// specific for UTC timezone, server permitting only SYSTEM/UTC offset or named time
// zone
// not 'UTC'/'Z'
sessionCommands.add("time_zone='+00:00'");
} else {
Expand Down
11 changes: 7 additions & 4 deletions src/test/java/org/mariadb/jdbc/integration/Common.java
Expand Up @@ -47,7 +47,7 @@ public class Common {
String val = System.getenv("TEST_REQUIRE_TLS");
if ("1".equals(val)) {
String cert = System.getenv("TEST_DB_SERVER_CERT");
defaultOther = "sslMode=verify-full&serverSslCert=" + cert;
defaultOther = "&sslMode=verify-full&serverSslCert=" + cert;
} else {
defaultOther = get("DB_OTHER", prop);
}
Expand All @@ -57,9 +57,12 @@ public class Common {
password = get("DB_PASSWORD", prop);
database = get("DB_DATABASE", prop);
mDefUrl =
String.format(
"jdbc:mariadb://%s:%s/%s?user=%s&password=%s&%s",
hostname, port, database, user, password, defaultOther);
password == null || password.isEmpty()
? String.format(
"jdbc:mariadb://%s:%s/%s?user=%s%s", hostname, port, database, user, defaultOther)
: String.format(
"jdbc:mariadb://%s:%s/%s?user=%s&password=%s%s",
hostname, port, database, user, password, defaultOther);

} catch (IOException io) {
io.printStackTrace();
Expand Down
33 changes: 33 additions & 0 deletions src/test/java/org/mariadb/jdbc/integration/GaleraTest.java
@@ -0,0 +1,33 @@
// SPDX-License-Identifier: LGPL-2.1-or-later
// Copyright (c) 2012-2014 Monty Program Ab
// Copyright (c) 2015-2021 MariaDB Corporation Ab

package org.mariadb.jdbc.integration;

import java.sql.SQLException;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;
import org.mariadb.jdbc.Connection;

public class GaleraTest extends Common {

@Test
public void galeraAllowedStatesTest() throws SQLException {
if ("galera".equals(System.getenv("srv"))) {
try (Connection con = createCon("galeraAllowedState=4,5,6")) {
con.isValid(1);
}
} else {
try {
createCon("galeraAllowedState=4,5,6");
Assertions.fail();
} catch (SQLException e) {
Assertions.assertTrue(e.getMessage().contains("Initialization command fail"));
Assertions.assertTrue(
e.getCause()
.getMessage()
.contains("fail to validate Galera state (unknown 'wsrep_local_state' state)"));
}
}
}
}

0 comments on commit 5c697f4

Please sign in to comment.