I had the idea to write a small tutorial for thoose who want to join/help the Zeos-Dev-Team.
Here we go:
- 1. All development starts in our *testing* branch. Currently we're talking about \testing-7.1 (SVN). mdaems already wrote a little tutorial to acces our SVN. http://zeos.firmos.at/viewtopic.php?t=841. The SVN locations changes when development is going on and version numbers are increasing. All locations are availabe on SourceForge.Net: http://sourceforge.net/projects/zeoslib/ (SubVersion). Or in our portal topic news. The current testing-branch url is:
So checkout the SVN-testing branch first.
- 2. IMHO the next step should be making a test case in our test suite. So you can check if applying your patch solves the issue. And when you can't fix it yourself the test can be a reminder for other developers that there's something that should be solved. To be honest, a clean testsuite run (without any tests failing) is what we all want, but that's not the purpose of our test suite at all! The tests are a mighty tool to keep control about behavior changes or missing implementation. So don't worry if a test fails or raises exception! But make sure your patch (if it is not a test only) doesn't change the current fails/exceptions. The only allowable exception on this test can be your new test (; !
The ZeosLib test-suites you can find in the \test folder you have after checkout the testing branch.
- 3. Now you've to setup your database configurations for the tests. You need a valid setup file: "test.properties" which should be placed in the \database directory. An example i use:
You can see, this can be a very complex setup but it is very simple. Just exchange your database settings and the tests run![ado_mssql]
ado_mssql.protocol=ado
ado_mssql.alias=ado_zeoslib
ado_mssql.host=
ado_mssql.port=
ado_mssql.database=Provider=SQLOLEDB.1;Persist Security Info=False;Initial Catalog=zeoslib;Data Source=EGONDEVLAPTOPW7\SQLEXPRESS;Use Procedure for Prepare=1;Auto Translate=True;Packet Size=4096;Workstation ID=EGONDEVLAPTOPW7;Use Encryption for Data=False;Tag with column collation when possible=False
ado_mssql.user=sa
ado_mssql.password=masterkey
ado_mssql.rebuild=Yes
ado_mssql.delimiter.type=go
ado_mssql.delimiter=;
ado_mssql.create.scripts=create_mssql.sql,populate_any_ado.sql,populate_mssql.sql,create_mssql_bugreport.sql
ado_mssql.drop.scripts=drop_mssql.sql,drop_mssql_bugreport.sql
ado_mssql.properties=
ado_mssql.charactersets=
[MSSQL2012TDS]
MSSQL2012TDS.protocol=FreeTDS_MsSQL>=2005
MSSQL2012TDS.alias=MSSQL2012TDS_zeoslib
MSSQL2012TDS.host=127.0.0.1
MSSQL2012TDS.port=
MSSQL2012TDS.database=zeoslib
MSSQL2012TDS.user=sa
MSSQL2012TDS.password=masterkey
MSSQL2012TDS.rebuild=Yes
MSSQL2012TDS.delimiter.type=go
MSSQL2012TDS.delimiter=;
MSSQL2012TDS.create.scripts=create_mssql.sql,populate_any_mssybase.sql,populate_mssql.sql,create_mssql_bugreport.sql
MSSQL2012TDS.drop.scripts=drop_mssql.sql,drop_mssql_bugreport.sql
MSSQL2012TDS.properties=
MSSQL2012TDS.charactersets=WIN1252
[MSSQL2012]
MSSQL2012.protocol=mssql
MSSQL2012.alias=MSSQL2012_zeoslib
MSSQL2012.host=127.0.0.1
MSSQL2012.port=
MSSQL2012.database=zeoslib
MSSQL2012.user=sa
MSSQL2012.password=masterkey
MSSQL2012.rebuild=Yes
MSSQL2012.delimiter.type=go
MSSQL2012.delimiter=;
MSSQL2012.create.scripts=create_mssql.sql,populate_any_mssybase.sql,populate_mssql.sql,create_mssql_bugreport.sql
MSSQL2012.drop.scripts=drop_mssql.sql,drop_mssql_bugreport.sql
MSSQL2012.properties=
MSSQL2012.charactersets=WIN1252
[Sybase125]
Sybase125.protocol=FreeTDS_Sybase-10+
Sybase125.alias=sybase125_zeoslib
Sybase125.host=EGONDEVLAPTOPW7\zeoslib32
Sybase125.port=
Sybase125.database=zeoslib32
Sybase125.user=DBA
Sybase125.password=masterkey
Sybase125.rebuild=Yes
Sybase125.delimiter.type=go
Sybase125.delimiter=;
Sybase125.create.scripts=create_mssql.sql,populate_any_mssybase.sql,populate_mssql.sql,create_mssql_bugreport.sql
Sybase125.drop.scripts=drop_mssql.sql,drop_mssql_bugreport.sql
Sybase125.properties=
Sybase125.charactersets=UTF-8,WIN1252
[ASA12]
ASA12.protocol=ASA12
ASA12.alias=ASA12_UT8_zeoslib
ASA12.host=
ASA12.port=2001
ASA12.database=D:\Developer\DataBase\SQL Anywhere\zeoslib32.db
ASA12.user=DBA
ASA12.password=masterkey
ASA12.rebuild=Yes
ASA12.delimiter.type=
ASA12.delimiter=;
ASA12.create.scripts=create_ASA12.sql,populate_any.sql,populate_asa.sql,create_asa_bugreport.sql
ASA12.drop.scripts=drop_ASA12.sql,drop_asa_bugreport.sql
ASA12.properties=
ASA12.charactersets=UTF-8
[firebirdd-2.5]
;EgonHugeist: Take care this DatabaseFile was created with default characterset UTF8!
firebirdd-2.5.protocol=firebirdd-2.5
firebirdd-2.5.alias=firebird_zeoslib
firebirdd-2.5.host=localhost
firebirdd-2.5.port=
;firebirdd-2.5.database=D:\Developer\DataBase\FireBird\ZeosTest\ZEOSLIBUTF8.FDB
firebirdd-2.5.database=D:\Developer\DataBase\FireBird\ZeosTest\ZEOSLIBNONE.FDB
firebirdd-2.5.user=sysdba
firebirdd-2.5.password=masterkey
firebirdd-2.5.rebuild=Yes
firebirdd-2.5.delimiter.type=SetTerm
firebirdd-2.5.delimiter=;
firebirdd-2.5.create.scripts=create_interbase.sql,populate_any.sql,populate_interbase.sql,create_interbase_bugreport.sql
firebirdd-2.5.drop.scripts=drop_interbase.sql,drop_interbase_bugreport.sql
firebirdd-2.5.properties=
firebirdd-2.5.charactersets=UTF-8;WIN1252
[mysql-5]
mysql-5.protocol=mysql-5
mysql-5.alias=mysql_zeoslib
mysql-5.host=localhost
mysql-5.port=
mysql-5.database=zeoslib
mysql-5.user=root
mysql-5.password=masterkey
mysql-5.rebuild=Yes
mysql-5.delimiter.type=delimiter
mysql-5.delimiter=;
mysql-5.create.scripts=create_mysql.sql,populate_any.sql,populate_mysql.sql,create_mysql_bugreport.sql
mysql-5.drop.scripts=drop_mysql.sql,drop_mysql_bugreport.sql
mysql-5.properties=LibLocation=libmysql.dll
mysql-5.charactersets=utf8;Latin1
[MariaDB-5]
MariaDB-5.protocol=MariaDB-5
MariaDB-5.alias=mysql_zeoslib
MariaDB-5.host=localhost
MariaDB-5.port=
MariaDB-5.database=zeoslib
MariaDB-5.user=root
MariaDB-5.password=masterkey
MariaDB-5.rebuild=Yes
MariaDB-5.delimiter.type=delimiter
MariaDB-5.delimiter=;
MariaDB-5.create.scripts=create_mysql.sql,populate_any.sql,populate_mysql.sql,create_mysql_bugreport.sql
MariaDB-5.drop.scripts=drop_mysql.sql,drop_mysql_bugreport.sql
MariaDB-5.properties=
MariaDB-5.charactersets=utf8;Latin1
[oracle11]
oracle11.protocol=oracle
oracle11.alias=oracle_zeoslib
oracle11.host=localhost
oracle11.port=
oracle11.database=xe
oracle11.user=zeoslib
oracle11.password=zeoslib
oracle11.rebuild=Yes
oracle11.delimiter.type=SetTerm
oracle11.delimiter=;
oracle11.create.scripts=create_oracle.sql,populate_any_oracle.sql,populate_oracle.sql,create_oracle_bugreport.sql
oracle11.drop.scripts=drop_oracle.sql
oracle11.properties=
oracle11.charactersets=UTF8;WE8MSWIN1252
;http://www.fatlemon.co.uk/2009/06/incre ... oracle-xe/
;select name, value from v$parameter where name in ('processes', 'sessions', 'transactions');
;alter system set processes = 500 scope = spfile;
[postgresql-9]
postgresql-9.protocol=postgresql-9
postgresql-9.alias=postgresql_zeoslib
postgresql-9.host=localhost
postgresql-9.port=0
postgresql-9.database=zeoslib
postgresql-9.user=postgres
postgresql-9.password=masterkey
postgresql-9.rebuild=Yes
postgresql-9.delimiter.type=
postgresql-9.delimiter=
postgresql-9.create.scripts=create_postgresql.sql,populate_any.sql,populate_postgresql_73.sql,create_postgresql_bugreport.sql,create_postgresql_bugreport_73.sql,populate_postgresql_83.sql
postgresql-9.drop.scripts=drop_postgresql.sql,drop_postgresql_bugreport.sql,drop_postgresql_bugreport_73.sql,drop_postgresql_83.sql
postgresql-9.properties=codepage=WIN1252
postgresql-9.charactersets=UTF8
[sqlite-3]
sqlite-3.protocol=sqlite-3
sqlite-3.alias=sqlite_zeoslib
sqlite-3.host=localhost
sqlite-3.port=
sqlite-3.database=D:\Developer\DataBase\sqlite\zeoslib.db
sqlite-3.user=
sqlite-3.password=
sqlite-3.rebuild=Yes
sqlite-3.delimiter.type=Default
sqlite-3.delimiter=
sqlite-3.create.scripts=create_sqlite.sql,populate_any.sql
sqlite-3.drop.scripts=drop_sqlite.sql
[common]
common.connections=postgresql-9
ado_mssql,oracle11,ASA12,postgresql-9,firebirdd-2.5,mysql-5,MSSQL2012TDS,sqlite-3
;firebirdd-2.5,mysql-5,MSSQL2012,MSSQL2012TDS,sqlite-3
;ado_mssql,Sybase125,oracle11,ASA12,MariaDB-5,postgresql-9,MSSQL2012TDS,sqlite-3
;common.enable.memcheck=True
common.extended.test=True
common.extended.cget_acp=True
common.extended.ccp_utf8=True
common.extended.ccp_utf16=True
common.extended.codepages=True
common.extended.autoencoding=True
common.extended.prefer_real_prepared=True
;common.skip.non.zeos.issues=True
;common.skip.test=True
;common.skip.cget_acp=True
;common.skip.ccp_utf8=True
;common.skip.ccp_utf16=True
;performance
;common.apis=dbc,dataset,plain
;common.tests=connect,delete,fetch,filter,insert,open,sort,update,direct-update,locate,lookup
common.baseapi=
common.output=plain
common.repeat=3
common.records=10000
common.printdetails=Yes
[core]
core.connections=
[parsesql]
parsesql.connections=
[plain]
plain.connections=
[dbc]
dbc.connections=
[component]
component.connections=
[bugreport]
bugreport.connections=
[performance]
performance.connections=sqlite-3,ado_mssql,MSSQL2012TDS,ASA12,firebirdd-2.5,mysql-5,oracle11,postgresql-9,sqlite-3
//Sybase125,
Why do i prefere this way?
Well it is nice to get a valid app to check if something goes terrible wrong or somebody wants to point us to leaks we have. Which btw. is usually more than our users are willing to do! But having a new implemented test-case for our suites is allways a nice present, so we do not need to add one manually by our selves. So we can't forget your issue and you can help save our time!
- 4. To be honest, we won't grant write access for immeadiatly for everybody who asks. First we want to see some good code. You can attach the changes in our Forum or you write a pm. What ever you prefere. Best practice in this case would be a attached *.patch/*.diff file which you can simply create with TortoiseSVN by right-clicking the zeoslib folder. A popup menu open, go to TortoiseSVN->Create a patch. Simple? yes it is, if you did it once (:
- 5. If everything looks good, then a ZeosDevTeam member will grant you write acces to our SVN repository. To do this we need your SourceForge.Net username. Now you've to checkout again. This is a little bit "tricky" because you need a command line input now. I don't know why (and maybe it's an issue specific to my environment). Open your prefered directory and type :
Now TortoiseSVN downloads the current \testing-branch again but you've got access to commit your changes.
Code: Select all
svn checkout --username=YourUserName https://svn.code.sf.net/p/zeoslib/code-0/branches/testing-7.1
- 6. Here we go. Welcome to the maintainers group! Now you can start coding and if you're ready, simply run the tests, compare the results and then right-click the directory again, choose "SVN Commit/Update" to apply your changes or get the latest changes.
Feel free to help! Everybody is welcome!