Skip to content

Commit

Permalink
test: refactor so tests start quicker and there is a 'testFast' optio…
Browse files Browse the repository at this point in the history
…n to skip slow tests (#2498)

* test: refactor so tests start quicker and there is a 'testFast' option to skip slow tests

* Update dev_quickstart.md

* fix code smells

* fix code smells

* fix dealing with 'v' to without

* typo

* remove changes to wrong branch
  • Loading branch information
mswertz authored Jul 5, 2023
1 parent 49a1b7f commit 6124850
Show file tree
Hide file tree
Showing 31 changed files with 93 additions and 23 deletions.
22 changes: 18 additions & 4 deletions backend/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -95,12 +95,26 @@ subprojects {
test.outputs.upToDateWhen { false }
}

//enable environment variables to be set by test
tasks.test {
test {
jvmArgs("--add-opens=java.base/java.util=ALL-UNNAMED")
useJUnitPlatform ()
failFast true
testLogging {
events "passed", "skipped", "failed" //, "standardOut", "standardError"

showExceptions true
exceptionFormat "full"
showCauses true
showStackTraces true

showStandardStreams = false
}
}
test {
useJUnitPlatform()
tasks.register('testFast', Test) {
jvmArgs("--add-opens=java.base/java.util=ALL-UNNAMED")
useJUnitPlatform {
excludeTags "slow"
}
failFast true
testLogging {
events "passed", "skipped", "failed" //, "standardOut", "standardError"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,15 @@

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.MethodOrderer;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.TestMethodOrder;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
import org.molgenis.emx2.sql.TestDatabaseFactory;

@TestMethodOrder(MethodOrderer.MethodName.class)
@Tag("slow")
public class TestLoaders {
public static final String COHORT_STAGING = "CohortStaging";
public static final String NETWORK_STAGING = "NetworkStaging";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.nio.file.Files;
import java.nio.file.Path;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.*;
import org.molgenis.emx2.datamodels.PetStoreLoader;
Expand All @@ -18,6 +19,7 @@
import org.molgenis.emx2.io.tablestore.TableStoreForXlsxFile;
import org.molgenis.emx2.sql.TestDatabaseFactory;

@Tag("slow")
public class TestColumnTypeIsFile {

private static final String SCHEMA_NAME = "TestColumnTypeIsFile";
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,12 @@
import java.nio.file.Path;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Row;
import org.molgenis.emx2.io.tablestore.TableStoreForXlsxFile;

@Tag("slow")
public class TestExcelStore {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import java.io.IOException;
import java.util.List;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.*;
import org.molgenis.emx2.datamodels.PetStoreLoader;
Expand All @@ -14,6 +15,7 @@
import org.molgenis.emx2.io.emx2.Emx2;
import org.molgenis.emx2.sql.TestDatabaseFactory;

@Tag("slow")
public class TestImportExportAllExamples {

static Database db;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.nio.file.Path;
import java.util.Comparator;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
Expand All @@ -14,6 +15,7 @@
import org.molgenis.emx2.sql.TestDatabaseFactory;
import org.molgenis.emx2.utils.StopWatch;

@Tag("slow")
public class TestImportExportEmx2MetadataIODataAndMetadata {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import java.io.File;
import java.util.List;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Row;
Expand All @@ -15,6 +16,7 @@
import org.molgenis.emx2.io.tablestore.TableStoreForCsvInZipFile;
import org.molgenis.emx2.sql.TestDatabaseFactory;

@Tag("slow")
public class TestLegacyImport {
static Database db;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,13 +14,15 @@
import java.util.UUID;
import java.util.stream.Collectors;
import java.util.stream.StreamSupport;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.MolgenisException;
import org.molgenis.emx2.Row;
import org.molgenis.emx2.datamodels.util.CompareTools;
import org.molgenis.emx2.io.tablestore.*;
import org.molgenis.emx2.utils.StopWatch;

@Tag("slow")
public class TestReadWriteStores {
@Test
public void testCsvDirectoryStore() throws IOException {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.io.StringWriter;
import java.nio.file.Path;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
Expand All @@ -16,6 +17,7 @@
import org.molgenis.emx2.sql.TestDatabaseFactory;
import org.molgenis.emx2.utils.StopWatch;

@Tag("slow")
public class LinkedDataServiceTest {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,11 +5,13 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.beaconv2.endpoints.EntryTypes;
import org.molgenis.emx2.json.JsonUtil;
import spark.Request;

@Tag("slow")
public class Beaconv2_EntryTypesTest {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import com.fasterxml.jackson.core.JsonProcessingException;
import java.util.List;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
Expand All @@ -19,6 +20,7 @@
import spark.Request;
import spark.Response;

@Tag("slow")
public class Beaconv2_ModelEndpointsTest {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import java.util.HashMap;
import java.util.Map;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.*;
import org.molgenis.emx2.datamodels.FAIRDataHubLoader;
Expand All @@ -22,6 +23,7 @@
* invalidate the overarching FDP Catalog, which must have 1+ datasets. But since this is a 'dataset
* problem', we leave it at that level.
*/
@Tag("slow")
public class FAIRDataPointBadDistributionInDatasetTest {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static org.mockito.Mockito.when;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
Expand All @@ -18,6 +19,7 @@
* FDP Distribution must be referenced as a table name by at least 1 FDP Dataset. If not, this
* Distribution should not be presented.
*/
@Tag("slow")
public class FAIRDataPointDistributionNotInDatasetTest {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static org.molgenis.emx2.fairdatapoint.FormatMimeTypes.formatToMediaType;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
Expand All @@ -17,6 +18,7 @@
import org.molgenis.emx2.sql.TestDatabaseFactory;
import spark.Request;

@Tag("slow")
public class FAIRDataPointTest {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import java.io.OutputStream;
import java.util.List;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;
Expand All @@ -18,6 +19,7 @@
import spark.Request;
import spark.Response;

@Tag("slow")
public class GraphGenomeTest {

static Database database;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,9 +4,9 @@

import org.junit.jupiter.api.Test;

public class ChangeLogUtilsTest {
class ChangeLogUtilsTest {
@Test
public void testBuildProcessAuditFunction() {
void testBuildProcessAuditFunction() {
String expectedFunction =
"""
CREATE OR REPLACE FUNCTION "pet store"."process_Pet_audit"() RETURNS TRIGGER AS $Pet_audit$
Expand All @@ -31,7 +31,7 @@ public void testBuildProcessAuditFunction() {
}

@Test
public void testBuildAuditTrigger() {
void testBuildAuditTrigger() {
String expectedTrigger =
"""
CREATE TRIGGER Pet_audit
Expand All @@ -43,7 +43,7 @@ public void testBuildAuditTrigger() {
}

@Test
public void testBuildAuditTriggerWithSpaceInTableName() {
void testBuildAuditTriggerWithSpaceInTableName() {
String expectedTrigger =
"""
CREATE TRIGGER My_pets_audit
Expand All @@ -55,14 +55,14 @@ public void testBuildAuditTriggerWithSpaceInTableName() {
}

@Test
public void testRemoveProcessAuditFunction() {
void testRemoveProcessAuditFunction() {
assertEquals(
"DROP FUNCTION IF EXISTS \"my schema\".\"process_my_table_audit\"() CASCADE",
ChangeLogUtils.buildProcessAuditFunctionRemove("my schema", "my table").strip());
}

@Test
public void testRemoveAuditTrigger() {
void testRemoveAuditTrigger() {
assertEquals(
"DROP TRIGGER IF EXISTS my_table_audit ON \"my schema\".\"my table\" CASCADE",
ChangeLogUtils.buildAuditTriggerRemove("my schema", "my table").strip());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,13 @@
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.mockito.Mock;
import org.molgenis.emx2.MolgenisException;

@Tag("slow")
// todo move to sql
class SqlSchemaTest {
@Mock SqlDatabase db;
@Mock SqlSchemaMetadata metadata;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,10 +10,12 @@
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.*;
import org.molgenis.emx2.utils.StopWatch;

@Tag("slow")
public class TestBatchRequestsForSpeed {
private static Database db;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
import static org.molgenis.emx2.TableMetadata.table;

import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Row;
import org.molgenis.emx2.Schema;
import org.molgenis.emx2.Table;

@Tag("slow")
public class TestComputedValue {
static Database db;
static Schema schema;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,27 @@
import java.util.Collections;
import java.util.List;
import org.jooq.DSLContext;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;
import org.molgenis.emx2.Database;
import org.molgenis.emx2.Schema;

public class InitTestDatabaseAndRunNonParallelTests {
class InitTestDatabaseAndRunNonParallelTests {

@BeforeAll
public static void createDatabase() {
@Test
void createDatabase() {
// we want this run only once and NOT parallel for total test suite
// AND we want run all other tests in parallel
// so tests are in molgenis-emx2-sql-it ('integration test')
// and 'init' only happens once, here
System.out.println("INITIALIZING DATABASE");
Database db = new SqlDatabase(true);
assertTrue(db.getDatabaseVersion() > 0);
}

@Test
public void testMigration2() {
@Tag("slow")
void testMigration2() {
SqlDatabase database = (SqlDatabase) TestDatabaseFactory.getTestDatabase();
database.dropCreateSchema("TestMigrations");

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,10 @@
import static org.molgenis.emx2.tasks.TaskStatus.COMPLETED;
import static org.molgenis.emx2.tasks.TaskStatus.ERROR;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Tag("slow")
public class TestScriptTask {

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,10 @@

import static org.junit.jupiter.api.Assertions.assertEquals;

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

@Tag("slow")
public class TestTask {

@Test
Expand Down
Loading

0 comments on commit 6124850

Please sign in to comment.