Santhosh/Vinkesh | Added the testing framework. Moved the smoketest to tests/functional
This commit is contained in:
		
							
								
								
									
										137
									
								
								tools/install_venv.py
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										137
									
								
								tools/install_venv.py
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,137 @@ | |||||||
|  | # vim: tabstop=4 shiftwidth=4 softtabstop=4 | ||||||
|  |  | ||||||
|  | # Copyright 2010 United States Government as represented by the | ||||||
|  | # Administrator of the National Aeronautics and Space Administration. | ||||||
|  | # All Rights Reserved. | ||||||
|  | # | ||||||
|  | # Copyright 2010 OpenStack LLC. | ||||||
|  | # | ||||||
|  | #    Licensed under the Apache License, Version 2.0 (the "License"); you may | ||||||
|  | #    not use this file except in compliance with the License. You may obtain | ||||||
|  | #    a copy of the License at | ||||||
|  | # | ||||||
|  | #         http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | #    Unless required by applicable law or agreed to in writing, software | ||||||
|  | #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||||||
|  | #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||||||
|  | #    License for the specific language governing permissions and limitations | ||||||
|  | #    under the License. | ||||||
|  |  | ||||||
|  | """ | ||||||
|  | Installation script for Quantum's development virtualenv | ||||||
|  | """ | ||||||
|  |  | ||||||
|  | import os | ||||||
|  | import subprocess | ||||||
|  | import sys | ||||||
|  |  | ||||||
|  |  | ||||||
|  | ROOT = os.path.dirname(os.path.dirname(os.path.realpath(__file__))) | ||||||
|  | VENV = os.path.join(ROOT, '.quantum-venv') | ||||||
|  | PIP_REQUIRES = os.path.join(ROOT, 'tools', 'pip-requires') | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def die(message, *args): | ||||||
|  |     print >> sys.stderr, message % args | ||||||
|  |     sys.exit(1) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def run_command(cmd, redirect_output=True, check_exit_code=True): | ||||||
|  |     """ | ||||||
|  |     Runs a command in an out-of-process shell, returning the | ||||||
|  |     output of that command.  Working directory is ROOT. | ||||||
|  |     """ | ||||||
|  |     if redirect_output: | ||||||
|  |         stdout = subprocess.PIPE | ||||||
|  |     else: | ||||||
|  |         stdout = None | ||||||
|  |  | ||||||
|  |     proc = subprocess.Popen(cmd, cwd=ROOT, stdout=stdout) | ||||||
|  |     output = proc.communicate()[0] | ||||||
|  |     if check_exit_code and proc.returncode != 0: | ||||||
|  |         die('Command "%s" failed.\n%s', ' '.join(cmd), output) | ||||||
|  |     return output | ||||||
|  |  | ||||||
|  |  | ||||||
|  | HAS_EASY_INSTALL = bool(run_command(['which', 'easy_install'], | ||||||
|  |                                     check_exit_code=False).strip()) | ||||||
|  | HAS_VIRTUALENV = bool(run_command(['which', 'virtualenv'], | ||||||
|  |                                     check_exit_code=False).strip()) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def check_dependencies(): | ||||||
|  |     """Make sure virtualenv is in the path.""" | ||||||
|  |  | ||||||
|  |     if not HAS_VIRTUALENV: | ||||||
|  |         print 'not found.' | ||||||
|  |         # Try installing it via easy_install... | ||||||
|  |         if HAS_EASY_INSTALL: | ||||||
|  |             print 'Installing virtualenv via easy_install...', | ||||||
|  |             if not run_command(['which', 'easy_install']): | ||||||
|  |                 die('ERROR: virtualenv not found.\n\n' | ||||||
|  |                     'Quantum requires virtualenv, please install' | ||||||
|  |                     ' it using your favorite package management tool') | ||||||
|  |             print 'done.' | ||||||
|  |     print 'done.' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def create_virtualenv(venv=VENV): | ||||||
|  |     """Creates the virtual environment and installs PIP only into the | ||||||
|  |     virtual environment | ||||||
|  |     """ | ||||||
|  |     print 'Creating venv...', | ||||||
|  |     run_command(['virtualenv', '-q', '--no-site-packages', VENV]) | ||||||
|  |     print 'done.' | ||||||
|  |     print 'Installing pip in virtualenv...', | ||||||
|  |     if not run_command(['tools/with_venv.sh', 'easy_install', 'pip']).strip(): | ||||||
|  |         die("Failed to install pip.") | ||||||
|  |     print 'done.' | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def install_dependencies(venv=VENV): | ||||||
|  |     print 'Installing dependencies with pip (this can take a while)...' | ||||||
|  |  | ||||||
|  |     # Install greenlet by hand - just listing it in the requires file does not | ||||||
|  |     # get it in stalled in the right order | ||||||
|  |     venv_tool = 'tools/with_venv.sh' | ||||||
|  |     run_command([venv_tool, 'pip', 'install', '-E', venv, '-r', PIP_REQUIRES], | ||||||
|  |                 redirect_output=False) | ||||||
|  |  | ||||||
|  |     # Tell the virtual env how to "import quantum" | ||||||
|  |     pthfile = os.path.join(venv, "lib", "python2.6", "site-packages", | ||||||
|  |                                  "quantum.pth") | ||||||
|  |     f = open(pthfile, 'w') | ||||||
|  |     f.write("%s\n" % ROOT) | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def print_help(): | ||||||
|  |     help = """ | ||||||
|  |  Quantum development environment setup is complete. | ||||||
|  |  | ||||||
|  |  Quantum development uses virtualenv to track and manage Python dependencies | ||||||
|  |  while in development and testing. | ||||||
|  |  | ||||||
|  |  To activate the Quantum virtualenv for the extent of your current shell | ||||||
|  |  session you can run: | ||||||
|  |  | ||||||
|  |  $ source .quantum-venv/bin/activate | ||||||
|  |  | ||||||
|  |  Or, if you prefer, you can run commands in the virtualenv on a case by case | ||||||
|  |  basis by running: | ||||||
|  |  | ||||||
|  |  $ tools/with_venv.sh <your command> | ||||||
|  |  | ||||||
|  |  Also, make test will automatically use the virtualenv. | ||||||
|  |     """ | ||||||
|  |     print help | ||||||
|  |  | ||||||
|  |  | ||||||
|  | def main(argv): | ||||||
|  |     check_dependencies() | ||||||
|  |     create_virtualenv() | ||||||
|  |     install_dependencies() | ||||||
|  |     print_help() | ||||||
|  |  | ||||||
|  | if __name__ == '__main__': | ||||||
|  |     main(sys.argv) | ||||||
							
								
								
									
										10
									
								
								tools/pip-requires
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										10
									
								
								tools/pip-requires
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,10 @@ | |||||||
|  | eventlet>=0.9.12 | ||||||
|  | nose | ||||||
|  | Paste | ||||||
|  | PasteDeploy | ||||||
|  | pep8==0.5.0 | ||||||
|  | python-gflags | ||||||
|  | routes | ||||||
|  | simplejson | ||||||
|  | webob | ||||||
|  | webtest | ||||||
							
								
								
									
										21
									
								
								tools/with_venv.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										21
									
								
								tools/with_venv.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,21 @@ | |||||||
|  | #!/bin/bash | ||||||
|  | # vim: tabstop=4 shiftwidth=4 softtabstop=4 | ||||||
|  |  | ||||||
|  | # Copyright 2011 OpenStack LLC. | ||||||
|  | # All Rights Reserved. | ||||||
|  | # | ||||||
|  | #    Licensed under the Apache License, Version 2.0 (the "License"); you may | ||||||
|  | #    not use this file except in compliance with the License. You may obtain | ||||||
|  | #    a copy of the License at | ||||||
|  | # | ||||||
|  | #         http://www.apache.org/licenses/LICENSE-2.0 | ||||||
|  | # | ||||||
|  | #    Unless required by applicable law or agreed to in writing, software | ||||||
|  | #    distributed under the License is distributed on an "AS IS" BASIS, WITHOUT | ||||||
|  | #    WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the | ||||||
|  | #    License for the specific language governing permissions and limitations | ||||||
|  | #    under the License. | ||||||
|  |  | ||||||
|  | TOOLS=`dirname $0` | ||||||
|  | VENV=$TOOLS/../.quantum-venv | ||||||
|  | source $VENV/bin/activate && $@ | ||||||
		Reference in New Issue
	
	Block a user
	 Santhosh
					Santhosh