oeqa/utils/decorators: LogResults fix race condition in linkfile
In order to avoid race condition when test if exists the linkfile use bb.utils.lock, the best solution is to create a unique name for the link file. There is no way to create a unique linkfile name at this decorator because is needed the machine and image variables, those variables can't be passed easily in this code. To avoid broke test export functionality use a try/except because bb isn't available when use test export [YOCTO #10225] (From OE-Core rev: 059d475b6bce1e5414170a4fe2e7989f6b0eacd6) Signed-off-by: Aníbal Limón <anibal.limon@linux.intel.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
This commit is contained in:
parent
b28e6d6039
commit
62c45ffbc7
|
@ -189,10 +189,24 @@ def LogResults(original_class):
|
|||
if passed:
|
||||
local_log.results("Testcase "+str(test_case)+": PASSED")
|
||||
|
||||
# XXX: In order to avoid race condition when test if exists the linkfile
|
||||
# use bb.utils.lock, the best solution is to create a unique name for the
|
||||
# link file.
|
||||
try:
|
||||
import bb
|
||||
has_bb = True
|
||||
lockfilename = linkfile + '.lock'
|
||||
except ImportError:
|
||||
has_bb = False
|
||||
|
||||
if has_bb:
|
||||
lf = bb.utils.lockfile(lockfilename, block=True)
|
||||
# Create symlink to the current log
|
||||
if os.path.lexists(linkfile):
|
||||
os.remove(linkfile)
|
||||
os.symlink(logfile, linkfile)
|
||||
if has_bb:
|
||||
bb.utils.unlockfile(lf)
|
||||
|
||||
original_class.run = run
|
||||
|
||||
|
|
Loading…
Reference in New Issue