How to help developing/maintaining ZeosLib for volunteers

ZeosLib tutorials and code snipets

Moderators: gto, cipto_kh

Post Reply
User avatar
EgonHugeist
Zeos Project Manager
Zeos Project Manager
Posts: 1936
Joined: 31.03.2011, 22:38

How to help developing/maintaining ZeosLib for volunteers

Post by EgonHugeist »

Dear volunteers,

I had the idea to write a small tutorial for thoose who want to join/help the Zeos-Dev-Team.

Here we go:
  1. 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.
  1. 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.
  1. 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:
    [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,
    You can see, this can be a very complex setup but it is very simple. Just exchange your database settings and the tests run!

    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!
  1. 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 (:
  1. 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 :x (and maybe it's an issue specific to my environment). Open your prefered directory and type :

    Code: Select all

    svn checkout --username=YourUserName https://svn.code.sf.net/p/zeoslib/code-0/branches/testing-7.1 
    
    Now TortoiseSVN downloads the current \testing-branch again but you've got access to commit your changes.
  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.
I hope this small Tutorial helps a little bit :wink:
Feel free to help! Everybody is welcome!
Best regards, Michael

You want to help? http://zeoslib.sourceforge.net/viewtopic.php?f=4&t=3671
You found a (possible) bug? Use the new bugtracker dude! http://sourceforge.net/p/zeoslib/tickets/

Image
Post Reply