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 packageand run it with
java -jar target/quarkus-app/quarkus-run.jarNote that dependencies are in the target/quarkus-app/lib directory.
Run Crontention in development mode with hot reloading with
./mvnw quarkus:devRecompile TypeScript with
yarn bundleafter once running
yarn installWhen 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 4Note 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 homeAfter defining a new page object, run
yarn test:acceptance:defAcceptance 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.