2828import java .sql .Statement ;
2929import java .util .List ;
3030import java .util .Map ;
31+ import java .util .UUID ;
3132
3233import static org .testng .Assert .fail ;
3334
@@ -36,15 +37,34 @@ public final class ClpMetadataDbSetUp
3637 private static final Logger log = Logger .get (ClpMetadataDbSetUp .class );
3738
3839 public static final String metadataDbUrlTemplate =
39- "jdbc:h2:file:/tmp/ %s;MODE=MySQL;DATABASE_TO_UPPER=FALSE" ;
40+ "jdbc:h2:file:%s;MODE=MySQL;DATABASE_TO_UPPER=FALSE" ;
4041 public static final String metadataDbTablePrefix = "clp_" ;
4142 public static final String metadataDbUser = "sa" ;
4243 public static final String metadataDbPassword = "" ;
43- private final String datasetsTableName = metadataDbTablePrefix + "datasets" ;
44+ private static final String datasetsTableName = metadataDbTablePrefix + "datasets" ;
4445
45- public ClpMetadata setupMetadata ( String dbName , Map < String , List < Pair < String , ClpNodeType >>> clpFields )
46+ public static final class DbHandle
4647 {
47- final String metadataDbUrl = String .format (metadataDbUrlTemplate , dbName );
48+ DbHandle (String dbPath )
49+ {
50+ this .dbPath = dbPath ;
51+ }
52+ public String dbPath ;
53+ }
54+
55+ private ClpMetadataDbSetUp ()
56+ {
57+ throw new UnsupportedOperationException ("This is a utility class and cannot be instantiated" );
58+ }
59+
60+ public static DbHandle getDbHandle (String dbName )
61+ {
62+ return new DbHandle (String .format ("/tmp/presto-clp-test/%s-%s" , dbName , UUID .randomUUID ()));
63+ }
64+
65+ public static ClpMetadata setupMetadata (DbHandle dbHandle , Map <String , List <Pair <String , ClpNodeType >>> clpFields )
66+ {
67+ final String metadataDbUrl = String .format (metadataDbUrlTemplate , dbHandle .dbPath );
4868 final String columnMetadataTableSuffix = "_column_metadata" ;
4969
5070 try (Connection conn = DriverManager .getConnection (metadataDbUrl , metadataDbUser , metadataDbPassword );
@@ -88,9 +108,9 @@ public ClpMetadata setupMetadata(String dbName, Map<String, List<Pair<String, Cl
88108 return new ClpMetadata (config , metadataProvider );
89109 }
90110
91- public ClpMySqlSplitProvider setupSplit (String dbName , Map <String , List <String >> splits )
111+ public static ClpMySqlSplitProvider setupSplit (DbHandle dbHandle , Map <String , List <String >> splits )
92112 {
93- final String metadataDbUrl = String .format (metadataDbUrlTemplate , dbName );
113+ final String metadataDbUrl = String .format (metadataDbUrlTemplate , dbHandle . dbPath );
94114 final String archiveTableSuffix = "_archives" ;
95115 final String archiveTableFormat = metadataDbTablePrefix + "%s" + archiveTableSuffix ;
96116
@@ -135,10 +155,10 @@ public ClpMySqlSplitProvider setupSplit(String dbName, Map<String, List<String>>
135155 .setMetadataTablePrefix (metadataDbTablePrefix ));
136156 }
137157
138- public void tearDown (String dbName )
158+ public static void tearDown (DbHandle dbHandle )
139159 {
140- File dbFile = new File (String . format ( "/tmp/%s .mv.db", dbName ) );
141- File lockFile = new File (String . format ( "/tmp/%s .trace.db", dbName ) ); // Optional, H2 sometimes creates this
160+ File dbFile = new File (dbHandle . dbPath + " .mv.db" );
161+ File lockFile = new File (dbHandle . dbPath + " .trace.db" ); // Optional, H2 sometimes creates this
142162 if (dbFile .exists ()) {
143163 dbFile .delete ();
144164 log .info ("Deleted database file: " + dbFile .getAbsolutePath ());
@@ -148,7 +168,7 @@ public void tearDown(String dbName)
148168 }
149169 }
150170
151- private void createDatasetsTable (Statement stmt ) throws SQLException
171+ private static void createDatasetsTable (Statement stmt ) throws SQLException
152172 {
153173 final String createDatasetTableSQL = String .format (
154174 "CREATE TABLE IF NOT EXISTS %s (" +
@@ -158,7 +178,7 @@ private void createDatasetsTable(Statement stmt) throws SQLException
158178 stmt .execute (createDatasetTableSQL );
159179 }
160180
161- private void updateDatasetsTable (Connection conn , String tableName ) throws SQLException
181+ private static void updateDatasetsTable (Connection conn , String tableName ) throws SQLException
162182 {
163183 final String insertDatasetTableSQL = String .format (
164184 "INSERT INTO %s (name, archive_storage_type, archive_storage_directory) VALUES (?, ?, ?)" , datasetsTableName );
0 commit comments