From bf07ed135f6792d0db16590199d1b035a80f13c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Thu, 30 Jan 2025 16:59:31 +0100 Subject: [PATCH 1/2] Scenario testing endpoints without full validation and compilation --- .../ui/api/TestingApiHttpService.scala | 4 +--- .../ui/process/test/ScenarioTestService.scala | 23 ++++++++++--------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/designer/server/src/main/scala/pl/touk/nussknacker/ui/api/TestingApiHttpService.scala b/designer/server/src/main/scala/pl/touk/nussknacker/ui/api/TestingApiHttpService.scala index ccc47517ee9..6a0bca1b4a4 100644 --- a/designer/server/src/main/scala/pl/touk/nussknacker/ui/api/TestingApiHttpService.scala +++ b/designer/server/src/main/scala/pl/touk/nussknacker/ui/api/TestingApiHttpService.scala @@ -48,7 +48,7 @@ class TestingApiHttpService( scenarioTestService = processingTypeToScenarioTestServices.forProcessingTypeUnsafe( scenarioWithDetails.processingType ) - inputParameters = scenarioTestService.testParametersDefinition( + inputParameters = scenarioTestService.validateAndGetTestParametersDefinition( request.scenarioGraph, scenarioWithDetails.processVersionUnsafe, scenarioWithDetails.isFragment @@ -73,7 +73,6 @@ class TestingApiHttpService( capabilities = scenarioTestService.getTestingCapabilities( scenarioGraph, scenarioWithDetails.processVersionUnsafe, - scenarioWithDetails.isFragment, ) } yield capabilities } @@ -93,7 +92,6 @@ class TestingApiHttpService( parametersDefinition = scenarioTestService.testUISourceParametersDefinition( scenarioGraph, scenarioWithDetails.processVersionUnsafe, - scenarioWithDetails.isFragment ) } yield parametersDefinition } diff --git a/designer/server/src/main/scala/pl/touk/nussknacker/ui/process/test/ScenarioTestService.scala b/designer/server/src/main/scala/pl/touk/nussknacker/ui/process/test/ScenarioTestService.scala index e905110d881..8f866506bf1 100644 --- a/designer/server/src/main/scala/pl/touk/nussknacker/ui/process/test/ScenarioTestService.scala +++ b/designer/server/src/main/scala/pl/touk/nussknacker/ui/process/test/ScenarioTestService.scala @@ -7,16 +7,16 @@ import pl.touk.nussknacker.engine.api.definition.{DualParameterEditor, Parameter import pl.touk.nussknacker.engine.api.editor.DualEditorMode import pl.touk.nussknacker.engine.api.graph.ScenarioGraph import pl.touk.nussknacker.engine.api.test.ScenarioTestData -import pl.touk.nussknacker.engine.api.typed.AssignabilityDeterminer import pl.touk.nussknacker.engine.api.typed.typing.Typed import pl.touk.nussknacker.engine.canonicalgraph.CanonicalProcess import pl.touk.nussknacker.engine.definition.test.{TestInfoProvider, TestingCapabilities} import pl.touk.nussknacker.engine.testmode.TestProcess.TestResults import pl.touk.nussknacker.restmodel.definition.UISourceParameters -import pl.touk.nussknacker.ui.api.description.NodesApiEndpoints.Dtos.TestSourceParameters import pl.touk.nussknacker.ui.api.TestDataSettings +import pl.touk.nussknacker.ui.api.description.NodesApiEndpoints.Dtos.TestSourceParameters import pl.touk.nussknacker.ui.definition.DefinitionsService import pl.touk.nussknacker.ui.process.deployment.ScenarioTestExecutorService +import pl.touk.nussknacker.ui.process.marshall.CanonicalProcessConverter import pl.touk.nussknacker.ui.processreport.{NodeCount, ProcessCounter, RawCount} import pl.touk.nussknacker.ui.security.api.LoggedUser import pl.touk.nussknacker.ui.uiresolving.UIProcessResolver @@ -35,15 +35,12 @@ class ScenarioTestService( def getTestingCapabilities( scenarioGraph: ScenarioGraph, processVersion: ProcessVersion, - isFragment: Boolean, - )( - implicit user: LoggedUser ): TestingCapabilities = { - val canonical = toCanonicalProcess(scenarioGraph, processVersion, isFragment) + val canonical = CanonicalProcessConverter.fromScenarioGraph(scenarioGraph, processVersion.processName) testInfoProvider.getTestingCapabilities(processVersion, canonical) } - def testParametersDefinition( + def validateAndGetTestParametersDefinition( scenarioGraph: ScenarioGraph, processVersion: ProcessVersion, isFragment: Boolean @@ -56,12 +53,16 @@ class ScenarioTestService( def testUISourceParametersDefinition( scenarioGraph: ScenarioGraph, processVersion: ProcessVersion, - isFragment: Boolean - )(implicit user: LoggedUser): List[UISourceParameters] = - testParametersDefinition(scenarioGraph, processVersion, isFragment) + ): List[UISourceParameters] = { + val canonical = CanonicalProcessConverter.fromScenarioGraph(scenarioGraph, processVersion.processName) + testInfoProvider + .getTestParameters(processVersion, canonical) .map { case (id, params) => UISourceParameters(id, params.map(DefinitionsService.createUIParameter)) } - .map { assignUserFriendlyEditor } + .map { + assignUserFriendlyEditor + } .toList + } def generateData( scenarioGraph: ScenarioGraph, From ae056ba4bfd35e8248a39ed43572107c8a3a06cd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Micha=C5=82=20Goworko?= Date: Fri, 31 Jan 2025 12:31:33 +0100 Subject: [PATCH 2/2] changelog --- docs/Changelog.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/docs/Changelog.md b/docs/Changelog.md index b3f50974193..96a026d3d04 100644 --- a/docs/Changelog.md +++ b/docs/Changelog.md @@ -74,6 +74,8 @@ * Introduced some default values: * For all - default `windowLength` is 1 hour * For `aggregate-session` - default `endSessionCondition` is now false +* Improved scenario visualization loading time + * [#7516](https://github.com/TouK/nussknacker/pull/7516) Scenario testing endpoints no longer perform full scenario compilation and validation ## 1.18