diff --git a/jdk_8_maven/cs/rest-gui/genome-nexus/.gitignore b/jdk_8_maven/cs/rest-gui/genome-nexus/.gitignore index 39aa47a37..8ffa13817 100644 --- a/jdk_8_maven/cs/rest-gui/genome-nexus/.gitignore +++ b/jdk_8_maven/cs/rest-gui/genome-nexus/.gitignore @@ -6,7 +6,7 @@ pom.xml.next release.properties dependency-reduced-pom.xml buildNumber.properties -application.properties +#application.properties *.iml .idea/ *.ipr diff --git a/jdk_8_maven/cs/rest-gui/genome-nexus/web/pom.xml b/jdk_8_maven/cs/rest-gui/genome-nexus/web/pom.xml index 4f866a1f2..5fbc890ed 100644 --- a/jdk_8_maven/cs/rest-gui/genome-nexus/web/pom.xml +++ b/jdk_8_maven/cs/rest-gui/genome-nexus/web/pom.xml @@ -126,6 +126,10 @@ build-info repackage + + genome-nexus + sut + diff --git a/jdk_8_maven/cs/rest-gui/genome-nexus/web/src/main/resources/application.properties b/jdk_8_maven/cs/rest-gui/genome-nexus/web/src/main/resources/application.properties new file mode 100644 index 000000000..3abf886d5 --- /dev/null +++ b/jdk_8_maven/cs/rest-gui/genome-nexus/web/src/main/resources/application.properties @@ -0,0 +1,71 @@ +# VEP web API URL with additional parameters. Note that "VARIANT" field will be replaced with +# the actual variant value before each VEP request. +vep.url=http://grch37.rest.ensembl.org/vep/human/hgvs/VARIANT?content-type=application/json&xref_refseq=1&ccds=1&canonical=1&domains=1&hgvs=1&numbers=1&protein=1 + +# 200 is the max page size allowed by the public VEP service, it might be possible to increase this for a private instance +vep.max_page_size=200 + +# response timeout arg when sending requests to own VEP +# should only be turned on when pointing to own VEP +# 300 seconds is recommended with vep.max_page_size set to 5000 +# gn_vep.timeout.seconds=300 + +# it is possible to use your own VEP instance by running https://github.com/genome-nexus/genome-nexus-vep +# This is only the VEP part of the Ensembl REST API. +# e.g. when running on port 6060: +# gn_vep.region.url=http://localhost:6060/vep/human/region/VARIANT +# gn_vep.cache.version= +# gn_vep.server.version= +# Note that this overrides vep.url +# To get the full advantage of running your own VEP, several optimizations are +# required, please read documentation in +# https://github.com/genome-nexus/genome-nexus-vep + +# the gene external references URL +genexrefs.url=http://grch37.rest.ensembl.org/xrefs/id/ACCESSION?content-type=application/json + +# Mutation Assessor web API URL +#"VARIANT" will be replaced with actual variant upon each request. +mutationAssessor.url=http://mutationassessor.org/r3/?cm=var&var=VARIANT&frm=json&fts=input,rgaa,rgvt,msa,pdb,F_impact,F_score,vc_score,vs_score,info,var,gene,uprot,rsprot,gaps,msa_height,chr,rs_pos,rs_res,up_pos,up_res,cnt_cosmic,cnt_snps +# mutationAssessor url for GRCh38 +# mutationAssessor.url=http://mutationassessor.org/r3/?cm=var&var=hg38,VARIANT&frm=json&fts=input,rgaa,rgvt,msa,pdb,F_impact,F_score,vc_score,vs_score,info,var,gene,uprot,rsprot,gaps,msa_height,chr,rs_pos,rs_res,up_pos,up_res,cnt_cosmic,cnt_snps + +# my variant info web API URL +#"VARIANT" will be replaced with actual variant upon each request. +myvariantinfo.url=https://myvariant.info/v1/variant/VARIANT +myvariantinfo.max_page_size=200 +# myvariantinfo url for GRCh38 +# myvariantinfo.url=https://myvariant.info/v1/variant/VARIANT?assembly=hg38 + +# PDB header web service URL +pdb.header_service_url=http://files.rcsb.org/header/PDB_ID.pdb + +# MongoDB URI in the form of mongodb://:@:/ +spring.data.mongodb.uri=mongodb://127.0.0.1:27017/annotator + +# Server port number for the embedded tomcat. This property is required only when building +# a jar file, and ignored when building a war file. +server.port=38080 +genomenexus.server.version=1.0.2 + +# For testing use same embeded mongo version as genome-nexus-importer +# https://github.com/genome-nexus/genome-nexus-importer/blob/master/Dockerfile#L1 +spring.mongodb.embedded.version=3.6.2 + +# enable compression when running embedded tomcat +server.compression.enabled=true +server.compression.min-response-size=2048 +server.compression.mime-types=application/json,application/xml,text/html,text/xml,text/plain,application/javascript,text/css + +# increase the header size limitation +server.max-http-header-size=10000000 + +# include full git info in /actuator/info endpoint +management.info.git.mode=full + +# oncokb +oncokb.url=https://www.oncokb.org/api/v1/annotate/mutations/byProteinChange?PROTEINCHANGE + +# For testing use same embeded mongo version as genome-nexus-importer +# https://github.com/genome-nexus/genome-nexus-importer/blob/master/Dockerfile#L1 +spring.mongodb.embedded.version=3.6.2 diff --git a/jdk_8_maven/cs/rest-gui/pom.xml b/jdk_8_maven/cs/rest-gui/pom.xml index d3aefb9a2..79045db3f 100644 --- a/jdk_8_maven/cs/rest-gui/pom.xml +++ b/jdk_8_maven/cs/rest-gui/pom.xml @@ -15,6 +15,7 @@ ocvn gestaohospital + genome-nexus diff --git a/jdk_8_maven/em/embedded/rest/genome-nexus/pom.xml b/jdk_8_maven/em/embedded/rest/genome-nexus/pom.xml new file mode 100644 index 000000000..1053f1856 --- /dev/null +++ b/jdk_8_maven/em/embedded/rest/genome-nexus/pom.xml @@ -0,0 +1,51 @@ + + + + 4.0.0 + + + 3.6.2 + + + evomaster-benchmark-em-embedded-rest-genome-nexus + jar + + + org.evomaster + evomaster-benchmark-em-embedded-rest + 1.5.1-SNAPSHOT + + + + + + org.mongodb + mongo-java-driver + ${mongo.version} + + + org.cbioportal.genome_nexus + web + 1.1.49 + + + org.testcontainers + testcontainers + compile + + + junit + junit + compile + 4.11 + + + org.springframework + spring-jdbc + 5.3.9 + + + + + \ No newline at end of file diff --git a/jdk_8_maven/em/embedded/rest/genome-nexus/src/main/java/org/cbioportal/genome_nexus/EmbeddedEvoMasterController.java b/jdk_8_maven/em/embedded/rest/genome-nexus/src/main/java/org/cbioportal/genome_nexus/EmbeddedEvoMasterController.java new file mode 100644 index 000000000..4144860c0 --- /dev/null +++ b/jdk_8_maven/em/embedded/rest/genome-nexus/src/main/java/org/cbioportal/genome_nexus/EmbeddedEvoMasterController.java @@ -0,0 +1,133 @@ +package org.cbioportal.genome_nexus; + +import com.mongodb.MongoClient; +import org.evomaster.client.java.controller.EmbeddedSutController; +import org.evomaster.client.java.controller.InstrumentedSutStarter; +import org.evomaster.client.java.controller.api.dto.AuthenticationDto; +import org.evomaster.client.java.controller.api.dto.SutInfoDto; +import org.evomaster.client.java.controller.internal.db.DbSpecification; +import org.evomaster.client.java.controller.problem.ProblemInfo; +import org.evomaster.client.java.controller.problem.RestProblem; +import org.springframework.boot.SpringApplication; +import org.springframework.context.ConfigurableApplicationContext; +import org.testcontainers.containers.GenericContainer; + +import java.util.List; +import java.util.Map; + + +/** + * Class used to start/stop the SUT. This will be controller by the EvoMaster process + */ +public class EmbeddedEvoMasterController extends EmbeddedSutController { + + public static void main(String[] args) { + + int port = 40100; + if (args.length > 0) { + port = Integer.parseInt(args[0]); + } + + EmbeddedEvoMasterController controller = new EmbeddedEvoMasterController(port); + InstrumentedSutStarter starter = new InstrumentedSutStarter(controller); + + starter.start(); + } + + + private ConfigurableApplicationContext ctx; + + private static final int MONGODB_PORT = 27017; + + private static final String MONGODB_VERSION = "3.6.2"; + + private static final String MONGODB_DATABASE_NAME = "genome"; + + private static final GenericContainer mongodbContainer = new GenericContainer("mongo:" + MONGODB_VERSION) + .withExposedPorts(MONGODB_PORT); + + + public EmbeddedEvoMasterController() { + this(0); + } + + public EmbeddedEvoMasterController(int port) { + setControllerPort(port); + } + + + @Override + public String startSut() { + + mongodbContainer.start(); + + ctx = SpringApplication.run(GenomeNexusAnnotation.class, + new String[]{"--server.port=0", + "--spring.data.mongodb.uri=mongodb://" + mongodbContainer.getContainerIpAddress() + ":" + mongodbContainer.getMappedPort(MONGODB_PORT) + "/" + MONGODB_DATABASE_NAME, + "--spring.cache.type=NONE" + }); + + return "http://localhost:" + getSutPort(); + } + + protected int getSutPort() { + return (Integer) ((Map) ctx.getEnvironment() + .getPropertySources().get("server.ports").getSource()) + .get("local.server.port"); + } + + + @Override + public boolean isSutRunning() { + return ctx != null && ctx.isRunning(); + } + + @Override + public void stopSut() { + ctx.stop(); + ctx.close(); + + mongodbContainer.stop(); + } + + @Override + public String getPackagePrefixesToCover() { + return "org.cbioportal.genome_nexus."; + } + + @Override + public void resetStateOfSUT() { + MongoClient mongoClient = new MongoClient(mongodbContainer.getContainerIpAddress(), + mongodbContainer.getMappedPort(MONGODB_PORT)); + + mongoClient.getDatabase(MONGODB_DATABASE_NAME).drop(); + } + + + @Override + public List getDbSpecifications() { + return null; + } + + + @Override + public List getInfoForAuthentication() { + return null; + } + + + @Override + public ProblemInfo getProblemInfo() { + return new RestProblem( + "http://localhost:" + getSutPort() + "/v2/api-docs", + null + ); + } + + @Override + public SutInfoDto.OutputFormat getPreferredOutputFormat() { + return SutInfoDto.OutputFormat.JAVA_JUNIT_4; + } + + +} diff --git a/jdk_8_maven/em/embedded/rest/pom.xml b/jdk_8_maven/em/embedded/rest/pom.xml index ad875b4ae..a91673a15 100644 --- a/jdk_8_maven/em/embedded/rest/pom.xml +++ b/jdk_8_maven/em/embedded/rest/pom.xml @@ -24,6 +24,7 @@ languagetool restcountries gestaohospital + genome-nexus \ No newline at end of file