Skip to content
Snippets Groups Projects
Commit 0ed0cd66 authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

more on back-sql test

parent f59089b5
No related branches found
No related tags found
No related merge requests found
Author: Pierangelo Masarati <ando@OpenLDAP.org>
Back-sql can be tested with test031-sql; it requires a bit of work to get
everything up and running appropriately.
This document briefly describes the steps that are required to prepare
a quick'n'dirty installation of back-sql and of the related RDBMS
and ODBC; Examples are provided, but by no means they pretent
to represent an exaustive source of info about how to setup the ODBC;
refer to the docs for any problem or detail.
Currently, the system has been tested with PostgreSQL and with MySQL;
basic support and test data for other RDBMSes is in place, but as of
today (August 2004) it's totally untested. If you succeed in running
any of the other RDBMSes, please provide feedback about any required
change either in the code or in the test scripts by means of OpenLDAP's
Issue Tracking System (http://www.openldap.org/its/).
1) slapd must be compiled with back-sql support, i.e. configure
with --enable-sql switch. This requires an implementation of the ODBC
to be installed.
2) The ODBC must be set up appropriately, by editing the odbc.ini file
in /etc/ (or wherever your installation puts it) and, if appropriate,
the odbcinst.ini file. Note: you can also use custom odbc.ini and
odbcinst.ini files, provided you export in ODBCINI the full path to the
odbc.ini file, and in ODBCSYSINI the directory where the odbcinst.ini
file resides.
Relevant info for our test setup is highlighted with '<===' on the right.
2.1) PostgreSQL
2.1.1) Add to the odbc.ini file a block of the form
[example] <===
Description = Example for OpenLDAP's back-sql
Driver = PostgreSQL
Trace = No
Database = example <===
Servername = localhost
UserName = manager <===
Password = secret <===
Port = 5432
;Protocol = 6.4
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
2.1.2) Add to the odbcinst.ini file a block of the form
[PostgreSQL]
Description = ODBC for PostgreSQL
Driver = /usr/lib/libodbcpsql.so
Setup = /usr/lib/libodbcpsqlS.so
FileUsage = 1
2.2) MySQL
2.2.1) Add to the odbc.ini file a block of the form
[example] <===
Description = Example for OpenLDAP's back-sql
Driver = MySQL
Trace = No
Database = example <===
Servername = localhost
UserName = manager <===
Password = secret <===
ReadOnly = No
RowVersioning = No
ShowSystemTables = No
ShowOidColumn = No
FakeOidIndex = No
ConnSettings =
SOCKET = /var/lib/mysql/mysql.sock
2.2.2) Add to the odbcinst.ini file a block of the form
[MySQL]
Description = ODBC for MySQL
Driver = /usr/lib/libmyodbc.so
FileUsage = 1
3) The RDBMS must be setup; examples are provided for my installations
of PostgreSQL and MySQL, but details may change; other RDBMSes should
be configured in a similar manner, you need to find out the details by
reading their documentation.
3.1) PostgreSQL
3.1.1) Start the server
on RedHat:
[root@localhost]# service postgresql start
on other systems: read the docs...
3.1.2) Create the database:
[root@localhost]# su - postgres
[postgres@localhost]$ createdb example
3.1.3) Create the user:
[root@localhost]# su - postgres
[postgres@localhost]$ psql example
example=> create user manager with password 'secret';
example=> <control-D>
3.1.4) Populate the database:
[root@localhost]# cd $SOURCES/servers/slapd/back-sql/rdbms_depend/pgsql/
[root@localhost]# psql -U manager -W example
example=> <control-D>
[root@localhost]# psql -U manager example < backsql_create.sql
[root@localhost]# psql -U manager example < testdb_create.sql
[root@localhost]# psql -U manager example < testdb_data.sql
[root@localhost]# psql -U manager example < testdb_metadata.sql
3.1.5) Run the test:
[root@localhost]# cd $SOURCES/tests
[root@localhost]# SLAPD_USE_SQL=postgres ./run test031
3.2) MySQL
3.2.1) Start the server
on RedHat:
[root@localhost]# service mysqld start
on other systems: read the docs...
3.2.2) Create the database:
[root@localhost]# mysqladmin -u root -p create example
(hit <return> for the empty password).
3.2.3) Create the user:
[root@localhost]# mysql -u root -p example
(hit <return> for the empty password)
mysql> grant all privileges on *.* \
to 'manager'@'localhost' identified by 'secret' with grant option;
mysql> exit;
3.2.4) Populate the database:
[root@localhost]# cd $SOURCES/servers/slapd/back-sql/rdbms_depend/mysql/
[root@localhost]# mysql -u manager -p example < backsql_create.sql
[root@localhost]# mysql -u manager -p example < testdb_create.sql
[root@localhost]# mysql -u manager -p example < testdb_data.sql
[root@localhost]# mysql -u manager -p example < testdb_metadata.sql
3.2.5) Run the test:
[root@localhost]# cd $SOURCES/tests
[root@localhost]# SLAPD_USE_SQL=mysql ./run test031
4) Cleanup:
The basic portion of the test is readonly; this is performed by all RDBMSes.
The secondary part involves write operations. Currently, the write
portion of the test is enabled only for PostgreSQL. Note that after
a successful run of the write portion, the database is no longer in the
correct state to restart the test, and step 3.X.4 needs to be re-run first.
# refldap://localhost/o=example,c=ru??sub
dn: cn=Torvlobnor Puzdoy,o=Example,c=RU
dn: cn=Pierangelo Masarati,o=Example,c=RU
objectClass: inetOrgPerson
cn: Torvlobnor Puzdoy
telephoneNumber: 545-4563
sn: Torvlobnor Puzdoy
documentIdentifier: documentTitle=book1,o=Example,c=RU
cn: Pierangelo Masarati
telephoneNumber: +39 333 ZZZ 1234
givenName: Pierangelo
sn: Masarati
# refldap://localhost/o=Example,c=RU??sub
dn: cn=Mitya Kovalev,o=Example,c=RU
objectClass: inetOrgPerson
objectClass: posixAccount
cn: Mitya Kovalev
telephoneNumber: 332-2334
telephoneNumber: 222-3234
sn: Mitya Kovalev
telephoneNumber: +1 800 123 4567
givenName: Mitya
sn: Kovalev
documentIdentifier: documentTitle=book1,o=Example,c=RU
documentIdentifier: documentTitle=book2,o=Example,c=RU
......@@ -27,7 +30,6 @@ objectClass: document
description: abstract1
documentTitle: book1
documentAuthor: cn=Mitya Kovalev,o=Example,c=RU
documentAuthor: cn=Torvlobnor Puzdoy,o=Example,c=RU
dn: o=Example,c=RU
objectClass: organization
......
......@@ -18,6 +18,7 @@ BACKLDAP=${AC_ldap-ldapno}
BACKRELAY=${AC_relay-relayno}
BACKSQL=${AC_sql-sqlno}
RDBMS=${SLAPD_USE_SQL-rdbmsno}
RDBMSWRITE=${SLAPD_USE_SQLWRITE-no}
PROXYCACHE=${AC_pcache-pcacheno}
PPOLICY=${AC_ppolicy-ppolicyno}
REFINT=${AC_refint-refintno}
......
......@@ -21,6 +21,9 @@ echo "### ODBC and a database poulated with data from the applicable"
echo "### servers/slapd/back-sql/rdbms_depend/* files."
echo "### Set SLAPD_USE_SQL to the desired RDBMS to enable this test;"
echo "### Supported RDBMSes are: mysql,postgres"
echo "### Set SLAPD_USE_SQLWRITE=yes to enable the write test"
echo "### See servers/slapd/back-sql/rdbms_depend/README for more "
echo "### details on how to set up the RDBMS and the ODBC"
if test $BACKSQL = "sqlno" ; then
echo "SQL backend not available, test skipped"
......@@ -219,8 +222,11 @@ if test $? != 0 ; then
fi
echo "Testing modify, add, and delete..."
case ${RDBMS} in
# list here the RDBMSes whose mapping allows writes
if test "${RDBMSWRITE}" != "yes"; then
echo "write test disabled; set SLAPD_USE_SQLWRITE=yes to enable"
else
case ${RDBMS} in
# list here the RDBMSes whose mapping allows writes
postgres)
MANAGERDN="cn=Manager,${BASEDN}"
$LDAPMODIFY -v -c -D "$MANAGERDN" -w $PASSWD \
......@@ -228,10 +234,7 @@ case ${RDBMS} in
$TESTOUT 2>&1 << EOMODS
version: 1
# LEADING COMMENT AND WHITE SPACE
dn: cn=Mitya Kovalev,${BASEDN}
# EMBEDDED COMMENT
changetype: modify
add: telephoneNumber
telephoneNumber: +1 800 123 4567
......@@ -239,13 +242,21 @@ telephoneNumber: +1 800 123 4567
dn: cn=Pierangelo Masarati,${BASEDN}
changetype: add
# EMBEDDED COMMENT
CONTINUED
objectClass: inetOrgPerson
cn: Pierangelo Masarati
sn: Masarati
givenName: Pierangelo
telephoneNumber: +39 02 XXXX YYYY
telephoneNumber: +39 02 XXXX ZZZZ
dn: cn=Pierangelo Masarati,${BASEDN}
changetype: modify
delete: telephoneNumber
telephoneNumber: +39 02 XXXX YYYY
-
add: telephoneNumber
telephoneNumber: +39 333 ZZZ 1234
-
dn: cn=Torvlobnor Puzdoy,${BASEDN}
changetype: delete
......@@ -287,7 +298,8 @@ EOMODS
*)
echo "apparently ${RDBMS} does not support writes; skipping..."
;;
esac
esac
fi
test $KILLSERVERS != no && kill -HUP $KILLPIDS
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment