Skip to content

Commit 7c9fe0c

Browse files
committed
added DeploymentListener implementations and called ok tests
1 parent 5c2be85 commit 7c9fe0c

File tree

8 files changed

+132
-1
lines changed

8 files changed

+132
-1
lines changed

dsf-bpe/dsf-bpe-server/src/test/java/dev/dsf/bpe/integration/AbstractIntegrationTest.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,8 @@
5454
import org.slf4j.Logger;
5555
import org.slf4j.LoggerFactory;
5656
import org.springframework.web.SpringServletContainerInitializer;
57+
import org.springframework.web.context.support.AnnotationConfigWebApplicationContext;
58+
import org.springframework.web.context.support.WebApplicationContextUtils;
5759
import org.testcontainers.utility.DockerImageName;
5860

5961
import ca.uhn.fhir.context.FhirContext;
@@ -580,4 +582,10 @@ public FileVisitResult postVisitDirectory(Path dir, IOException exc) throws IOEx
580582
logger.error("Error while deleting directory {}, error: {}", directory.toString(), e.toString());
581583
}
582584
}
585+
586+
protected static AnnotationConfigWebApplicationContext getBpeSpringWebApplicationContext()
587+
{
588+
return (AnnotationConfigWebApplicationContext) WebApplicationContextUtils
589+
.getWebApplicationContext(bpeServer.getServletContext());
590+
}
583591
}

dsf-bpe/dsf-bpe-server/src/test/java/dev/dsf/bpe/integration/AbstractPluginIntegrationTest.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
import java.util.Date;
99
import java.util.List;
1010
import java.util.Map;
11+
import java.util.Optional;
1112
import java.util.UUID;
1213
import java.util.concurrent.BlockingDeque;
1314
import java.util.concurrent.LinkedBlockingDeque;
@@ -31,6 +32,9 @@
3132
import org.slf4j.Logger;
3233
import org.slf4j.LoggerFactory;
3334

35+
import dev.dsf.bpe.api.plugin.ProcessIdAndVersion;
36+
import dev.dsf.bpe.api.plugin.ProcessPlugin;
37+
import dev.dsf.bpe.plugin.ProcessPluginManager;
3438
import dev.dsf.fhir.client.WebsocketClient;
3539

3640
public abstract class AbstractPluginIntegrationTest extends AbstractIntegrationTest
@@ -202,4 +206,10 @@ private List<String> getTestMethodFailed(Task t)
202206
return t.getOutput().stream().filter(isTestMethodFailed()).map(TaskOutputComponent::getValue)
203207
.map(v -> ((StringType) v).getValue()).toList();
204208
}
209+
210+
protected static Optional<ProcessPlugin> getProcessPluginForTestProcess(String version)
211+
{
212+
ProcessPluginManager pluginManager = getBpeSpringWebApplicationContext().getBean(ProcessPluginManager.class);
213+
return pluginManager.getProcessPlugin(new ProcessIdAndVersion("dsfdev_test", version));
214+
}
205215
}

dsf-bpe/dsf-bpe-server/src/test/java/dev/dsf/bpe/integration/PluginV1IntegrationTest.java

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,17 @@
11
package dev.dsf.bpe.integration;
22

3+
import static org.junit.Assert.assertEquals;
4+
import static org.junit.Assert.assertNotNull;
5+
import static org.junit.Assert.assertTrue;
6+
7+
import java.util.List;
8+
import java.util.Optional;
9+
310
import org.junit.BeforeClass;
411
import org.junit.Test;
512

13+
import dev.dsf.bpe.api.plugin.ProcessPlugin;
14+
615
public class PluginV1IntegrationTest extends AbstractPluginIntegrationTest
716
{
817
private static final String PROCESS_VERSION = "1.0";
@@ -13,9 +22,22 @@ public PluginV1IntegrationTest()
1322
}
1423

1524
@BeforeClass
16-
public static void verifyProcessPluginResourcesExist() throws Exception
25+
public static void verifyProcessPluginResourcesExistAndListenerCalled() throws Exception
1726
{
1827
verifyProcessPluginResourcesExistForVersion(PROCESS_VERSION);
28+
29+
Optional<ProcessPlugin> processPlugin = getProcessPluginForTestProcess(PROCESS_VERSION);
30+
assertTrue(processPlugin.isPresent());
31+
32+
// not statically typed since listener class is loaded by plugin class loader
33+
Object listener = processPlugin.get().getApplicationContext().getBean("processPluginDeploymentStateListener");
34+
assertNotNull(listener);
35+
36+
@SuppressWarnings("unchecked")
37+
List<Boolean> ok = (List<Boolean>) listener.getClass().getMethod("getOk").invoke(listener);
38+
assertNotNull(ok);
39+
assertEquals(1, ok.size());
40+
assertTrue(ok.get(0));
1941
}
2042

2143
@Test

dsf-bpe/dsf-bpe-server/src/test/java/dev/dsf/bpe/integration/PluginV2IntegrationTest.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package dev.dsf.bpe.integration;
22

3+
import static org.junit.Assert.assertEquals;
34
import static org.junit.Assert.assertNotNull;
5+
import static org.junit.Assert.assertTrue;
46

57
import java.io.IOException;
68
import java.nio.file.Files;
79
import java.nio.file.Path;
810
import java.nio.file.Paths;
911
import java.security.cert.X509Certificate;
1012
import java.util.List;
13+
import java.util.Optional;
1114

1215
import org.hl7.fhir.r4.model.Binary;
1316
import org.junit.BeforeClass;
@@ -19,6 +22,7 @@
1922
import de.hsheilbronn.mi.utils.crypto.io.KeyStoreWriter;
2023
import de.hsheilbronn.mi.utils.crypto.io.PemWriter;
2124
import de.hsheilbronn.mi.utils.crypto.keystore.KeyStoreCreator;
25+
import dev.dsf.bpe.api.plugin.ProcessPlugin;
2226
import dev.dsf.fhir.authorization.read.ReadAccessHelperImpl;
2327
import jakarta.ws.rs.core.MediaType;
2428

@@ -35,6 +39,19 @@ public PluginV2IntegrationTest()
3539
public static void verifyProcessPluginResourcesExist() throws Exception
3640
{
3741
verifyProcessPluginResourcesExistForVersion(PROCESS_VERSION);
42+
43+
Optional<ProcessPlugin> processPlugin = getProcessPluginForTestProcess(PROCESS_VERSION);
44+
assertTrue(processPlugin.isPresent());
45+
46+
// not statically typed since listener class is loaded by plugin class loader
47+
Object listener = processPlugin.get().getApplicationContext().getBean("processPluginDeploymentListener");
48+
assertNotNull(listener);
49+
50+
@SuppressWarnings("unchecked")
51+
List<Boolean> ok = (List<Boolean>) listener.getClass().getMethod("getOk").invoke(listener);
52+
assertNotNull(ok);
53+
assertEquals(1, ok.size());
54+
assertTrue(ok.get(0));
3855
}
3956

4057
@Test
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package dev.dsf.bpe.test.deployment;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
import dev.dsf.bpe.v1.ProcessPluginDeploymentStateListener;
11+
12+
public class ProcessPluginDeploymentStateListenerTestImpl implements ProcessPluginDeploymentStateListener
13+
{
14+
private static final Logger logger = LoggerFactory.getLogger(ProcessPluginDeploymentStateListenerTestImpl.class);
15+
16+
private final List<Boolean> ok = new ArrayList<>();
17+
18+
@Override
19+
public void onProcessesDeployed(List<String> processes)
20+
{
21+
ok.add(processes != null && processes.size() == 1 && processes.contains("dsfdev_test"));
22+
logger.info("Deployed processes: {}", processes);
23+
}
24+
25+
public List<Boolean> getOk()
26+
{
27+
return Collections.unmodifiableList(ok);
28+
}
29+
}

dsf-bpe/dsf-bpe-test-plugin-v1/src/main/java/dev/dsf/bpe/test/spring/config/Config.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,13 +10,15 @@
1010
import org.springframework.context.annotation.Configuration;
1111
import org.springframework.context.annotation.Scope;
1212

13+
import dev.dsf.bpe.test.deployment.ProcessPluginDeploymentStateListenerTestImpl;
1314
import dev.dsf.bpe.test.service.ApiTest;
1415
import dev.dsf.bpe.test.service.EndpointProviderTest;
1516
import dev.dsf.bpe.test.service.EnvironmentVariableTest;
1617
import dev.dsf.bpe.test.service.OrganizationProviderTest;
1718
import dev.dsf.bpe.test.service.ProxyTest;
1819
import dev.dsf.bpe.test.service.TestActivitySelector;
1920
import dev.dsf.bpe.v1.ProcessPluginApi;
21+
import dev.dsf.bpe.v1.ProcessPluginDeploymentStateListener;
2022
import dev.dsf.bpe.v1.documentation.ProcessDocumentation;
2123

2224
@Configuration
@@ -83,4 +85,10 @@ public EnvironmentVariableTest environmentVariableTest()
8385
{
8486
return new EnvironmentVariableTest(api, envVariableMandatory, envVariableOptional, envVariableProxyUrl);
8587
}
88+
89+
@Bean
90+
public ProcessPluginDeploymentStateListener processPluginDeploymentStateListener()
91+
{
92+
return new ProcessPluginDeploymentStateListenerTestImpl();
93+
}
8694
}
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
package dev.dsf.bpe.test.deployment;
2+
3+
import java.util.ArrayList;
4+
import java.util.Collections;
5+
import java.util.List;
6+
7+
import org.slf4j.Logger;
8+
import org.slf4j.LoggerFactory;
9+
10+
import dev.dsf.bpe.v2.ProcessPluginDeploymentListener;
11+
12+
public class ProcessPluginDeploymentListenerTestImpl implements ProcessPluginDeploymentListener
13+
{
14+
private static final Logger logger = LoggerFactory.getLogger(ProcessPluginDeploymentListenerTestImpl.class);
15+
16+
private final List<Boolean> ok = new ArrayList<>();
17+
18+
@Override
19+
public void onProcessesDeployed(List<String> processes)
20+
{
21+
ok.add(processes != null && processes.size() == 1 && processes.contains("dsfdev_test"));
22+
logger.info("Deployed processes: {}", processes);
23+
}
24+
25+
public List<Boolean> getOk()
26+
{
27+
return Collections.unmodifiableList(ok);
28+
}
29+
}

dsf-bpe/dsf-bpe-test-plugin-v2/src/main/java/dev/dsf/bpe/test/spring/config/Config.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import org.springframework.context.annotation.Configuration;
1010
import org.springframework.context.annotation.Scope;
1111

12+
import dev.dsf.bpe.test.deployment.ProcessPluginDeploymentListenerTestImpl;
1213
import dev.dsf.bpe.test.fhir.FhirResourceModifierImpl;
1314
import dev.dsf.bpe.test.listener.StartFieldInjectionTestListener;
1415
import dev.dsf.bpe.test.listener.StartSendTaskTestListener;
@@ -35,6 +36,7 @@
3536
import dev.dsf.bpe.test.service.ProxyTest;
3637
import dev.dsf.bpe.test.service.TargetProviderTest;
3738
import dev.dsf.bpe.test.service.TestActivitySelector;
39+
import dev.dsf.bpe.v2.ProcessPluginDeploymentListener;
3840
import dev.dsf.bpe.v2.documentation.ProcessDocumentation;
3941
import dev.dsf.bpe.v2.fhir.FhirResourceModifier;
4042
import dev.dsf.bpe.v2.spring.ActivityPrototypeBeanCreator;
@@ -84,4 +86,10 @@ public EnvironmentVariableTest environmentVariableTest()
8486
{
8587
return new EnvironmentVariableTest(envVariableMandatory, envVariableOptional, envVariableProxyUrl);
8688
}
89+
90+
@Bean
91+
public ProcessPluginDeploymentListener processPluginDeploymentListener()
92+
{
93+
return new ProcessPluginDeploymentListenerTestImpl();
94+
}
8795
}

0 commit comments

Comments
 (0)