Skip to content

Commit 78d46f1

Browse files
amitsadaphulerschlussel
authored andcommitted
Incorporate review comments
- group common args for mariadb and non-mariadb - raise exception from mariadb specific methods when called by non-mariadb - remove un-necessary separation between mariadb and non-mariadb
1 parent e83e538 commit 78d46f1

File tree

3 files changed

+50
-53
lines changed

3 files changed

+50
-53
lines changed

testing-mysql-server-5/src/main/java/com/facebook/presto/testing/mysql/EmbeddedMySql5.java

Lines changed: 32 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,11 @@
1313
*/
1414
package com.facebook.presto.testing.mysql;
1515

16+
import com.google.common.base.VerifyException;
1617
import com.google.common.collect.ImmutableList;
1718

1819
import java.io.IOException;
20+
import java.util.Arrays;
1921
import java.util.List;
2022

2123
final class EmbeddedMySql5
@@ -30,60 +32,48 @@ public EmbeddedMySql5(MySqlOptions mySqlOptions)
3032
@Override
3133
public List<String> getInitializationArguments()
3234
{
33-
if (isMariadb) {
34-
return ImmutableList.of(
35+
List<String> list = Arrays.asList(
3536
"--no-defaults",
36-
"--basedir=" + getBaseDirectory(),
37-
"--datadir=" + getDataDirectory(),
3837
"--skip-sync-frm",
39-
"--innodb-flush-method=nosync");
38+
"--innodb-flush-method=nosync",
39+
"--datadir=" + getDataDirectory());
40+
41+
if (isMariadb) {
42+
return ImmutableList.<String>builder().addAll(list).add("--basedir=" + getBaseDirectory()).build();
4043
}
4144
else {
42-
return ImmutableList.of(
43-
"--no-defaults",
44-
"--initialize-insecure",
45-
"--skip-sync-frm",
46-
"--innodb-flush-method=nosync",
47-
"--datadir", getDataDirectory());
45+
return ImmutableList.<String>builder().addAll(list).add("--initialize-insecure").build();
4846
}
4947
}
5048

5149
@Override
52-
public List<String> getStartArguments()
50+
public List<String> getStartArguments() throws VerifyException
5351
{
52+
List<String> list = Arrays.asList(
53+
"--no-defaults",
54+
"--default-time-zone=+00:00",
55+
"--skip-sync-frm",
56+
"--innodb-flush-method=nosync",
57+
"--innodb-flush-log-at-trx-commit=0",
58+
"--innodb-doublewrite=0",
59+
"--bind-address=localhost",
60+
"--port=" + String.valueOf(getPort()),
61+
"--datadir=" + getDataDirectory(),
62+
"--socket=" + getSocketDirectory());
63+
5464
if (isMariadb) {
55-
return ImmutableList.of(
56-
"--no-defaults",
57-
"--default-time-zone=+00:00",
58-
"--skip-sync-frm",
59-
"--innodb-flush-method=nosync",
60-
"--innodb-flush-log-at-trx-commit=0",
61-
"--innodb-doublewrite=0",
62-
"--bind-address=localhost",
63-
"--basedir=" + getBaseDirectory(),
64-
"--plugin-dir=" + getPluginDirectory(),
65-
"--log-error=" + getDataDirectory() + "mariadb.log",
66-
"--pid-file=" + getDataDirectory() + "mariadb.pid",
67-
"--socket=" + getDataDirectory() + "mysql.sock",
68-
"--port=" + String.valueOf(getPort()),
69-
"--datadir=" + getDataDirectory());
65+
return ImmutableList.<String>builder().addAll(list).add(
66+
"--basedir=" + getBaseDirectory(),
67+
"--plugin-dir=" + getMariadbPluginDirectory(),
68+
"--log-error=" + getDataDirectory() + "mariadb.log",
69+
"--pid-file=" + getDataDirectory() + "mariadb.pid").build();
7070
}
7171
else {
72-
return ImmutableList.of(
73-
"--no-defaults",
74-
"--skip-ssl",
75-
"--default-time-zone=+00:00",
76-
"--disable-partition-engine-check",
77-
"--explicit_defaults_for_timestamp",
78-
"--skip-sync-frm",
79-
"--innodb-flush-method=nosync",
80-
"--innodb-flush-log-at-trx-commit=0",
81-
"--innodb-doublewrite=0",
82-
"--bind-address=localhost",
83-
"--lc_messages_dir", getShareDirectory(),
84-
"--socket", getSocketDirectory(),
85-
"--port", String.valueOf(getPort()),
86-
"--datadir", getDataDirectory());
72+
return ImmutableList.<String>builder().addAll(list).add(
73+
"--skip-ssl",
74+
"--disable-partition-engine-check",
75+
"--explicit_defaults_for_timestamp",
76+
"--lc_messages_dir=" + getShareDirectory()).build();
8777
}
8878
}
8979
}

testing-mysql-server-base/src/main/java/com/facebook/presto/testing/mysql/AbstractEmbeddedMySql.java

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
package com.facebook.presto.testing.mysql;
1515

1616
import com.facebook.airlift.log.Logger;
17+
import com.google.common.base.VerifyException;
1718
import com.google.common.collect.ImmutableList;
1819
import com.google.common.io.ByteStreams;
1920
import io.airlift.command.Command;
@@ -72,7 +73,7 @@ public abstract class AbstractEmbeddedMySql
7273
protected final boolean isMariadb = System.getProperty("os.arch").equals("ppc64le");
7374

7475
public AbstractEmbeddedMySql(MySqlOptions mySqlOptions)
75-
throws IOException
76+
throws IOException, VerifyException
7677
{
7778
this.startupWait = requireNonNull(mySqlOptions.getStartupWait(), "startupWait is null");
7879
this.shutdownWait = requireNonNull(mySqlOptions.getShutdownWait(), "shutdownWait is null");
@@ -113,9 +114,12 @@ public Connection getMySqlDatabase()
113114
return DriverManager.getConnection(getJdbcUrl("root", "mysql"));
114115
}
115116

116-
protected String getMysqlInstallDb()
117+
protected String getMariadbInstallDb() throws VerifyException
117118
{
118-
return (isMariadb ? serverDirectory.resolve("bin").resolve("mysql_install_db").toString() : "");
119+
if (!isMariadb) {
120+
throw new VerifyException("mysql_install_db not applicable to non-mariadb installations");
121+
}
122+
return serverDirectory.resolve("bin").resolve("mysql_install_db").toString();
119123
}
120124

121125
protected String getBaseDirectory()
@@ -140,12 +144,15 @@ protected String getShareDirectory()
140144

141145
protected String getSocketDirectory()
142146
{
143-
return (isMariadb ? "" : serverDirectory.resolve("mysql.sock").toString());
147+
return (isMariadb ? getDataDirectory() + "mysql.sock" : serverDirectory.resolve("mysql.sock").toString());
144148
}
145149

146-
protected String getPluginDirectory()
150+
protected String getMariadbPluginDirectory() throws VerifyException
147151
{
148-
return (isMariadb ? serverDirectory.resolve("lib64").resolve("mysql").resolve("plugin").toString() : "");
152+
if (!isMariadb) {
153+
throw new VerifyException("--plugin-dir option not applicable to non-mariadb installations");
154+
}
155+
return serverDirectory.resolve("lib64").resolve("mysql").resolve("plugin").toString();
149156
}
150157

151158
@Override
@@ -199,11 +206,11 @@ private static int randomPort()
199206
}
200207
}
201208

202-
private void initialize()
209+
private void initialize() throws VerifyException
203210
{
204211
if (isMariadb) {
205212
system(ImmutableList.<String>builder()
206-
.add(getMysqlInstallDb())
213+
.add(getMariadbInstallDb())
207214
.addAll(getInitializationArguments())
208215
.build());
209216
}
@@ -216,7 +223,7 @@ private void initialize()
216223
}
217224

218225
private Process startMysqld()
219-
throws IOException
226+
throws IOException, VerifyException
220227
{
221228
Process process = new ProcessBuilder(ImmutableList.<String>builder().add(getMysqld()).addAll(getStartArguments()).build())
222229
.redirectErrorStream(true)

testing-mysql-server-base/src/main/java/com/facebook/presto/testing/mysql/AbstractTestingMySqlServer.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@ public AbstractTestingMySqlServer(EmbeddedMySql server, String user, String pass
5353
try (Connection connection = server.getMySqlDatabase()) {
5454
version = connection.getMetaData().getDatabaseProductVersion();
5555
try (Statement statement = connection.createStatement()) {
56-
execute(statement, format("CREATE USER '%s'@'%s' IDENTIFIED BY '%s'", user, isMariadb ? "localhost" : "%%", password));
57-
execute(statement, format("GRANT ALL ON *.* to '%s'@'%s' WITH GRANT OPTION", user, isMariadb ? "localhost" : "%%"));
56+
execute(statement, format("CREATE USER '%s'@'localhost' IDENTIFIED BY '%s'", user, password));
57+
execute(statement, format("GRANT ALL ON *.* to '%s'@'localhost' WITH GRANT OPTION", user));
5858
for (String database : databases) {
5959
execute(statement, format("CREATE DATABASE %s", database));
6060
}

0 commit comments

Comments
 (0)