This is an automated email from the ASF dual-hosted git repository.
lesun pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-gobblin.git
The following commit(s) were added to refs/heads/master by this push:
new b021e9c [GOBBLIN-1365] Adds Github Action workflow for tests
b021e9c is described below
commit b021e9ca48f79cb36c94f3afba592e4603af9d91
Author: William Lo <[email protected]>
AuthorDate: Mon Jan 25 13:20:01 2021 -0800
[GOBBLIN-1365] Adds Github Action workflow for tests
Closes #3206 from Will-Lo/migrate-to-github-
actions
---
.github/workflows/build_and_test.yaml | 164 +++++++++++++++++++++
.travis.yml | 2 +
build.gradle | 1 +
.../gobblin/password/PasswordManagerTest.java | 2 +-
.../gobblin/cluster/ClusterIntegrationTest.java | 2 +-
.../gobblin/cluster/GobblinClusterKillTest.java | 6 +-
.../gobblin/cluster/GobblinTaskRunnerTest.java | 4 +-
.../cluster/HelixAssignedParticipantCheckTest.java | 2 +-
.../copy/converter/DecryptConverterTest.java | 2 +-
.../testing/TestMetastoreDatabaseServer.java | 8 +-
.../gobblin/kafka/writer/Kafka1DataWriterTest.java | 1 +
.../reporter/KafkaKeyValueProducerPusherTest.java | 1 +
.../metrics/reporter/KafkaProducerPusherTest.java | 1 +
.../src/test/resources/Holidays.xml | 140 ++++++++++++++++++
.../filebased/TextFileBasedSourceTest.java | 2 +-
.../tunnel/TestTunnelWithArbitraryTCPTraffic.java | 2 +-
.../java/org/apache/gobblin/tunnel/TunnelTest.java | 2 +-
.../gobblin/yarn/GobblinYarnAppLauncherTest.java | 4 +-
.../org/apache/gobblin/yarn/YarnServiceTest.java | 12 +-
.../yarn/YarnServiceTestWithExpiration.java | 4 +-
gradle/scripts/ci-support.gradle | 69 +++++++++
gradle/scripts/testSetup.gradle | 27 ++++
travis/test-coverage.sh | 2 +-
travis/test-default.sh | 2 +-
travis/test-group1.sh | 2 +-
25 files changed, 436 insertions(+), 28 deletions(-)
diff --git a/.github/workflows/build_and_test.yaml
b/.github/workflows/build_and_test.yaml
new file mode 100644
index 0000000..8c0bfe8
--- /dev/null
+++ b/.github/workflows/build_and_test.yaml
@@ -0,0 +1,164 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements. See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License. You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+name: Build and Run Tests
+
+on:
+ push:
+ # Publish only on `master`
+ branches:
+ - master
+ pull_request:
+ branches:
+ - master
+ release:
+ types: [published, edited]
+
+jobs:
+ build:
+ name: Build repository
+ runs-on: ubuntu-latest
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ # Stores external dependencies, can be further improved with Gradle 6.1
+ - name: Cache Gradle Dependencies
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ # Only rebuild cache if build.gradle is changed
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
+ restore-keys: ${{ runner.os }}-gradle
+ - name: Build repository
+ run: |
+ ./gradlew --no-daemon clean build -x test -x javadoc -x findbugsMain
-x findbugsTest -x checkstyleMain -x checkstyleJmh -x checkstyleTest
-Dorg.gradle.parallel=true
+
+ test_coverage:
+ runs-on: ubuntu-latest
+ name: Generate test coverage
+ needs: build
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Cache Gradle Dependencies
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ # Only rebuild cache if build.gradle is changed
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
+ restore-keys: ${{ runner.os }}-gradle
+ - name: Generate code coverage
+ run: |
+ ./gradlew -PskipTestGroup=disabledOnCI -Dorg.gradle.parallel=false
-DjacocoBuild=1 $GOBBLIN_GRADLE_OPTS jacocoTestCoverage
+
+ static_checks:
+ name: Run static checks
+ runs-on: ubuntu-latest
+ needs: build
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ # Stores external dependencies, can be further improved with Gradle 6.1
+ - name: Cache Gradle Dependencies
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ # Only rebuild cache if build.gradle is changed
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
+ restore-keys: ${{ runner.os }}-gradle
+ - name: Run CheckStyle and FindBugs
+ run: |
+ ./gradlew --no-daemon -x javadoc findbugsMain checkstyleMain
checkstyleTest checkstyleJmh
+
+ run_tests:
+ timeout-minutes: 60
+ env:
+ GOBBLIN_GRADLE_OPTS: "--no-daemon
-Dgobblin.metastore.testing.embeddedMysqlEnabled=false
-PusePreinstalledMysql=true"
+ strategy:
+ matrix:
+ test-group: ["Core Tests", "Service Tests", "Module Tests", "Other
Tests"]
+ fail-fast: false
+ runs-on: ubuntu-latest
+ needs: build
+ services:
+ mysql:
+ image: mysql:5.7.32
+ env:
+ MYSQL_USER: testUser
+ MYSQL_PASSWORD: testPassword
+ MYSQL_DATABASE: test
+ MYSQL_ROOT_PASSWORD: password
+ ports:
+ - 3306:3306
+ options: --health-cmd="mysqladmin ping" --health-interval=10s
--health-timeout=5s --health-retries=5
+ steps:
+ - name: Check out the repo
+ uses: actions/checkout@v2
+ - name: Set up JDK 1.8
+ uses: actions/setup-java@v1
+ with:
+ java-version: 1.8
+ - name: Verify mysql connection
+ run: |
+ sudo apt-get install -y mysql-client
+ mysql --host 127.0.0.1 --port 3306 -uroot -ppassword -e "SHOW
DATABASES"
+ - name: Cache Gradle Dependencies
+ uses: actions/cache@v2
+ with:
+ path: |
+ ~/.gradle/caches
+ ~/.gradle/wrapper
+ # Only rebuild cache if build.gradle is changed
+ key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle') }}
+ restore-keys: ${{ runner.os }}-gradle
+ - name: Run test group ${{ matrix.test-group }}
+ # Write retry logic as integration tests can fail due to timing out or
network problems
+ run: |
+ ./gradlew getGroupedTests -PgroupName="${{matrix.test-group}}" >
temp.txt
+ TASKS=$(sed -n 's/CI Task: //p' temp.txt)
+ echo $TASKS
+
+ n=0
+ until [ "$n" -ge 3 ]
+ do
+ ./gradlew -PskipTestGroup=disabledOnCI $GOBBLIN_GRADLE_OPTS $TASKS
-Dorg.gradle.parallel=false && break
+ n=$((n+1))
+ if [[ $n -lt 3 ]]; then
+ echo "Tests failed, retry attempt number $n"
+ else
+ exit 1
+ fi
+ sleep 10
+ done
diff --git a/.travis.yml b/.travis.yml
index 9053a5a..427e5fb 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -34,6 +34,8 @@ stages:
before_script:
- mysql -uroot -e "create user testUser identified by 'testPassword';"
+ - mysql -uroot -e "SET PASSWORD FOR 'root'@'localhost' =
PASSWORD('password')"
+
script:
- travis_retry ./travis/test.sh
- travis_retry ./gradlew jacocoTestReport
diff --git a/build.gradle b/build.gradle
index 7b0679c..3df7eb1 100644
--- a/build.gradle
+++ b/build.gradle
@@ -22,6 +22,7 @@ buildscript {
apply from: 'gradle/scripts/repositories.gradle'
apply from: 'gradle/scripts/defaultBuildProperties.gradle'
apply from: 'gradle/scripts/computeVersions.gradle'
+ apply from: 'gradle/scripts/ci-support.gradle'
apply from: file('gradle/scripts/buildscript.gradle'), to: buildscript
diff --git
a/gobblin-api/src/test/java/org/apache/gobblin/password/PasswordManagerTest.java
b/gobblin-api/src/test/java/org/apache/gobblin/password/PasswordManagerTest.java
index f462673..6382982 100644
---
a/gobblin-api/src/test/java/org/apache/gobblin/password/PasswordManagerTest.java
+++
b/gobblin-api/src/test/java/org/apache/gobblin/password/PasswordManagerTest.java
@@ -33,7 +33,7 @@ import org.testng.annotations.Test;
import com.google.common.io.Files;
-@Test(enabled=false, groups = {"disabledOnTravis"} )
+@Test(enabled=false, groups = {"disabledOnCI"} )
public class PasswordManagerTest {
@Test (enabled=false)
diff --git
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/ClusterIntegrationTest.java
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/ClusterIntegrationTest.java
index 2fedcb8..fb5b8e5 100644
---
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/ClusterIntegrationTest.java
+++
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/ClusterIntegrationTest.java
@@ -146,7 +146,7 @@ public class ClusterIntegrationTest {
* We confirm the execution by again inspecting the zNode and ensuring its
TargetState is START. </li>
* </ul>
*/
- @Test (enabled = false, dependsOnMethods = { "testJobShouldGetCancelled" },
groups = {"disabledOnTravis"})
+ @Test (enabled = false, dependsOnMethods = { "testJobShouldGetCancelled" },
groups = {"disabledOnCI"})
public void testJobRestartViaSpec() throws Exception {
Config jobConfigOverrides =
ClusterIntegrationTestUtils.buildSleepingJob(IntegrationJobCancelSuite.JOB_ID,
IntegrationJobCancelSuite.TASK_STATE_FILE);
diff --git
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinClusterKillTest.java
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinClusterKillTest.java
index 3fde3e7..4c039bf 100644
---
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinClusterKillTest.java
+++
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinClusterKillTest.java
@@ -59,7 +59,7 @@ import org.apache.gobblin.testing.AssertWithBackoff;
*/
// The kill tests are unreliable on Travis
// Disabled GobblinClusterKillTest until reliability improves
-@Test(enabled=false, groups = {"disabledOnTravis"}, singleThreaded = true)
+@Test(enabled=false, groups = {"disabledOnCI"}, singleThreaded = true)
public class GobblinClusterKillTest {
public final static Logger LOG =
LoggerFactory.getLogger(GobblinClusterKillTest.class);
public static final String CLASS_NAME_BASED_PATH =
"org/apache/gobblin/util/test/HelloWorldSource";
@@ -227,7 +227,7 @@ public class GobblinClusterKillTest {
// The kill tests are unreliable on Travis
// Disabled GobblinClusterKillTest until reliability improves
- // @Test(groups = { "disabledOnTravis" }, dependsOnMethods =
"testKillWorker")
+ // @Test(groups = { "disabledOnCI" }, dependsOnMethods = "testKillWorker")
public void testKillManager() throws IOException, TimeoutException,
InterruptedException {
// kill a manager to cause leader election. New leader will schedule a new
job.
_clusterManagers[0].disconnectHelixManager();
@@ -268,7 +268,7 @@ public class GobblinClusterKillTest {
// The kill tests are unreliable on Travis
// Disabled GobblinClusterKillTest until reliability improves
- // @Test(groups = { "disabledOnTravis" }, enabled=true, dependsOnMethods =
"testKillManager")
+ // @Test(groups = { "disabledOnCI" }, enabled=true, dependsOnMethods =
"testKillManager")
public void testRestartManager() throws IOException, TimeoutException,
InterruptedException {
_clusterManagers[0].disconnectHelixManager();
diff --git
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinTaskRunnerTest.java
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinTaskRunnerTest.java
index 534eb3b..448a91d 100644
---
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinTaskRunnerTest.java
+++
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/GobblinTaskRunnerTest.java
@@ -204,7 +204,7 @@ public class GobblinTaskRunnerTest {
Assert.assertTrue(true);
}
- @Test (groups = {"disabledOnTravis"})
+ @Test (groups = {"disabledOnCI"})
public void testTaskAssignmentAfterHelixConnectionRetry()
throws Exception {
Config jobConfigOverrides =
ClusterIntegrationTestUtils.buildSleepingJob(JOB_ID, TASK_STATE_FILE);
@@ -230,7 +230,7 @@ public class GobblinTaskRunnerTest {
helixManager.disconnect();
}
- @Test (groups = {"disabledOnTravis"}, dependsOnMethods =
"testSendReceiveShutdownMessage", expectedExceptions =
ExecutionException.class, expectedExceptionsMessageRegExp =
".*ContainerHealthCheckException.*")
+ @Test (groups = {"disabledOnCI"}, dependsOnMethods =
"testSendReceiveShutdownMessage", expectedExceptions =
ExecutionException.class, expectedExceptionsMessageRegExp =
".*ContainerHealthCheckException.*")
public void testShutdownOnHealthCheckFailure() throws Exception {
this.gobblinTaskRunnerHealthCheck.connectHelixManager();
diff --git
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/HelixAssignedParticipantCheckTest.java
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/HelixAssignedParticipantCheckTest.java
index 40c341e..57d9fd6 100644
---
a/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/HelixAssignedParticipantCheckTest.java
+++
b/gobblin-cluster/src/test/java/org/apache/gobblin/cluster/HelixAssignedParticipantCheckTest.java
@@ -56,7 +56,7 @@ public class HelixAssignedParticipantCheckTest {
InstanceType.SPECTATOR, zkConnectString);
}
- @Test (groups = {"disabledOnTravis"})
+ @Test (groups = {"disabledOnCI"})
//Test disabled on Travis because cluster integration tests are generally
flaky on Travis.
public void testExecute() throws Exception {
suite.startCluster();
diff --git
a/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/converter/DecryptConverterTest.java
b/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/converter/DecryptConverterTest.java
index 4e48e9a..93d45bc 100644
---
a/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/converter/DecryptConverterTest.java
+++
b/gobblin-data-management/src/test/java/org/apache/gobblin/data/management/copy/converter/DecryptConverterTest.java
@@ -48,7 +48,7 @@ import
org.apache.gobblin.data.management.copy.FileAwareInputStream;
/**
* Unit tests for {@link DecryptConverter}.
*/
-@Test(enabled=false, groups = { "gobblin.data.management.copy.converter",
"disabledOnTravis" })
+@Test(enabled=false, groups = { "gobblin.data.management.copy.converter",
"disabledOnCI" })
public class DecryptConverterTest {
private final File masterPwdFile = new File("masterPwd");
diff --git
a/gobblin-metastore/src/test/java/org/apache/gobblin/metastore/testing/TestMetastoreDatabaseServer.java
b/gobblin-metastore/src/test/java/org/apache/gobblin/metastore/testing/TestMetastoreDatabaseServer.java
index f2afd86..a18b9d3 100644
---
a/gobblin-metastore/src/test/java/org/apache/gobblin/metastore/testing/TestMetastoreDatabaseServer.java
+++
b/gobblin-metastore/src/test/java/org/apache/gobblin/metastore/testing/TestMetastoreDatabaseServer.java
@@ -52,6 +52,7 @@ class TestMetastoreDatabaseServer implements Closeable {
private static final String INFORMATION_SCHEMA = "information_schema";
private static final String ROOT_USER = "root";
+ private static final String ROOT_PASSWORD = "password";
private static final String DROP_DATABASE_TEMPLATE = "DROP DATABASE IF
EXISTS %s;";
private static final String CREATE_DATABASE_TEMPLATE = "CREATE DATABASE %s
CHARACTER SET = %s COLLATE = %s;";
private static final String ADD_USER_TEMPLATE = "GRANT ALL ON %s.* TO
'%s'@'%%';";
@@ -60,9 +61,9 @@ class TestMetastoreDatabaseServer implements Closeable {
public static final String EMBEDDED_MYSQL_ENABLED_KEY =
"embeddedMysqlEnabled";
public static final String EMBEDDED_MYSQL_ENABLED_FULL_KEY =
CONFIG_PREFIX + "." + EMBEDDED_MYSQL_ENABLED_KEY;
- public static final String DBUSER_NAME_KEY = "dbUserName";
+ public static final String DBUSER_NAME_KEY = "testUser";
public static final String DBUSER_NAME_FULL_KEY = CONFIG_PREFIX + "." +
DBUSER_NAME_KEY;
- public static final String DBUSER_PASSWORD_KEY = "dbUserPassword";
+ public static final String DBUSER_PASSWORD_KEY = "testPassword";
public static final String DBUSER_PASSWORD_FULL_KEY = CONFIG_PREFIX + "." +
DBUSER_PASSWORD_KEY;
public static final String DBHOST_KEY = "dbHost";
public static final String DBHOST_FULL_KEY = CONFIG_PREFIX + "." +
DBHOST_KEY;
@@ -153,7 +154,8 @@ class TestMetastoreDatabaseServer implements Closeable {
private MySqlJdbcUrl getInformationSchemaJdbcUrl() throws URISyntaxException
{
return getBaseJdbcUrl()
.setPath(INFORMATION_SCHEMA)
- .setUser(ROOT_USER);
+ .setUser(ROOT_USER)
+ .setPassword(ROOT_PASSWORD);
}
private Optional<Connection> getConnector(MySqlJdbcUrl jdbcUrl) throws
SQLException {
diff --git
a/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/kafka/writer/Kafka1DataWriterTest.java
b/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/kafka/writer/Kafka1DataWriterTest.java
index 8a6a7a0..bd0ddfb 100644
---
a/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/kafka/writer/Kafka1DataWriterTest.java
+++
b/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/kafka/writer/Kafka1DataWriterTest.java
@@ -46,6 +46,7 @@ import static org.mockito.Mockito.*;
@Slf4j
+@Test( groups = {"disabledOnCI"} )
public class Kafka1DataWriterTest {
diff --git
a/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaKeyValueProducerPusherTest.java
b/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaKeyValueProducerPusherTest.java
index 07b1905..089b1b2 100644
---
a/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaKeyValueProducerPusherTest.java
+++
b/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaKeyValueProducerPusherTest.java
@@ -39,6 +39,7 @@ import java.io.IOException;
/**
* Test {@link KafkaKeyValueProducerPusher}.
*/
+@Test( groups = {"disabledOnCI"} )
public class KafkaKeyValueProducerPusherTest {
public static final String TOPIC =
KafkaKeyValueProducerPusherTest.class.getSimpleName();
diff --git
a/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaProducerPusherTest.java
b/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaProducerPusherTest.java
index c369cdc..ca51f82 100644
---
a/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaProducerPusherTest.java
+++
b/gobblin-modules/gobblin-kafka-1/src/test/java/org/apache/gobblin/metrics/reporter/KafkaProducerPusherTest.java
@@ -37,6 +37,7 @@ import java.io.IOException;
/**
* Test {@link org.apache.gobblin.metrics.kafka.KafkaProducerPusher}.
*/
+@Test( groups = {"disabledOnCI"} )
public class KafkaProducerPusherTest {
public static final String TOPIC =
KafkaProducerPusherTest.class.getSimpleName();
diff --git
a/gobblin-modules/gobblin-kafka-common/src/test/resources/Holidays.xml
b/gobblin-modules/gobblin-kafka-common/src/test/resources/Holidays.xml
new file mode 100644
index 0000000..06b17d5
--- /dev/null
+++ b/gobblin-modules/gobblin-kafka-common/src/test/resources/Holidays.xml
@@ -0,0 +1,140 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<tns:Configuration hierarchy="ca" description="Canada"
xmlns:tns="http://www.example.org/Holiday"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.example.org/Holiday /Holiday.xsd">
+ <tns:Holidays>
+ <tns:Fixed month="JANUARY" day="1" descriptionPropertiesKey="NEW_YEAR"/>
+ <tns:Fixed month="JULY" day="1" descriptionPropertiesKey="NATIONAL_DAY"/>
+ <tns:Fixed month="DECEMBER" day="25" descriptionPropertiesKey="CHRISTMAS"/>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="SEPTEMBER"
descriptionPropertiesKey="LABOUR_DAY"/>
+ <tns:ChristianHoliday type="GOOD_FRIDAY"/>
+ <tns:ChristianHoliday type="EASTER" />
+ </tns:Holidays>
+ <tns:SubConfigurations hierarchy="on" description="Ontario">
+ <tns:Holidays>
+ <tns:Fixed month="DECEMBER" day="26"
descriptionPropertiesKey="BOXING_DAY"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="THIRD" weekday="MONDAY" month="FEBRUARY"
descriptionPropertiesKey="FAMILY_DAY"/>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="yt" description="Yukon">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="qc" description="Quebec">
+ <tns:Holidays>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ <tns:ChristianHoliday type="EASTER_MONDAY"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="ns" description="Nova Scotia">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="nb" description="New Brunswick">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="AUGUST"
descriptionPropertiesKey="NATIONAL_DAY"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="mb" description="Manitoba">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ <tns:FixedWeekday which="THIRD" weekday="MONDAY" month="FEBRUARY"
descriptionPropertiesKey="FAMILY_DAY"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="nt" description="Northwest Territories">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="AUGUST"
descriptionPropertiesKey="CIVIC"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="nu" description="Nunavut">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="AUGUST"
descriptionPropertiesKey="CIVIC"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="bc" description="British Columbia">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="AUGUST"
descriptionPropertiesKey="CIVIC"/>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="pe" description="Prince Edward Island">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="sk" description="Saskatchewan">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="THIRD" weekday="MONDAY" month="FEBRUARY"
descriptionPropertiesKey="FAMILY_DAY"/>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="AUGUST"
descriptionPropertiesKey="NATIONAL_DAY"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="ab" description="Alberta">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ <tns:RelativeToFixed descriptionPropertiesKey="VICTORIA_DAY">
+ <tns:Weekday>MONDAY</tns:Weekday>
+ <tns:When>BEFORE</tns:When>
+ <tns:Date month="MAY" day="24"/>
+ </tns:RelativeToFixed>
+ <tns:FixedWeekday which="FIRST" weekday="MONDAY" month="AUGUST"
descriptionPropertiesKey="HERITAGE"/>
+ <tns:FixedWeekday which="THIRD" weekday="MONDAY" month="FEBRUARY"
descriptionPropertiesKey="FAMILY_DAY"/>
+ <tns:FixedWeekday which="SECOND" weekday="MONDAY" month="OCTOBER"
descriptionPropertiesKey="THANKSGIVING"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+ <tns:SubConfigurations hierarchy="nl" description="Newfoundland and
Labrador">
+ <tns:Holidays>
+ <tns:Fixed month="NOVEMBER" day="11"
descriptionPropertiesKey="REMEMBRANCE"/>
+ </tns:Holidays>
+ </tns:SubConfigurations>
+</tns:Configuration>
diff --git
a/gobblin-runtime/src/test/java/org/apache/gobblin/source/extractor/filebased/TextFileBasedSourceTest.java
b/gobblin-runtime/src/test/java/org/apache/gobblin/source/extractor/filebased/TextFileBasedSourceTest.java
index e9cb993..ce21ec9 100644
---
a/gobblin-runtime/src/test/java/org/apache/gobblin/source/extractor/filebased/TextFileBasedSourceTest.java
+++
b/gobblin-runtime/src/test/java/org/apache/gobblin/source/extractor/filebased/TextFileBasedSourceTest.java
@@ -37,7 +37,7 @@ import org.apache.gobblin.writer.test.TestingEventBuses;
public class TextFileBasedSourceTest {
- @Test(enabled=false, groups = { "disabledOnTravis" })
+ @Test(enabled=false, groups = { "disabledOnCI" })
public void test() throws Exception {
File stateStoreDir = Files.createTempDir();
stateStoreDir.deleteOnExit();
diff --git
a/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TestTunnelWithArbitraryTCPTraffic.java
b/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TestTunnelWithArbitraryTCPTraffic.java
index f8bae8c..cd4fb7a 100644
---
a/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TestTunnelWithArbitraryTCPTraffic.java
+++
b/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TestTunnelWithArbitraryTCPTraffic.java
@@ -54,7 +54,7 @@ import org.testng.annotations.Test;
*
* @author [email protected]
*/
-@Test(enabled=false, singleThreaded = true, groups = { "gobblin.tunnel",
"disabledOnTravis" })
+@Test(enabled=false, singleThreaded = true, groups = { "gobblin.tunnel",
"disabledOnCI" })
public class TestTunnelWithArbitraryTCPTraffic {
private static final Logger LOG =
LoggerFactory.getLogger(TestTunnelWithArbitraryTCPTraffic.class);
diff --git
a/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TunnelTest.java
b/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TunnelTest.java
index 079dcaf..6fb1e75 100644
--- a/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TunnelTest.java
+++ b/gobblin-tunnel/src/test/java/org/apache/gobblin/tunnel/TunnelTest.java
@@ -53,7 +53,7 @@ import static org.testng.Assert.assertTrue;
*
* @author [email protected]
*/
-@Test(enabled=false, groups = { "gobblin.tunnel", "disabledOnTravis" })
+@Test(enabled=false, groups = { "gobblin.tunnel", "disabledOnCI" })
public class TunnelTest {
private ClientAndServer mockServer;
diff --git
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
index 46042c4..e0456fb 100644
---
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
+++
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/GobblinYarnAppLauncherTest.java
@@ -256,7 +256,7 @@ public class GobblinYarnAppLauncherTest implements
HelixMessageTestBase {
* application successfully. This works fine on local machine though. So
disabling this and the test
* below that depends on it on Travis-CI.
*/
- @Test(enabled=false, groups = { "disabledOnTravis" }, dependsOnMethods =
"testCreateHelixCluster")
+ @Test(enabled=false, groups = { "disabledOnCI" }, dependsOnMethods =
"testCreateHelixCluster")
public void testSetupAndSubmitApplication() throws Exception {
HelixUtils.createGobblinHelixCluster(
this.config.getString(GobblinClusterConfigurationKeys.ZK_CONNECTION_STRING_KEY),
@@ -285,7 +285,7 @@ public class GobblinYarnAppLauncherTest implements
HelixMessageTestBase {
YarnApplicationState.RUNNING, "Application may have aborted");
}
- @Test(enabled=false, groups = { "disabledOnTravis" }, dependsOnMethods =
"testSetupAndSubmitApplication")
+ @Test(enabled=false, groups = { "disabledOnCI" }, dependsOnMethods =
"testSetupAndSubmitApplication")
public void testGetReconnectableApplicationId() throws Exception {
Assert.assertEquals(this.gobblinYarnAppLauncher.getReconnectableApplicationId().get(),
this.applicationId);
this.yarnClient.killApplication(this.applicationId);
diff --git
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTest.java
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTest.java
index 3266298..215e1bd 100644
--- a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTest.java
+++ b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTest.java
@@ -76,7 +76,7 @@ import org.apache.gobblin.testing.AssertWithBackoff;
/**
* Tests for {@link YarnService}.
*/
-@Test(groups = {"gobblin.yarn", "disabledOnTravis"}, singleThreaded=true)
+@Test(groups = {"gobblin.yarn", "disabledOnCI"}, singleThreaded=true)
public class YarnServiceTest {
final Logger LOG = LoggerFactory.getLogger(YarnServiceTest.class);
@@ -205,7 +205,7 @@ public class YarnServiceTest {
* Test that the dynamic config is added to the config specified when the
{@link GobblinApplicationMaster}
* is instantiated.
*/
- @Test(groups = {"gobblin.yarn", "disabledOnTravis"})
+ @Test(groups = {"gobblin.yarn", "disabledOnCI"})
public void testScaleUp() {
this.yarnService.requestTargetNumberOfContainers(10,
Collections.EMPTY_SET);
@@ -217,7 +217,7 @@ public class YarnServiceTest {
Assert.assertEquals(this.yarnService.getMatchingRequestsList(64,
1).size(), 0);
}
- @Test(groups = {"gobblin.yarn", "disabledOnTravis"}, dependsOnMethods =
"testScaleUp")
+ @Test(groups = {"gobblin.yarn", "disabledOnCI"}, dependsOnMethods =
"testScaleUp")
public void testScaleDownWithInUseInstances() {
Set<String> inUseInstances = new HashSet<>();
@@ -237,7 +237,7 @@ public class YarnServiceTest {
}
- @Test(groups = {"gobblin.yarn", "disabledOnTravis"}, dependsOnMethods =
"testScaleDownWithInUseInstances")
+ @Test(groups = {"gobblin.yarn", "disabledOnCI"}, dependsOnMethods =
"testScaleDownWithInUseInstances")
public void testScaleDown() throws Exception {
this.yarnService.requestTargetNumberOfContainers(4, Collections.EMPTY_SET);
@@ -246,7 +246,7 @@ public class YarnServiceTest {
}
// Keep this test last since it interferes with the container counts in the
prior tests.
- @Test(groups = {"gobblin.yarn", "disabledOnTravis"}, dependsOnMethods =
"testScaleDown")
+ @Test(groups = {"gobblin.yarn", "disabledOnCI"}, dependsOnMethods =
"testScaleDown")
public void testReleasedContainerCache() throws Exception {
Config modifiedConfig = this.config
.withValue(GobblinYarnConfigurationKeys.RELEASED_CONTAINERS_CACHE_EXPIRY_SECS,
ConfigValueFactory.fromAnyRef("2"));
@@ -266,7 +266,7 @@ public class YarnServiceTest {
Assert.assertTrue(yarnService.getReleasedContainerCache().getIfPresent(containerId1)
== null);
}
- @Test(groups = {"gobblin.yarn", "disabledOnTravis"}, dependsOnMethods =
"testReleasedContainerCache")
+ @Test(groups = {"gobblin.yarn", "disabledOnCI"}, dependsOnMethods =
"testReleasedContainerCache")
public void testBuildContainerCommand() throws Exception {
Config modifiedConfig = this.config
.withValue(GobblinYarnConfigurationKeys.CONTAINER_JVM_MEMORY_OVERHEAD_MBS_KEY,
ConfigValueFactory.fromAnyRef("10"))
diff --git
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTestWithExpiration.java
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTestWithExpiration.java
index 564647c..3e876a3 100644
---
a/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTestWithExpiration.java
+++
b/gobblin-yarn/src/test/java/org/apache/gobblin/yarn/YarnServiceTestWithExpiration.java
@@ -70,7 +70,7 @@ import org.testng.annotations.Test;
/**
* Tests for {@link YarnService}.
*/
-@Test(groups = {"gobblin.yarn", "disabledOnTravis"})
+@Test(groups = {"gobblin.yarn", "disabledOnCI"})
public class YarnServiceTestWithExpiration {
final Logger LOG = LoggerFactory.getLogger(YarnServiceTest.class);
@@ -201,7 +201,7 @@ public class YarnServiceTestWithExpiration {
* Test that the yarn service can handle onStartContainerError right
*/
- @Test(groups = {"gobblin.yarn", "disabledOnTravis"})
+ @Test(groups = {"gobblin.yarn", "disabledOnCI"})
public void testStartError() throws Exception{
this.expiredYarnService.requestTargetNumberOfContainers(10,
Collections.EMPTY_SET);
diff --git a/gradle/scripts/ci-support.gradle b/gradle/scripts/ci-support.gradle
new file mode 100644
index 0000000..1222b1d
--- /dev/null
+++ b/gradle/scripts/ci-support.gradle
@@ -0,0 +1,69 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+
+def corePaths = ["gobblin-binary-management", "gobblin-compaction",
"gobblin-core", "gobblin-data-management",
+ "gobblin-hive-registration", "gobblin-runtime",
"gobblin-yarn", "gobblin-metrics-libs", "gobblin-runtime-hadoop"]
+def servicePaths = ["gobblin-api", "gobblin-rest-service", "gobblin-restli",
"gobblin-service"]
+def modulePaths = ["gobblin-modules"]
+
+task getGroupedTests {
+ doLast {
+ def taskNames = subprojects.findAll {
+ subproject -> subproject.tasks.hasProperty('test')
+ }
+ def includedGroups
+ switch(groupName) {
+ case "Core Tests":
+ includedGroups = taskNames.findAll {task ->
+ corePaths.any {
+ task.path.contains(it)
+ }
+ }
+ break;
+ case "Service Tests":
+ includedGroups = taskNames.findAll {task ->
+ servicePaths.any {
+ task.path.contains(it)
+ }
+ }
+ break;
+ case "Module Tests":
+ includedGroups = taskNames.findAll {task ->
+ modulePaths.any {
+ task.path.contains(it)
+ }
+ }
+ break;
+ case "Other Tests":
+ corePaths.addAll(servicePaths)
+ corePaths.addAll(modulePaths)
+ includedGroups = taskNames.findAll { task ->
+ !corePaths.any {
+ task.path.contains(it)
+ }
+ }
+ break;
+ default:
+ includedGroups = taskNames
+ break;
+ }
+
+ def groupedTaskNames = includedGroups.collect { task ->
task.tasks.findByName('test').getPath() }
+ println "CI Task: " + groupedTaskNames.join(" ")
+ }
+}
diff --git a/gradle/scripts/testSetup.gradle b/gradle/scripts/testSetup.gradle
index be0c3cb..54f6004 100644
--- a/gradle/scripts/testSetup.gradle
+++ b/gradle/scripts/testSetup.gradle
@@ -35,6 +35,7 @@ subprojects {
}
testLogging {
events "started","skipped","passed","failed"
+ exceptionFormat "full"
}
// Some tests require MySQL we can either download an embedded Wix image
or use a pre-installed version
if (rootProject.hasProperty('usePreinstalledMysql') &&
Boolean.parseBoolean(rootProject.usePreinstalledMysql)) {
@@ -75,4 +76,30 @@ subprojects {
}
}
}
+
+ tasks.withType(Test) {
+
+ // a collection to track failedTests
+ ext.failedTests = []
+
+ afterTest { descriptor, result ->
+ if (result.resultType == TestResult.ResultType.FAILURE) {
+ String failedTest = "${descriptor.className}::${descriptor.name}"
+ logger.debug("Adding " + failedTest + " to failedTests...")
+ failedTests << [failedTest]
+ }
+ }
+
+ afterSuite { suite, result ->
+ if (!suite.parent) { // will match the outermost suite
+ // logs each failed test
+ if (!failedTests.empty) {
+ logger.lifecycle("Failed tests:")
+ failedTests.each { failedTest ->
+ logger.lifecycle("${failedTest}")
+ }
+ }
+ }
+ }
+ }
}
diff --git a/travis/test-coverage.sh b/travis/test-coverage.sh
index a2e1443..7e6feda 100755
--- a/travis/test-coverage.sh
+++ b/travis/test-coverage.sh
@@ -28,4 +28,4 @@ script_dir=$(dirname $0)
source ${script_dir}/test-groups.inc
echo "Starting $0 at " $(date)
-time ./gradlew -PskipTestGroup=disabledOnTravis -Dorg.gradle.parallel=false
-DjacocoBuild=1 $GOBBLIN_GRADLE_OPTS jacocoTestCoverage
+time ./gradlew -PskipTestGroup=disabledOnCI -Dorg.gradle.parallel=false
-DjacocoBuild=1 $GOBBLIN_GRADLE_OPTS jacocoTestCoverage
diff --git a/travis/test-default.sh b/travis/test-default.sh
index 08943dd..9be3dcf 100755
--- a/travis/test-default.sh
+++ b/travis/test-default.sh
@@ -29,4 +29,4 @@ source ${script_dir}/test-groups.inc
echo "Starting $0 at " $(date)
echo "GOBBLIN_GRADLE_OPTS=$GOBBLIN_GRADLE_OPTS"
-time ./gradlew -PskipTestGroup=disabledOnTravis,$TEST_GROUP1
-Dorg.gradle.parallel=false $GOBBLIN_GRADLE_OPTS test
+time ./gradlew -PskipTestGroup=disabledOnCI,$TEST_GROUP1
-Dorg.gradle.parallel=false $GOBBLIN_GRADLE_OPTS test
diff --git a/travis/test-group1.sh b/travis/test-group1.sh
index fc04830..fb3b00f 100755
--- a/travis/test-group1.sh
+++ b/travis/test-group1.sh
@@ -32,4 +32,4 @@ echo "Precompiling tests:"
rm -rf $HOME/.gradle/caches/
./gradlew compileTest -Porg.gradle.parallel=false $GOBBLIN_GRADLE_OPTS
echo "Running tests for $TEST_GROUP1"
-time ./gradlew -PskipTestGroup=disabledOnTravis -PrunTestGroups=$TEST_GROUP1
-Dorg.gradle.parallel=false $GOBBLIN_GRADLE_OPTS test
\ No newline at end of file
+time ./gradlew -PskipTestGroup=disabledOnCI -PrunTestGroups=$TEST_GROUP1
-Dorg.gradle.parallel=false $GOBBLIN_GRADLE_OPTS test
\ No newline at end of file