dolphinscheduler-api-test/README.md
DolphinScheduler API test respects the Page Object Model (POM) design pattern. Every page of DolphinScheduler's api is abstracted into a class for better maintainability.
The login page's api is abstracted
as LoginPage
, with the following fields,
public HttpResponse login(String username, String password) {
Map<String, Object> params = new HashMap<>();
params.put("userName", username);
params.put("userPassword", password);
RequestClient requestClient = new RequestClient();
return requestClient.post("/login", null, params);
}
where userName, userPassword are the main elements on UI that we are interested in.
DolphinScheduler API test uses testcontainers to set up the testing environment, with docker compose.
Typically, every test case needs one or more docker-compose.yaml files to set up all needed components, and expose the
DolphinScheduler UI port for testing. You can use @DolphinScheduler(composeFiles = "") and pass
the docker-compose.yaml files to automatically set up the environment in the test class.
@DolphinScheduler(composeFiles = "docker/tenant/docker-compose.yaml")
class TenantAPITest {
}
Add VM options to the test configuration in IntelliJ IDEA:
# In this mode you need to install docker desktop for mac and run it with locally
-Dm1_chip=true
# In this mode you need to start frontend and backend services locally
-Dlocal=true
# In this mode you only need to install docker locally
dolphinscheduler-api-test/pom.xml to the maven project
Since it does not participate in project compilation, it is not in the main project.org.apache.dolphinscheduler.api.test.cases.TenantAPITest in the IDE.The OIDC feature includes a dedicated API test suite that uses Testcontainers to spin up a full environment, including DolphinScheduler and a Keycloak OIDC provider.
The API test requires a Docker image of DolphinScheduler that includes your latest code changes.
ci.
./mvnw -B clean package -Dmaven.test.skip=true -Dspotless.skip=true -Ddocker.tag=ci -Pdocker,release
apache/dolphinscheduler-standalone-server:ci was created successfully.
docker images | grep "dolphinscheduler-standalone-server"
You can manually start the full test stack to inspect it before running the test cases.
cd dolphinscheduler-api-test/dolphinscheduler-api-test-case/src/test/resources/docker/oidc-login/
docker-compose up --build
--build flag is recommended to ensure the latest configurations are used.docker-compose down -v.dolphinscheduler-api-test module is included in your Maven projects in your IDE.Notes: Ensure that you run the required
RegistryTestCaseandTenantAPITestbefore running the OidcLoginAPITest, as they set up the necessary prerequisites.
OidcLoginAPITest.java file and run it as a JUnit test. The test framework will automatically manage the Docker containers.Note: Before running the API test using the IDE run button, ensure that port
8081is free, as Keycloak will use this port. Also, make sure Docker Desktop is running. If you previously started the environment withdocker-compose up --build, rundocker-compose down -vto avoid port conflicts. The API test will automatically manage the required containers.
You can easily customize the test environment for your own needs:
environment section for the dolphinscheduler service in docker/oidc-login/docker-compose.yaml to change OIDC settings or other parameters.docker/oidc-login/realm-export.json file. You can change client settings, add new test users, or modify group mappers to test different scenarios. After making changes, restart the environment with docker-compose up --build to apply them.