diff --git a/codeflash/languages/java/instrumentation.py b/codeflash/languages/java/instrumentation.py index 4cc781bc5..5ff1d8d24 100644 --- a/codeflash/languages/java/instrumentation.py +++ b/codeflash/languages/java/instrumentation.py @@ -217,38 +217,39 @@ def _generate_sqlite_write_code( """ inv_id_str = invocation_id or str(call_counter) inner_indent = indent + " " + id_pair = f"{iter_id}_{call_counter}" return [ f"{indent}}} finally {{", - f"{inner_indent}long _cf_end{iter_id}_{call_counter}_finally = System.nanoTime();", - f"{inner_indent}long _cf_dur{iter_id}_{call_counter} = (_cf_end{iter_id}_{call_counter} != -1 ? _cf_end{iter_id}_{call_counter} : _cf_end{iter_id}_{call_counter}_finally) - _cf_start{iter_id}_{call_counter};", + f"{inner_indent}long _cf_end{id_pair}_finally = System.nanoTime();", + f"{inner_indent}long _cf_dur{id_pair} = (_cf_end{id_pair} != -1 ? _cf_end{id_pair} : _cf_end{id_pair}_finally) - _cf_start{id_pair};", f'{inner_indent}System.out.println("!######" + _cf_mod{iter_id} + ":" + _cf_cls{iter_id} + "." + _cf_test{iter_id} + ":" + _cf_fn{iter_id} + ":" + _cf_loop{iter_id} + ":" + "{inv_id_str}" + "######!");', f"{inner_indent}// Write to SQLite if output file is set", f"{inner_indent}if (_cf_outputFile{iter_id} != null && !_cf_outputFile{iter_id}.isEmpty()) {{", f"{inner_indent} try {{", f'{inner_indent} Class.forName("org.sqlite.JDBC");', - f'{inner_indent} try (Connection _cf_conn{iter_id}_{call_counter} = DriverManager.getConnection("jdbc:sqlite:" + _cf_outputFile{iter_id})) {{', - f"{inner_indent} try (java.sql.Statement _cf_stmt{iter_id}_{call_counter} = _cf_conn{iter_id}_{call_counter}.createStatement()) {{", - f'{inner_indent} _cf_stmt{iter_id}_{call_counter}.execute("CREATE TABLE IF NOT EXISTS test_results (" +', + f'{inner_indent} try (Connection _cf_conn{id_pair} = DriverManager.getConnection("jdbc:sqlite:" + _cf_outputFile{iter_id})) {{', + f"{inner_indent} try (java.sql.Statement _cf_stmt{id_pair} = _cf_conn{id_pair}.createStatement()) {{", + f'{inner_indent} _cf_stmt{id_pair}.execute("CREATE TABLE IF NOT EXISTS test_results (" +', f'{inner_indent} "test_module_path TEXT, test_class_name TEXT, test_function_name TEXT, " +', f'{inner_indent} "function_getting_tested TEXT, loop_index INTEGER, iteration_id TEXT, " +', f'{inner_indent} "runtime INTEGER, return_value BLOB, verification_type TEXT)");', f"{inner_indent} }}", - f'{inner_indent} String _cf_sql{iter_id}_{call_counter} = "INSERT INTO test_results VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";', - f"{inner_indent} try (PreparedStatement _cf_pstmt{iter_id}_{call_counter} = _cf_conn{iter_id}_{call_counter}.prepareStatement(_cf_sql{iter_id}_{call_counter})) {{", - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setString(1, _cf_mod{iter_id});", - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setString(2, _cf_cls{iter_id});", - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setString(3, _cf_test{iter_id});", - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setString(4, _cf_fn{iter_id});", - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setInt(5, _cf_loop{iter_id});", - f'{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setString(6, "{inv_id_str}");', - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setLong(7, _cf_dur{iter_id}_{call_counter});", - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setBytes(8, _cf_serializedResult{iter_id}_{call_counter});", - f'{inner_indent} _cf_pstmt{iter_id}_{call_counter}.setString(9, "function_call");', - f"{inner_indent} _cf_pstmt{iter_id}_{call_counter}.executeUpdate();", + f'{inner_indent} String _cf_sql{id_pair} = "INSERT INTO test_results VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";', + f"{inner_indent} try (PreparedStatement _cf_pstmt{id_pair} = _cf_conn{id_pair}.prepareStatement(_cf_sql{id_pair})) {{", + f"{inner_indent} _cf_pstmt{id_pair}.setString(1, _cf_mod{iter_id});", + f"{inner_indent} _cf_pstmt{id_pair}.setString(2, _cf_cls{iter_id});", + f"{inner_indent} _cf_pstmt{id_pair}.setString(3, _cf_test{iter_id});", + f"{inner_indent} _cf_pstmt{id_pair}.setString(4, _cf_fn{iter_id});", + f"{inner_indent} _cf_pstmt{id_pair}.setInt(5, _cf_loop{iter_id});", + f'{inner_indent} _cf_pstmt{id_pair}.setString(6, "{inv_id_str}");', + f"{inner_indent} _cf_pstmt{id_pair}.setLong(7, _cf_dur{id_pair});", + f"{inner_indent} _cf_pstmt{id_pair}.setBytes(8, _cf_serializedResult{id_pair});", + f'{inner_indent} _cf_pstmt{id_pair}.setString(9, "function_call");', + f"{inner_indent} _cf_pstmt{id_pair}.executeUpdate();", f"{inner_indent} }}", f"{inner_indent} }}", - f"{inner_indent} }} catch (Exception _cf_e{iter_id}_{call_counter}) {{", - f'{inner_indent} System.err.println("CodeflashHelper: SQLite error: " + _cf_e{iter_id}_{call_counter}.getMessage());', + f"{inner_indent} }} catch (Exception _cf_e{id_pair}) {{", + f'{inner_indent} System.err.println("CodeflashHelper: SQLite error: " + _cf_e{id_pair}.getMessage());', f"{inner_indent} }}", f"{inner_indent}}}", f"{indent}}}",