diff options
| author | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-04-29 22:55:07 +0200 |
|---|---|---|
| committer | Fabian Mastenbroek <mail.fabianm@gmail.com> | 2022-04-30 17:45:52 +0200 |
| commit | 157fc322e6e68eb77177d13844e9793aeb6e8850 (patch) | |
| tree | 3391ac66642dcb40fe70ce9a7a3700a94ed1f627 /opendc-trace/opendc-trace-calcite/src/test/kotlin | |
| parent | 412d8d597511122f114d69a4ba64c6b55dd192f9 (diff) | |
feat(trace/calcite): Add support for writing via SQL
This change updates the Apache Calcite integration to support writing
workload traces via SQL. This enables custom conversion scripts between
different workload traces.
Diffstat (limited to 'opendc-trace/opendc-trace-calcite/src/test/kotlin')
| -rw-r--r-- | opendc-trace/opendc-trace-calcite/src/test/kotlin/org/opendc/trace/calcite/CalciteTest.kt | 43 |
1 files changed, 40 insertions, 3 deletions
diff --git a/opendc-trace/opendc-trace-calcite/src/test/kotlin/org/opendc/trace/calcite/CalciteTest.kt b/opendc-trace/opendc-trace-calcite/src/test/kotlin/org/opendc/trace/calcite/CalciteTest.kt index f0e461e0..d2877d7c 100644 --- a/opendc-trace/opendc-trace-calcite/src/test/kotlin/org/opendc/trace/calcite/CalciteTest.kt +++ b/opendc-trace/opendc-trace-calcite/src/test/kotlin/org/opendc/trace/calcite/CalciteTest.kt @@ -26,9 +26,11 @@ import org.apache.calcite.jdbc.CalciteConnection import org.junit.jupiter.api.Assertions.* import org.junit.jupiter.api.Test import org.opendc.trace.Trace +import java.nio.file.Files import java.nio.file.Paths import java.sql.DriverManager import java.sql.ResultSet +import java.sql.Statement import java.sql.Timestamp import java.util.* @@ -99,21 +101,56 @@ class CalciteTest { } } + @Test + fun testInsert() { + val tmp = Files.createTempDirectory("opendc") + val newTrace = Trace.create(tmp, "opendc-vm") + + runStatement(newTrace) { stmt -> + val count = stmt.executeUpdate( + """ + INSERT INTO trace.resources (id, start_time, stop_time, cpu_count, cpu_capacity, mem_capacity) + VALUES (1234, '2013-08-12 13:35:46.0', '2013-09-11 13:39:58.0', 1, 2926.0, 1024.0) + """.trimIndent() + ) + assertEquals(1, count) + } + + runQuery(newTrace, "SELECT * FROM trace.resources") { rs -> + assertAll( + { assertTrue(rs.next()) }, + { assertEquals("1234", rs.getString("id")) }, + { assertEquals(1, rs.getInt("cpu_count")) }, + { assertEquals(Timestamp.valueOf("2013-08-12 13:35:46.0"), rs.getTimestamp("start_time")) }, + { assertEquals(2926.0, rs.getDouble("cpu_capacity")) }, + { assertEquals(1024.0, rs.getDouble("mem_capacity")) } + ) + } + } + /** * Helper function to run statement for the specified trace. */ private fun runQuery(trace: Trace, query: String, block: (ResultSet) -> Unit) { + runStatement(trace) { stmt -> + val rs = stmt.executeQuery(query) + rs.use { block(rs) } + } + } + + /** + * Helper function to run statement for the specified trace. + */ + private fun runStatement(trace: Trace, block: (Statement) -> Unit) { val info = Properties() info.setProperty("lex", "JAVA") val connection = DriverManager.getConnection("jdbc:calcite:", info).unwrap(CalciteConnection::class.java) connection.rootSchema.add("trace", TraceSchema(trace)) val stmt = connection.createStatement() - val results = stmt.executeQuery(query) try { - block(results) + block(stmt) } finally { - results.close() stmt.close() connection.close() } |
