From 4f42872d8e8715d01049b2cef478f65841056e14 Mon Sep 17 00:00:00 2001 From: bbimber Date: Wed, 21 Jan 2026 17:14:01 -0800 Subject: [PATCH 1/2] Allow trigger scripts to customize their own timeout --- .../resources/queries/vehicle/Manufacturers.js | 9 +++++++++ src/org/labkey/test/tests/SimpleModuleTest.java | 14 ++++++++++++++ 2 files changed, 23 insertions(+) create mode 100644 modules/simpletest/resources/queries/vehicle/Manufacturers.js diff --git a/modules/simpletest/resources/queries/vehicle/Manufacturers.js b/modules/simpletest/resources/queries/vehicle/Manufacturers.js new file mode 100644 index 0000000000..38fd153c28 --- /dev/null +++ b/modules/simpletest/resources/queries/vehicle/Manufacturers.js @@ -0,0 +1,9 @@ +var console = require("console"); + +function beforeInsert(row, errors) { + // This is intended to force a timeout exception: + if (this.extraContext.scriptTimeout && !!this.extraContext.simulateScriptTimeout) { + console.log("Simulating script timeout!") + java.lang.Thread.sleep(100 + (this.extraContext.scriptTimeout * 1000)) + } +} \ No newline at end of file diff --git a/src/org/labkey/test/tests/SimpleModuleTest.java b/src/org/labkey/test/tests/SimpleModuleTest.java index 42766be2a4..c9846da812 100644 --- a/src/org/labkey/test/tests/SimpleModuleTest.java +++ b/src/org/labkey/test/tests/SimpleModuleTest.java @@ -288,6 +288,7 @@ protected void doVerifySteps() throws Exception doTestCustomLogin(); doTestFkLookupFilter(); doTestMetadataOverrideForCustomQuery(); + doTestScriptTimeout(); } @LogMethod @@ -346,6 +347,19 @@ private void doTestMetadataOverrideForCustomQuery() } + @LogMethod + public void doTestScriptTimeout() throws Exception + { + InsertRowsCommand insertCmdM = new InsertRowsCommand("vehicle", "Manufacturers"); + Map rowMapM = new HashMap<>(); + rowMapM.put("Name", "I_Should_Not_Succeed"); + insertCmdM.addRow(rowMapM); + insertCmdM.setExtraContext(Map.of("scriptTimeout", 3, "simulateScriptTimeout", true)); + RowsResponse respM = insertCmdM.execute(createDefaultConnection(), getProjectName()); + + // TODO: test result + } + private int getRowCount(String schemaName, String tableName) { pushLocation(); From 2bf10c2937753a0a117c17e057781883c89539f6 Mon Sep 17 00:00:00 2001 From: bbimber Date: Wed, 21 Jan 2026 17:36:56 -0800 Subject: [PATCH 2/2] Better testing --- src/org/labkey/test/tests/SimpleModuleTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/org/labkey/test/tests/SimpleModuleTest.java b/src/org/labkey/test/tests/SimpleModuleTest.java index c9846da812..6d9bc49018 100644 --- a/src/org/labkey/test/tests/SimpleModuleTest.java +++ b/src/org/labkey/test/tests/SimpleModuleTest.java @@ -355,9 +355,9 @@ public void doTestScriptTimeout() throws Exception rowMapM.put("Name", "I_Should_Not_Succeed"); insertCmdM.addRow(rowMapM); insertCmdM.setExtraContext(Map.of("scriptTimeout", 3, "simulateScriptTimeout", true)); - RowsResponse respM = insertCmdM.execute(createDefaultConnection(), getProjectName()); - - // TODO: test result + Assert.assertThrows(CommandException.class, () -> { + insertCmdM.execute(createDefaultConnection(), getProjectName()); + }); } private int getRowCount(String schemaName, String tableName)