This is an automated email from the ASF dual-hosted git repository.
machristie pushed a commit to branch airavata-v2-refactoring
in repository https://gitbox.apache.org/repos/asf/airavata.git
The following commit(s) were added to refs/heads/airavata-v2-refactoring by
this push:
new 48e6170f51 Test for ExecutionHandler to verify mappings
48e6170f51 is described below
commit 48e6170f517245cda0f15e35342e5d1db1c392df
Author: Marcus Christie <[email protected]>
AuthorDate: Wed May 31 14:52:25 2023 -0400
Test for ExecutionHandler to verify mappings
---
modules/airavata-apis/airavata-apis-client/pom.xml | 11 +++--
modules/airavata-apis/airavata-apis-server/pom.xml | 8 +++-
.../airavata/apis/handlers/ExecutionHandler.java | 14 +++++--
.../apis/handlers/ExecutionHandlerTest.java | 48 ++++++++++++++++++++++
.../airavata/apis/handlers/TestStreamObserver.java | 36 ++++++++++++++++
5 files changed, 109 insertions(+), 8 deletions(-)
diff --git a/modules/airavata-apis/airavata-apis-client/pom.xml
b/modules/airavata-apis/airavata-apis-client/pom.xml
index 806092c066..cdabf97000 100644
--- a/modules/airavata-apis/airavata-apis-client/pom.xml
+++ b/modules/airavata-apis/airavata-apis-client/pom.xml
@@ -1,7 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.airavata</groupId>
@@ -17,6 +16,12 @@
<artifactId>airavata-apis-stub</artifactId>
<version>${project.version}</version>
</dependency>
+ <dependency>
+ <groupId>io.grpc</groupId>
+ <artifactId>grpc-netty-shaded</artifactId>
+ <version>${grpc.version}</version>
+ <scope>runtime</scope>
+ </dependency>
</dependencies>
<properties>
<maven.compiler.source>18</maven.compiler.source>
@@ -24,4 +29,4 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
-</project>
\ No newline at end of file
+</project>
diff --git a/modules/airavata-apis/airavata-apis-server/pom.xml
b/modules/airavata-apis/airavata-apis-server/pom.xml
index d365efc46c..b25b9ecee0 100644
--- a/modules/airavata-apis/airavata-apis-server/pom.xml
+++ b/modules/airavata-apis/airavata-apis-server/pom.xml
@@ -69,6 +69,12 @@
</exclusion>
</exclusions>
</dependency>
+ <dependency>
+ <groupId>org.springframework.boot</groupId>
+ <artifactId>spring-boot-starter-test</artifactId>
+ <version>${spring.boot.data.jpa}</version>
+ <scope>test</scope>
+ </dependency>
</dependencies>
<properties>
<maven.compiler.source>18</maven.compiler.source>
@@ -77,4 +83,4 @@
</properties>
-</project>
\ No newline at end of file
+</project>
diff --git
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/handlers/ExecutionHandler.java
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/handlers/ExecutionHandler.java
index eb4415d721..664e460722 100644
---
a/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/handlers/ExecutionHandler.java
+++
b/modules/airavata-apis/airavata-apis-server/src/main/java/org/apache/airavata/apis/handlers/ExecutionHandler.java
@@ -1,6 +1,7 @@
package org.apache.airavata.apis.handlers;
import io.grpc.stub.StreamObserver;
+import org.apache.airavata.api.execution.stubs.Experiment;
import org.apache.airavata.api.execution.stubs.RunConfiguration;
import org.apache.airavata.api.gateway.*;
import org.apache.airavata.apis.db.entity.ExperimentEntity;
@@ -25,18 +26,23 @@ public class ExecutionHandler extends
ExecutionServiceGrpc.ExecutionServiceImplB
@Override
public void registerExperiment(ExperimentRegisterRequest request,
StreamObserver<ExperimentRegisterResponse> responseObserver) {
+ Experiment experiment = request.getExperiment();
ExperimentEntity experimentEntity = new ExperimentEntity();
-
experimentEntity.setExperimentName(request.getExperiment().getExperimentName());
-
experimentEntity.setDescription(request.getExperiment().getDescription());
+ experimentEntity.setExperimentName(experiment.getExperimentName());
+ experimentEntity.setDescription(experiment.getDescription());
+ experimentEntity.setCreationTime(experiment.getCreationTime());
List<RunConfigurationEntity> runConfigs = new ArrayList<>();
- for(RunConfiguration rc: request.getExperiment().getRunConfigsList()) {
+ for (RunConfiguration rc : experiment.getRunConfigsList()) {
RunConfigurationEntity runConfigurationEntity = new
RunConfigurationEntity();
// Fill
}
experimentEntity.setRunConfigs(runConfigs);
- experimentRepository.save(experimentEntity);
+ ExperimentEntity savedExperimentEntity =
experimentRepository.save(experimentEntity);
+ responseObserver.onNext(ExperimentRegisterResponse.newBuilder()
+
.setExperimentId(savedExperimentEntity.getExperimentId()).build());
+ responseObserver.onCompleted();
}
@Override
diff --git
a/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
b/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
new file mode 100644
index 0000000000..3987e829ea
--- /dev/null
+++
b/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/ExecutionHandlerTest.java
@@ -0,0 +1,48 @@
+package org.apache.airavata.apis.handlers;
+
+import org.apache.airavata.api.execution.stubs.Experiment;
+import org.apache.airavata.api.gateway.ExperimentRegisterRequest;
+import org.apache.airavata.api.gateway.ExperimentRegisterResponse;
+import org.apache.airavata.apis.db.entity.ExperimentEntity;
+import org.apache.airavata.apis.db.repository.ExperimentRepository;
+import org.junit.jupiter.api.Test;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
+
+@DataJpaTest
+public class ExecutionHandlerTest {
+
+ @Autowired
+ ExecutionHandler executionHandler;
+
+ @Autowired
+ ExperimentRepository experimentRepository;
+
+ @Test
+ void testExperimentMapping() {
+
+ Experiment experiment = Experiment.newBuilder()
+ .setCreationTime(System.currentTimeMillis())
+ .setDescription("Sample Exp")
+ .setExperimentName("Exp Name")
+ .build();
+
+ ExperimentRegisterRequest experimentRegisterRequest =
ExperimentRegisterRequest.newBuilder()
+ .setExperiment(experiment).build();
+
+ TestStreamObserver<ExperimentRegisterResponse> responseObserver = new
TestStreamObserver<>();
+ executionHandler.registerExperiment(experimentRegisterRequest,
responseObserver);
+
+ assertTrue(responseObserver.isCompleted());
+ String experimentId = responseObserver.getNext().getExperimentId();
+ ExperimentEntity experimentEntity =
experimentRepository.findById(experimentId).get();
+
+ assertEquals(experiment.getCreationTime(),
experimentEntity.getCreationTime());
+ assertEquals(experiment.getDescription(),
experimentEntity.getDescription());
+ assertEquals(experiment.getExperimentName(),
experimentEntity.getExperimentName());
+ }
+
+}
diff --git
a/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/TestStreamObserver.java
b/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/TestStreamObserver.java
new file mode 100644
index 0000000000..cdf15aa974
--- /dev/null
+++
b/modules/airavata-apis/airavata-apis-server/src/test/java/org/apache/airavata/apis/handlers/TestStreamObserver.java
@@ -0,0 +1,36 @@
+package org.apache.airavata.apis.handlers;
+
+import io.grpc.stub.StreamObserver;
+
+public final class TestStreamObserver<T> implements StreamObserver<T> {
+ T next;
+ Throwable error;
+ boolean completed = false;
+
+ @Override
+ public void onNext(T value) {
+ this.next = value;
+ }
+
+ @Override
+ public void onError(Throwable t) {
+ this.error = t;
+ }
+
+ @Override
+ public void onCompleted() {
+ this.completed = true;
+ }
+
+ public T getNext() {
+ return next;
+ }
+
+ public Throwable getError() {
+ return error;
+ }
+
+ public boolean isCompleted() {
+ return completed;
+ }
+}