Makedata is ran inside arangosh. It was made to be user-expandeable by hooking in on test cases. It consists of these files in test_data:
makedata.js
- initially generate test datacheckdata.js
- check whether data is available; could be read-onlycleardata.js
- remove the testdata - after invoking it makedata should be able to be ran again without issues.test_data/makedata_suites
executed in alphanumeric order:
000_dummy.js
- this can be used as a template if you want to create a new plugin. 010_disabled_uuid_check.js
If you're running a cluster setup in failover mode, this checks and waits for all shards have an available leader.020_foxx.js
Installs foxx, checks it. 050_database.js
creates databases for the test data.100_collections.js
creates a set of collections / indices400_views.js
creates some views402_views.js
create views and links with 'cache' properties. It checks proper normalization, memory usage and presence of cached columns after updates. This feature was introduced in 3.9.5500_community_graph.js
creates a community patent graph550_smart_graph.js
creates a smart patent graph560_smartgraph_edge_validator.js
on top of the enterprise graph, this will check the integrity check of the server.561_smartgraph_vertex_validator.js
on top of the enterprise graph, this will check the integrity check of the server.570_enterprise_graph.js
creates an enterprise patent graph900_oneshard.js
creates oneshard database and does stuff with it.607_analyzers.js
creates suported analyzers for 3.7.x version and check it's functionality.
Added Analyzers: (documentation link: https://www.arangodb.com/docs/3.7/analyzers.html)
608_analyzers.js
creates suported analyzers for 3.8.x version and check it's functionality.
Added Analyzers: (documentation link: https://www.arangodb.com/docs/3.8/analyzers.html)
and
and the
609_analyzers.js
creates suported analyzers for 3.9.x version and check it's functionality.
610_analyzers.js
creates suported analyzers for 3.10.x version and check it's functionality.
It should be considered to provide a set of hooks (000_dummy.js can be considered being a template for this):
The hook functions should respect their counter parameters, and use them in their respective reseource names. Jslint should be used to check code validity.
The list of the hooks enabled for this very run of one of the tools is printed on startup for reference.
Makedata should be considered a framework for consistency checking in the following situations:
The replication fuzzing test should be used to ensure the above with randomness added.
Makedata is by default ran with one dataset. However, it can also be used as load generator. For this case especialy, the counters have to be respected, so subsequent runs don't clash with earlier runs. The provided dbCount / loopCount should be used in identifiers to ensure this.
To Aid development, the makedata framework can be launched from within the arangodb unittests, if this repository is checked out next to it:
./scripts/unittest rta_makedata --extremeVerbosity true --cluster true --makedata_args:bigDoc true
If you want to filter for the scripts you can specify a coma separated list:
./scripts/unittest rta_makedata --extremeVerbosity true --cluster true --makedata_args:bigDoc true --test '010,020,050'
It should be obvious whether a test is run in a scenario or not. Hence the list of executed tests is output:
.------------------------------------------------.
| DB | loop | testname |
|----|------|------------------------------------|
| X | X | 000_dummy.js |
| | | 005_check_system_collection.js |
| X | | 020_foxx.js |
| | X | 100_collections.js |
'------------------------------------------------'
with the following meanings:
X
: this test is not applicable for the current environment and will be skippedX
in DB
-column: This test has database level functionalityX
in loop
-column: This test has loop-level functionalityRTA Makedata is embedded into arangodb and RTA; Hence a PR on RTA Makedata has to be sidelined by two PRs.