Add config fixture support to unit tests

This commit adds a new env variable OS_TEST_LOCK_PATH to the
.testr.conf file to set the lock path for using oslo locks.
Previously, if an external lock couldn't be used to isolate test cases
because the unit tests do not have a config file. By getting a lock
path with an env variable and setting the location in the config
fixture external locks can be used by first invoking the config
fixture.

Partially implements bp unit-tests

Change-Id: I08c27ab125183f5d055eaa45c4f0e0a527445475
diff --git a/.testr.conf b/.testr.conf
index abaf14a..4f6e0b3 100644
--- a/.testr.conf
+++ b/.testr.conf
@@ -2,6 +2,7 @@
 test_command=OS_STDOUT_CAPTURE=${OS_STDOUT_CAPTURE:-1} \
              OS_STDERR_CAPTURE=${OS_STDERR_CAPTURE:-1} \
              OS_TEST_TIMEOUT=${OS_TEST_TIMEOUT:-500} \
+             OS_TEST_LOCK_PATH=${OS_TEST_LOCK_PATH:-${TMPDIR:-'/tmp'}} \
              ${PYTHON:-python} -m subunit.run discover -t ./ ${OS_TEST_PATH:-./tempest/test_discover} $LISTOPT $IDOPTION
 test_id_option=--load-list $IDFILE
 test_list_option=--list
diff --git a/tempest/tests/fake_config.py b/tempest/tests/fake_config.py
index 8a8ebb0..4676cbd 100644
--- a/tempest/tests/fake_config.py
+++ b/tempest/tests/fake_config.py
@@ -12,16 +12,21 @@
 #    License for the specific language governing permissions and limitations
 #    under the License.
 
+import os
+
 from oslo.config import cfg
 
 from tempest import config
 from tempest.openstack.common.fixture import config as conf_fixture
+from tempest.openstack.common import importutils
 
 
 class ConfigFixture(conf_fixture.Config):
 
     def __init__(self):
         config.register_opts()
+        # Register locking options
+        importutils.import_module('tempest.openstack.common.lockutils')
         super(ConfigFixture, self).__init__()
 
     def setUp(self):
@@ -36,6 +41,10 @@
                               group='identity')
         self.conf.set_default('neutron', True, group='service_available')
         self.conf.set_default('heat', True, group='service_available')
+        if not os.path.exists(str(os.environ.get('OS_TEST_LOCK_PATH'))):
+            os.mkdir(str(os.environ.get('OS_TEST_LOCK_PATH')))
+        self.conf.set_default('lock_path',
+                              str(os.environ.get('OS_TEST_LOCK_PATH')))
 
 
 class FakePrivate(config.TempestConfigPrivate):