• M
    qemusecuritymock: Mock virProcessRunInFork · 0a9dcfab
    Michal Privoznik 提交于
    This test is beautiful. It checks if we haven't messed up
    refcounting on security labels (well, XATTRs where the original
    owner is stored). It does this by setting up tracking of XATTR
    setting/removing into a hash table, then calling
    qemuSecuritySetAllLabel() followed by immediate
    qemuSecurityRestoreAllLabel() at which point, the hash table must
    be empty. The test so beautifully written that no matter
    what you do it won't fail. The reason is that all seclabel work
    is done in a child process. Therefore, the hash table in the
    parent is never changed and thus always empty.
    
    There are two reasons for forking (only one of them makes sense
    here though):
    
    1) namespaces - when chown()-ing a file we have to fork() and
    make the child enter desired namespace,
    2) locking - because of exclusive access to XATTRs we lock the
    files we chown() and this is done in a fork (see 20786092 for
    more info).
    
    While we want to fork in real world, we don't want that in a test
    suite. Override virProcessRunInFork() then.
    Signed-off-by: NMichal Privoznik <mprivozn@redhat.com>
    Reviewed-by: NDaniel P. Berrangé <berrange@redhat.com>
    0a9dcfab
virprocess.h 3.8 KB