Unit Tests

A unit test runs a single VoxelBench test with /bench test, instead of the full benchmark. It gives no score: it gives that test's own measurements, which you can follow over time in your dashboard. This page covers sending results to voxelbench.com and reading them there.

Unit Tests and Benchmarks

Unit testFull benchmark
Command/bench test <id>: one test/bench start: the standard series of tests
ResultThe test's measurements: TPS, MSPT, and what the test counts (chunks per second, items movedโ€ฆ)A score and a rank, computed by voxelbench.com
Sent to voxelbench.comOnly when the server is linked and reports.backend.unit-tests is trueAlways, linked or not
Where it goesUnit tests in your dashboardA report page, in your account if the server is linked
Where it appearsOnly in your dashboard: never on the leaderboard or in the statisticsOn the leaderboard once you make it public
Who can open itYou, whoever holds the server that sent it once they have verified it, and VoxelBench administratorsDepends on its visibility (see Who Can See a Report)
KeptUntil you delete it30 minutes if the server is not linked; once it is, 30 days on Free and 1 year on Pro

Unit tests are available on every plan, the Free plan included.

Sending Results to voxelbench.com

  1. Link the server to your account (see Server Linking). voxelbench.com accepts no unit test from a server that is not linked.

  2. Turn sending on. In plugins/VoxelBench/config.yml, set:

    reports:
      backend:
        unit-tests: true
    

    It is false by default. Run /bench reload to apply it.

While either condition is missing, /bench test keeps the result on the server without saying so. Once both are met, a player who ran the test sees Test synced to voxelbench.com in chat.

voxelbench.com accepts up to 30 unit test results per hour from one server, counted apart from benchmark reports (see Rate Limits).

/bench tier, which walks a single stress type up its ladder, sends its result through the same channel, under the same two conditions, and says so when sending is off (see Stress Limit). A test run by auto-bench is always sent, whatever this setting says.

Running a Test

/bench test                        # list every test, by category
/bench test <id> [parameters]      # run one test

For example:

/bench test chunkLoading
/bench test redstone
/bench test singleCoreBenchmark

The plugin ships 26 tests, and extensions can add their own. One command runs one test. Some tests need a connected player and cannot be started from the console, and the gameplay tests that change the world run in the pinned benchmark world or in a temporary flat world, never in the world you stand in. The full list, the parameters and the permissions are in Commands; where each test runs is in Benchmarks.

Viewing Results

Go to Dashboard โ†’ Unit tests. Each line shows the test, its outcome (Success, Skipped or Failed; hover it for the reason code), the average TPS and MSPT, the duration and the date. A TIER badge marks a /bench tier result, an AUTO-BENCH badge a test run by auto-bench.

  • Filters: one test (All Tests), one category (All Categories), one server (All servers, shown once you have a linked server). The View unit tests button in a server's Benchmark history opens this page filtered on that server.
  • Sort by: Date, Test Date, TPS (avg), MSPT (avg), Duration or Test Name, ascending or descending.
  • View Test opens the result; Delete Test deletes it for good.

A result page opens for you, for whoever holds the server that sent it once they have verified it, and for VoxelBench administrators; anyone else gets a page not found, even with the link. It is shown in the language of the site, dates and numbers included, and shows:

  • whether the test passed, failed or was skipped, and why (see below);
  • TPS and MSPT: average, minimum and maximum;
  • the percentiles: TPS at the 1st and 5th percentile and the median, MSPT at the 95th and 99th percentile, with the number of samples and stability indices;
  • the metrics specific to the test, the runtime flags the plugin raised, and the parameters the test ran with;
  • the system (CPU, cores and threads, memory, operating system, Java) and the server (software, Minecraft version, build, plugin version).

Skipped and Failed Tests

A test ends in one of three ways: Passed, Failed or Skipped. Skipped means that the plugin chose not to run the test, or stopped it to protect the server: this is not a fault of the server. When a test did not pass, the plugin gives a reason, shown on the result page:

ReasonOutcomeWhat happened
Skipped to protect the server's memorySkippedRunning the test could have exhausted the server's memory. Nothing ran
Stopped by the memory watchdogSkippedMemory ran low during the test, and the plugin stopped it. Only partial data exists
No player onlineSkippedThe test needs a connected player, and none was left
Not available on this server softwareSkippedThe server software does not provide what the test measures
A prerequisite is missingSkippedSomething the test depends on is absent
Needs a benchmark worldSkippedThe test changes terrain and no benchmark world was available. Pin one with /bench world set <world>
Stuck โ€” no progressFailedThe test stopped making progress and was ended
Exceeded its time limitFailedThe test ran past its time ceiling
Unexpected plugin errorFailedThe test hit an unexpected error; the server logs have the details

A reason that a newer plugin sends and the site does not know yet is shown as its code.