Skip to content

Commit

Permalink
feat(test-utils): publish test utils (#1078)
Browse files Browse the repository at this point in the history
Co-authored-by: Eduwer Camacaro <[email protected]>
Co-authored-by: Mijail Rondon <[email protected]>
  • Loading branch information
3 people authored Jan 10, 2025
1 parent 0944892 commit cf06f7d
Show file tree
Hide file tree
Showing 43 changed files with 1,125 additions and 551 deletions.
43 changes: 23 additions & 20 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,11 +26,15 @@ jobs:
with:
tag: ${{ needs.prepare.outputs.tag }}

sdk-java:
publish-java-libraries:
runs-on: ubuntu-latest
needs:
- publish-docker
- prepare
strategy:
matrix:
library: [ "sdk-java", "test-utils", "test-utils-container" ]

steps:
- name: Checkout
uses: actions/checkout@v4
Expand All @@ -46,26 +50,25 @@ jobs:
TAG: ${{ needs.prepare.outputs.tag }}
run: sed -i "s/version=.*/version=${TAG}/g" gradle.properties

- name: Tests
run: ./gradlew sdk-java:test

- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v5
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.GPG_PASSPHRASE }}

- name: Generate KeyRing
run: |
gpg --keyring secring.gpg --export-secret-keys --passphrase ${{ secrets.GPG_PASSPHRASE }} --batch --yes --pinentry-mode=loopback > ~/.gnupg/secring.gpg
ls ~/.gnupg/
run: gpg --keyring secring.gpg --export-secret-keys --passphrase ${{ secrets.GPG_PASSPHRASE }} --batch --yes --pinentry-mode=loopback > ~/.gnupg/secring.gpg

- name: Publish
run: |
./gradlew sdk-java:publish -Psigning.secretKeyRingFile=/home/runner/.gnupg/secring.gpg -Psigning.password=${{ secrets.GPG_PASSPHRASE }} -Psigning.keyId=${{ vars.GPG_KEY_ID }} -PossrhUsername=${{ secrets.OSSRH_USERNAME }} -PossrhPassword=${{ secrets.OSSRH_PASSWORD }}
echo Login at https://s01.oss.sonatype.org/
- name: Tests ${{ matrix.library }}
run: ./gradlew ${{ matrix.library }}:test

- name: Publish ${{ matrix.library }}
run: ./gradlew ${{ matrix.library }}:publish -Psigning.secretKeyRingFile=/home/runner/.gnupg/secring.gpg -Psigning.password=${{ secrets.GPG_PASSPHRASE }} -Psigning.keyId=${{ vars.GPG_KEY_ID }} -PossrhUsername=${{ secrets.OSSRH_USERNAME }} -PossrhPassword=${{ secrets.OSSRH_PASSWORD }}

- name: Information
run: echo "::warning title=Do not forget to release the java package at Maven Central::Login at https://s01.oss.sonatype.org/"

sdk-python:
publish-sdk-python:
runs-on: ubuntu-latest
needs:
- publish-docker
Expand Down Expand Up @@ -103,7 +106,7 @@ jobs:
password: ${{ secrets.PYPI_API_TOKEN }}
packages-dir: ./sdk-python/dist/

sdk-js:
publish-sdk-js:
runs-on: ubuntu-latest
needs:
- publish-docker
Expand Down Expand Up @@ -146,7 +149,7 @@ jobs:
NODE_AUTH_TOKEN: ${{ secrets.NPM_PUBLISH_TOKEN }}
run: npm publish --access public

sdk-dotnet:
publish-sdk-dotnet:
runs-on: ubuntu-latest
needs:
- publish-docker
Expand All @@ -171,7 +174,7 @@ jobs:
env:
NUGET_AUTH_TOKEN: ${{ secrets.NUGET_TOKEN }}

lhctl:
build-lhctl:
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand All @@ -195,11 +198,11 @@ jobs:

create-release:
needs:
- lhctl
- sdk-java
- sdk-python
- sdk-js
- sdk-dotnet
- build-lhctl
- publish-java-libraries
- publish-sdk-python
- publish-sdk-js
- publish-sdk-dotnet
runs-on: ubuntu-latest
steps:
- name: Checkout
Expand Down
50 changes: 47 additions & 3 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ jobs:
- name: Tests
run: ./gradlew sdk-java:spotlessCheck sdk-java:test sdk-java:build

- name: Java Documentaion
- name: Java Documentation
run: ./gradlew sdk-java:javadoc

tests-sdk-go:
Expand Down Expand Up @@ -111,11 +111,55 @@ jobs:
java-version: 21

- name: Validate Indentations
run: ./gradlew server:spotlessCheck test-utils:spotlessCheck
run: ./gradlew server:spotlessCheck

- name: Tests
run: ./gradlew server:test server:e2e

tests-test-utils:
if: ${{ !contains(github.event.head_commit.message, '[skip main]') }}
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ "11", "17", "21" ]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Java ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
distribution: "corretto"
java-version: ${{ matrix.java-version }}

- name: Tests
run: ./gradlew test-utils:spotlessCheck test-utils:test test-utils:build

- name: Java Documentation
run: ./gradlew test-utils:javadoc

tests-test-utils-container:
if: ${{ !contains(github.event.head_commit.message, '[skip main]') }}
runs-on: ubuntu-latest
strategy:
matrix:
java-version: [ "11", "17", "21" ]
steps:
- name: Checkout
uses: actions/checkout@v4

- name: Setup Java ${{ matrix.java-version }}
uses: actions/setup-java@v4
with:
distribution: "corretto"
java-version: ${{ matrix.java-version }}

- name: Tests
run: ./gradlew test-utils-container:spotlessCheck test-utils-container:test test-utils-container:build

- name: Java Documentation
run: ./gradlew test-utils-container:javadoc

tests-dashboard:
if: ${{ !contains(github.event.head_commit.message, '[skip main]') }}
runs-on: ubuntu-latest
Expand Down Expand Up @@ -147,4 +191,4 @@ jobs:
- name: Build Project
run: dotnet build sdk-dotnet/LittleHorse.Sdk/LittleHorse.Sdk.csproj
- name: Test Dotnet
run: dotnet test sdk-dotnet/LittleHorse.Sdk.Tests
run: dotnet test sdk-dotnet/LittleHorse.Sdk.Tests
2 changes: 1 addition & 1 deletion .pre-commit-config.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ repos:
language: system
always_run: true
pass_filenames: false
entry: ./gradlew sdk-java:javadoc
entry: bash -c './gradlew sdk-java:javadoc && ./gradlew test-utils:javadoc && ./gradlew test-utils-container:javadoc'

- id: go-tests
name: Running SDK Go Tests
Expand Down
2 changes: 1 addition & 1 deletion sdk-java/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ signing {
}

repositories {
// Use Maven Central for resolving dependencies.
mavenCentral()
}

Expand Down Expand Up @@ -145,6 +144,7 @@ test {
}
jvmArgs = ['--add-opens', 'java.base/java.lang=ALL-UNNAMED', '--add-opens', 'java.base/java.util=ALL-UNNAMED']
}

spotless {
java {
target('**/*.java')
Expand Down
38 changes: 19 additions & 19 deletions sdk-python/poetry.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

6 changes: 4 additions & 2 deletions server/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -67,16 +67,18 @@ dependencies {
testCompileOnly "org.projectlombok:lombok:${lombokVersion}"
testAnnotationProcessor "org.projectlombok:lombok:${lombokVersion}"
testImplementation project(":test-utils")
testImplementation project(":test-utils-container")

// JSON and YAML processing
implementation 'com.fasterxml.jackson.core:jackson-databind:2.15.2'
implementation 'com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:2.15.2'
implementation 'com.jayway.jsonpath:json-path:2.9.0'

// To run scheduled wfs
implementation 'com.cronutils:cron-utils:9.2.1'

testImplementation 'org.awaitility:awaitility:4.2.0'
testImplementation 'org.junit.platform:junit-platform-console-standalone:1.11.0-M2'
implementation group: 'com.cronutils', name: 'cron-utils', version: '9.2.1'

}


Expand Down
72 changes: 66 additions & 6 deletions server/src/test/java/e2e/BasicTest.java
Original file line number Diff line number Diff line change
@@ -1,38 +1,98 @@
package e2e;

import io.littlehorse.sdk.common.config.LHConfig;
import io.littlehorse.sdk.common.proto.LHStatus;
import io.littlehorse.sdk.wfsdk.WfRunVariable;
import io.littlehorse.sdk.wfsdk.Workflow;
import io.littlehorse.sdk.wfsdk.internal.WorkflowImpl;
import io.littlehorse.sdk.worker.LHTaskMethod;
import io.littlehorse.test.LHTest;
import io.littlehorse.test.LHWorkflow;
import io.littlehorse.test.WithWorkers;
import io.littlehorse.test.WorkflowVerifier;
import org.junit.jupiter.api.Test;

@LHTest
@WithWorkers(value = "basicWorker")
@WithWorkers(value = "basicWorker2", lhMethods = "five")
public class BasicTest {

@LHWorkflow("test-basic")
private Workflow basicWf;

private LHConfig config;

private WorkflowVerifier verifier;

@Test
@WithWorkers(value = "basicWorker3")
public void shouldDoBasic() {
verifier.prepareRun(basicWf).waitForStatus(LHStatus.COMPLETED).start();
}

@LHWorkflow("test-basic")
public Workflow getBasic() {
return new WorkflowImpl("test-basic", thread -> {
WfRunVariable asdf = thread.declareBool("asdf");
asdf.assign(thread.execute("ag-one"));
thread.execute("one");
thread.execute("two");
thread.execute("three");
thread.execute("five");
thread.execute("seven");
});
}

@LHTaskMethod("ag-one")
public boolean one() {
return true;
public Object basicWorker() {
return new BasicWorker();
}

public Object basicWorker2() {
return new BasicWorker2();
}

public Object basicWorker3() {
return new BasicWorker3();
}

public class BasicWorker {

@LHTaskMethod("one")
public boolean one() {
return true;
}

@LHTaskMethod("two")
public boolean two() {
return true;
}

@LHTaskMethod("three")
public boolean three() {
return true;
}
}

public class BasicWorker2 {

@LHTaskMethod("four")
public boolean one() {
return true;
}

@LHTaskMethod("five")
public boolean two() {
return true;
}

@LHTaskMethod("six")
public boolean three() {
return true;
}
}

public class BasicWorker3 {

@LHTaskMethod("seven")
public boolean one() {
return true;
}
}
}
Loading

0 comments on commit cf06f7d

Please sign in to comment.