Bug #7528
closedExtend tests for non-existant files with file_remove
Description
Hi,
we've seen an issue with a missing report from "file_remove", depending on rudder agent version.
If the file in question does not exist, it'll NOT run success_if_nothing.
For ref:
bundle agent file_remove(target) { vars: "class_prefix" string => canonify("file_remove_${target}"); files: "${target}" delete => tidy, classes => classes_generic("${class_prefix}"); methods: "success_if_nothing" usebundle => _classes_success("${class_prefix}"), ifvarclass => "!${class_prefix}_reached"; "report" usebundle => _logger("Remove file ${target}", "${class_prefix}"); }
Our directive is called leap_second_something
CFEngine Core 3.6.3
node:~ # cf-agent -KI | grep leap node:~ #
On 3.6.0 you will see output from this and a report will be sent.
In debug (cf-agent --debug 2>&1 | grep leap) both report the same stuff.
Please let me know if you can't reproduce it.
Updated by Jonathan CLARKE about 9 years ago
- Project changed from Rudder to 41
- Description updated (diff)
- Target version set to 0.x
Adding "pre" tags for readability, and moving to the ncf project.
Updated by Jonathan CLARKE about 9 years ago
- Status changed from New to In progress
- Assignee set to Jonathan CLARKE
Updated by Jonathan CLARKE about 9 years ago
- Status changed from In progress to Discussion
- Assignee changed from Jonathan CLARKE to Florian Heigl
I can't reproduce this. I'm using CFEngine 3.6.3 as you suggested:
$ cf-agent -V CFEngine Core 3.6.3
I'm testing file_remove on a non-existant filename - I think this is right?
However, I'm getting the right reports.
I've written a test to check for this, that you can get in this PR: https://github.com/Normation/ncf/pull/278
Would you run it for me? Steps should be quite simple:- git clone https://github.com/Normation/ncf.git
- cd ncf
- git checkout v0.x
- git remote add JCL https://github.com/jooooooon/ncf.git
- git pull JCL bug_7528/missing_report_from_ncf_depending_on_cf_agent_version_yay
- cd tests/acceptance
- ./testall 30_generic_methods/file_remove.cf
- cat test.log
Please let me know if this test passes or fails for you on one a machine where you're seeing this issue.
Updated by Jonathan CLARKE about 9 years ago
Florian Heigl wrote:
If the file in question does not exist, it'll NOT run success_if_nothing.
By the way, this is by design:
......................................................... Promise's handle: '' Promise made by: '/tmp/nonexistantfilenamefromncftests' ......................................................... ... File '/tmp/nonexistantfilenamefromncftests' does not exist as promised Defining promise result class 'file_remove__tmp_nonexistantfilenamefromncftests_kept' Defining promise result class 'file_remove__tmp_nonexistantfilenamefromncftests_ok' Defining promise result class 'file_remove__tmp_nonexistantfilenamefromncftests_not_repaired' Defining promise result class 'file_remove__tmp_nonexistantfilenamefromncftests_reached'
As you can see, the required result classes are already defined by CFEngine, so we don't need to explicitly create them.
Updated by Florian Heigl about 9 years ago
I need to look at this in a isolated env.
Something was off, otherwise we'd not have gone digging into this - we started from a missing report.
Ah, just saw you made a test for it - wow. We'll start from that.
Updated by Jonathan CLARKE about 9 years ago
Hey Florian - just a friendly ping to see if you were able to run the test and/or reproduce this issue yet?
Updated by Florian Heigl about 9 years ago
hi,
colleague ran the test case.
I'll ask him to also update the ticket.
Updated by Ferenc Ulrich about 9 years ago
Hi Jonathan,
I ran the test and got the following result:
@server:~/ncf_test/tests/acceptance # ./testall 30_generic_methods/file_remove.cf
=== Test environment: ===
AGENT=
CF_PROMISES=
CF_SERVERD=
CF_KEY=
=========================
======================================================================
Testsuite started at 2015-12-03 16:47:52
----------------------------------------------------------------------
Total tests: 1
./30_generic_methods/file_remove.cf Pass
======================================================================
Testsuite finished at 2015-12-03 16:47:53 (1 seconds)
Passed tests: 1
Failed tests: 0
Failed to crash tests: 0
Skipped tests: 0
server:~/ncf_test/tests/acceptance # cat test.log
======================================================================
Testsuite started at 2015-12-03 16:47:52
----------------------------------------------------------------------
Total tests: 1
----------------------------------------------------------------------
./30_generic_methods/file_remove.cf
----------------------------------------------------------------------
R: First test OK (removing existing file, /root/ncf_test/tests/acceptance/workdir/__30_generic_methods_file_remove_cf/tmp/remove_test)
R: Second test OK (removing a non existant file, root_ncf_test_tests_acceptance_workdir__30_generic_methods_file_remove_cf_tmp_nonexistantfilenamefromncftests)
R: /root/ncf_test/tests/acceptance/./30_generic_methods/file_remove.cf Pass
Return code is 0.
> Pass ====================================================================Testsuite finished at 2015-12-03 16:47:53 (1 seconds)
Passed tests: 1
Failed tests: 0
Failed to crash tests: 0
Skipped tests: 0
server:~/ncf_test/tests/acceptance #@
Updated by Jonathan CLARKE over 8 years ago
- Status changed from Discussion to Pending technical review
- Assignee changed from Florian Heigl to Benoît PECCATTE
- Pull Request set to https://github.com/Normation/ncf/pull/351
Updated by Jonathan CLARKE over 8 years ago
- Subject changed from Missing report from NCF depending on cf-agent version (yay) to Extend tests for non-existant files with file_remove
Thanks for the test results. This shows there is no bug, I guess it came from something else. Please reopen this ticket if it occurs again.
In the meantime, I'm going to add the test case I previously proposed as a regular test, so we can detect any similar problems in the future.
Updated by Jonathan CLARKE over 8 years ago
- Status changed from Pending technical review to Pending release
- % Done changed from 0 to 100
Applied in changeset a779c1156effb7063b303662cc89dae17f0cd5a8.
Updated by Vincent MEMBRÉ over 8 years ago
- Status changed from Pending release to Released
Updated by Alexis Mousset over 2 years ago
- Target version changed from 0.x to ncf-0.x
- Priority set to 0
Updated by Alexis Mousset over 2 years ago
- Project changed from 41 to Rudder
- Category set to Generic methods