mirror of
https://github.com/Cacti/cacti.git
synced 2026-10-28 15:47:39 +09:00
* test(cdef): enforce resolver coverage Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * ci(cdef): pin cache action correctly Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * test: isolate CDEF coverage bootstrap * fix(cdef): fail closed on invalid recursive definitions Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): log corrupt resolver records Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): bound and isolate recursive resolution Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): preserve resolver failure state Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): isolate invalid graph expressions Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): abort unsafe consumer operations Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): close consumer failure paths Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): make aggregate updates atomic Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): keep repair queries auditable Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): bind bulk deletes and escape item types Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(cdef): guard corrupt types and repair reporting Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(aggregate): propagate push-out failures Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> * fix(aggregate): document mutable message checks Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> --------- Signed-off-by: Thomas Vincent <thomasvincent@gmail.com> Co-authored-by: TheWitness <thewitness@cacti.net>
33 lines
1.3 KiB
PHP
33 lines
1.3 KiB
PHP
<?php
|
|
/*
|
|
+-------------------------------------------------------------------------+
|
|
| Copyright (C) 2004-2026 The Cacti Group |
|
|
+-------------------------------------------------------------------------+
|
|
*/
|
|
|
|
$root = dirname(__DIR__, 2);
|
|
|
|
test('database repair clears every direct graph reference to a missing CDEF', function () use ($root) {
|
|
$source = file_get_contents($root . '/cli/repair_database.php');
|
|
|
|
expect($source)->not->toBeFalse();
|
|
|
|
foreach (['graph_templates_item', 'aggregate_graph_templates_item', 'aggregate_graphs_graph_item'] as $table) {
|
|
expect($source)->toContain($table);
|
|
}
|
|
|
|
expect($source)->toContain('LEFT JOIN cdef ON source.cdef_id = cdef.id')
|
|
->and($source)->toContain('cdef_id NOT IN (SELECT id FROM cdef)')
|
|
->and($source)->toContain("cdef_id = 0, t_cdef_id = ''")
|
|
->and($source)->toContain('Found $invalid_references graph item references')
|
|
->and($source)->toContain('Found and repaired $fixed_references of $invalid_references');
|
|
});
|
|
|
|
test('aggregate push failures are handled at every call site', function () use ($root) {
|
|
foreach (['aggregate_graphs.php', 'aggregate_templates.php', 'color_templates.php', 'lib/aggregate.php'] as $file) {
|
|
$source = file_get_contents($root . '/' . $file);
|
|
|
|
expect($source)->not->toMatch('/^\s*push_out_aggregates\(/m');
|
|
}
|
|
});
|