Preparing an Oracle GeoDjango test setup
Since GeoDjango requires full featured Oracle installation instead of XE this document is meant to ease up installation and testing GeoDjango parts.
Prerequisities
On the host machine:
- Install Oracle client and set it up as documented in https://docs.djangoproject.com/en/1.4/ref/databases/#oracle-notes
- Install GeoDjango requirements as documented in https://docs.djangoproject.com/en/1.4/ref/contrib/gis/install/
On OS X, the general idea to install cx_Oracle is:
Download InstantClient from Oracle. You need the "Basic Lite" and "SDK" packages.
Unzip them, merge them, and put the resulting directory in, for instance, ~/dev/oracle.
Set the following environment variables (you'll need them every time you use cx_Oracle):
export ORACLE_HOME=~/Documents/dev/oracle/instantclient_10_2 export LD_LIBRARY_PATH=$ORACLE_HOME export DYLD_LIBRARY_PATH=$ORACLE_HOME
Fix Oracle's package:
ln -s libclntsh.dylib.10.1 $ORACLE_HOME/libclntsh.dylib ln -s libocci.dylib.10.1 $ORACLE_HOME/libocci.dylib
Install cx_Oracle:
pip install cx_Oracle
Adjust paths and versions as needed. There are plenty of more-or-less up-to-date tutorials on the web.
How to get full Oracle
Easiest way is to use Oracle VirtualBox with prebuilt Oracle installation VM. We will be using the VM as a database server only.
- Download and install Oracle VirtualBox from http://www.oracle.com/technetwork/server-storage/virtualbox/downloads/index.html or use package manager from your system.
- Download Oracle Developer Day image from http://download.oracle.com/otn/other/virtualbox/dd/Oracle_Developer_Day.ova
- Use VirtualBox to launch the image
- Set up port forwarding to access easily the VM's ssh and database servers, see http://barrymcgillin.blogspot.fr/2011/12/using-oracle-developer-days-virtualbox.html
NOTE: You may not use Oracle Developer Day VM for any other purposes than testing
Database setup
On virtual machine:
Create a user and give the needed privileges:
$ sudo su oracle $ sqlplus / as sysdba SQL> CREATE USER djangotest IDENTIFIED BY djangotest; SQL> GRANT DBA TO djangotest; SQL> quit $ exit
Run tests
On host:
Create geodjango_oracle.py settings file (change IP to one that is reported in VM console):
TEST_RUNNER = 'django.contrib.gis.tests.GeoDjangoTestSuiteRunner' DATABASES = { 'default' : { 'ENGINE' : 'django.contrib.gis.db.backends.oracle', 'PORT' : '1521', 'HOST' : 'VM IP', 'NAME' : 'orcl', 'USER' : 'djangotest', 'PASSWORD' : 'djangotest', }, } SECRET_KEY = 'xxxxx'
Run tests:
django-admin.py test --settings=geodjango_oracle