Switch test_db_url to a directory 55/30655/2
authorxudan <xudan16@huawei.com>
Thu, 16 Mar 2017 07:09:53 +0000 (07:09 +0000)
committerCédric Ollivier <cedric.ollivier@orange.com>
Wed, 22 Mar 2017 13:59:11 +0000 (14:59 +0100)
We must now set a dir (e.g. /home/opnfv/db) to dump results. It avoids
replacing "results" and prevent from limiting the use of this decorator.
All data will be dumped into url/dump.txt

As also proposed in FUNCTEST-729, missing directories are created too.
The decorator will raise exceptions if dir exists or if target is not a
directory.

Co-Authored-By: Cédric Ollivier <cedric.ollivier@orange.com>
JIRA: FUNCTEST-729
Change-Id: I9650c72493043539f17725f5c328c12639ecc059
Signed-off-by: xudan <xudan16@huawei.com>
Signed-off-by: Cédric Ollivier <cedric.ollivier@orange.com>
functest/ci/config_functest.yaml
functest/utils/decorators.py

index 4d5a621..78f6257 100755 (executable)
@@ -200,4 +200,6 @@ example:
     sg_desc: Example Security group
 
 results:
+    # you can also set a dir (e.g. /home/opnfv/db) to dump results
+    # test_db_url: file:///home/opnfv/db
     test_db_url: http://testresults.opnfv.org/test/api/v1
index 99bcef3..276235d 100644 (file)
@@ -1,6 +1,8 @@
 #!/usr/bin/env python
 
+import errno
 import mock
+import os
 import requests.sessions
 import urlparse
 
@@ -10,7 +12,12 @@ def can_dump_request_to_file(method):
     def dump_preparedrequest(request, **kwargs):
         parseresult = urlparse.urlparse(request.url)
         if parseresult.scheme == "file":
-            with open(parseresult.path.replace('/results', ''), 'a') as f:
+            try:
+                os.makedirs(parseresult.path)
+            except OSError as e:
+                if e.errno != errno.EEXIST:
+                    raise
+            with open(os.path.join(parseresult.path, 'dump.txt'), 'a') as f:
                 headers = ""
                 for key in request.headers:
                     headers += key + " " + request.headers[key] + "\n"