Crontention visualizes potential contention caused by the Quartz Job Scheduler's cron trigger expressions.
Crontention evaluates Quartz cron expressions for a single UTC day and draws a heat map of overlapping fire-times. The darker the color, the greater the risk of contention. Use that information to spread out events to utilize resources more evenly or arrange dependencies.
Visit Crontention on Heroku to use it or learn more about it.
Crontention uses Java 11, Quarkus, TypeScript, and D3.js.
Package Crontention with
./mvnw package
and run it with
java -jar target/quarkus-app/quarkus-run.jar
Note that dependencies are in the target/quarkus-app/lib
directory.
Run Crontention in development mode with hot reloading with
./mvnw quarkus:dev
Recompile TypeScript with
yarn bundle
after once running
yarn install
When Crontention is running you can execute acceptance tests. These are built with CodeceptJS.
Run all acceptance tests in batch mode with something like
HEADLESS=1 yarn test:acceptance:parallel 4
Note that the above method suffers from an internal race condition and can, in very rare cases, incorrectly assign a "scenario" to a different "feature", causing a false positive failure.
Run a selection of tests in display mode with something like
yarn test:acceptance --grep home
After defining a new page object, run
yarn test:acceptance:def
Acceptance tests don't run in CI because there are no official Docker images with both Maven and Node.js and I don't want to maintain one.
Copyright 2021 Mikkel Kjeldsen
Licensed 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.